!loadkeys--compact--rpi-kyb.htm ! loadkeys--compact--rpi-kyb !
Reference:

! A buttonboard layout with one button per letter
! of the English (U.S.) alphabet, and four symbols
! per button.  Two layout buttons, "left" and "top",
! provide access to all four layouts of the presumed
! 2x2 matrix (Diagram for typing symbols).
!
! Spacing and deleting is handled by the left thumb
! (Diagram for spacing and deleting).
!
! Movement and placement is handled by the right thumb
! (Diagram for placing content).


! Ideally, there would be one button per layout
! for activating each rather than temporarily switching.

!

#buttonboard model


! For a Raspberry Pi buttonboard.
!  Model No.: RPI-KYB
!  78 buttons
!
! Very odd physical design, and peculiar failures when
! holding multiple buttons.
!
! The modifier buttons are wide enough for thumbs, as if
! the hands were meant to be crossed, wrist on top of wrist.
! Perhaps so, then the palm could press that extra wide
! barbutton.
!
! It has movement buttons for left/up/down/right
! sort of convenient for the thumb, with wrists crossed.


!---------------------------------------------------------.
!esc|F1  F2  F3   F4  F5  F6  F7  F8  F9  F10|num prt fdel|
!   |F11 F12                              scr|    srq  ins|
!---^----------------------------------------^------------|
! `   1   2   3   4   5   6   7   8   9   0   -   = | bdel|
!---------------------------------------------------^-----|
!tab  | q   w   e   r   t   y   u   i   o   p   [   ]   \ |
!-----^---------------------------------------------------|
!caps  | a   s   d   f   g   h   j   k   l   ;   ' | enter|
!------^-------------------------------------------^------|
!shift   | z   x   c   v   b   n   m   ,   .   / |   shift|
!--------^---------------------------------------^--------|
!ctl|fn |spr|alt |     barbutton     |altg|ctl|   | up|   |
!   |   |   |    |                   |    |   |---+---+---|
!   |   |   |    |                   |    |   |lft|dwn|rt |
!---^---^---^----^-------------------^----^---^---^---^---'


! All keycodes as understood by a Linux console.
! Second keycode is while holding the Fn button
! (keycode still unknown).
!
! [The SysRq button (Fn + PrtScn) is still unknown.]
!
!---------------------------------------------------------.
! 1 | 59  60  61   62  63  64  65  66  67  68| 69  99  111|
!   | 87  88                               70|    srq  110|
!---^----------------------------------------^------------|
! 41   2   3   4   5   6   7   8   9  10  11  12  13|   14|
!---------------------------------------------------^-----|
!15   | 16  17  18  19  20  21  22  23  24  25  26  27  43|
!-----^---------------------------------------------------|
!58    | 30  31  32  33  34  35  36  37  38  39  40|    28|
!------^-------------------------------------------^------|
!42      | 44  45  46  47  48  49  50  51  52  53|      54|
!--------^---------------------------------------^--------|
!29 |fn |125|56  |        57         | 100| 97|   |103|   |
!   |   |   |    |                   |    |   |---+---+---|
!   |   |   |    |                   |    |   |105|108|106|
!---^---^---^----^-------------------^----^---^---^---^---'

!

#buttonboard circuit failures


! On rare occassion, a button press will continuosly repeat itself,
! as if it were still held.  When typing, this appears as a single
! letter continuously typed.
!
! The only way to stop it seems to be to randomly type as many
! buttons as possible until the something else (from one of those
! randomly typed buttons) appears on the screen.  Then, delete
! the mess.


! [...prior failures when used with the X Window System...]

! The PrtScn button (keycode 107) seems incompatible
! with Shift Lock in the X Window System, at least
! when using xmodmap to set the buttonboard map.
!
! In other words, the character mapped to
! PrtScn (keycode 107) for Shift
! fails to be produced with Shift Lock.
! (Currently untested with Shift.)
!
! For example, with the following mapping:
!  keycode 107 = g 3  G asterisk
! The "3" will be unattainable with Shift Lock.


! The PrtScn button (keycode 107) is slightly incompatible
! with Mode switch of the X Window System.
!
! A character mapped to the PrtScn button
! for the "Mode switch" is produced only after
! the Mode switch button has been released.
!
! In other words, hold the Mode switch button then
! type the PrtScn button, but nothing appears
! to happen.  Release the Mode switch button and
! the character is produced.
!
! Typing anything else before releasing Mode switch
! will prevent whatever character was mapped
! to the PrtScn button from appearing.

!

#diagrams


! Four fingers means four buttons in a row.
! One row above and one row below means three rows.
! Twelve buttons per hand means 24 buttons total.
!
! There are usually 47 buttons with symbols,
! two per button.  Two "shift" buttons for
! the other half, but only one needed.
!
! As that is almost twice as many as 24, four symbols
! per button encompasses all.  Two "shift" buttons
! can suffice for three additional layouts by holding
! both for the third.


! Consider having four symbols per button in a
! 2 by 2 matrix, the one at left-bottom as default.
!
!   left-top   top
!   left       default
!
! The layout buttons, t.i. "shift" buttons,
! are "left" for the symbol left of the default,
! "top" for the symbol above the default,
! and both for the left-top symbol.

!

#diagram of buttons for typing symbols


! Letters are listed in familiar alphabetical order
! from left to right and then top to bottom,
! the same as when writing and reading.  Add two more
! buttons outside the forefingers for "y" and "z".
! Small letters are the default layout and their
! capitals are a separate layout as usual
! (and left of the small letters as expected).
!
! Numbers are sequential as when counting,
! and familiarly arranged as on phones and ATMs.
! The ten digits are grouped within the twelve buttons
! of the right half, with the minus, plus, and period.


!  /    .    ,    m                   v    c    x    z
! ---  ---  ---  ---                 ---  ---  ---  ---
! { (  } )  < [  > ]                 \ 1  / 2  * 3  = -
! A a  B b  C c  D d                 E e  F f  G g  H h
!
!  '    ;    l    k    j         g    f    d    s    a
! ---  ---  ---  ---  ---       ---  ---  ---  ---  ---
! ¨ "  ¸ ,  ¯ ʻ  ¡ !  ¿ ?       # 0  & 4  | 5  @ 6  : .
! I i  J j  K k  L l  Y y       Z z  M m  N n  O o  P p
!
!  [    p    o    i                   r    e    w    q
! ---  ---  ---  ---                 ---  ---  ---  ---
! ` `  ~ ~  ^ ^  ´ '                 _ 7  $ 8  % 9  ; +
! Q q  R r  S s  T t                 U u  V v  W w  X x


! The ʻokina consonant and the kahakō accent (macron)
! are the top half of "k".
!
! Composition with the accent for
!  umlaut (diaeresis),  cedilla,
!  grave,               tilde,     circumflex,  acute
! are with the traditional mnemonic symbols that were
! combined with an AltGr or Compose button long ago:
!  double-quote,        comma,
!  backtick,            squiggly,  caret,       apostrophe
! That is from the left-top of:  i, j, q, r, s, t.
!
! Composition of the circumflex accent with a digit
! results in an exponential (superscript):  ⁰¹²³⁴⁵⁶⁷⁸⁹.

!

#diagram of buttons for spacing and deleting


! The left thumb is for spacing and deleting.
!
! The left thumb rests comfortably on the gap
! at the 4-way intersection of the buttons for
! space, forward delete, the "lower" layouts,
! and Escape.
!
! That has also helped with locating by feel,
! and the sound of the barbutton when jostled.


!         9      8
!       ----   ----
!       Back   Fore
!       -del   -del
!
!    F9        F8        F7
! -------   -------   -------
! Newline    space     "lock
!                       left"


! The "nobreakspace" is less accidental
! with "left" rather than "top".

!

#diagram of buttons for placing content


! The right thumb is for placing the
! text insertion point or the viewed content.
!
! The right thumb rests comfortably on the gap
! at the 4-way intersection of the buttons for
! Left, Right, the "right" layouts, and Escape.
!
! That has also helped with locating by feel,
! and the sound of the barbutton when jostled.


!                         5             4
!                     ---------    ----------
!                     Prior  Up    End  Right
!
!     F6             F5            F4
! ----------    -----------    ----------
! "lock top"    Afore  Left    Next  Down


! The Home, End, Prior, and Next keysyms are typically
! for content navigation.
!
! The Tab is a capitulation for hyperlink navigation
! or text completion.  The Tab as a typed character
! is for substitution matches, f.e. spaces or deletion,
! because it has been phased out of personal workflows.

!

#diagram of buttons for commands


! Control   Alt       barbutton       Alt     RPi     Fn   Control
! -------   ---   -----------------   ---   -------   --   -------
! Control   Alt   "view management"   Alt   Control   Fn     RPi


! The barbutton is Escape for the "top maps"
! of StumpWM (X11), t.i. stumpwm::*escape-key*.
! Mostly unused within the virtual terminal,
! perhaps only in emacs.
!
! Phasing out the Control keysyms in personal
! workflows.  Probably need only C-x for emacs.
! Essentially, only the small letters are relevant.
! Might also be useful with other computers (VNC).
!
! Phasing out the Alt keysyms in personal workflows.
! The Alt button toggles the menubar of a program,
! then type the underlined letter for a menu
! or for one of its commands.
! Might also be useful with other computers (VNC).
!
! The Super keysym (RPi) is unneeded for the moment.
! Might be useful with other computers (VNC).

!

#keycode assignment


! Remap the whole buttonboard.  Unassign all unneeded
! buttons in order to prevent mistyping.


! Optionally, declare which columns are being defined.
! Multiple values and ranges are allowed, comma separated.

!keymaps 0,1,4,5,8,9,12,13 ! Only: plain, shift, control, alt.
keymaps 0-127 ! Default keymap defines 0-127.  Override all.

!

#symbols for row 1


! Row 1:
!  esc (9), F1-F12, eject (169)
!
! F1  F2  F3  F4  F5  F6  F7  F8  F9  F10 F11 F12
! --- --- --- --- --- --- --- --- --- --- --- ---
! 232 233 128 212 237 238 173 172 171 121 122 123


! Left hand: top row.
keycode 1=Escape
alt keycode 1=Meta_Escape

! Unassigned

! Only F1, F3, and F4 have been useful, f.e. Emacs.
! Re-assign to the primary F5-F8 keycodes.

! Right hand: top row.
! The F10 button was too far left for the forefinger.
! The F11 button was awkward for typing, but might be
! convenient as the Alt button for toggling a menubar.


! Function keys F1-F12 are remapped to the system keys
! (brightness, etc.), so there is no need for Fn modifier key.
! Original functionality (noted in comments) remains unmapped.
! Emacs needs the default strings (of console codes) in order to
! recognize the function keys.  See variable `input-decode-map',
! and the help for emacs bindings (C-h b and search for "M-[").

string F1="\033[[A"
keycode 224=F1 ! decrease brightness

string F2="\033[[B"
keycode 225=F2 ! increase brightness

string F3="\033[[C"
keycode 120=F3 ! show views of all applications all at once

string F4="\033[[D"
keycode 204=F4 ! widget views

string F5="\033[[E"
keycode 229=F5

string F6="\033[17~"
keycode 230=F6

string F7="\033[18~"
keycode 165=F7 ! rewind (previous track?)

string F8="\033[19~"
keycode 164=F8 ! play/pause

string F9="\033[20~"
keycode 163=F9 ! fast forward (next track?)

string F10="\033[21~"
keycode 113=F10 ! mute volume

string F11="\033[23~"
keycode 114=F11 ! decrease volume

string F12="\033[24~"
keycode 115=F12 ! increase volume


! Keycodes for F1-F12.  Need Fn key.
! Consoles are usually F1-F6 with Alt; remapped without Alt.
! There are 63 consoles available.  Consider using modifier keys
! for adding more consoles beyond the number of available
! unmodified keys.  Or, consider using frames within emacs.
keycode 59=Console_1 ! F1
keycode 60=Console_2 ! F2
keycode 61=Console_3 ! F3
keycode 62=Console_4 ! F4
keycode 63=Console_5 ! F5
keycode 64=Console_6 ! F6

!keycode 65= ! F7
!keycode 66= ! F8
!keycode 67= ! F9
!keycode 68= ! F10
!keycode 87= ! F11
!keycode 88= ! F12


! Eject key.  Seems to be no equivalent symkey name (nor need).
string F20="\033[34~"
keycode 161=F20 ! eject



!

#symbols for row 2


! Row 2
!
! `  1  2  3  4  5  6  7  8  9  0  -  =  delete
! -- -- -- -- -- -- -- -- -- -- -- -- -- ------
! 49 10 11 12 13 14 15 16 17 18 19 20 21   22


! Left hand: middle row.
! The ʻokina consonant is Unicode hexadecimal "02bb".

! Unassigned

! Right hand: middle row.

keycode 41=grave asciitilde
alt keycode 41=Meta_grave
alt shift keycode 41=Meta_asciitilde
control keycode 41=grave
control shift keycode 41=asciitilde
alt control keycode 41=Meta_grave
alt control shift keycode 41=Meta_asciitilde

keycode 2=one exclam
alt keycode 2=Meta_one
alt shift keycode 2=Meta_exclam
control keycode 2=one
control shift keycode 2=exclam
alt control keycode 2=Meta_one
alt control shift keycode 2=Meta_exclam

keycode 3=two at
alt keycode 3=Meta_two
alt shift keycode 3=Meta_at ! M-@ in emacs: mark-word
control keycode 3=two
control shift keycode 3=nul ! C-@ in emacs: set-mark-command
alt control keycode 3=Meta_two
alt control shift keycode 3=Meta_nul ! C-M-@ in emacs: mark-sexp

keycode 4=three numbersign
alt keycode 4=Meta_three
alt shift keycode 4=Meta_numbersign
control keycode 4=three
control shift keycode 4=numbersign
alt control keycode 4=Meta_three
alt control shift keycode 4=Meta_numbersign

keycode 5=four dollar
alt keycode 5=Meta_four
alt shift keycode 5=Meta_dollar
control keycode 5=four
control shift keycode 5=dollar
alt control keycode 5=Meta_four
alt control shift keycode 5=Meta_dollar

keycode 6=five percent
alt keycode 6=Meta_five
alt shift keycode 6=Meta_percent
control keycode 6=five
control shift keycode 6=percent
alt control keycode 6=Meta_five
alt control shift keycode 6=Meta_percent

keycode 7=six asciicircum
alt keycode 7=Meta_six
alt shift keycode 7=Meta_asciicircum
control keycode 7=six
control shift keycode 7=Control_asciicircum
alt control keycode 7=Meta_six
alt control shift keycode 7=Meta_Control_asciicircum

keycode 8=seven ampersand
alt keycode 8=Meta_seven
alt shift keycode 8=Meta_ampersand
control keycode 8=seven
control shift keycode 8=ampersand
alt control keycode 8=Meta_seven
alt control shift keycode 8=Meta_ampersand

keycode 9=eight asterisk
alt keycode 9=Meta_eight
alt shift keycode 9=Meta_asterisk
control keycode 9=eight
control shift keycode 9=asterisk
alt control keycode 9=Meta_eight
alt control shift keycode 9=Meta_asterisk

keycode 10=nine parenleft
alt keycode 10=Meta_nine
alt shift keycode 10=Meta_parenleft
control keycode 10=nine
control shift keycode 10=parenleft
alt control keycode 10=Meta_nine
alt control shift keycode 10=Meta_parenleft

keycode 11=zero parenright
alt keycode 11=Meta_zero
alt shift keycode 11=Meta_parenright
control keycode 11=zero
control shift keycode 11=parenright
alt control keycode 11=Meta_zero
alt control shift keycode 11=Meta_parenright

keycode 12=minus underscore
alt keycode 12=Meta_minus
alt shift keycode 12=Meta_underscore
control keycode 12=minus
control shift keycode 12=Control_underscore
alt control keycode 12=Meta_minus
alt control shift keycode 12=Meta_Control_underscore

keycode 13=equal plus
alt keycode 13=Meta_equal
alt shift keycode 13=Meta_plus
control keycode 13=equal
control shift keycode 13=plus
alt control keycode 13=Meta_equal
alt control shift keycode 13=Meta_plus

keycode 14=Tab Meta_Tab ! Delete
alt keycode 14=Meta_Tab

!

#symbols for row 3


! Row 3
!
! tab q  w  e  r  t  y  u  i  o  p  [  ]  \
! --- -- -- -- -- -- -- -- -- -- -- -- -- --
! 23  24 25 26 27 28 29 30 31 32 33 34 35 51


! Left hand: bottom row.

! Unassigned

! Right hand: bottom row.


keycode 15=Shift_Lock ! Tab Meta_Tab

keycode 16=q Q
alt keycode 16=Meta_q
alt shift keycode 16=Meta_Q
control keycode 16=Control_q
control shift keycode 16=Control_q
alt control keycode 16=Meta_Control_q
alt control shift keycode 16=Meta_Control_q

keycode 17=w W
alt keycode 17=Meta_w
alt shift keycode 17=Meta_W
control keycode 17=Control_w
control shift keycode 17=Control_w
alt control keycode 17=Meta_Control_w
alt control shift keycode 17=Meta_Control_w

keycode 18=e E
alt keycode 18=Meta_e
alt shift keycode 18=Meta_E
control keycode 18=Control_e
control shift keycode 18=Control_e
alt control keycode 18=Meta_Control_e
alt control shift keycode 18=Meta_Control_e

keycode 19=r R
alt keycode 19=Meta_r
alt shift keycode 19=Meta_R
control keycode 19=Control_r
control shift keycode 19=Control_r
alt control keycode 19=Meta_Control_r
alt control shift keycode 19=Meta_Control_r

keycode 20=t T
alt keycode 20=Meta_t
alt shift keycode 20=Meta_T
control keycode 20=Control_t
control shift keycode 20=Control_t
alt control keycode 20=Meta_Control_t
alt control shift keycode 20=Meta_Control_t

keycode 21=y Y
alt keycode 21=Meta_y
alt shift keycode 21=Meta_Y
control keycode 21=Control_y
control shift keycode 21=Control_y
alt control keycode 21=Meta_Control_y
alt control shift keycode 21=Meta_Control_y

keycode 22=u U
alt keycode 22=Meta_u
alt shift keycode 22=Meta_U
control keycode 22=Control_u
control shift keycode 22=Control_u
alt control keycode 22=Meta_Control_u
alt control shift keycode 22=Meta_Control_u

keycode 23=i I
alt keycode 23=Meta_i
alt shift keycode 23=Meta_I
control keycode 23=Control_i
control shift keycode 23=Control_i
alt control keycode 23=Meta_Control_i
alt control shift keycode 23=Meta_Control_i

keycode 24=o O
alt keycode 24=Meta_o
alt shift keycode 24=Meta_O
control keycode 24=Control_o
control shift keycode 24=Control_o
alt control keycode 24=Meta_Control_o
alt control shift keycode 24=Meta_Control_o

keycode 25=p P
alt keycode 25=Meta_p
alt shift keycode 25=Meta_P
control keycode 25=Control_p
control shift keycode 25=Control_p
alt control keycode 25=Meta_Control_p
alt control shift keycode 25=Meta_Control_p

keycode 26=bracketleft braceleft
alt keycode 26=Meta_bracketleft
alt shift keycode 26=Meta_braceleft
control keycode 26=Escape
control shift keycode 26=braceleft
alt control keycode 26=Meta_Escape
alt control shift keycode 26=Meta_braceleft

keycode 27=bracketright braceright
alt keycode 27=Meta_bracketright
alt shift keycode 27=Meta_braceright
control keycode 27=Control_bracketright
control shift keycode 27=braceright
alt control keycode 27=Meta_Control_bracketright
alt control shift keycode 27=Meta_braceright

keycode 43=backslash bar
alt keycode 43=Meta_backslash
alt shift keycode 43=Meta_bar
control keycode 43=Control_backslash
control shift keycode 43=bar
alt control keycode 43=Meta_Control_backslash
alt control shift keycode 43=Meta_bar

!

#symbols for row 4


! Row 4
!
! cap a  s  d  f  g  h  j  k  l  ;  '  return
! --- -- -- -- -- -- -- -- -- -- -- -- ------
! 66  38 39 40 41 42 43 44 45 46 47 48   36


! Unassigned

! Left thumb: top row.

! Unassigned

! Right thumb: top row.

! Unassigned


keycode 58=Delete ! Caps_Lock ! caps lock key

keycode 30=a A
alt keycode 30=Meta_a
alt shift keycode 30=Meta_A
control keycode 30=Control_a
control shift keycode 30=Control_a
alt control keycode 30=Meta_Control_a
alt control shift keycode 30=Meta_Control_a

keycode 31=s S
alt keycode 31=Meta_s
alt shift keycode 31=Meta_S
control keycode 31=Control_s
control shift keycode 31=Control_s
alt control keycode 31=Meta_Control_s
alt control shift keycode 31=Meta_Control_s

keycode 32=d D
alt keycode 32=Meta_d
alt shift keycode 32=Meta_D
control keycode 32=Control_d
control shift keycode 32=Control_d
alt control keycode 32=Meta_Control_d
alt control shift keycode 32=Meta_Control_d

keycode 33=f F
alt keycode 33=Meta_f
alt shift keycode 33=Meta_F
control keycode 33=Control_f
control shift keycode 33=Control_f
alt control keycode 33=Meta_Control_f
alt control shift keycode 33=Meta_Control_f

keycode 34=g G
alt keycode 34=Meta_g
alt shift keycode 34=Meta_G
control keycode 34=Control_g
control shift keycode 34=Control_g
alt control keycode 34=Meta_Control_g
alt control shift keycode 34=Meta_Control_g

keycode 35=h H
alt keycode 35=Meta_h
alt shift keycode 35=Meta_H
control keycode 35=Control_h
control shift keycode 35=Control_h
alt control keycode 35=Meta_Control_h
alt control shift keycode 35=Meta_Control_h

keycode 36=j J
alt keycode 36=Meta_j
alt shift keycode 36=Meta_J
control keycode 36=Control_j
control shift keycode 36=Control_j
alt control keycode 36=Meta_Control_j
alt control shift keycode 36=Meta_Control_j

keycode 37=k K
alt keycode 37=Meta_k
alt shift keycode 37=Meta_K
control keycode 37=Control_k
control shift keycode 37=Control_k
alt control keycode 37=Meta_Control_k
alt control shift keycode 37=Meta_Control_k

keycode 38=l L
alt keycode 38=Meta_l
alt shift keycode 38=Meta_L
control keycode 38=Control_l
control shift keycode 38=Control_l
alt control keycode 38=Meta_Control_l
alt control shift keycode 38=Meta_Control_l

keycode 39=semicolon colon
alt keycode 39=Meta_semicolon
alt shift keycode 39=Meta_colon
control keycode 39=semicolon
control shift keycode 39=colon
alt control keycode 39=Meta_semicolon
alt control shift keycode 39=Meta_colon

keycode 40=apostrophe quotedbl
alt keycode 40=Meta_apostrophe
alt shift keycode 40=Meta_quotedbl
control keycode 40=apostrophe
control shift keycode 40=quotedbl
alt control keycode 40=Meta_apostrophe
alt control shift keycode 40=Meta_quotedbl

! The C-x prefix and M-x (or ESC x), for emacs.
keycode 28=Control_x ! Return
control keycode 28=Meta_x

! The Fn key with the Return key produces keycode 110.
! The US keymap associates keycode 110 with Insert.
!keycode 110= ! Fn modifier with Return key

!

#symbols for row 5


! Row 5
!
! shift z  x  c  v  b  n  m  ,  .  /  shift
! ----- -- -- -- -- -- -- -- -- -- -- -----
!  50   52 53 54 55 56 57 58 59 60 61  62


! Unassigned

! Left thumb: middle row.

! Unassigned

! Right thumb: middle row.


keycode 42=Return ! left Shift button
! alt keycode 42=Meta_Control_m
! alt shift keycode 42=Meta_Linefeed
! control keycode 42=Control_m
! control shift keycode 42=Linefeed
! alt control keycode 42=Meta_Control_m
! alt control shift keycode 42=Meta_Linefeed ! C-M-j in emacs

keycode 44=z Z
alt keycode 44=Meta_z
alt shift keycode 44=Meta_Z
control keycode 44=Control_z
control shift keycode 44=Control_z
alt control keycode 44=Meta_Control_z
alt control shift keycode 44=Meta_Control_z

keycode 45=x X
alt keycode 45=Meta_x
alt shift keycode 45=Meta_X
control keycode 45=Control_x
control shift keycode 45=Control_x
alt control keycode 45=Meta_Control_x
alt control shift keycode 45=Meta_Control_x

keycode 46=c C
alt keycode 46=Meta_c
alt shift keycode 46=Meta_C
control keycode 46=Control_c
control shift keycode 46=Control_c
alt control keycode 46=Meta_Control_c
alt control shift keycode 46=Meta_Control_c

keycode 47=v V
alt keycode 47=Meta_v
alt shift keycode 47=Meta_V
control keycode 47=Control_v
control shift keycode 47=Control_v
alt control keycode 47=Meta_Control_v
alt control shift keycode 47=Meta_Control_v

keycode 48=b B
alt keycode 48=Meta_b
alt shift keycode 48=Meta_B
control keycode 48=Control_b
control shift keycode 48=Control_b
alt control keycode 48=Meta_Control_b
alt control shift keycode 48=Meta_Control_b

keycode 49=n N
alt keycode 49=Meta_n
alt shift keycode 49=Meta_N
control keycode 49=Control_n
control shift keycode 49=Control_n
alt control keycode 49=Meta_Control_n
alt control shift keycode 49=Meta_Control_n

keycode 50=m M
alt keycode 50=Meta_m
alt shift keycode 50=Meta_M
control keycode 50=Control_m
control shift keycode 50=Control_m
alt control keycode 50=Meta_Control_m
alt control shift keycode 50=Meta_Control_m

keycode 51=comma less
alt keycode 51=Meta_comma
alt shift keycode 51=Meta_less
control keycode 51=comma
control shift keycode 51=less
alt control keycode 51=Meta_comma
alt control shift keycode 51=Meta_less

keycode 52=period greater
alt keycode 52=Meta_period
alt shift keycode 52=Meta_greater
control keycode 52=period
control shift keycode 52=greater
alt control keycode 52=Meta_period
alt control shift keycode 52=Meta_greater

keycode 53=slash question
alt keycode 53=Meta_slash
alt shift keycode 53=Meta_question
control keycode 53=slash
control shift keycode 53=question
alt control keycode 53=Meta_slash
alt control shift keycode 53=Meta_question

keycode 54=Control_c ! right Shift button

!

#symbols for row 6


! Row 6
!
! ctrl opt comm barbutton comm opt ctrl
! ---- --- ---- --------- ---- --- ----
!  37   64  133     65     134 108  105


! Unassigned


! Assign the left Option button as the only Alt.
! Nevermind.  F11 is more convenient (Row 1).


! The "lower" layout button, at left Command.


! The "view management" button for StumpWM,
! at the barbutton.


! The "lock right" layout button, at right Command.


! Assign the right Option button as the only Control.
! Easy to hold with thumb for any small letter.


! Unassigned


string F22="\030@h" ! emacs: event-apply-hyper-modifier
keycode 29=F22 ! left Control key

keycode 56=Alt ! left Option key

keycode 125=Control ! left Command key

keycode 57=space ! Space barbutton
alt keycode 57=Meta_space ! emacs: M-SPC just-one-space
control keycode 57=nul ! emacs: C-@ (C-SPC) set-mark
alt control keycode 57=Meta_nul ! emacs: C-M-@ mark-sexp

keycode 126=Control ! right Command key

keycode 100=Alt ! right Option key

! emacs: nu-view-select (a more convenient key)
keycode 97=F16 ! right Control key

!

#secondary keycode assignment


! Simpler console terminal switching.
! Still the secondary keycodes for the F# buttons,
! but without the Control-Alt modifiers.
! There is just one VT on piCore, by default.

!

#extra buttons


! Unassign the left arrow button because the right hand
! sometimes rests on it.
keycode 113 =


! 

! Middle set of keys

! Emacs needs the default strings (of console codes) in order to ! recognize the Home, PageUp, Remove, End, PageDown keys. ! See help for emacs bindings with C-h b and search for "M-[". ! First row: Fn key, Home key, Page Up key keycode 464= ! Fn key string Home="\033[1~" keycode 102=Home ! aka: Find keycode 104=PageUp ! aka: Prior string PageUp="\033[5~" ! Second row: Forward Delete key, End key, Page Down key string Remove="\033[3~" keycode 111=Remove ! Forward Delete key string End="\033[4~" keycode 107=End ! aka: Select string PageDown="\033[6~" keycode 109=PageDown ! aka: Next ! Arrow Keys keycode 103=Up keycode 105=Left keycode 108=Down keycode 106=Right !

! Numpad

! First row: Clear key, equals, forward slash, asterisk keycode 69=Num_Lock ! clear key keycode 117=equal ! apparently no "KP_Equal" keycode 98=KP_Divide keycode 55=KP_Multiply ! Second row: 7-9, minus keycode 71=KP_7 keycode 72=KP_8 keycode 73=KP_9 keycode 74=KP_Subtract ! Third row: 4-6, plus keycode 75=KP_4 keycode 76=KP_5 keycode 77=KP_6 keycode 78=KP_Add ! Fourth row: 1-3, Enter key keycode 79=KP_1 keycode 80=KP_2 keycode 81=KP_3 keycode 96=KP_Enter ! Bottom row: zero, period keycode 82=Alt ! KP_0 keycode 83=KP_Period !

#loadkeys review


! Before applying a keymap, consider creating an alias to a
! command that restores the current keymap (default or custom) by
! typing a single letter.  Then make sure to know where that
! single letter is mapped on the new keymap, and where the Return
! key is mapped, too.

! The suffix for a keymap doc is typically of no consequence.
! A buttonmap sometimes can be compressed.
! Assuming this file is named "loadkeys--compact--rpi-kyb.htm", try:
!   sudo \
!   loadkeys \
!   --clearstrings \
!   --clearcompose \
!   loadkeys--compact--rpi-kyb.htm \
!   > results 2>&1
!
! That sends any output and errors to the "results" document.
! A successful load usually has no results, otherwise review the
! output and errors for what happened unexpectedly.

! Use "sudo loadkeys --default" for restoring the default keymap
! unless "defkeymap.map" is non-existent.  Or reboot to restore.
! See manual for "keymaps" and "showkey", too.

! Use "loadkeys -b" with a keymap in order to produce a binary
! suitable for busybox.  Note busybox has "loadkmap" instead.

! Use "dumpkeys -l" for information about support by the system.
! Information last obtained:
!   Keycode range supported by kernel:             1 - 255
!   Max number of actions bindable to a key:           256
!   Number of keymaps in actual use:                   128
!     of which 121 dynamically allocated
!   Ranges of action codes supported by kernel:    [blank]
!   Number of function keys supported by kernel:       256
!   Max number of compose definitions:                 256
!     number of compose definitions in actual use:      68
!
! Also lists symbols recognized.  Notably, F246 was highest
! function key symbol.  There were ten other possibilities:
!   Find, Insert, Remove, Select, Prior,
!   Next, Macro, Help, Do, Pause.


! Within the console the Control modifier is effective with only
! the ASCII values 1-31, known by the values: a-z, and [ \ ] ^ _
! So, there is "Control_a" but no "Control_A".  Null is "nul".
!
! Contrarily, the Meta modifier modifies the ASCII values 0-127,
! therefore both "Meta_a" and "Meta_A" are available.
!
! Together, there is "Meta_Control_a" but no "Meta_Control_A",
! because no "Control_A".


! There are usually 256 possible combinations of 9 modifier keys
! in addition to the unmodified key (plain).  Thereby, 257 total
! and all on the same line.
!
! Setting only the unmodified key (column 0) automatically sets
! all the modified combinations to that value, too, which is a
! requirement for assigning a modifier to a keycode.
!
! For example:
!    keycode 29 = Control
! is the same as repeating the name "Control" 256 more times for
! the other 256 columns on the line.

! The first value (column 0) is for the unmodified key, the
! second value (column 1) is when modified by shift, and so on.
!   plain 0
!   shift 1  altgr 2  control 4  alt 8
!   shiftl 16  shiftr 32
!   ctrll 64  ctrlr 128
!   capsshift 256

! Or instead, each desired combination for a keycode can be set
! individually by listing modifier names prior to the keycode,
! one combination per line.


! [ need to test this again, seems contrary to loadkeys manual ]
!
! A plus sign + before the value means the shifted value will be
! returned when caps lock is active.
! For example, it is quite common to need to type a variable
! named with multiple words separated by underscores while using
! all uppercase letters.  That is automatic with shift lock
! which allows typing all the shifted values.  Caps lock usually
! allows typing the shifted values of only a to z, then requires
! using shift for other keys as needed.  Alternatively, allow
! typing an underscore with capslock without having to use the
! shift key for underscore (from the minus key).  Presuming the
! keycode is 12 for the key:
!   keycode 12 = +minus underscore
!
! Additionally, a plus sign before the shifted value means the
! plain value is returned when using both caps lock and shift:
!   keycode 16 = q +Q
! Oddly, it seems a-z need the plus sign for caps lock, too, so:
!   keycode 16 = +q +Q


! Text can be set for any key rather than only one character.
! Such texts are usually associated with the function keys
! F30-F246 (typically unavailable on keyboards).  For example:
! commands for the command interpreter or for emacs; a common
! phrase or statement; some other console code.  After defining
! text for a symkey, associate that symkey with a keycode for a
! button.  Type that button once to produce the whole text for
! whatever program currently has focus.
!
!   string F30="\030r" ! Control x (octal value) and r for emacs
!   keycode 58=F30 ! 58 is the caps lock button
!
!   string F31="\160\141\163\163\167\157\162\144" ! password
!   keycode 183=F31 ! 183 is the F13 key
!
!   string F32="\012

" ! newline and HTML paragraph mark ! shift keycode 28=F32 ! Return button with shift modifier ! ! Actual control characters are also okay, as typed with the ! command `quoted-insert' (C-q) in emacs. !

#test


!
about.htm !