Skip to content

Instantly share code, notes, and snippets.

@dardo82
Last active July 15, 2025 04:48
Show Gist options
  • Select an option

  • Save dardo82/ec183e778bad1d6be5a75a0a95353b4e to your computer and use it in GitHub Desktop.

Select an option

Save dardo82/ec183e778bad1d6be5a75a0a95353b4e to your computer and use it in GitHub Desktop.

Revisions

  1. dardo82 revised this gist Jul 15, 2025. 1 changed file with 14 additions and 4 deletions.
    18 changes: 14 additions & 4 deletions fixterms-uk.map
    Original file line number Diff line number Diff line change
    @@ -765,13 +765,18 @@ keycode 119 = Pause Pause
    # Ctrl-Break seems to have low-level hardware behind it.
    keycode 101 = Break Break

    keycode 110 = Insert Insert
    alt keycode 110 = F123
    keycode 102 = Find Find
    keycode 104 = Prior Scroll_Backward
    control keycode 102 = F123
    keycode 110 = Insert Insert
    control keycode 110 = F124
    keycode 111 = Remove Remove
    control keycode 111 = F125
    keycode 107 = Select Select
    control keycode 107 = F126
    keycode 104 = Prior Scroll_Backward
    control keycode 104 = F127
    keycode 109 = Next Scroll_Forward
    control keycode 109 = F128

    keycode 103 = Up Up
    keycode 105 = Left Left
    @@ -926,7 +931,12 @@ string F120 = "\033[120;6u"
    string F121 = "\033[121;6u"
    string F122 = "\033[122;6u"

    string F123 = "\033[2;9~"
    string F123 = "\033[1;5~"
    string F124 = "\033[2;5~"
    string F125 = "\033[3;5~"
    string F126 = "\033[4;5~"
    string F127 = "\033[5;5~"
    string F128 = "\033[6;5~"

    # UK layout definitions.
    # old: shift keycode 41 = asciitilde
  2. dardo82 revised this gist Jul 13, 2025. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions fixterms-uk.map
    Original file line number Diff line number Diff line change
    @@ -766,7 +766,7 @@ keycode 119 = Pause Pause
    keycode 101 = Break Break

    keycode 110 = Insert Insert
    control keycode 110 = F123
    alt keycode 110 = F123
    keycode 102 = Find Find
    keycode 104 = Prior Scroll_Backward
    keycode 111 = Remove Remove
    @@ -926,7 +926,7 @@ string F120 = "\033[120;6u"
    string F121 = "\033[121;6u"
    string F122 = "\033[122;6u"

    string F123 = "\033[2;5~"
    string F123 = "\033[2;9~"

    # UK layout definitions.
    # old: shift keycode 41 = asciitilde
  3. dardo82 revised this gist Jul 10, 2025. 1 changed file with 979 additions and 0 deletions.
    979 changes: 979 additions & 0 deletions fixterms-uk.map
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,979 @@
    #
    # hypermap.map 1994/11/11
    # Michael Shields <[email protected]>
    #
    # A keymap redesigned for sanity.
    #

    #
    # This keymap is a ground-up reimplementation of the keyboard map,
    # intended to be consistent and rational. It uses an m4 metalanguage to
    # declare the key mappings. Usage is `m4 hypermap.map | loadkeys'.
    #
    # The modifier flags used are `shift' (1), `control' (4), and `alt' (8).
    # Left and right modifiers are not distinguished.
    #
    # In general, Meta is always distinguished, and M-S-KEY is distinct from
    # M-KEY. This is good news for Emacs users. C-S-KEY is consistently
    # folded into C-KEY.
    #
    # Shift is more loosely interpreted than the other modifiers; usually if
    # S-KEY has no special meaning, the action will be the same as KEY.
    # However, if M-KEY or H-KEY is undefined, nothing happens.
    #
    # Because Caps Lock's position is so out of proportion to its utility,
    # it's been totally redefined to a new sort of modifier, which I've
    # arbitrarily named `Hyper'. Shift is ignored with Hyper. Hyper
    # provides dead keys:
    # H-` dead accent grave
    # H-' dead acute accent
    # H-^ dead circumflex
    # H-t dead tilde
    # H-d dead diaeresis
    # and ISO-8859-1 symbols (some more mnemonic than others):
    # H-SPC nobreakspace
    # H-! inverted bang
    # H-h cents (`hundredths')
    # H-# pounds sterling
    # H-$ currency
    # H-y yen
    # H-| broken bar
    # H-s section (the galaxy symbol)
    # H-c copyright
    # H-a feminine ordinal
    # H-< left guillemot
    # H-] not sign (it's angular)
    # H-- soft hyphen
    # H-r registered trademark symbol
    # H-= macron
    # H-0 degrees
    # H-[ plus/minus (near + and -)
    # H-k superior 2 (jkl form a series)
    # H-l superior 3
    # H-u mu
    # H-p pilcrow
    # H-: centered dot
    # H-j superior 1
    # H-o masculine ordinal
    # H-> right guillemot
    # H-q 1/4 fraction (qwe form a series)
    # H-w 1/2 fraction
    # H-e 3/4 fraction
    # H-? inverted question mark
    # H-x multiplication symbol
    # H-% division symbol
    # You can also use Hyper plus Alt to type characters by decimal code on
    # the keypad, as with Alt alone, or in hex on the main keyboard. And
    # H-TAB is a Caps Lock.
    #
    # Function keys work as marked, unless with Alt, in which case they
    # switch to the console with the same number. Shift adds 12 and Hyper
    # adds 24 to the numbers (i.e., they logically switch to other banks).
    # Thus you can easily address up to 48. Control is ignored, for
    # consistency with X.
    #
    # Finally, you can change the behavior of the Caps Lock and Controls
    # with m4 command-line options. The default values are equivalent to
    # `-DCAPSLOCK_K=Hyper -DLEFTCTRL_K=Control -DRIGHTCTRL_K=Control'. You
    # can remove the Hyper code entirely with `-DCAPSLOCK_K=Caps_Lock'.
    #
    # This file is arranged vaguely by key position on the classic PC layout.
    #











    keymaps 0,1,4,5,8,9,12,13,128,129,132,133,136,137,140,141


























    keycode 1 = Escape VoidSymbol
    shift keycode 1 = Escape
    alt keycode 1 = Meta_Escape
    shift alt keycode 1 = Meta_Escape

    keycode 59 = F1 VoidSymbol
    shift keycode 59 = F13
    ctrlr keycode 59 = F25
    shift ctrlr keycode 59 = F37
    alt keycode 59 = Console_1
    shift alt keycode 59 = Console_13
    ctrlr alt keycode 59 = Console_25
    shift ctrlr alt keycode 59 = Console_37
    keycode 60 = F2 VoidSymbol
    shift keycode 60 = F14
    ctrlr keycode 60 = F26
    shift ctrlr keycode 60 = F38
    alt keycode 60 = Console_2
    shift alt keycode 60 = Console_14
    ctrlr alt keycode 60 = Console_26
    shift ctrlr alt keycode 60 = Console_38
    keycode 61 = F3 VoidSymbol
    shift keycode 61 = F15
    ctrlr keycode 61 = F27
    shift ctrlr keycode 61 = F39
    alt keycode 61 = Console_3
    shift alt keycode 61 = Console_15
    ctrlr alt keycode 61 = Console_27
    shift ctrlr alt keycode 61 = Console_39
    keycode 62 = F4 VoidSymbol
    shift keycode 62 = F16
    ctrlr keycode 62 = F28
    shift ctrlr keycode 62 = F40
    alt keycode 62 = Console_4
    shift alt keycode 62 = Console_16
    ctrlr alt keycode 62 = Console_28
    shift ctrlr alt keycode 62 = Console_40
    keycode 63 = F5 VoidSymbol
    shift keycode 63 = F17
    ctrlr keycode 63 = F29
    shift ctrlr keycode 63 = F41
    alt keycode 63 = Console_5
    shift alt keycode 63 = Console_17
    ctrlr alt keycode 63 = Console_29
    shift ctrlr alt keycode 63 = Console_41
    keycode 64 = F6 VoidSymbol
    shift keycode 64 = F18
    ctrlr keycode 64 = F30
    shift ctrlr keycode 64 = F42
    alt keycode 64 = Console_6
    shift alt keycode 64 = Console_18
    ctrlr alt keycode 64 = Console_30
    shift ctrlr alt keycode 64 = Console_42
    keycode 65 = F7 VoidSymbol
    shift keycode 65 = F19
    ctrlr keycode 65 = F31
    shift ctrlr keycode 65 = F43
    alt keycode 65 = Console_7
    shift alt keycode 65 = Console_19
    ctrlr alt keycode 65 = Console_31
    shift ctrlr alt keycode 65 = Console_43
    keycode 66 = F8 VoidSymbol
    shift keycode 66 = F20
    ctrlr keycode 66 = F32
    shift ctrlr keycode 66 = F44
    alt keycode 66 = Console_8
    shift alt keycode 66 = Console_20
    ctrlr alt keycode 66 = Console_32
    shift ctrlr alt keycode 66 = Console_44
    keycode 67 = F9 VoidSymbol
    shift keycode 67 = F21
    ctrlr keycode 67 = F33
    shift ctrlr keycode 67 = F45
    alt keycode 67 = Console_9
    shift alt keycode 67 = Console_21
    ctrlr alt keycode 67 = Console_33
    shift ctrlr alt keycode 67 = Console_45
    keycode 68 = F10 VoidSymbol
    shift keycode 68 = F22
    ctrlr keycode 68 = F34
    shift ctrlr keycode 68 = F46
    alt keycode 68 = Console_10
    shift alt keycode 68 = Console_22
    ctrlr alt keycode 68 = Console_34
    shift ctrlr alt keycode 68 = Console_46
    keycode 87 = F11 VoidSymbol
    shift keycode 87 = F23
    ctrlr keycode 87 = F35
    shift ctrlr keycode 87 = F47
    alt keycode 87 = Console_11
    shift alt keycode 87 = Console_23
    ctrlr alt keycode 87 = Console_35
    shift ctrlr alt keycode 87 = Console_47
    keycode 88 = F12 VoidSymbol
    shift keycode 88 = F24
    ctrlr keycode 88 = F36
    shift ctrlr keycode 88 = F48
    alt keycode 88 = Console_12
    shift alt keycode 88 = Console_24
    ctrlr alt keycode 88 = Console_36
    shift ctrlr alt keycode 88 = Console_48

    keycode 2 = one VoidSymbol
    shift keycode 2 = exclam
    alt keycode 2 = Meta_one
    shift alt keycode 2 = Meta_exclam
    ctrlr keycode 2 = exclamdown
    shift ctrlr keycode 2 = exclamdown
    alt ctrlr keycode 2 = Hex_1
    shift alt ctrlr keycode 2 = Hex_1
    keycode 3 = two VoidSymbol
    shift keycode 3 = at
    alt keycode 3 = Meta_two
    shift alt keycode 3 = Meta_at
    control keycode 3 = nul
    shift control keycode 3 = nul
    control alt keycode 3 = Meta_nul
    shift control alt keycode 3 = Meta_nul
    alt ctrlr keycode 3 = Hex_2
    shift alt ctrlr keycode 3 = Hex_2
    keycode 4 = three VoidSymbol
    shift keycode 4 = numbersign
    alt keycode 4 = Meta_three
    shift alt keycode 4 = Meta_numbersign
    ctrlr keycode 4 = pound
    shift ctrlr keycode 4 = pound
    alt ctrlr keycode 4 = Hex_3
    shift alt ctrlr keycode 4 = Hex_3
    keycode 5 = four VoidSymbol
    shift keycode 5 = dollar
    alt keycode 5 = Meta_four
    shift alt keycode 5 = Meta_dollar
    ctrlr keycode 5 = currency
    shift ctrlr keycode 5 = currency
    alt ctrlr keycode 5 = Hex_4
    shift alt ctrlr keycode 5 = Hex_4
    keycode 6 = five VoidSymbol
    shift keycode 6 = percent
    alt keycode 6 = Meta_five
    shift alt keycode 6 = Meta_percent
    ctrlr keycode 6 = division
    shift ctrlr keycode 6 = division
    alt ctrlr keycode 6 = Hex_5
    shift alt ctrlr keycode 6 = Hex_5
    keycode 7 = six VoidSymbol
    shift keycode 7 = asciicircum
    alt keycode 7 = Meta_six
    shift alt keycode 7 = Meta_asciicircum
    control keycode 7 = Control_asciicircum
    shift control keycode 7 = Control_asciicircum
    control alt keycode 7 = Meta_Control_asciicircum
    shift control alt keycode 7 = Meta_Control_asciicircum
    ctrlr keycode 7 = dead_circumflex
    shift ctrlr keycode 7 = dead_circumflex
    alt ctrlr keycode 7 = Hex_6
    shift alt ctrlr keycode 7 = Hex_6
    keycode 8 = seven VoidSymbol
    shift keycode 8 = ampersand
    alt keycode 8 = Meta_seven
    shift alt keycode 8 = Meta_ampersand
    alt ctrlr keycode 8 = Hex_7
    shift alt ctrlr keycode 8 = Hex_7
    keycode 9 = eight VoidSymbol
    shift keycode 9 = asterisk
    alt keycode 9 = Meta_eight
    shift alt keycode 9 = Meta_asterisk
    alt ctrlr keycode 9 = Hex_8
    shift alt ctrlr keycode 9 = Hex_8
    keycode 10 = nine VoidSymbol
    shift keycode 10 = parenleft
    alt keycode 10 = Meta_nine
    shift alt keycode 10 = Meta_parenleft
    alt ctrlr keycode 10 = Hex_9
    shift alt ctrlr keycode 10 = Hex_9
    keycode 11 = zero VoidSymbol
    shift keycode 11 = parenright
    alt keycode 11 = Meta_zero
    shift alt keycode 11 = Meta_parenright
    ctrlr keycode 11 = degree
    shift ctrlr keycode 11 = degree
    alt ctrlr keycode 11 = Hex_0
    shift alt ctrlr keycode 11 = Hex_0
    keycode 12 = minus VoidSymbol
    shift keycode 12 = underscore
    alt keycode 12 = Meta_minus
    shift alt keycode 12 = Meta_underscore
    control keycode 12 = Control_underscore
    shift control keycode 12 = Control_underscore
    control alt keycode 12 = Meta_Control_underscore
    shift control alt keycode 12 = Meta_Control_underscore
    ctrlr keycode 12 = hyphen
    shift ctrlr keycode 12 = hyphen
    keycode 13 = equal VoidSymbol
    shift keycode 13 = plus
    alt keycode 13 = Meta_equal
    shift alt keycode 13 = Meta_plus
    ctrlr keycode 13 = macron
    shift ctrlr keycode 13 = macron
    keycode 14 = Delete VoidSymbol
    shift keycode 14 = Delete
    alt keycode 14 = Meta_Delete
    shift alt keycode 14 = Meta_Delete
    control keycode 14 = BackSpace
    shift control keycode 14 = BackSpace
    control alt keycode 14 = Meta_BackSpace
    shift control alt keycode 14 = Meta_BackSpace

    keycode 15 = Tab VoidSymbol
    shift keycode 15 = Tab
    alt keycode 15 = Meta_Tab
    shift alt keycode 15 = Meta_Tab
    ctrlr keycode 15 = Caps_Lock
    shift ctrlr keycode 15 = Caps_Lock
    keycode 16 = +q VoidSymbol
    shift keycode 16 = +Q
    alt keycode 16 = Meta_q
    shift alt keycode 16 = Meta_Q
    control keycode 16 = Control_q
    shift control keycode 16 = F113
    control alt keycode 16 = Meta_Control_q
    shift control alt keycode 16 = Meta_Control_q
    ctrlr keycode 16 = onequarter
    shift ctrlr keycode 16 = onequarter
    keycode 17 = +w VoidSymbol
    shift keycode 17 = +W
    alt keycode 17 = Meta_w
    shift alt keycode 17 = Meta_W
    control keycode 17 = Control_w
    shift control keycode 17 = F119
    control alt keycode 17 = Meta_Control_w
    shift control alt keycode 17 = Meta_Control_w
    ctrlr keycode 17 = onehalf
    shift ctrlr keycode 17 = onehalf
    keycode 18 = +e VoidSymbol
    shift keycode 18 = +E
    alt keycode 18 = Meta_e
    shift alt keycode 18 = Meta_E
    control keycode 18 = Control_e
    shift control keycode 18 = F101
    control alt keycode 18 = Meta_Control_e
    shift control alt keycode 18 = Meta_Control_e
    ctrlr keycode 18 = threequarters
    shift ctrlr keycode 18 = threequarters
    alt ctrlr keycode 18 = Hex_E
    shift alt ctrlr keycode 18 = Hex_E
    keycode 19 = +r VoidSymbol
    shift keycode 19 = +R
    alt keycode 19 = Meta_r
    shift alt keycode 19 = Meta_R
    control keycode 19 = Control_r
    shift control keycode 19 = F114
    control alt keycode 19 = Meta_Control_r
    shift control alt keycode 19 = Meta_Control_r
    ctrlr keycode 19 = registered
    shift ctrlr keycode 19 = registered
    keycode 20 = +t VoidSymbol
    shift keycode 20 = +T
    alt keycode 20 = Meta_t
    shift alt keycode 20 = Meta_T
    control keycode 20 = Control_t
    shift control keycode 20 = F116
    control alt keycode 20 = Meta_Control_t
    shift control alt keycode 20 = Meta_Control_t
    ctrlr keycode 20 = dead_tilde
    shift ctrlr keycode 20 = dead_tilde
    keycode 21 = +y VoidSymbol
    shift keycode 21 = +Y
    alt keycode 21 = Meta_y
    shift alt keycode 21 = Meta_Y
    control keycode 21 = Control_y
    shift control keycode 21 = F121
    control alt keycode 21 = Meta_Control_y
    shift control alt keycode 21 = Meta_Control_y
    ctrlr keycode 21 = yen
    shift ctrlr keycode 21 = yen
    keycode 22 = +u VoidSymbol
    shift keycode 22 = +U
    alt keycode 22 = Meta_u
    shift alt keycode 22 = Meta_U
    control keycode 22 = Control_u
    shift control keycode 22 = F117
    control alt keycode 22 = Meta_Control_u
    shift control alt keycode 22 = Meta_Control_u
    ctrlr keycode 22 = mu
    shift ctrlr keycode 22 = mu
    keycode 23 = +i VoidSymbol
    shift keycode 23 = +I
    alt keycode 23 = Meta_i
    shift alt keycode 23 = Meta_I
    control keycode 23 = Control_i
    shift control keycode 23 = F105
    control alt keycode 23 = Meta_Control_i
    shift control alt keycode 23 = Meta_Control_i
    keycode 24 = +o VoidSymbol
    shift keycode 24 = +O
    alt keycode 24 = Meta_o
    shift alt keycode 24 = Meta_O
    control keycode 24 = Control_o
    shift control keycode 24 = F111
    control alt keycode 24 = Meta_Control_o
    shift control alt keycode 24 = Meta_Control_o
    ctrlr keycode 24 = masculine
    shift ctrlr keycode 24 = masculine
    keycode 25 = +p VoidSymbol
    shift keycode 25 = +P
    alt keycode 25 = Meta_p
    shift alt keycode 25 = Meta_P
    control keycode 25 = Control_p
    shift control keycode 25 = F112
    control alt keycode 25 = Meta_Control_p
    shift control alt keycode 25 = Meta_Control_p
    ctrlr keycode 25 = 182
    shift ctrlr keycode 25 = 182 # pilcrow
    keycode 26 = bracketleft VoidSymbol
    shift keycode 26 = braceleft
    alt keycode 26 = Meta_bracketleft
    shift alt keycode 26 = Meta_braceleft
    control keycode 26 = Escape
    shift control keycode 26 = Escape
    control alt keycode 26 = Meta_Escape
    shift control alt keycode 26 = Meta_Escape
    ctrlr keycode 26 = plusminus
    shift ctrlr keycode 26 = plusminus
    keycode 27 = bracketright VoidSymbol
    shift keycode 27 = braceright
    alt keycode 27 = Meta_bracketright
    shift alt keycode 27 = Meta_braceright
    control keycode 27 = Control_bracketright
    shift control keycode 27 = Control_bracketright
    control alt keycode 27 = Meta_Control_bracketright
    shift control alt keycode 27 = Meta_Control_bracketright
    ctrlr keycode 27 = notsign
    shift ctrlr keycode 27 = notsign

    keycode 28 = Return VoidSymbol
    shift keycode 28 = Return
    alt keycode 28 = Meta_Control_m
    shift alt keycode 28 = Meta_Control_m

    keycode 30 = +a VoidSymbol
    shift keycode 30 = +A
    alt keycode 30 = Meta_a
    shift alt keycode 30 = Meta_A
    control keycode 30 = Control_a
    shift control keycode 30 = F97
    control alt keycode 30 = Meta_Control_a
    shift control alt keycode 30 = Meta_Control_a
    ctrlr keycode 30 = ordfeminine
    shift ctrlr keycode 30 = ordfeminine
    alt ctrlr keycode 30 = Hex_A
    shift alt ctrlr keycode 30 = Hex_A
    keycode 31 = +s VoidSymbol
    shift keycode 31 = +S
    alt keycode 31 = Meta_s
    shift alt keycode 31 = Meta_S
    control keycode 31 = Control_s
    shift control keycode 31 = F115
    control alt keycode 31 = Meta_Control_s
    shift control alt keycode 31 = Meta_Control_s
    ctrlr keycode 31 = section
    shift ctrlr keycode 31 = section
    keycode 32 = +d VoidSymbol
    shift keycode 32 = +D
    alt keycode 32 = Meta_d
    shift alt keycode 32 = Meta_D
    control keycode 32 = Control_d
    shift control keycode 32 = F100
    control alt keycode 32 = Meta_Control_d
    shift control alt keycode 32 = Meta_Control_d
    ctrlr keycode 32 = dead_diaeresis
    shift ctrlr keycode 32 = dead_diaeresis
    alt ctrlr keycode 32 = Hex_D
    shift alt ctrlr keycode 32 = Hex_D
    keycode 33 = +f VoidSymbol
    shift keycode 33 = +F
    alt keycode 33 = Meta_f
    shift alt keycode 33 = Meta_F
    control keycode 33 = Control_f
    shift control keycode 33 = F102
    control alt keycode 33 = Meta_Control_f
    shift control alt keycode 33 = Meta_Control_f
    alt ctrlr keycode 33 = Hex_F
    shift alt ctrlr keycode 33 = Hex_F
    keycode 34 = +g VoidSymbol
    shift keycode 34 = +G
    alt keycode 34 = Meta_g
    shift alt keycode 34 = Meta_G
    control keycode 34 = Control_g
    shift control keycode 34 = F103
    control alt keycode 34 = Meta_Control_g
    shift control alt keycode 34 = Meta_Control_g
    keycode 35 = +h VoidSymbol
    shift keycode 35 = +H
    alt keycode 35 = Meta_h
    shift alt keycode 35 = Meta_H
    control keycode 35 = Control_h
    shift control keycode 35 = F104
    control alt keycode 35 = Meta_Control_h
    shift control alt keycode 35 = Meta_Control_h
    ctrlr keycode 35 = cent
    shift ctrlr keycode 35 = cent
    keycode 36 = +j VoidSymbol
    shift keycode 36 = +J
    alt keycode 36 = Meta_j
    shift alt keycode 36 = Meta_J
    control keycode 36 = Control_j
    shift control keycode 36 = F106
    control alt keycode 36 = Meta_Control_j
    shift control alt keycode 36 = Meta_Control_j
    ctrlr keycode 36 = onesuperior
    shift ctrlr keycode 36 = onesuperior
    keycode 37 = +k VoidSymbol
    shift keycode 37 = +K
    alt keycode 37 = Meta_k
    shift alt keycode 37 = Meta_K
    control keycode 37 = Control_k
    shift control keycode 37 = F107
    control alt keycode 37 = Meta_Control_k
    shift control alt keycode 37 = Meta_Control_k
    ctrlr keycode 37 = twosuperior
    shift ctrlr keycode 37 = twosuperior
    keycode 38 = +l VoidSymbol
    shift keycode 38 = +L
    alt keycode 38 = Meta_l
    shift alt keycode 38 = Meta_L
    control keycode 38 = Control_l
    shift control keycode 38 = F108
    control alt keycode 38 = Meta_Control_l
    shift control alt keycode 38 = Meta_Control_l
    ctrlr keycode 38 = threesuperior
    shift ctrlr keycode 38 = threesuperior
    keycode 39 = semicolon VoidSymbol
    shift keycode 39 = colon
    alt keycode 39 = Meta_semicolon
    shift alt keycode 39 = Meta_colon
    ctrlr keycode 39 = periodcentered
    shift ctrlr keycode 39 = periodcentered
    keycode 40 = apostrophe VoidSymbol
    shift keycode 40 = quotedbl
    alt keycode 40 = Meta_apostrophe
    shift alt keycode 40 = Meta_quotedbl
    ctrlr keycode 40 = dead_acute
    shift ctrlr keycode 40 = dead_acute
    keycode 41 = grave VoidSymbol
    shift keycode 41 = asciitilde
    alt keycode 41 = Meta_grave
    shift alt keycode 41 = Meta_asciitilde
    ctrlr keycode 41 = dead_grave
    shift ctrlr keycode 41 = dead_grave

    keycode 43 = backslash VoidSymbol
    shift keycode 43 = bar
    alt keycode 43 = Meta_backslash
    shift alt keycode 43 = Meta_bar
    control keycode 43 = Control_backslash
    shift control keycode 43 = Control_backslash
    control alt keycode 43 = Meta_Control_backslash
    shift control alt keycode 43 = Meta_Control_backslash
    ctrlr keycode 43 = brokenbar
    shift ctrlr keycode 43 = brokenbar
    keycode 44 = +z VoidSymbol
    shift keycode 44 = +Z
    alt keycode 44 = Meta_z
    shift alt keycode 44 = Meta_Z
    control keycode 44 = Control_z
    shift control keycode 44 = F122
    control alt keycode 44 = Meta_Control_z
    shift control alt keycode 44 = Meta_Control_z
    keycode 45 = +x VoidSymbol
    shift keycode 45 = +X
    alt keycode 45 = Meta_x
    shift alt keycode 45 = Meta_X
    control keycode 45 = Control_x
    shift control keycode 45 = F120
    control alt keycode 45 = Meta_Control_x
    shift control alt keycode 45 = Meta_Control_x
    ctrlr keycode 45 = multiplication
    shift ctrlr keycode 45 = multiplication
    keycode 46 = +c VoidSymbol
    shift keycode 46 = +C
    alt keycode 46 = Meta_c
    shift alt keycode 46 = Meta_C
    control keycode 46 = Control_c
    shift control keycode 46 = F99
    control alt keycode 46 = Meta_Control_c
    shift control alt keycode 46 = Meta_Control_c
    ctrlr keycode 46 = copyright
    shift ctrlr keycode 46 = copyright
    alt ctrlr keycode 46 = Hex_C
    shift alt ctrlr keycode 46 = Hex_C
    keycode 47 = +v VoidSymbol
    shift keycode 47 = +V
    alt keycode 47 = Meta_v
    shift alt keycode 47 = Meta_V
    control keycode 47 = Control_v
    shift control keycode 47 = F118
    control alt keycode 47 = Meta_Control_v
    shift control alt keycode 47 = Meta_Control_v
    keycode 48 = +b VoidSymbol
    shift keycode 48 = +B
    alt keycode 48 = Meta_b
    shift alt keycode 48 = Meta_B
    control keycode 48 = Control_b
    shift control keycode 48 = F98
    control alt keycode 48 = Meta_Control_b
    shift control alt keycode 48 = Meta_Control_b
    alt ctrlr keycode 48 = Hex_B
    shift alt ctrlr keycode 48 = Hex_B
    keycode 49 = +n VoidSymbol
    shift keycode 49 = +N
    alt keycode 49 = Meta_n
    shift alt keycode 49 = Meta_N
    control keycode 49 = Control_n
    shift control keycode 49 = F110
    control alt keycode 49 = Meta_Control_n
    shift control alt keycode 49 = Meta_Control_n
    keycode 50 = +m VoidSymbol
    shift keycode 50 = +M
    alt keycode 50 = Meta_m
    shift alt keycode 50 = Meta_M
    control keycode 50 = Control_m
    shift control keycode 50 = F109
    control alt keycode 50 = Meta_Control_m
    shift control alt keycode 50 = Meta_Control_m
    keycode 51 = comma VoidSymbol
    shift keycode 51 = less
    alt keycode 51 = Meta_comma
    shift alt keycode 51 = Meta_less
    ctrlr keycode 51 = guillemotleft
    shift ctrlr keycode 51 = guillemotleft
    keycode 52 = period VoidSymbol
    shift keycode 52 = greater
    alt keycode 52 = Meta_period
    shift alt keycode 52 = Meta_greater
    ctrlr keycode 52 = guillemotright
    shift ctrlr keycode 52 = guillemotright
    keycode 53 = slash VoidSymbol
    shift keycode 53 = question
    alt keycode 53 = Meta_slash
    shift alt keycode 53 = Meta_question
    ctrlr keycode 53 = questiondown
    shift ctrlr keycode 53 = questiondown

    keycode 57 = space VoidSymbol
    shift keycode 57 = space
    alt keycode 57 = Meta_space
    shift alt keycode 57 = Meta_space
    control keycode 57 = nul
    shift control keycode 57 = nul
    control alt keycode 57 = Meta_nul
    shift control alt keycode 57 = Meta_nul
    ctrlr keycode 57 = nobreakspace
    shift ctrlr keycode 57 = nobreakspace

    keycode 71 = KP_7 VoidSymbol
    shift keycode 71 = KP_7
    alt keycode 71 = Ascii_7
    shift alt keycode 71 = Ascii_7
    alt ctrlr keycode 71 = Ascii_7
    shift alt ctrlr keycode 71 = Ascii_7
    keycode 72 = KP_8 VoidSymbol
    shift keycode 72 = KP_8
    alt keycode 72 = Ascii_8
    shift alt keycode 72 = Ascii_8
    alt ctrlr keycode 72 = Ascii_8
    shift alt ctrlr keycode 72 = Ascii_8
    keycode 73 = KP_9 VoidSymbol
    shift keycode 73 = KP_9
    alt keycode 73 = Ascii_9
    shift alt keycode 73 = Ascii_9
    alt ctrlr keycode 73 = Ascii_9
    shift alt ctrlr keycode 73 = Ascii_9
    keycode 74 = KP_Subtract KP_Subtract
    keycode 75 = KP_4 VoidSymbol
    shift keycode 75 = KP_4
    alt keycode 75 = Ascii_4
    shift alt keycode 75 = Ascii_4
    alt ctrlr keycode 75 = Ascii_4
    shift alt ctrlr keycode 75 = Ascii_4
    keycode 76 = KP_5 VoidSymbol
    shift keycode 76 = KP_5
    alt keycode 76 = Ascii_5
    shift alt keycode 76 = Ascii_5
    alt ctrlr keycode 76 = Ascii_5
    shift alt ctrlr keycode 76 = Ascii_5
    keycode 77 = KP_6 VoidSymbol
    shift keycode 77 = KP_6
    alt keycode 77 = Ascii_6
    shift alt keycode 77 = Ascii_6
    alt ctrlr keycode 77 = Ascii_6
    shift alt ctrlr keycode 77 = Ascii_6
    keycode 78 = KP_Add KP_Add
    keycode 79 = KP_1 VoidSymbol
    shift keycode 79 = KP_1
    alt keycode 79 = Ascii_1
    shift alt keycode 79 = Ascii_1
    alt ctrlr keycode 79 = Ascii_1
    shift alt ctrlr keycode 79 = Ascii_1
    keycode 80 = KP_2 VoidSymbol
    shift keycode 80 = KP_2
    alt keycode 80 = Ascii_2
    shift alt keycode 80 = Ascii_2
    alt ctrlr keycode 80 = Ascii_2
    shift alt ctrlr keycode 80 = Ascii_2
    keycode 81 = KP_3 VoidSymbol
    shift keycode 81 = KP_3
    alt keycode 81 = Ascii_3
    shift alt keycode 81 = Ascii_3
    alt ctrlr keycode 81 = Ascii_3
    shift alt ctrlr keycode 81 = Ascii_3
    keycode 82 = KP_0 VoidSymbol
    shift keycode 82 = KP_0
    alt keycode 82 = Ascii_0
    shift alt keycode 82 = Ascii_0
    alt ctrlr keycode 82 = Ascii_0
    shift alt ctrlr keycode 82 = Ascii_0
    keycode 83 = KP_Period KP_Period
    keycode 96 = KP_Enter KP_Enter
    keycode 98 = KP_Divide KP_Divide
    keycode 55 = KP_Multiply KP_Multiply
    keycode 118 = KP_MinPlus KP_MinPlus

    # Modifiers.
    keycode 42 = Shift
    keycode 54 = Shift
    keycode 56 = Alt
    keycode 100 = Alt
    keycode 58 = CtrlR
    keycode 29 = Control
    keycode 97 = Control

    # Everyone needs a compose key. This is C-..
    control keycode 52 = Compose

    keycode 69 = Num_Lock Num_Lock

    keycode 70 = Scroll_Lock
    shift keycode 70 = Show_Memory
    control keycode 70 = Show_State
    alt keycode 70 = Show_Registers

    # SysRq. I suppose there's some reason it's ^\.
    keycode 99 = Control_backslash Control_backslash

    keycode 119 = Pause Pause
    # Ctrl-Break seems to have low-level hardware behind it.
    keycode 101 = Break Break

    keycode 110 = Insert Insert
    control keycode 110 = F123
    keycode 102 = Find Find
    keycode 104 = Prior Scroll_Backward
    keycode 111 = Remove Remove
    keycode 107 = Select Select
    keycode 109 = Next Scroll_Forward

    keycode 103 = Up Up
    keycode 105 = Left Left
    alt keycode 105 = Decr_Console
    keycode 106 = Right Right
    alt keycode 106 = Incr_Console
    keycode 108 = Down Down

    control alt keycode 83 = Boot
    control alt keycode 111 = Boot


    # Stock VT102 string definitions.
    string F1 = "\033[[A"
    string F2 = "\033[[B"
    string F3 = "\033[[C"
    string F4 = "\033[[D"
    string F5 = "\033[[E"
    string F6 = "\033[17~"
    string F7 = "\033[18~"
    string F8 = "\033[19~"
    string F9 = "\033[20~"
    string F10 = "\033[21~"
    string F11 = "\033[23~"
    string F12 = "\033[24~"
    string F13 = "\033[25~"
    string F14 = "\033[26~"
    string F15 = "\033[28~"
    string F16 = "\033[29~"
    string F17 = "\033[31~"
    string F18 = "\033[32~"
    string F19 = "\033[33~"
    string F20 = "\033[34~"
    string Find = "\033[1~"
    string Insert = "\033[2~"
    string Remove = "\033[3~"
    string Select = "\033[4~"
    string Prior = "\033[5~"
    string Next = "\033[6~"
    string Macro = "\033[M"
    string Pause = "\033[P"

    # Stock ISO-8859-1 compositions.
    compose '`' 'A' to '�'
    compose '`' 'a' to '�'
    compose '\'' 'A' to '�'
    compose '\'' 'a' to '�'
    compose '^' 'A' to '�'
    compose '^' 'a' to '�'
    compose '~' 'A' to '�'
    compose '~' 'a' to '�'
    compose '"' 'A' to '�'
    compose '"' 'a' to '�'
    compose 'O' 'A' to '�'
    compose 'o' 'a' to '�'
    compose '0' 'A' to '�'
    compose '0' 'a' to '�'
    compose 'A' 'A' to '�'
    compose 'a' 'a' to '�'
    compose 'A' 'E' to '�'
    compose 'a' 'e' to '�'
    compose ',' 'C' to '�'
    compose ',' 'c' to '�'
    compose '`' 'E' to '�'
    compose '`' 'e' to '�'
    compose '\'' 'E' to '�'
    compose '\'' 'e' to '�'
    compose '^' 'E' to '�'
    compose '^' 'e' to '�'
    compose '"' 'E' to '�'
    compose '"' 'e' to '�'
    compose '`' 'I' to '�'
    compose '`' 'i' to '�'
    compose '\'' 'I' to '�'
    compose '\'' 'i' to '�'
    compose '^' 'I' to '�'
    compose '^' 'i' to '�'
    compose '"' 'I' to '�'
    compose '"' 'i' to '�'
    compose '-' 'D' to '�'
    compose '-' 'd' to '�'
    compose '~' 'N' to '�'
    compose '~' 'n' to '�'
    compose '`' 'O' to '�'
    compose '`' 'o' to '�'
    compose '\'' 'O' to '�'
    compose '\'' 'o' to '�'
    compose '^' 'O' to '�'
    compose '^' 'o' to '�'
    compose '~' 'O' to '�'
    compose '~' 'o' to '�'
    compose '"' 'O' to '�'
    compose '"' 'o' to '�'
    compose '/' 'O' to '�'
    compose '/' 'o' to '�'
    compose '`' 'U' to '�'
    compose '`' 'u' to '�'
    compose '\'' 'U' to '�'
    compose '\'' 'u' to '�'
    compose '^' 'U' to '�'
    compose '^' 'u' to '�'
    compose '"' 'U' to '�'
    compose '"' 'u' to '�'
    compose '\'' 'Y' to '�'
    compose '\'' 'y' to '�'
    compose 'T' 'H' to '�'
    compose 't' 'h' to '�'
    compose 's' 's' to '�'
    compose '"' 'y' to '�'
    compose 's' 'z' to '�'
    compose 'i' 'j' to '�'

    # ISO-8859-3 compositions for Esperanto.
    compose 'C' 'x' to '�' #198
    compose 'G' 'x' to '�' #216
    compose 'H' 'x' to '�' #166
    compose 'J' 'x' to '�' #172
    compose 'S' 'x' to '�' #222
    compose 'U' 'x' to '�' #221
    compose 'c' 'x' to '�' #230
    compose 'g' 'x' to '�' #248
    compose 'h' 'x' to '�' #182
    compose 'j' 'x' to '�' #188
    compose 's' 'x' to '�' #254
    compose 'u' 'x' to '�' #253

    # Shift-Control Function-Keys String-Definitions.
    string F97 = "\033[97;6u"
    string F98 = "\033[98;6u"
    string F99 = "\033[99;6u"
    string F100 = "\033[100;6u"
    string F101 = "\033[101;6u"
    string F102 = "\033[102;6u"
    string F103 = "\033[103;6u"
    string F104 = "\033[104;6u"
    string F105 = "\033[105;6u"
    string F106 = "\033[106;6u"
    string F107 = "\033[107;6u"
    string F108 = "\033[108;6u"
    string F109 = "\033[109;6u"
    string F110 = "\033[110;6u"
    string F111 = "\033[111;6u"
    string F112 = "\033[112;6u"
    string F113 = "\033[113;6u"
    string F114 = "\033[114;6u"
    string F115 = "\033[115;6u"
    string F116 = "\033[116;6u"
    string F117 = "\033[117;6u"
    string F118 = "\033[118;6u"
    string F119 = "\033[119;6u"
    string F120 = "\033[120;6u"
    string F121 = "\033[121;6u"
    string F122 = "\033[122;6u"

    string F123 = "\033[2;5~"

    # UK layout definitions.
    # old: shift keycode 41 = asciitilde
    # bam: shift keycode 41 = notsign
    keycode 1 = Escape
    keycode 2 = one exclam
    keycode 3 = two quotedbl at nul
    keycode 4 = three sterling
    control keycode 4 = Escape
    keycode 5 = four dollar dollar Control_backslash
    keycode 6 = five percent
    control keycode 6 = Control_bracketright
    keycode 7 = six asciicircum
    control keycode 7 = Control_asciicircum
    keycode 8 = seven ampersand braceleft Control_underscore
    keycode 9 = eight asterisk bracketleft Delete
    keycode 10 = nine parenleft bracketright
    keycode 11 = zero parenright braceright
    # alt keycode 11 = Meta_parenright
    keycode 12 = minus underscore backslash Control_underscore
    keycode 13 = equal plus
    keycode 14 = Delete
    control keycode 14 = Control_underscore
    keycode 15 = Tab
    shift keycode 15 = Meta_Tab
    keycode 26 = bracketleft braceleft
    control keycode 26 = Escape
    keycode 27 = bracketright braceright asciitilde Control_bracketright
    keycode 28 = Return
    alt keycode 28 = Meta_Control_m
    keycode 29 = Control
    keycode 39 = semicolon colon
    keycode 40 = apostrophe at
    control keycode 40 = Control_g
    shift control keycode 40 = nul
    keycode 41 = grave notsign bar nul
    keycode 42 = Shift
    keycode 43 = numbersign asciitilde
    control keycode 43 = Control_backslash
    keycode 51 = comma less
    keycode 52 = period greater
    keycode 53 = slash question
    control keycode 53 = Delete
    keycode 54 = Shift
    keycode 56 = Alt
    keycode 57 = space
    control keycode 57 = nul
    keycode 58 = Caps_Lock
    keycode 86 = backslash bar bar Control_backslash
    keycode 97 = Control
  4. dardo82 created this gist Jun 19, 2025.
    8 changes: 8 additions & 0 deletions mk-km-ft-uk.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    !#/bin/bash
    # MaKe KeyMap FixTerms United Kingdom

    m4 /usr/share/kbd/keymaps/i386/qwerty/hypermap.m4 | awk -v FS='[_ ]' 'BEGIN{for(n=0;n<128;n++)a[sprintf("%c",n)]=n}{if($0~/^shift\t.+ Control_.$/){print $1" "$2" = F"a[$5]} else{print $0}}' > keymap
    {echo "\n# Shift-Control Function-Keys String-Definitions."; for c in {a..z}; do printf 'string F%d = "\\033[%d;6u"\n' "'$c" "'$c"; done} >> keymap
    {echo "\n# UK layout definitions."; zgrep = /usr/share/kbd/keymaps/i386/qwerty/uk.map.gz} >> keymap
    awk -v FS='[ "^]+' 'BEGIN{for(n=0;n<128;n++)a[sprintf("%c",n)]=n}{if($0~/"\^[A-Z]"/){print $1"\t\"^[["a[$2]+2**5";6u\"\t"$3}else{print $0}}' .bashrc > bashrc