Layout¶
When we view a layout, whether it is a template layout, a layout created by another community member or your own saved layout, you will see a screen like below.
Title¶
A human readable description of the layout.
Tags¶
Each layout has one or more tags. Tags are descriptive keywords that help yourself remember and to help other people find your layout. A good tag should describe a key distinguishing attribute of the key layout, perhaps describing the application, OS, game that the layout is designed for.
A tag must start with a lower case, and consists of only lower case, numbers and dashes.
Some good examples of tags include:.
-
OS: linux, mac, android
-
Layout: azerty, colemak
-
Language: japanese, german, swedish, norwegian, spanish
-
Software or games: excel, vim, vscode, dota2
-
Others: custom-defined-behaviors
Locale¶
This changes the rendering of the legends on the keyboard to match the selected locale. This helps international Glove80 users to design their keyboard layouts.
The default locale is en-US, which matches computers set to the United States English locale.
For more information please see International Keyboard Setup.
Layer selector¶
Glove80/ZMK supports the concept of multiple layers. When you power on the keyboard, the base layer (Layer 0) will be active. However, you can switch to different layers; thus, the same key can serve multiple purposes. This isn’t as confusing as it may sound, it’s similar to the Fn key on a laptop. There are two ways of switching layers: You can switch to another layer momentarily (while you hold down a trigger key, à la “Fn”) or indefinitely (until you switch layers again).
When shipped, Glove80’s default key layout has 3 Layers:
- Base layer (Layer 0)
- Lower layer (Layer 1)
- Magic layer (Layer 2)
ZMK documentation for layers are at https://zmk.dev/docs/features/keymaps
On Glove80 Layout Editor, the layers are represented on the left hand side. The current layer shown on the layout is the layer highlighted.
When you hover over the circles, the full names of the layers appear and you can select a particular layer to show.
Notes¶
This optional section is for yourself and others to better understand the intention of the layout.
Custom Defined Behavior¶
This optional section is for creating custom ZMK behaviors such as tap-dance, macros and combos by injecting your own code into the generated keymap DTSI file. This is advanced functionality; please use it with extreme caution.
For more information please see Advanced usage: Custom Defined Behaviors.
Custom Device-Tree¶
This optional section is for injecting your own code into the generated keymap DTSI file. This is advanced functionality; please use it with extreme caution.
For more information please see Advanced usage: Custom Device-Tree
Advanced Configuration¶
The Advanced Configuration section allows you to override the default ZMK firmware behaviors. For most users, it is not necessary to tune these advanced configuration settings.
Some of the Advanced Configuration settings include:
- Enabling or disabling N-key rollover (NKRO)
- Enabling, disabling and configuring deep sleep
- Key debouncing characteristics to eliminate key chatter
- Debugging and troubleshooting settings
Note
Certain Advanced Configuration options, relating to HID descriptor such as NKRO, will not take effect until the HID descriptor is refreshed. Please see https://zmk.dev/docs/features/bluetooth#refreshing-the-hid-descriptor for details.
Key binding & key behaviors¶
Each key in each layer can be bound to a key behavior.
The upper left corner shows the behavior type.
The middle shows the keycode or the behavior parameter, depending on the type of behavior.
Behavior types¶
Glove80 Layout Editor currently supports the following ZMK behavior types directly.
&kp
: key press&bootloader
: enter bootloader mode&bt
: bluetooth&cap_word
: capitalize words&key_repeat
: repeat key&kt
: key toggle<
: layer tap&mo
: momentary layer&mt
: mod tap&none
: do nothing&output
: output selection&reset
: reset keyboard&rgb_ug
: RGB underglow control&sk:
sticky key&sl
: sticky layer&to
: to layer&trans
: transparent
For more information on the ZMK key behaviors, please see ZMK documentation at https://zmk.dev/docs
In additional to the above standard ZMK behaviors, Glove80 also supports the following pseudo behaviors:
&bt_0
: select bluetooth profile 0 with a single quick-tap, explicitly disconnect bluetooth profile 0 with a double quick-tap&bt_1
: select bluetooth profile 1 with a single quick-tap, explicitly disconnect bluetooth profile 1 with a double quick-tap&bt_2
: select bluetooth profile 2 with a single quick-tap, explicitly disconnect bluetooth profile 2 with a double quick-tap&bt_3
: select bluetooth profile 3 with a single quick-tap, explicitly disconnect bluetooth profile 3 with a double quick-tap&magic
: quick-tap to show RGB indicators. Press to momentarily switch tomagic
layer&lower
: hold to momentarily switch tolower
layer. Double tap to persistently switch tolower
layer.Custom
: A special pseudo behavior to allow arbitrary key mapping, to be used with Custom Defined Behavior. For more information please see Custom Defined Behaviors.
Keypress behavior: modifier functions¶
The keypress (&kp
) behavior in ZMK has a very powerful but not-well-known capability known as the modifier function. Modifier functions make it possible to add one or more modifiers to a keycode.
ZMK documentation for modifier functions are at https://zmk.dev/docs/codes/modifiers#modifier-functions
Glove80 Layout Editor has built-in support for modifier functions. For example if you type LA as the keycode for an &kp
behavior, you have selected the Left Alt function. You can then add another key or modifier function.
For example, to define Hyper, you can use &kp LS(LC(LG(LALT)))
. To do so:
- Select
&kp
as behavior - In the keycode slot, select
LS
as keycode - In the keycode slot for
LS
modifier function, selectLC
as keycode - In the keycode slot for
LC
modifier function, selectLG
as keycode - In the keycode slot for
LG
modifier function, selectLALT
as keycode
&magic
pseudo behavior¶
This is a special MoErgo-defined pseudo behavior defined as a macro. For a key bound to this behavior,
- A quick tap will activate the LED indicators. Please see the Glove80 User Guide "Indicators" section for more information.
- While holding the key, Glove80 will momentarily switch to the layer with the label
Magic
(note: case sensitive). After key release, Glove80 will automatically revert back to the current layer.
On a standard Glove80 layout, LH C6R6
key is mapped to the &magic
behavior in all layers.
&lower
pseudo behavior¶
This is a special MoErgo-defined pseudo behavior defined as a macro. For a key bound to this behavior,
- While holding the key, Glove80 will momentarily switch to the layer with the label
Lower
(note: case sensitive). After key release, Glove80 will automatically revert back to the current layer - If double tapped, Glove80 will permanently switch to layer with the label
Lower
.
On a standard Glove80 layout, LH T3
key is mapped to the &lower
behavior in the Base Layer (layer 0).
Bluetooth &bt_0 &bt_1 &bt_2 &bt_3
pseudo behaviors¶
These 4 pseudo behaviors provide the following functionality:
- On a single quick-tap, switch Glove80 to the respective designated bluetooth device, if the bluetooth device is currently connected
- On a double-tap, explicitly disconnect the respective designated bluetooth device, if the bluetooth device is currently connected and is not the current active BLE profile. This functionality is useful for tablets and phones that disable on-screen keyboard, even if the device is not the current selected Glove80 output device.
Underneath the bonnet, these behaviors are each implemented as a tap-dance and a macro, The macro sets output to bluetooth, and then sets the bluetooth device to the designated bluetooth device.
As an example &bt_0
is defined as:
behaviors {
bt_0: bt_0 {
compatible = "zmk,behavior-tap-dance";
label = "BT_0";
#binding-cells = <0>;
tapping-term-ms = <200>;
bindings = <&bt_select_0>, <&bt BT_DISC 0>;
};
}
macros {
bt_select_0: bt_profile_macro_0 {
label = "BT_0";
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
bindings
= <&out OUT_BLE>,
<&bt BT_SEL 0>;
};
};
Bluetooth clear all profiles &bt BT_CLR_ALL
¶
The &bt
behavior has been extended with an additional parameter BT_CLR_ALL
When bound to &bt BT_CLR_ALL
, the key will initiate clearing all Bluetooth bindings (excluding the binding to the Glove80 right hand).
Sharing layouts¶
To share a saved layout simply copy the URL to forward to the person to share with.
Printing layouts¶
When you are learning a new layout, it is often useful to print a copy of the layout on paper. Glove80 Layout Editor supports this functionality.
You can print a layer by:
- Selecting the layer you want to print
- Using the browser print function to print the layer.
Info
On a Windows browser this is typically activated by Ctrl-P