#
# This is the configuration file for the twiddler keyboard as used under
# the gpm mouse server
#
# Empty lines and comments are ignored, other lines must follow either
# of the following conventions:
#     chord = value     (e.g.   "L000 = a")
# mod chord = value     (e.g.   "Shift L000 = a")
#
# The "mod" is one of "Shift" "Numeric" "Function" "Control" "Ctrl" "Alt",
# or any abbreviation of those (case independent)
# The special case "Ctrl+Shift" (or "Shift+Ctrl") is supported, but note
# that it can't be abbreviated like C+S or anything like that.
#
# The "chord" value is one of the usual specifications, uppercase only
#
# Value can be a single byte (also as escape sequence), a string with
# double quotes (with escape sequences) or a special name (one of those
# appearing as "string" in dumpkeys, and Up Down Left Right).
# In addition, the strings "Console" and "Exec" are supported. See the
# sample case below.
#
# Escape sequences are \n \r \e \t \a \b, octal ("\243") or hex ("\xff")
# numbers. Any other char is returned unchanged, like \" or \\.

######## Lowercase
R000 = a
0R00 = b
00R0 = c
000R = d
M000 = e
0M00 = f
00M0 = g
000M = h
LR00 = i
L0R0 = j
L00R = k
LM00 = l
L0M0 = m
L00M = n
LL00 = o
L0L0 = p
L00L = q
MR00 = r
M0R0 = s
M00R = t
MM00 = u
M0M0 = v
M00M = w
ML00 = x
M0L0 = y
M00L = z

############## Uppercase
Shift R000 = A
Shift 0R00 = B
Shift 00R0 = C
Shift 000R = D
Shift M000 = E
Shift 0M00 = F
Shift 00M0 = G
Shift 000M = H
Shift LR00 = I
Shift L0R0 = J
Shift L00R = K
Shift LM00 = L
Shift L0M0 = M
Shift L00M = N
Shift LL00 = O
Shift L0L0 = P
Shift L00L = Q
Shift MR00 = R
Shift M0R0 = S
Shift M00R = T
Shift MM00 = U
Shift M0M0 = V
Shift M00M = W
Shift ML00 = X
Shift M0L0 = Y
Shift M00L = Z

######## Control
Ctrl  R000 = \x01
Ctrl  0R00 = \x02
Ctrl  00R0 = \x03
Ctrl  000R = \x04
Ctrl  M000 = \x05
Ctrl  0M00 = \x06
Ctrl  00M0 = \x07
Ctrl  000M = \x08
Ctrl  LR00 = \x09
Ctrl  L0R0 = \x0a
Ctrl  L00R = \x0b
Ctrl  LM00 = \x0c
Ctrl  L0M0 = \x0d
Ctrl  L00M = \x0e
Ctrl  LL00 = \x0f
Ctrl  L0L0 = \x10
Ctrl  L00L = \x11
Ctrl  MR00 = \x12
Ctrl  M0R0 = \x13
Ctrl  M00R = \x14
Ctrl  MM00 = \x15
Ctrl  M0M0 = \x16
Ctrl  M00M = \x17
Ctrl  ML00 = \x18
Ctrl  M0L0 = \x19
Ctrl  M00L = \x1a

######## Meta (Alt)
Meta R000 = "\ea"
Meta 0R00 = "\eb"
Meta 00R0 = "\ec"
Meta 000R = "\ed"
Meta M000 = "\ee"
Meta 0M00 = "\ef"
Meta 00M0 = "\eg"
Meta 000M = "\eh"
Meta LR00 = "\ei"
Meta L0R0 = "\ej"
Meta L00R = "\ek"
Meta LM00 = "\el"
Meta L0M0 = "\em"
Meta L00M = "\en"
Meta LL00 = "\eo"
Meta L0L0 = "\ep"
Meta L00L = "\eq"
Meta MR00 = "\er"
Meta M0R0 = "\es"
Meta M00R = "\et"
Meta MM00 = "\eu"
Meta M0M0 = "\ev"
Meta M00M = "\ew"
Meta ML00 = "\ex"
Meta M0L0 = "\ey"
Meta M00L = "\ez"

##### 1b is escape, etc...

      RRR0 = \x1b

############### Numbers and symbols (ascii 0x20 to 0x40)
    L000 = " "
    R0L0 = !
    R0M0 = "
    0M0L = #
    0LR0 = $
    00RM = %
    0L0L = &
    RM00 = '
    0LL0 = (
    0RL0 = )
    00LM = *
    00ML = +
    R0R0 = ,
    R00L = -
    RR00 = .
    MMM0 = /
Num 0L00 = 0
Num R000 = 1
Num 0R00 = 2
Num 00R0 = 3
Num 000R = 4
Num M000 = 5
Num 0M00 = 6
Num 00M0 = 7
Num 000M = 8
Num L000 = 9
    00RL = :
    R00R = ;
Num M00L = <
    00MR = =
Num R0R0 = >
    RL00 = ?
    00LR = @

############## Other symbols (ascii 0x5b to 0x60 and 0x7b to 0x7f)

Num RM00 = [
    LLL0 = \
Num R00M = ]
Num LM00 = ^
    0R0L = _
Num R0L0 = `

Num R00L = {
Num LLR0 = |
Num LL0R = }
Num LLM0 = ~
    0L00 = \x7f
    00L0 = \x08

############## In addition to ascii, here are the special keys

# return, tab
000L = \x0a
MM0M = \x09

# arrows
0MR0 = Up
0ML0 = Down
0MM0 = Left
0M0M = Right

# pageup/down
00RR = Prior
00LL = Next

############## Functions
Fun R000 = F1
Fun 0R00 = F2
Fun 00R0 = F3
Fun 000R = F4
Fun M000 = F5
Fun 0M00 = F6
Fun 00M0 = F7
Fun 000M = F8
Fun L000 = F9
Fun 0L00 = F10
Fun 00L0 = F11
Fun 000L = F12


############## Console switching
Ctrl+Shift R000 = Console 1
Ctrl+Shift 0R00 = Console 2
Ctrl+Shift 00R0 = Console 3
Ctrl+Shift 000R = Console 4
Ctrl+Shift M000 = Console 5
Ctrl+Shift 0M00 = Console 6
Ctrl+Shift 00M0 = Console 7
Ctrl+Shift 000M = Console 8
Ctrl+Shift L000 = Console 9
Ctrl+Shift 0L00 = Console 10
Ctrl+Shift 00L0 = Console 11
Ctrl+Shift 000L = Console 12

############## Executing commands (be careful: this is root)
# This is just an example: t for "time" and s for "space"
# The empty line is  used to align text on console border

F M00R = Exec    echo > /dev/tty0; date > /dev/tty0
F M0R0 = Exec    echo > /dev/tty0; df   > /dev/tty0

# you can put shutdown, reboot or anything here.

############## Macros

0RR0 = "the"
0RM0 = "of"
0R0R = "to"
0M0R = "ed"
R00M = "and"
0R0M = "in"
0L0M = "ion"
00MM = "ing"

############## Add accented letters here below....
