!
! 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. !
! For a Raspberry Pi buttonboard. ! Model No.: RPI-KYB ! 78 buttons ! ! Very odd physical design, and peculiar failureswhen ! 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| !---^---^---^----^-------------------^----^---^---^---^---' !
! 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. !
! 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. !
! 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): ⁰¹²³⁴⁵⁶⁷⁸⁹.
!! 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".!
! 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. !
! 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). !
! 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. !
! 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 !
! 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 !
! 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 !
! 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 !
! 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 !
! 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 !
! 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. !
! 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 !
! 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. !
!
about.htm !