ktrl 0.1.8

A Supercharged Keyboard Programming Daemon
// ktrl Example Configuration File
// -------------------------------
//
// ktrl config files use `ron` (Rust Object Notation) to serialize
// the text into the internal `cfg::Cfg` struct.
//
// - The full KEY_... listing can be found inside the `keys::KeyCode` enum
// - Layer entries are mapping between a source `KeyCode` into an `Action` (more on that below)
//
(
    // ktrl will register a TapHold as an hold after 300ms
    tap_hold_wait_time: 300,

    // ktrl will register a TapDance if all taps occur within a 1000ms period (1s)
    tap_dance_wait_time: 1000,

    // Gives names to layers
    layer_aliases: {
        "base": 0,
        "function_keys": 1,
        "meta-disabled": 2,
        "meta-enabled": 3,
    },

    layer_profiles: {
        "function": Profile(
            indices: [],
            aliases: ["function_keys"],
        ),
        "meta": Profile(
            indices: [],
            aliases: ["meta-enabled", "function_keys"]
        ),
        "no-meta": Profile(
            indices: [],
            aliases: ["meta-disabled"],
        ),
    },

    layers: [
        // Layer 0 (Base Layer)
        //
        //   Layer 0 is a bit special.
        //   When ktrl stats-up, it automatically enables this layer.
        //   After that, it can never be turned off.
        //   I.E it configures the default behavior (when all other layers are off).
        //
        //   All the layer entries repeat the same pattern.
        //   They map a source `KeyCode` to an `Action`.
        //
        {
            KEY_LEFTMETA:  Tap(Key(KEY_LEFTCTRL)),
            KEY_RIGHTALT: TapHold(Key(KEY_RIGHTALT), ActivateProfile("meta")),
            KEY_F1:  TapHold(Key(KEY_F1), ToggleLayerAlias("function_keys")),
            KEY_F3:  TapHold(Key(KEY_F3), DeactivateAllProfiles),

        },
        // function_keys
        {
            // maps standard Mac keyboard to default to function keys.
            KEY_BRIGHTNESSDOWN: Tap(Key(KEY_F1)), // 224
            KEY_BRIGHTNESSUP: Tap(Key(KEY_F2)), // 225
            KEY_SCALE: Tap(Key(KEY_F3)), // 120
            KEY_DASHBOARD: Tap(Key(KEY_F4)), // 204
            KEY_KBDILLUMDOWN: Tap(Key(KEY_F5)), //229
            KEY_KBDILLUMUP: Tap(Key(KEY_F6)), // 230
            KEY_PREVIOUSSONG: Tap(Key(KEY_F7)), // 165
            KEY_PLAYPAUSE: Tap(Key(KEY_F8)), // 164
            KEY_NEXTSONG: Tap(Key(KEY_F9)), // 163
            KEY_MUTE: Tap(Key(KEY_F10)), // 113
            KEY_VOLUMEDOWN: Tap(Key(KEY_F11)), // 114
            KEY_VOLUMEUP: Tap(Key(KEY_F12)), // 115
        },
        // meta-disabled
        {
            KEY_LEFTMETA:  Tap(Key(KEY_LEFTCTRL)),
            KEY_RIGHTALT: TapHold(Key(KEY_RIGHTALT), ActivateProfile("meta")),
        },
        // meta-enabled
        {
            KEY_LEFTMETA:  Tap(Key(KEY_LEFTMETA)),
            KEY_RIGHTALT: TapHold(Key(KEY_RIGHTALT), ActivateProfile("no-meta")),
        },
    ],
)