ch57x-keyboard-tool 1.2.2

Command-line tool for programming ch57x keyboard
# Normal keyboard orienation is when buttons are on the left
# side and knobs are on the right. However, you may want to use
# the keyboard in another orienation. To avoid remapping button
# positions in your head, just set it here.
# Possible values are:
#   (horizontal)
#   - 'normal': buttons on the left, knobs on the right
#   - 'upsidedown': buttons on the right, knobs on the left
#   (vertical)
#   - 'clockwise': buttons on the top, knobs on the bottom
#   - 'counterclockwise': buttons on the bottom, knobs on the top
orientation: normal

# There are different models of keyboard with different numbers
# of buttons and knobs. Set it here for proper handling.
# Count rows and columns with the keyboard in normal orienation,
# with knobs on the right side.
rows: 3
columns: 4
knobs: 2

# Layers are sets of alternative key mappings.
# The current layer is changed using a button on the side of the keyboard
# and displayed with LEDs on top (only for the moment of changing).
# All keyboards I saw had three layers, but I suppose other variants
# exist.
layers:
  - buttons:
      # Array of buttons. In horizontal orienations it's `rows` rows
      # `columns` buttons each. In vertical: `columns` rows
      # `rows` buttons each.
      # Each entry is either a sequence of 'chords' or a mouse event.
      # A chord is a combination of one key with optional modifiers,
      # like 'b', 'ctrl-alt-a' or 'win-rctrl-backspace'. It can also
      # be just modifiers without a key: 'ctrl-alt'.
      # You may combine up to 5 chords into a sequence using commas: 'ctrl-v,ctrl-c'.
      # Arbitrary scan codes (decimal) may be given like this: '<101>'.
      - ["a", "ctrl-a", "alt-shift", "alt-ctrl,ctrl-b"]
      - ["e", "f", "g", "h"]
      - ["<100>", "j", "k", "l"]
    knobs:
      # Knobs are listed from left to right if horizontal
      # and from top to bottom if vertical.
      # Knobs can be rotated counter-clockwise (ccw) or clockwise (cw)
      # and pressed down.
      - ccw: 'wheelup'
        press: 'click'
        cw: 'wheeldown'
      - ccw: 'shift-wheelup'
        press: 'shift-click'
        cw: 'shift-wheeldown'

  - buttons:
      # Mouse events are clicks ('click/lclick', 'rclick', 'mclick') or
      # wheel events ('wheelup', 'wheeldown') with one optional modifier,
      # only 'ctrl', 'shift' and 'alt' are supported ('ctrl-wheeldown').
      # Clicks may combine several buttons, like this: 'click+rclick'.
      - ["click", "lclick", "rclick", "mclick"]
      - ["click+rclick", "wheeldown", "shift-wheelup", "ctrl-wheelup"]
      - ["alt-wheelup", "ctrl-click", "wheelup", "wheelup"]
    knobs:
      - ccw: 'left'
        press: 'enter'
        cw: 'right'
      - ccw: 'ctrl-left'
        press: 'ctrl-enter'
        cw: 'ctrl-right'

  - buttons:
      # Multimedia commands are also supported. They cannot be mixed with
      # normal keys and modifiers.
      - ["play", "prev", "next", "mute"]
      - ["2", "3", "4", "5"]
      - ["6", "7", "8", "9"]
    knobs:
      - ccw: 'volumedown'
        press: 'mute'
        cw: 'volumeup'
      - ccw: 'd'
        press: 'e'
        cw: 'f'