Skip to content

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.

Layout page sections

Sections in the layout page

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.

Layers

Layer selector

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.

Advanced configurations

Advanced Configurations

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.

Behavior and keycode

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
  • &lt: 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 to magic layer
  • &lower: hold to momentarily switch to lower layer. Double tap to persistently switch to lower 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:

  1. Select &kp as behavior
  2. In the keycode slot, select LS as keycode
  3. In the keycode slot for LS modifier function, select LC as keycode
  4. In the keycode slot for LC modifier function, select LG as keycode
  5. In the keycode slot for LG modifier function, select LALT as keycode

Modifier functions

Modifier functions to define hyper

&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:

  1. Selecting the layer you want to print
  2. Using the browser print function to print the layer.

Info

On a Windows browser this is typically activated by Ctrl-P