!
! Apple keyboard, model number A1243. 109 keys. ! Either ! or # declare a comment. ! row 1 (top) ! row 2 ! row 3 ! row 4 ! row 5 ! row 6 (bottom) ! middle and arrow buttons ! numpad ! Re-asserted everything as labeled on board, and these changes: ! * F1-F12 without need for Fn button. No system functions. ! * Eject button is F20 ! * Fn with F1-F6 is console 1-6 ! * Control with return button: Meta_x ! ! tab delete ! ---------- --------- ! Shift_Lock Tab ! ! caps lock return ! --------- --------- ! Delete Control_x ! ! shift shift ! --------- --------- ! Return Control_c ! ! control option command command option control ! --------- ------ ------- ------- ------ --------- ! C-x @ h Alt Control Control Alt F16 ! (Hyper) (Meta) (Meta) (nu-view) ! ! "C-x @ h" (a.k.a. "\030@h"): `event-apply-hyper-modifier' ! "nu-view": custom command for focusing on a different view ! The suffix for a keymap doc is typically of no consequence. ! A buttonmap sometimes can be compressed. ! Assuming this file is named "custom.kmap.gz", try: ! sudo \ ! loadkeys \ ! --clearstrings \ ! --clearcompose \ ! custom.kmap.gz > results 2>&1 ! That sends any output and errors to the "results" document. ! 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: 0 ! ! 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. ! 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. ! 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. !
! Top row: Escape key, F1-F12, eject key
keycode 1=Escape alt keycode 1=Meta_Escape ! 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 ! Top row continued: function keys F13-F19. No need for Fn key. ! Emacs needs the default strings (of console codes) in order to ! recognize the function keys. ! See help for emacs bindings with C-h b and search for "M-[". string F13="\033[25~" keycode 183=F13 string F14="\033[26~" keycode 184=F14 string F15="\033[28~" keycode 185=F15 string F16="\033[29~" keycode 186=F16 string F17="\033[31~" keycode 187=F17 string F18="\033[32~" keycode 188=F18 string F19="\033[33~" keycode 189=F19 !! Second row: backtick/tilde, numbers/punctuation, Delete
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 !! Third row: Tab key, q-p, brackets/braces
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 !! Fourth row: ! caps lock, a-l, punctuation, Return
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 !! Fifth row: ! Shift keys, z-m, punctuation
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 !! Bottom row: ! Control keys, Option keys, Command keys, Space barbutton
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 !! 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 !
about.htm