Merge remote-tracking branch 'upstream/master' into hold-tap
This commit is contained in:
commit
abaafbd8c5
@ -9,7 +9,7 @@ kb.py is designed to work with the Teensy 4.1
|
|||||||
Retailers (USA)
|
Retailers (USA)
|
||||||
[Atreus62](https://shop.profetkeyboards.com/product/atreus62-keyboard)
|
[Atreus62](https://shop.profetkeyboards.com/product/atreus62-keyboard)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
||||||
- [Encoder](https://github.com/KMKfw/kmk_firmware/tree/master/docs/encoder.md) Twist control for all the things
|
- [Encoder](https://github.com/KMKfw/kmk_firmware/tree/master/docs/encoder.md) Twist control for all the things
|
||||||
|
@ -9,5 +9,5 @@ kb.py is designed to work with the nice!nano
|
|||||||
Retailers (USA)
|
Retailers (USA)
|
||||||
[Boardsource](https://boardsource.xyz/store/5ecc2008eee64242946c98c1)
|
[Boardsource](https://boardsource.xyz/store/5ecc2008eee64242946c98c1)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
|
@ -13,9 +13,9 @@ Retailers (USA)
|
|||||||
Low profile 4x12
|
Low profile 4x12
|
||||||
[Boardsource](https://boardsource.xyz/store/5ecb7dad86879c9a0c22db32)
|
[Boardsource](https://boardsource.xyz/store/5ecb7dad86879c9a0c22db32)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [MediaKeys](https://github.com/KMKfw/kmk_firmware/tree/master/docs/media_keys.md) Control volume and other media functions
|
- [MediaKeys](https://github.com/KMKfw/kmk_firmware/tree/master/docs/media_keys.md) Control volume and other media functions
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -13,9 +13,9 @@ Retailers (USA)
|
|||||||
Low Profile 5x12
|
Low Profile 5x12
|
||||||
[Boardsource](https://boardsource.xyz/store/5ecb822386879c9a0c22db84)
|
[Boardsource](https://boardsource.xyz/store/5ecb822386879c9a0c22db84)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [MediaKeys](https://github.com/KMKfw/kmk_firmware/tree/master/docs/media_keys.md) Control volume and other media functions
|
- [MediaKeys](https://github.com/KMKfw/kmk_firmware/tree/master/docs/media_keys.md) Control volume and other media functions
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -9,11 +9,11 @@ kb.py is designed to work with the nice!nano
|
|||||||
Retailers (USA)
|
Retailers (USA)
|
||||||
[Boardsource](https://boardsource.xyz/store/5f2e7e4a2902de7151494f92)
|
[Boardsource](https://boardsource.xyz/store/5f2e7e4a2902de7151494f92)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
||||||
- [ModTap](https://github.com/KMKfw/kmk_firmware/tree/master/docs/modtap.md) Allows mod keys to act as different keys when tapped.
|
- [ModTap](https://github.com/KMKfw/kmk_firmware/tree/master/docs/modtap.md) Allows mod keys to act as different keys when tapped.
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -17,11 +17,11 @@ Corne
|
|||||||
Corne LP
|
Corne LP
|
||||||
[Boardsource](https://boardsource.xyz/store/5f2efc462902de7151495057)
|
[Boardsource](https://boardsource.xyz/store/5f2efc462902de7151495057)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
||||||
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -11,11 +11,11 @@ Hardware Availability: [PCB & Case Source](https://github.com/jpconstantineau/Er
|
|||||||
Retailers (USA)
|
Retailers (USA)
|
||||||
[Boardsource](https://boardsource.xyz/store/5eed23430883e03ef9a69d6a)
|
[Boardsource](https://boardsource.xyz/store/5eed23430883e03ef9a69d6a)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
||||||
- [MediaKeys](https://github.com/KMKfw/kmk_firmware/tree/master/docs/media_keys.md) Control volume and other media functions
|
- [MediaKeys](https://github.com/KMKfw/kmk_firmware/tree/master/docs/media_keys.md) Control volume and other media functions
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -8,10 +8,10 @@ kb.py is designed to work with the nice!nano
|
|||||||
|
|
||||||
Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.club/2016/11/gherkin.html)
|
Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.club/2016/11/gherkin.html)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [ModTap](https://github.com/KMKfw/kmk_firmware/tree/master/docs/modtap.md) Allows mod keys to act as different keys when tapped.
|
- [ModTap](https://github.com/KMKfw/kmk_firmware/tree/master/docs/modtap.md) Allows mod keys to act as different keys when tapped.
|
||||||
- [LED](https://github.com/KMKfw/kmk_firmware/tree/master/docs/led.md) Light your keys up
|
- [LED](https://github.com/KMKfw/kmk_firmware/tree/master/docs/led.md) Light your keys up
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -9,10 +9,10 @@ kb_converter.py is designed to work with an itsybitsy with converter board found
|
|||||||
|
|
||||||
Hardware Availability: [Luddite project on 40% Keyboards](http://www.40percent.club/search/label/luddite)
|
Hardware Availability: [Luddite project on 40% Keyboards](http://www.40percent.club/search/label/luddite)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) RGB underglow
|
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) RGB underglow
|
||||||
- [LED](https://github.com/KMKfw/kmk_firmware/tree/master/docs/led.md) Light your keys up
|
- [LED](https://github.com/KMKfw/kmk_firmware/tree/master/docs/led.md) Light your keys up
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -5,11 +5,11 @@ A split keyboard with a 4x6 layout with additional 4 thumb buttons
|
|||||||
kb.py is designed to work with the nice!nano
|
kb.py is designed to work with the nice!nano
|
||||||
kb_converter.py is designed to work with an itsybitsy with converter board found [here](https://github.com/KMKfw/kmk_firmware/tree/master/hardware)
|
kb_converter.py is designed to work with an itsybitsy with converter board found [here](https://github.com/KMKfw/kmk_firmware/tree/master/hardware)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
||||||
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -5,11 +5,11 @@ A split keyboard with a 4x6 layout
|
|||||||
kb.py is designed to work with the nice!nano
|
kb.py is designed to work with the nice!nano
|
||||||
kb_converter.py is designed to work with an itsybitsy with converter board found [here](https://github.com/KMKfw/kmk_firmware/tree/master/hardware)
|
kb_converter.py is designed to work with an itsybitsy with converter board found [here](https://github.com/KMKfw/kmk_firmware/tree/master/hardware)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
||||||
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -6,11 +6,11 @@ kb.py is designed to work with the nice!nano
|
|||||||
kb_converter.py is designed to work with an itsybitsy with converter board found [here](https://github.com/KMKfw/kmk_firmware/tree/master/hardware)
|
kb_converter.py is designed to work with an itsybitsy with converter board found [here](https://github.com/KMKfw/kmk_firmware/tree/master/hardware)
|
||||||
|
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
||||||
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -10,11 +10,11 @@ kb.py is designed to work with the nice!nano
|
|||||||
Retailers (USA)
|
Retailers (USA)
|
||||||
[Boardsource](https://boardsource.xyz/store/5ec9df84c6b834480de6c3d0)
|
[Boardsource](https://boardsource.xyz/store/5ec9df84c6b834480de6c3d0)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
||||||
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -11,10 +11,10 @@ Hardware Availability: [PCB & Case Data](https://github.com/gtips/reviung)
|
|||||||
Retailers (USA)
|
Retailers (USA)
|
||||||
[Boardsource](https://boardsource.xyz/store/5ecb734486879c9a0c22dab3)
|
[Boardsource](https://boardsource.xyz/store/5ecb734486879c9a0c22dab3)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
||||||
- [ModTap](https://github.com/KMKfw/kmk_firmware/tree/master/docs/modtap.md) Allows mod keys to act as different keys when tapped.
|
- [ModTap](https://github.com/KMKfw/kmk_firmware/tree/master/docs/modtap.md) Allows mod keys to act as different keys when tapped.
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -11,10 +11,10 @@ Hardware Availability: [PCB & Case Data](https://github.com/gtips/reviung/tree/m
|
|||||||
Retailers (USA)
|
Retailers (USA)
|
||||||
[Boardsource](https://boardsource.xyz/store/5f2ef1b52bf5e8714a60f613)
|
[Boardsource](https://boardsource.xyz/store/5f2ef1b52bf5e8714a60f613)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
||||||
- [ModTap](https://github.com/KMKfw/kmk_firmware/tree/master/docs/modtap.md) Allows mod keys to act as different keys when tapped.
|
- [ModTap](https://github.com/KMKfw/kmk_firmware/tree/master/docs/modtap.md) Allows mod keys to act as different keys when tapped.
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -9,11 +9,11 @@ kb.py is designed to work with the nice!nano
|
|||||||
Retailers (USA)
|
Retailers (USA)
|
||||||
[Boardsource](https://boardsource.xyz/store/5ecb6aee86879c9a0c22da89)
|
[Boardsource](https://boardsource.xyz/store/5ecb6aee86879c9a0c22da89)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
- [BLE_Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves without wires
|
||||||
- [ModTap](https://github.com/KMKfw/kmk_firmware/tree/master/docs/modtap.md) Allows mod keys to act as different keys when tapped.
|
- [ModTap](https://github.com/KMKfw/kmk_firmware/tree/master/docs/modtap.md) Allows mod keys to act as different keys when tapped.
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
- [Split](https://github.com/KMKfw/kmk_firmware/tree/master/docs/split.md) Connects halves using a wire
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -9,9 +9,9 @@ kb.py is designed to work with the nice!nano
|
|||||||
Retailers (USA)
|
Retailers (USA)
|
||||||
[Boardsource](https://boardsource.xyz/store/5eff7ead037395179221b90c)
|
[Boardsource](https://boardsource.xyz/store/5eff7ead037395179221b90c)
|
||||||
|
|
||||||
Extentions enabled by default
|
Extensions enabled by default
|
||||||
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers.
|
||||||
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up
|
||||||
|
|
||||||
Common Extentions
|
Common Extensions
|
||||||
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
- [Power](https://github.com/KMKfw/kmk_firmware/tree/master/docs/power.md) Powersaving features for battery life
|
||||||
|
@ -14,6 +14,8 @@ To enable BLE hid, change the keyboard.go(). By default, the advertised name
|
|||||||
will be the name of the "flash drive". By default this is CIRCUITPY
|
will be the name of the "flash drive". By default this is CIRCUITPY
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
from kmk.hid import HIDModes
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
keyboard.go(hid_type=HIDModes.BLE)
|
keyboard.go(hid_type=HIDModes.BLE)
|
||||||
```
|
```
|
||||||
|
@ -169,8 +169,8 @@
|
|||||||
|
|
||||||
|Key |Aliases |Description |
|
|Key |Aliases |Description |
|
||||||
|------------------------|------------------------------|-----------------------|
|
|------------------------|------------------------------|-----------------------|
|
||||||
|`KC.NONUS_HASH` |`KC.NUHS` |ISO Right of LSHIFT |
|
|`KC.NONUS_HASH` |`KC.NUHS` |ISO Left of Return |
|
||||||
|`KC.NONUS_BSLASH` |`KC.NUBS` |ISO Left of Return |
|
|`KC.NONUS_BSLASH` |`KC.NUBS` |ISO Right of LSHIFT |
|
||||||
|`KC.APPLICATION` |`KC.APP`,`KC.SEL`,`KC.WINMENU`|Menu Key (Near RCTRL) |
|
|`KC.APPLICATION` |`KC.APP`,`KC.SEL`,`KC.WINMENU`|Menu Key (Near RCTRL) |
|
||||||
|`KC.INT1` |`KC.RO` | |
|
|`KC.INT1` |`KC.RO` | |
|
||||||
|`KC.INT2` |`KC.KANA` | |
|
|`KC.INT2` |`KC.KANA` | |
|
||||||
|
@ -21,8 +21,8 @@ Changing the **Hue** cycles around the circle.
|
|||||||
Changing the **Saturation** moves between the inner and outer sections of the wheel, affecting the intensity of the color.
|
Changing the **Saturation** moves between the inner and outer sections of the wheel, affecting the intensity of the color.
|
||||||
Changing the **Value** sets the overall brightness.
|
Changing the **Value** sets the overall brightness.
|
||||||
|
|
||||||
## Enabling the extention
|
## Enabling the extension
|
||||||
The only required values that you need to give the RGB extention would be the pixel pin, and the number of pixels/LED's. If using a split keyboard, this number is per side, and not the total of both sides.
|
The only required values that you need to give the RGB extension would be the pixel pin, and the number of pixels/LED's. If using a split keyboard, this number is per side, and not the total of both sides.
|
||||||
```python
|
```python
|
||||||
from kmk.extensions.RGB import RGB
|
from kmk.extensions.RGB import RGB
|
||||||
from kb import rgb_pixel_pin # This can be imported or defined manually
|
from kb import rgb_pixel_pin # This can be imported or defined manually
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from kmk.kmktime import sleep_ms
|
from time import sleep
|
||||||
|
|
||||||
|
|
||||||
def passthrough(key, keyboard, *args, **kwargs):
|
def passthrough(key, keyboard, *args, **kwargs):
|
||||||
@ -8,9 +8,6 @@ def passthrough(key, keyboard, *args, **kwargs):
|
|||||||
def default_pressed(key, keyboard, KC, coord_int=None, coord_raw=None, *args, **kwargs):
|
def default_pressed(key, keyboard, KC, coord_int=None, coord_raw=None, *args, **kwargs):
|
||||||
keyboard.hid_pending = True
|
keyboard.hid_pending = True
|
||||||
|
|
||||||
if coord_int is not None:
|
|
||||||
keyboard._coordkeys_pressed[coord_int] = key
|
|
||||||
|
|
||||||
keyboard.keys_pressed.add(key)
|
keyboard.keys_pressed.add(key)
|
||||||
|
|
||||||
return keyboard
|
return keyboard
|
||||||
@ -22,10 +19,6 @@ def default_released(
|
|||||||
keyboard.hid_pending = True
|
keyboard.hid_pending = True
|
||||||
keyboard.keys_pressed.discard(key)
|
keyboard.keys_pressed.discard(key)
|
||||||
|
|
||||||
if coord_int is not None:
|
|
||||||
keyboard.keys_pressed.discard(keyboard._coordkeys_pressed.get(coord_int, None))
|
|
||||||
keyboard._coordkeys_pressed[coord_int] = None
|
|
||||||
|
|
||||||
return keyboard
|
return keyboard
|
||||||
|
|
||||||
|
|
||||||
@ -102,7 +95,7 @@ def bkdl_released(key, keyboard, KC, *args, **kwargs):
|
|||||||
|
|
||||||
|
|
||||||
def sleep_pressed(key, keyboard, KC, *args, **kwargs):
|
def sleep_pressed(key, keyboard, KC, *args, **kwargs):
|
||||||
sleep_ms(key.meta.ms)
|
sleep(key.meta.ms / 1000)
|
||||||
return keyboard
|
return keyboard
|
||||||
|
|
||||||
|
|
||||||
|
10
kmk/hid.py
10
kmk/hid.py
@ -52,7 +52,7 @@ HID_REPORT_SIZES = {
|
|||||||
class AbstractHID:
|
class AbstractHID:
|
||||||
REPORT_BYTES = 8
|
REPORT_BYTES = 8
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, **kwargs):
|
||||||
self._evt = bytearray(self.REPORT_BYTES)
|
self._evt = bytearray(self.REPORT_BYTES)
|
||||||
self.report_device = memoryview(self._evt)[0:1]
|
self.report_device = memoryview(self._evt)[0:1]
|
||||||
self.report_device[0] = HIDReportTypes.KEYBOARD
|
self.report_device[0] = HIDReportTypes.KEYBOARD
|
||||||
@ -239,11 +239,15 @@ class BLEHID(AbstractHID):
|
|||||||
# Hardcoded in CPy
|
# Hardcoded in CPy
|
||||||
MAX_CONNECTIONS = const(2)
|
MAX_CONNECTIONS = const(2)
|
||||||
|
|
||||||
def post_init(self, ble_name=str(getmount('/').label), **kwargs):
|
def __init__(self, ble_name=str(getmount('/').label), **kwargs):
|
||||||
|
self.ble_name = ble_name
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
def post_init(self):
|
||||||
self.conn_id = -1
|
self.conn_id = -1
|
||||||
|
|
||||||
self.ble = BLERadio()
|
self.ble = BLERadio()
|
||||||
self.ble.name = ble_name
|
self.ble.name = self.ble_name
|
||||||
self.hid = HIDService()
|
self.hid = HIDService()
|
||||||
self.hid.protocol_mode = 0 # Boot protocol
|
self.hid.protocol_mode = 0 # Boot protocol
|
||||||
|
|
||||||
|
16
kmk/keys.py
16
kmk/keys.py
@ -401,10 +401,6 @@ class Key:
|
|||||||
self.no_press = bool(no_press)
|
self.no_press = bool(no_press)
|
||||||
self.no_release = bool(no_press)
|
self.no_release = bool(no_press)
|
||||||
|
|
||||||
self._pre_press_handlers = []
|
|
||||||
self._post_press_handlers = []
|
|
||||||
self._pre_release_handlers = []
|
|
||||||
self._post_release_handlers = []
|
|
||||||
self._handle_press = on_press
|
self._handle_press = on_press
|
||||||
self._handle_release = on_release
|
self._handle_release = on_release
|
||||||
self.meta = meta
|
self.meta = meta
|
||||||
@ -424,24 +420,28 @@ class Key:
|
|||||||
return 'Key(code={}, has_modifiers={})'.format(self.code, self.has_modifiers)
|
return 'Key(code={}, has_modifiers={})'.format(self.code, self.has_modifiers)
|
||||||
|
|
||||||
def on_press(self, state, coord_int, coord_raw):
|
def on_press(self, state, coord_int, coord_raw):
|
||||||
|
if hasattr(self, '_pre_press_handlers'):
|
||||||
for fn in self._pre_press_handlers:
|
for fn in self._pre_press_handlers:
|
||||||
if not fn(self, state, KC, coord_int, coord_raw):
|
if not fn(self, state, KC, coord_int, coord_raw):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
ret = self._handle_press(self, state, KC, coord_int, coord_raw)
|
ret = self._handle_press(self, state, KC, coord_int, coord_raw)
|
||||||
|
|
||||||
|
if hasattr(self, '_post_press_handlers'):
|
||||||
for fn in self._post_press_handlers:
|
for fn in self._post_press_handlers:
|
||||||
fn(self, state, KC, coord_int, coord_raw)
|
fn(self, state, KC, coord_int, coord_raw)
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def on_release(self, state, coord_int, coord_raw):
|
def on_release(self, state, coord_int, coord_raw):
|
||||||
|
if hasattr(self, '_pre_release_handlers'):
|
||||||
for fn in self._pre_release_handlers:
|
for fn in self._pre_release_handlers:
|
||||||
if not fn(self, state, KC, coord_int, coord_raw):
|
if not fn(self, state, KC, coord_int, coord_raw):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
ret = self._handle_release(self, state, KC, coord_int, coord_raw)
|
ret = self._handle_release(self, state, KC, coord_int, coord_raw)
|
||||||
|
|
||||||
|
if hasattr(self, '_post_release_handlers'):
|
||||||
for fn in self._post_release_handlers:
|
for fn in self._post_release_handlers:
|
||||||
fn(self, state, KC, coord_int, coord_raw)
|
fn(self, state, KC, coord_int, coord_raw)
|
||||||
|
|
||||||
@ -485,6 +485,8 @@ class Key:
|
|||||||
calls of this method will be executed before those provided by later calls.
|
calls of this method will be executed before those provided by later calls.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
if not hasattr(self, '_pre_press_handlers'):
|
||||||
|
self._pre_press_handlers = []
|
||||||
self._pre_press_handlers.append(fn)
|
self._pre_press_handlers.append(fn)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -508,6 +510,8 @@ class Key:
|
|||||||
calls of this method will be executed before those provided by later calls.
|
calls of this method will be executed before those provided by later calls.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
if not hasattr(self, '_post_press_handlers'):
|
||||||
|
self._post_press_handlers = []
|
||||||
self._post_press_handlers.append(fn)
|
self._post_press_handlers.append(fn)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -532,6 +536,8 @@ class Key:
|
|||||||
calls of this method will be executed before those provided by later calls.
|
calls of this method will be executed before those provided by later calls.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
if not hasattr(self, '_pre_release_handlers'):
|
||||||
|
self._pre_release_handlers = []
|
||||||
self._pre_release_handlers.append(fn)
|
self._pre_release_handlers.append(fn)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@ -555,6 +561,8 @@ class Key:
|
|||||||
calls of this method will be executed before those provided by later calls.
|
calls of this method will be executed before those provided by later calls.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
if not hasattr(self, '_post_release_handlers'):
|
||||||
|
self._post_release_handlers = []
|
||||||
self._post_release_handlers.append(fn)
|
self._post_release_handlers.append(fn)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
|
from supervisor import ticks_ms
|
||||||
|
|
||||||
from kmk.consts import KMK_RELEASE, UnicodeMode
|
from kmk.consts import KMK_RELEASE, UnicodeMode
|
||||||
from kmk.hid import BLEHID, USBHID, AbstractHID, HIDModes
|
from kmk.hid import BLEHID, USBHID, AbstractHID, HIDModes
|
||||||
from kmk.keys import KC
|
from kmk.keys import KC
|
||||||
from kmk.kmktime import ticks_ms
|
|
||||||
from kmk.matrix import MatrixScanner, intify_coordinate
|
from kmk.matrix import MatrixScanner, intify_coordinate
|
||||||
from kmk.types import TapDanceKeyMeta
|
from kmk.types import TapDanceKeyMeta
|
||||||
|
|
||||||
@ -42,7 +43,7 @@ class KMKKeyboard:
|
|||||||
secondary_hid_type = None
|
secondary_hid_type = None
|
||||||
_hid_helper = None
|
_hid_helper = None
|
||||||
hid_pending = False
|
hid_pending = False
|
||||||
state_layer_key = None
|
current_key = None
|
||||||
matrix_update = None
|
matrix_update = None
|
||||||
secondary_matrix_update = None
|
secondary_matrix_update = None
|
||||||
_matrix_modify = None
|
_matrix_modify = None
|
||||||
@ -52,6 +53,7 @@ class KMKKeyboard:
|
|||||||
_trigger_powersave_enable = False
|
_trigger_powersave_enable = False
|
||||||
_trigger_powersave_disable = False
|
_trigger_powersave_disable = False
|
||||||
i2c_deinit_count = 0
|
i2c_deinit_count = 0
|
||||||
|
_go_args = None
|
||||||
|
|
||||||
# this should almost always be PREpended to, replaces
|
# this should almost always be PREpended to, replaces
|
||||||
# former use of reversed_active_layers which had pointless
|
# former use of reversed_active_layers which had pointless
|
||||||
@ -119,7 +121,6 @@ class KMKKeyboard:
|
|||||||
self.state_changed = True
|
self.state_changed = True
|
||||||
|
|
||||||
def _find_key_in_map(self, int_coord, row, col):
|
def _find_key_in_map(self, int_coord, row, col):
|
||||||
self.state_layer_key = None
|
|
||||||
try:
|
try:
|
||||||
idx = self.coord_mapping.index(int_coord)
|
idx = self.coord_mapping.index(int_coord)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
@ -133,28 +134,39 @@ class KMKKeyboard:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
for layer in self.active_layers:
|
for layer in self.active_layers:
|
||||||
self.state_layer_key = self.keymap[layer][idx]
|
layer_key = self.keymap[layer][idx]
|
||||||
|
|
||||||
if not self.state_layer_key or self.state_layer_key == KC.TRNS:
|
if not layer_key or layer_key == KC.TRNS:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if self.debug_enabled:
|
if self.debug_enabled:
|
||||||
print('KeyResolution(key={})'.format(self.state_layer_key))
|
print('KeyResolution(key={})'.format(layer_key))
|
||||||
|
|
||||||
return self.state_layer_key
|
return layer_key
|
||||||
|
|
||||||
def _on_matrix_changed(self, row, col, is_pressed):
|
def _on_matrix_changed(self, row, col, is_pressed):
|
||||||
if self.debug_enabled:
|
if self.debug_enabled:
|
||||||
print('MatrixChange(col={} row={} pressed={})'.format(col, row, is_pressed))
|
print('MatrixChange(col={} row={} pressed={})'.format(col, row, is_pressed))
|
||||||
|
|
||||||
int_coord = intify_coordinate(row, col)
|
int_coord = intify_coordinate(row, col)
|
||||||
kc_changed = self._find_key_in_map(int_coord, row, col)
|
if not is_pressed:
|
||||||
|
self.current_key = self._coordkeys_pressed[int_coord]
|
||||||
|
if self.debug_enabled:
|
||||||
|
print('PressedKeyResolution(key={})'.format(self.current_key))
|
||||||
|
|
||||||
if kc_changed is None:
|
if self.current_key is None:
|
||||||
|
self.current_key = self._find_key_in_map(int_coord, row, col)
|
||||||
|
|
||||||
|
if is_pressed:
|
||||||
|
self._coordkeys_pressed[int_coord] = self.current_key
|
||||||
|
else:
|
||||||
|
self._coordkeys_pressed[int_coord] = None
|
||||||
|
|
||||||
|
if self.current_key is None:
|
||||||
print('MatrixUndefinedCoordinate(col={} row={})'.format(col, row))
|
print('MatrixUndefinedCoordinate(col={} row={})'.format(col, row))
|
||||||
return self
|
return self
|
||||||
|
|
||||||
return self.process_key(kc_changed, is_pressed, int_coord, (row, col))
|
return self.process_key(self.current_key, is_pressed, int_coord, (row, col))
|
||||||
|
|
||||||
def process_key(self, key, is_pressed, coord_int=None, coord_raw=None):
|
def process_key(self, key, is_pressed, coord_int=None, coord_raw=None):
|
||||||
if self._tapping and not isinstance(key.meta, TapDanceKeyMeta):
|
if self._tapping and not isinstance(key.meta, TapDanceKeyMeta):
|
||||||
@ -324,7 +336,7 @@ class KMKKeyboard:
|
|||||||
self._hid_helper = BLEHID
|
self._hid_helper = BLEHID
|
||||||
else:
|
else:
|
||||||
self._hid_helper = AbstractHID
|
self._hid_helper = AbstractHID
|
||||||
self._hid_helper = self._hid_helper()
|
self._hid_helper = self._hid_helper(**self._go_args)
|
||||||
|
|
||||||
def _init_matrix(self):
|
def _init_matrix(self):
|
||||||
self.matrix = MatrixScanner(
|
self.matrix = MatrixScanner(
|
||||||
@ -426,6 +438,7 @@ class KMKKeyboard:
|
|||||||
print('Failed to run post hid function in extension: ', err, ext)
|
print('Failed to run post hid function in extension: ', err, ext)
|
||||||
|
|
||||||
def go(self, hid_type=HIDModes.USB, secondary_hid_type=None, **kwargs):
|
def go(self, hid_type=HIDModes.USB, secondary_hid_type=None, **kwargs):
|
||||||
|
self._go_args = kwargs
|
||||||
self.hid_type = hid_type
|
self.hid_type = hid_type
|
||||||
self.secondary_hid_type = secondary_hid_type
|
self.secondary_hid_type = secondary_hid_type
|
||||||
|
|
||||||
@ -444,13 +457,14 @@ class KMKKeyboard:
|
|||||||
ext.during_bootup(self)
|
ext.during_bootup(self)
|
||||||
except Exception:
|
except Exception:
|
||||||
if self.debug_enabled:
|
if self.debug_enabled:
|
||||||
print('Failed to load extention', ext)
|
print('Failed to load extension', ext)
|
||||||
|
|
||||||
self._init_matrix()
|
self._init_matrix()
|
||||||
|
|
||||||
self._print_debug_cycle(init=True)
|
self._print_debug_cycle(init=True)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
self.current_key = None
|
||||||
self.state_changed = False
|
self.state_changed = False
|
||||||
self.sandbox.active_layers = self.active_layers.copy()
|
self.sandbox.active_layers = self.active_layers.copy()
|
||||||
|
|
||||||
|
@ -1,23 +1,15 @@
|
|||||||
import time
|
from micropython import const
|
||||||
|
|
||||||
|
_TICKS_PERIOD = const(1 << 29)
|
||||||
|
_TICKS_MAX = const(_TICKS_PERIOD - 1)
|
||||||
|
_TICKS_HALFPERIOD = const(_TICKS_PERIOD // 2)
|
||||||
|
|
||||||
|
|
||||||
def sleep_ms(ms):
|
def ticks_diff(new, start):
|
||||||
return time.sleep(ms / 1000)
|
diff = (new - start) & _TICKS_MAX
|
||||||
|
diff = ((diff + _TICKS_HALFPERIOD) & _TICKS_MAX) - _TICKS_HALFPERIOD
|
||||||
|
return diff
|
||||||
|
|
||||||
|
|
||||||
def ticks_ms():
|
def check_deadline(new, start, ms):
|
||||||
'''Has .25s granularity, but is cheap'''
|
return ticks_diff(new, start) < ms
|
||||||
return time.monotonic() * 1000
|
|
||||||
|
|
||||||
|
|
||||||
def ticks_diff(new, old):
|
|
||||||
return new - old
|
|
||||||
|
|
||||||
|
|
||||||
def accurate_ticks():
|
|
||||||
'''Is more expensive, but good for time critical things'''
|
|
||||||
return time.monotonic_ns()
|
|
||||||
|
|
||||||
|
|
||||||
def accurate_ticks_diff(new, old, ms):
|
|
||||||
return bool(new - old < ms * 1000000)
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import digitalio
|
import digitalio
|
||||||
|
from supervisor import ticks_ms
|
||||||
|
|
||||||
from kmk.kmktime import ticks_ms
|
|
||||||
from kmk.modules import Module
|
from kmk.modules import Module
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
'''One layer isn't enough. Adds keys to get to more of them'''
|
'''One layer isn't enough. Adds keys to get to more of them'''
|
||||||
from micropython import const
|
from micropython import const
|
||||||
|
from supervisor import ticks_ms
|
||||||
|
|
||||||
from kmk.key_validators import layer_key_validator
|
from kmk.key_validators import layer_key_validator
|
||||||
from kmk.keys import make_argumented_key
|
from kmk.keys import make_argumented_key
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from supervisor import ticks_ms
|
||||||
|
|
||||||
from kmk.key_validators import mod_tap_validator
|
from kmk.key_validators import mod_tap_validator
|
||||||
from kmk.keys import make_argumented_key
|
from kmk.keys import make_argumented_key
|
||||||
from kmk.modules.holdtap import HoldTap
|
from kmk.modules.holdtap import HoldTap
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
import board
|
import board
|
||||||
import digitalio
|
import digitalio
|
||||||
|
from supervisor import ticks_ms
|
||||||
|
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
from kmk.handlers.stock import passthrough as handler_passthrough
|
from kmk.handlers.stock import passthrough as handler_passthrough
|
||||||
from kmk.keys import make_key
|
from kmk.keys import make_key
|
||||||
from kmk.kmktime import sleep_ms, ticks_diff, ticks_ms
|
from kmk.kmktime import check_deadline
|
||||||
from kmk.modules import Module
|
from kmk.modules import Module
|
||||||
|
|
||||||
|
|
||||||
@ -100,10 +103,10 @@ class Power(Module):
|
|||||||
'''
|
'''
|
||||||
Sleeps longer and longer to save power the more time in between updates.
|
Sleeps longer and longer to save power the more time in between updates.
|
||||||
'''
|
'''
|
||||||
if ticks_diff(ticks_ms(), self._powersave_start) <= 60000:
|
if check_deadline(ticks_ms(), self._powersave_start) <= 60000:
|
||||||
sleep_ms(8)
|
sleep(8 / 1000)
|
||||||
elif ticks_diff(ticks_ms(), self._powersave_start) >= 240000:
|
elif check_deadline(ticks_ms(), self._powersave_start) >= 240000:
|
||||||
sleep_ms(180)
|
sleep(180 / 1000)
|
||||||
return
|
return
|
||||||
|
|
||||||
def psave_time_reset(self):
|
def psave_time_reset(self):
|
||||||
@ -120,7 +123,7 @@ class Power(Module):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def usb_rescan_timer(self):
|
def usb_rescan_timer(self):
|
||||||
return bool(ticks_diff(ticks_ms(), self._usb_last_scan) > 5000)
|
return bool(check_deadline(ticks_ms(), self._usb_last_scan) > 5000)
|
||||||
|
|
||||||
def usb_time_reset(self):
|
def usb_time_reset(self):
|
||||||
self._usb_last_scan = ticks_ms()
|
self._usb_last_scan = ticks_ms()
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
'''Enables splitting keyboards wirelessly or wired'''
|
'''Enables splitting keyboards wirelessly or wired'''
|
||||||
import busio
|
import busio
|
||||||
from micropython import const
|
from micropython import const
|
||||||
|
from supervisor import ticks_ms
|
||||||
|
|
||||||
from storage import getmount
|
from storage import getmount
|
||||||
|
|
||||||
from kmk.kmktime import ticks_diff, ticks_ms
|
from kmk.kmktime import check_deadline
|
||||||
from kmk.matrix import intify_coordinate
|
from kmk.matrix import intify_coordinate
|
||||||
from kmk.modules import Module
|
from kmk.modules import Module
|
||||||
|
|
||||||
@ -241,7 +242,7 @@ class Split(Module):
|
|||||||
|
|
||||||
def ble_rescan_timer(self):
|
def ble_rescan_timer(self):
|
||||||
'''If true, the rescan timer is up'''
|
'''If true, the rescan timer is up'''
|
||||||
return bool(ticks_diff(ticks_ms(), self._ble_last_scan) > 5000)
|
return bool(check_deadline(ticks_ms(), self._ble_last_scan) > 5000)
|
||||||
|
|
||||||
def ble_time_reset(self):
|
def ble_time_reset(self):
|
||||||
'''Resets the rescan timer'''
|
'''Resets the rescan timer'''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user