-
Notifications
You must be signed in to change notification settings - Fork 489
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
--------- Co-authored-by: xs5871 <[email protected]>
- Loading branch information
1 parent
591edc5
commit d88f554
Showing
3 changed files
with
180 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
## Combo Layers | ||
|
||
Combo Layers is when you hold down 2 or more KC.MO() or KC.LM() keys at a time, and it goes to a defined layer. | ||
|
||
By default combo layers is not activated. You can activate combo layers by adding this to your `main.py` file. | ||
The combolayers NEEDS to be above the `keyboard.modules.append(Layers(combolayers))` | ||
|
||
```python | ||
combo_layers = { | ||
(1, 2): 3, | ||
} | ||
keyboard.modules.append(Layers(combo_layers)) | ||
``` | ||
|
||
In the above code, when layer 1 and 2 are held, layer 3 will activate. If you release 1 or 2 it will go to whatever key is still being held, if both are released it goes to the default (0) layer. | ||
You should also notice that if you already have the layers Module activated, you can just add combolayers into `(Layers())` | ||
|
||
You can add more, and even add more than 2 layers at a time. | ||
|
||
```python | ||
combo_layers = { | ||
(1, 2): 3, | ||
(1, 2, 3): 4, | ||
} | ||
``` | ||
|
||
## Limitations | ||
|
||
There can only be one combo layer active at a time and for overlapping matches | ||
the first matching combo in `combo_layers` takes precedence. | ||
Example: | ||
```python | ||
layers = Layers() | ||
layers.combo_layers = { | ||
(1, 2, 3): 8, | ||
(1, 2): 9, | ||
} | ||
keyboard.modules.append(Layers(combo_layers)) | ||
``` | ||
* If you activate layers 1 then 2, your active layer will be layer number 9. | ||
* If you activate layers 1 then 2, then 3, your active layer will be layer | ||
number 3 (because the layer combo `(1,2)` has been activated, but layer 3 | ||
stacks on top). | ||
* deactivate 1: you're on layer 3 | ||
* deactivate 2: you're on layer 3 | ||
* deactivate 3: you're on layer 8 | ||
* If you activate layers 3 then 1, then 2, your active layer will be layer | ||
number 8. Deativate layer | ||
* deactivate any of 1/2/3: you're on layer 0 | ||
|
||
|
||
## Fully Working Example code | ||
|
||
Below is an example of a fully working keypad that uses combo layers. | ||
|
||
```python | ||
print("Starting") | ||
|
||
import board | ||
|
||
from kmk.kmk_keyboard import KMKKeyboard | ||
from kmk.keys import KC | ||
|
||
combo_layers = { | ||
(1, 2): 3, | ||
keyboard.modules.append(Layers(combo_layers)) | ||
|
||
|
||
keyboard = KMKKeyboard() | ||
|
||
|
||
keyboard.keymap = [ | ||
[ #Default | ||
KC.A, KC.B KC.C KC.D, | ||
KC.E, KC.F KC.G KC.H, | ||
KC.MO(1), KC.J, KC.K, KC.MO(2), | ||
], | ||
[ #Layer 1 | ||
KC.N1, KC.N2, KC.N3, KC.N4, | ||
KC.N5, KC.N6, KC.N7, KC.8, | ||
KC.MO(1), KC.N9, KC.N0, KC.MO(2), | ||
], | ||
[ #Layer 2 | ||
KC.EXLM, KC.AT, KC.HASH, KC.DLR, | ||
KC.PERC, KC.CIRC, KC.AMPR, KC.ASTR, | ||
KC.MO(1), KC.LPRN, KC.RPRN, KC.MO(2), | ||
], | ||
[ #Layer 3 | ||
KC.F1, KC.F2, KC.F3, KC.F4, | ||
KC.F5, KC.F6, KC.F7, KC.F8, | ||
KC.MO(1) KC.F9, KC.F10, KC.MO(2) | ||
] | ||
|
||
] | ||
|
||
if __name__ == '__main__': | ||
keyboard.go() | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters