From 17aaa6b68149083e502e1d87a34d83630ca0d2b9 Mon Sep 17 00:00:00 2001 From: cnst Date: Sat, 15 Jun 2024 19:13:59 +0200 Subject: [PATCH] added xkb --- nixos/xkb/compat/README | 33 + nixos/xkb/compat/accessx | 52 + nixos/xkb/compat/basic | 47 + nixos/xkb/compat/caps | 15 + nixos/xkb/compat/complete | 10 + nixos/xkb/compat/grab | 3 + nixos/xkb/compat/grp_led | 11 + nixos/xkb/compat/iso9995 | 72 + nixos/xkb/compat/japan | 45 + nixos/xkb/compat/ledcaps | 24 + nixos/xkb/compat/ledcompose | 16 + nixos/xkb/compat/lednum | 24 + nixos/xkb/compat/ledscroll | 24 + nixos/xkb/compat/level5 | 53 + nixos/xkb/compat/misc | 128 + nixos/xkb/compat/mod_led | 4 + nixos/xkb/compat/mousekeys | 200 + nixos/xkb/compat/olpc | 47 + nixos/xkb/compat/pc | 18 + nixos/xkb/compat/pc98 | 50 + nixos/xkb/compat/xfree86 | 66 + nixos/xkb/compat/xtest | 54 + nixos/xkb/geometry/README | 6 + nixos/xkb/geometry/amiga | 264 + nixos/xkb/geometry/ataritt | 251 + nixos/xkb/geometry/chicony | 189 + nixos/xkb/geometry/dell | 644 ++ nixos/xkb/geometry/digital_vndr/lk | 728 +++ nixos/xkb/geometry/digital_vndr/pc | 349 + nixos/xkb/geometry/digital_vndr/unix | 227 + nixos/xkb/geometry/everex | 170 + nixos/xkb/geometry/fujitsu | 314 + nixos/xkb/geometry/hhk | 266 + nixos/xkb/geometry/hp | 696 ++ nixos/xkb/geometry/keytronic | 252 + nixos/xkb/geometry/kinesis | 189 + nixos/xkb/geometry/macintosh | 1026 +++ nixos/xkb/geometry/microsoft | 532 ++ nixos/xkb/geometry/nec | 157 + nixos/xkb/geometry/northgate | 168 + nixos/xkb/geometry/pc | 1000 +++ nixos/xkb/geometry/sanwa | 150 + nixos/xkb/geometry/sgi_vndr/O2 | 614 ++ nixos/xkb/geometry/sgi_vndr/indigo | 410 ++ nixos/xkb/geometry/sgi_vndr/indy | 598 ++ nixos/xkb/geometry/sony | 179 + nixos/xkb/geometry/steelseries | 223 + nixos/xkb/geometry/sun | 756 +++ nixos/xkb/geometry/teck | 627 ++ nixos/xkb/geometry/thinkpad | 470 ++ nixos/xkb/geometry/typematrix | 733 +++ nixos/xkb/geometry/winbook | 143 + nixos/xkb/keycodes/README | 6 + nixos/xkb/keycodes/aliases | 99 + nixos/xkb/keycodes/amiga | 225 + nixos/xkb/keycodes/ataritt | 117 + nixos/xkb/keycodes/digital_vndr/lk | 270 + nixos/xkb/keycodes/digital_vndr/pc | 277 + nixos/xkb/keycodes/empty | 4 + nixos/xkb/keycodes/evdev | 612 ++ nixos/xkb/keycodes/fujitsu | 186 + nixos/xkb/keycodes/hp | 270 + nixos/xkb/keycodes/ibm | 150 + nixos/xkb/keycodes/jolla | 10 + nixos/xkb/keycodes/macintosh | 43 + nixos/xkb/keycodes/olpc | 24 + nixos/xkb/keycodes/sgi_vndr/indigo | 139 + nixos/xkb/keycodes/sgi_vndr/indy | 202 + nixos/xkb/keycodes/sgi_vndr/iris | 10 + nixos/xkb/keycodes/sony | 141 + nixos/xkb/keycodes/sun | 246 + nixos/xkb/keycodes/xfree86 | 416 ++ nixos/xkb/keycodes/xfree98 | 152 + nixos/xkb/rules/README | 2 + nixos/xkb/rules/base | 1010 +++ nixos/xkb/rules/base.extras.xml | 1863 ++++++ nixos/xkb/rules/base.lst | 1007 +++ nixos/xkb/rules/base.xml | 8284 ++++++++++++++++++++++++ nixos/xkb/rules/evdev | 904 +++ nixos/xkb/rules/evdev.extras.xml | 1863 ++++++ nixos/xkb/rules/evdev.lst | 1007 +++ nixos/xkb/rules/evdev.xml | 8284 ++++++++++++++++++++++++ nixos/xkb/rules/xfree98 | 29 + nixos/xkb/rules/xkb.dtd | 56 + nixos/xkb/rules/xorg | 1 + nixos/xkb/rules/xorg.lst | 1 + nixos/xkb/rules/xorg.xml | 1 + nixos/xkb/symbols/af | 372 ++ nixos/xkb/symbols/al | 150 + nixos/xkb/symbols/altwin | 129 + nixos/xkb/symbols/am | 247 + nixos/xkb/symbols/ancient | 198 + nixos/xkb/symbols/apl | 687 ++ nixos/xkb/symbols/ara | 521 ++ nixos/xkb/symbols/at | 25 + nixos/xkb/symbols/au | 9 + nixos/xkb/symbols/az | 91 + nixos/xkb/symbols/ba | 36 + nixos/xkb/symbols/bd | 81 + nixos/xkb/symbols/be | 184 + nixos/xkb/symbols/bg | 271 + nixos/xkb/symbols/bqn | 84 + nixos/xkb/symbols/br | 355 + nixos/xkb/symbols/brai | 92 + nixos/xkb/symbols/bt | 83 + nixos/xkb/symbols/bw | 21 + nixos/xkb/symbols/by | 113 + nixos/xkb/symbols/ca | 379 ++ nixos/xkb/symbols/capslock | 108 + nixos/xkb/symbols/cd | 65 + nixos/xkb/symbols/ch | 184 + nixos/xkb/symbols/cm | 364 ++ nixos/xkb/symbols/cn | 712 ++ nixos/xkb/symbols/compose | 95 + nixos/xkb/symbols/ctrl | 130 + nixos/xkb/symbols/cz | 520 ++ nixos/xkb/symbols/de | 1204 ++++ nixos/xkb/symbols/digital_vndr/lk | 130 + nixos/xkb/symbols/digital_vndr/pc | 175 + nixos/xkb/symbols/digital_vndr/us | 211 + nixos/xkb/symbols/digital_vndr/vt | 158 + nixos/xkb/symbols/dk | 96 + nixos/xkb/symbols/dz | 183 + nixos/xkb/symbols/ee | 126 + nixos/xkb/symbols/eg | 70 + nixos/xkb/symbols/empty | 5 + nixos/xkb/symbols/epo | 146 + nixos/xkb/symbols/es | 250 + nixos/xkb/symbols/et | 73 + nixos/xkb/symbols/eu | 64 + nixos/xkb/symbols/eurosign | 31 + nixos/xkb/symbols/fi | 359 + nixos/xkb/symbols/fo | 45 + nixos/xkb/symbols/fr | 1404 ++++ nixos/xkb/symbols/fujitsu_vndr/jp | 87 + nixos/xkb/symbols/fujitsu_vndr/us | 142 + nixos/xkb/symbols/gb | 249 + nixos/xkb/symbols/ge | 261 + nixos/xkb/symbols/gh | 165 + nixos/xkb/symbols/gn | 61 + nixos/xkb/symbols/gr | 216 + nixos/xkb/symbols/grab | 4 + nixos/xkb/symbols/group | 328 + nixos/xkb/symbols/hhkbse | 60 + nixos/xkb/symbols/hp_vndr/us | 103 + nixos/xkb/symbols/hr | 75 + nixos/xkb/symbols/hu | 817 +++ nixos/xkb/symbols/id | 222 + nixos/xkb/symbols/ie | 328 + nixos/xkb/symbols/il | 353 + nixos/xkb/symbols/in | 2616 ++++++++ nixos/xkb/symbols/inet | 2080 ++++++ nixos/xkb/symbols/iq | 31 + nixos/xkb/symbols/ir | 283 + nixos/xkb/symbols/is | 190 + nixos/xkb/symbols/it | 405 ++ nixos/xkb/symbols/jolla_vndr/sbj | 54 + nixos/xkb/symbols/jp | 282 + nixos/xkb/symbols/ke | 63 + nixos/xkb/symbols/keypad | 629 ++ nixos/xkb/symbols/kg | 135 + nixos/xkb/symbols/kh | 89 + nixos/xkb/symbols/kpdl | 102 + nixos/xkb/symbols/kr | 61 + nixos/xkb/symbols/kz | 305 + nixos/xkb/symbols/la | 130 + nixos/xkb/symbols/latam | 176 + nixos/xkb/symbols/latin | 255 + nixos/xkb/symbols/level2 | 6 + nixos/xkb/symbols/level3 | 132 + nixos/xkb/symbols/level5 | 109 + nixos/xkb/symbols/lk | 180 + nixos/xkb/symbols/lt | 364 ++ nixos/xkb/symbols/lv | 557 ++ nixos/xkb/symbols/ma | 356 + nixos/xkb/symbols/macintosh_vndr/apple | 151 + nixos/xkb/symbols/macintosh_vndr/ch | 96 + nixos/xkb/symbols/macintosh_vndr/de | 94 + nixos/xkb/symbols/macintosh_vndr/dk | 66 + nixos/xkb/symbols/macintosh_vndr/fi | 11 + nixos/xkb/symbols/macintosh_vndr/fr | 102 + nixos/xkb/symbols/macintosh_vndr/gb | 17 + nixos/xkb/symbols/macintosh_vndr/is | 127 + nixos/xkb/symbols/macintosh_vndr/it | 60 + nixos/xkb/symbols/macintosh_vndr/jp | 27 + nixos/xkb/symbols/macintosh_vndr/latam | 35 + nixos/xkb/symbols/macintosh_vndr/nl | 9 + nixos/xkb/symbols/macintosh_vndr/no | 48 + nixos/xkb/symbols/macintosh_vndr/pt | 60 + nixos/xkb/symbols/macintosh_vndr/se | 44 + nixos/xkb/symbols/macintosh_vndr/us | 66 + nixos/xkb/symbols/md | 88 + nixos/xkb/symbols/me | 63 + nixos/xkb/symbols/mk | 65 + nixos/xkb/symbols/ml | 65 + nixos/xkb/symbols/mm | 358 + nixos/xkb/symbols/mn | 81 + nixos/xkb/symbols/mt | 136 + nixos/xkb/symbols/mv | 60 + nixos/xkb/symbols/my | 116 + nixos/xkb/symbols/nbsp | 108 + nixos/xkb/symbols/nec_vndr/jp | 161 + nixos/xkb/symbols/ng | 117 + nixos/xkb/symbols/nl | 139 + nixos/xkb/symbols/no | 282 + nixos/xkb/symbols/np | 121 + nixos/xkb/symbols/nz | 31 + nixos/xkb/symbols/olpc | 21 + nixos/xkb/symbols/parens | 8 + nixos/xkb/symbols/pc | 91 + nixos/xkb/symbols/ph | 996 +++ nixos/xkb/symbols/pk | 436 ++ nixos/xkb/symbols/pl | 581 ++ nixos/xkb/symbols/pt | 220 + nixos/xkb/symbols/ro | 221 + nixos/xkb/symbols/rs | 324 + nixos/xkb/symbols/ru | 1311 ++++ nixos/xkb/symbols/rupeesign | 5 + nixos/xkb/symbols/scrolllock | 4 + nixos/xkb/symbols/se | 399 ++ nixos/xkb/symbols/sgi_vndr/jp | 47 + nixos/xkb/symbols/sharp_vndr/sl-c3x00 | 71 + nixos/xkb/symbols/sharp_vndr/ws003sh | 70 + nixos/xkb/symbols/sharp_vndr/ws007sh | 70 + nixos/xkb/symbols/sharp_vndr/ws011sh | 75 + nixos/xkb/symbols/sharp_vndr/ws020sh | 64 + nixos/xkb/symbols/shift | 70 + nixos/xkb/symbols/si | 31 + nixos/xkb/symbols/sk | 150 + nixos/xkb/symbols/sn | 43 + nixos/xkb/symbols/sony_vndr/us | 89 + nixos/xkb/symbols/srvr_ctrl | 59 + nixos/xkb/symbols/srvrkeys | 4 + nixos/xkb/symbols/sun_vndr/ara | 121 + nixos/xkb/symbols/sun_vndr/be | 107 + nixos/xkb/symbols/sun_vndr/br | 120 + nixos/xkb/symbols/sun_vndr/ca | 121 + nixos/xkb/symbols/sun_vndr/ch | 168 + nixos/xkb/symbols/sun_vndr/cz | 111 + nixos/xkb/symbols/sun_vndr/de | 176 + nixos/xkb/symbols/sun_vndr/dk | 88 + nixos/xkb/symbols/sun_vndr/ee | 111 + nixos/xkb/symbols/sun_vndr/es | 112 + nixos/xkb/symbols/sun_vndr/fi | 108 + nixos/xkb/symbols/sun_vndr/fr | 175 + nixos/xkb/symbols/sun_vndr/gb | 87 + nixos/xkb/symbols/sun_vndr/gr | 110 + nixos/xkb/symbols/sun_vndr/it | 94 + nixos/xkb/symbols/sun_vndr/jp | 179 + nixos/xkb/symbols/sun_vndr/kr | 82 + nixos/xkb/symbols/sun_vndr/lt | 125 + nixos/xkb/symbols/sun_vndr/lv | 165 + nixos/xkb/symbols/sun_vndr/nl | 104 + nixos/xkb/symbols/sun_vndr/no | 102 + nixos/xkb/symbols/sun_vndr/pl | 129 + nixos/xkb/symbols/sun_vndr/pt | 111 + nixos/xkb/symbols/sun_vndr/ro | 94 + nixos/xkb/symbols/sun_vndr/ru | 210 + nixos/xkb/symbols/sun_vndr/se | 106 + nixos/xkb/symbols/sun_vndr/sk | 102 + nixos/xkb/symbols/sun_vndr/solaris | 112 + nixos/xkb/symbols/sun_vndr/tr | 116 + nixos/xkb/symbols/sun_vndr/tw | 60 + nixos/xkb/symbols/sun_vndr/ua | 125 + nixos/xkb/symbols/sun_vndr/us | 260 + nixos/xkb/symbols/sy | 132 + nixos/xkb/symbols/terminate | 7 + nixos/xkb/symbols/tg | 69 + nixos/xkb/symbols/th | 197 + nixos/xkb/symbols/tj | 133 + nixos/xkb/symbols/tm | 47 + nixos/xkb/symbols/tr | 584 ++ nixos/xkb/symbols/trans | 93 + nixos/xkb/symbols/tw | 80 + nixos/xkb/symbols/typo | 69 + nixos/xkb/symbols/tz | 59 + nixos/xkb/symbols/ua | 360 + nixos/xkb/symbols/us | 2230 +++++++ nixos/xkb/symbols/uz | 77 + nixos/xkb/symbols/vn | 149 + nixos/xkb/symbols/xfree68_vndr/amiga | 125 + nixos/xkb/symbols/xfree68_vndr/ataritt | 154 + nixos/xkb/symbols/za | 42 + nixos/xkb/types/README | 4 + nixos/xkb/types/basic | 28 + nixos/xkb/types/cancel | 10 + nixos/xkb/types/caps | 171 + nixos/xkb/types/complete | 9 + nixos/xkb/types/default | 9 + nixos/xkb/types/extra | 143 + nixos/xkb/types/iso9995 | 18 + nixos/xkb/types/level5 | 227 + nixos/xkb/types/mousekeys | 11 + nixos/xkb/types/numpad | 62 + nixos/xkb/types/pc | 49 + 295 files changed, 83138 insertions(+) create mode 100644 nixos/xkb/compat/README create mode 100644 nixos/xkb/compat/accessx create mode 100644 nixos/xkb/compat/basic create mode 100644 nixos/xkb/compat/caps create mode 100644 nixos/xkb/compat/complete create mode 100644 nixos/xkb/compat/grab create mode 100644 nixos/xkb/compat/grp_led create mode 100644 nixos/xkb/compat/iso9995 create mode 100644 nixos/xkb/compat/japan create mode 100644 nixos/xkb/compat/ledcaps create mode 100644 nixos/xkb/compat/ledcompose create mode 100644 nixos/xkb/compat/lednum create mode 100644 nixos/xkb/compat/ledscroll create mode 100644 nixos/xkb/compat/level5 create mode 100644 nixos/xkb/compat/misc create mode 100644 nixos/xkb/compat/mod_led create mode 100644 nixos/xkb/compat/mousekeys create mode 100644 nixos/xkb/compat/olpc create mode 100644 nixos/xkb/compat/pc create mode 100644 nixos/xkb/compat/pc98 create mode 100644 nixos/xkb/compat/xfree86 create mode 100644 nixos/xkb/compat/xtest create mode 100644 nixos/xkb/geometry/README create mode 100644 nixos/xkb/geometry/amiga create mode 100644 nixos/xkb/geometry/ataritt create mode 100644 nixos/xkb/geometry/chicony create mode 100644 nixos/xkb/geometry/dell create mode 100644 nixos/xkb/geometry/digital_vndr/lk create mode 100644 nixos/xkb/geometry/digital_vndr/pc create mode 100644 nixos/xkb/geometry/digital_vndr/unix create mode 100644 nixos/xkb/geometry/everex create mode 100644 nixos/xkb/geometry/fujitsu create mode 100644 nixos/xkb/geometry/hhk create mode 100644 nixos/xkb/geometry/hp create mode 100644 nixos/xkb/geometry/keytronic create mode 100644 nixos/xkb/geometry/kinesis create mode 100644 nixos/xkb/geometry/macintosh create mode 100644 nixos/xkb/geometry/microsoft create mode 100644 nixos/xkb/geometry/nec create mode 100644 nixos/xkb/geometry/northgate create mode 100644 nixos/xkb/geometry/pc create mode 100644 nixos/xkb/geometry/sanwa create mode 100644 nixos/xkb/geometry/sgi_vndr/O2 create mode 100644 nixos/xkb/geometry/sgi_vndr/indigo create mode 100644 nixos/xkb/geometry/sgi_vndr/indy create mode 100644 nixos/xkb/geometry/sony create mode 100644 nixos/xkb/geometry/steelseries create mode 100644 nixos/xkb/geometry/sun create mode 100644 nixos/xkb/geometry/teck create mode 100644 nixos/xkb/geometry/thinkpad create mode 100644 nixos/xkb/geometry/typematrix create mode 100644 nixos/xkb/geometry/winbook create mode 100644 nixos/xkb/keycodes/README create mode 100644 nixos/xkb/keycodes/aliases create mode 100644 nixos/xkb/keycodes/amiga create mode 100644 nixos/xkb/keycodes/ataritt create mode 100644 nixos/xkb/keycodes/digital_vndr/lk create mode 100644 nixos/xkb/keycodes/digital_vndr/pc create mode 100644 nixos/xkb/keycodes/empty create mode 100644 nixos/xkb/keycodes/evdev create mode 100644 nixos/xkb/keycodes/fujitsu create mode 100644 nixos/xkb/keycodes/hp create mode 100644 nixos/xkb/keycodes/ibm create mode 100644 nixos/xkb/keycodes/jolla create mode 100644 nixos/xkb/keycodes/macintosh create mode 100644 nixos/xkb/keycodes/olpc create mode 100644 nixos/xkb/keycodes/sgi_vndr/indigo create mode 100644 nixos/xkb/keycodes/sgi_vndr/indy create mode 100644 nixos/xkb/keycodes/sgi_vndr/iris create mode 100644 nixos/xkb/keycodes/sony create mode 100644 nixos/xkb/keycodes/sun create mode 100644 nixos/xkb/keycodes/xfree86 create mode 100644 nixos/xkb/keycodes/xfree98 create mode 100644 nixos/xkb/rules/README create mode 100644 nixos/xkb/rules/base create mode 100644 nixos/xkb/rules/base.extras.xml create mode 100644 nixos/xkb/rules/base.lst create mode 100644 nixos/xkb/rules/base.xml create mode 100644 nixos/xkb/rules/evdev create mode 100644 nixos/xkb/rules/evdev.extras.xml create mode 100644 nixos/xkb/rules/evdev.lst create mode 100644 nixos/xkb/rules/evdev.xml create mode 100644 nixos/xkb/rules/xfree98 create mode 100644 nixos/xkb/rules/xkb.dtd create mode 120000 nixos/xkb/rules/xorg create mode 120000 nixos/xkb/rules/xorg.lst create mode 120000 nixos/xkb/rules/xorg.xml create mode 100644 nixos/xkb/symbols/af create mode 100644 nixos/xkb/symbols/al create mode 100644 nixos/xkb/symbols/altwin create mode 100644 nixos/xkb/symbols/am create mode 100644 nixos/xkb/symbols/ancient create mode 100644 nixos/xkb/symbols/apl create mode 100644 nixos/xkb/symbols/ara create mode 100644 nixos/xkb/symbols/at create mode 100644 nixos/xkb/symbols/au create mode 100644 nixos/xkb/symbols/az create mode 100644 nixos/xkb/symbols/ba create mode 100644 nixos/xkb/symbols/bd create mode 100644 nixos/xkb/symbols/be create mode 100644 nixos/xkb/symbols/bg create mode 100644 nixos/xkb/symbols/bqn create mode 100644 nixos/xkb/symbols/br create mode 100644 nixos/xkb/symbols/brai create mode 100644 nixos/xkb/symbols/bt create mode 100644 nixos/xkb/symbols/bw create mode 100644 nixos/xkb/symbols/by create mode 100644 nixos/xkb/symbols/ca create mode 100644 nixos/xkb/symbols/capslock create mode 100644 nixos/xkb/symbols/cd create mode 100644 nixos/xkb/symbols/ch create mode 100644 nixos/xkb/symbols/cm create mode 100644 nixos/xkb/symbols/cn create mode 100644 nixos/xkb/symbols/compose create mode 100644 nixos/xkb/symbols/ctrl create mode 100644 nixos/xkb/symbols/cz create mode 100644 nixos/xkb/symbols/de create mode 100644 nixos/xkb/symbols/digital_vndr/lk create mode 100644 nixos/xkb/symbols/digital_vndr/pc create mode 100644 nixos/xkb/symbols/digital_vndr/us create mode 100644 nixos/xkb/symbols/digital_vndr/vt create mode 100644 nixos/xkb/symbols/dk create mode 100644 nixos/xkb/symbols/dz create mode 100644 nixos/xkb/symbols/ee create mode 100644 nixos/xkb/symbols/eg create mode 100644 nixos/xkb/symbols/empty create mode 100644 nixos/xkb/symbols/epo create mode 100644 nixos/xkb/symbols/es create mode 100644 nixos/xkb/symbols/et create mode 100644 nixos/xkb/symbols/eu create mode 100644 nixos/xkb/symbols/eurosign create mode 100644 nixos/xkb/symbols/fi create mode 100644 nixos/xkb/symbols/fo create mode 100644 nixos/xkb/symbols/fr create mode 100644 nixos/xkb/symbols/fujitsu_vndr/jp create mode 100644 nixos/xkb/symbols/fujitsu_vndr/us create mode 100644 nixos/xkb/symbols/gb create mode 100644 nixos/xkb/symbols/ge create mode 100644 nixos/xkb/symbols/gh create mode 100644 nixos/xkb/symbols/gn create mode 100644 nixos/xkb/symbols/gr create mode 100644 nixos/xkb/symbols/grab create mode 100644 nixos/xkb/symbols/group create mode 100644 nixos/xkb/symbols/hhkbse create mode 100644 nixos/xkb/symbols/hp_vndr/us create mode 100644 nixos/xkb/symbols/hr create mode 100644 nixos/xkb/symbols/hu create mode 100644 nixos/xkb/symbols/id create mode 100644 nixos/xkb/symbols/ie create mode 100644 nixos/xkb/symbols/il create mode 100644 nixos/xkb/symbols/in create mode 100644 nixos/xkb/symbols/inet create mode 100644 nixos/xkb/symbols/iq create mode 100644 nixos/xkb/symbols/ir create mode 100644 nixos/xkb/symbols/is create mode 100644 nixos/xkb/symbols/it create mode 100644 nixos/xkb/symbols/jolla_vndr/sbj create mode 100644 nixos/xkb/symbols/jp create mode 100644 nixos/xkb/symbols/ke create mode 100644 nixos/xkb/symbols/keypad create mode 100644 nixos/xkb/symbols/kg create mode 100644 nixos/xkb/symbols/kh create mode 100644 nixos/xkb/symbols/kpdl create mode 100644 nixos/xkb/symbols/kr create mode 100644 nixos/xkb/symbols/kz create mode 100644 nixos/xkb/symbols/la create mode 100644 nixos/xkb/symbols/latam create mode 100644 nixos/xkb/symbols/latin create mode 100644 nixos/xkb/symbols/level2 create mode 100644 nixos/xkb/symbols/level3 create mode 100644 nixos/xkb/symbols/level5 create mode 100644 nixos/xkb/symbols/lk create mode 100644 nixos/xkb/symbols/lt create mode 100644 nixos/xkb/symbols/lv create mode 100644 nixos/xkb/symbols/ma create mode 100644 nixos/xkb/symbols/macintosh_vndr/apple create mode 100644 nixos/xkb/symbols/macintosh_vndr/ch create mode 100644 nixos/xkb/symbols/macintosh_vndr/de create mode 100644 nixos/xkb/symbols/macintosh_vndr/dk create mode 100644 nixos/xkb/symbols/macintosh_vndr/fi create mode 100644 nixos/xkb/symbols/macintosh_vndr/fr create mode 100644 nixos/xkb/symbols/macintosh_vndr/gb create mode 100644 nixos/xkb/symbols/macintosh_vndr/is create mode 100644 nixos/xkb/symbols/macintosh_vndr/it create mode 100644 nixos/xkb/symbols/macintosh_vndr/jp create mode 100644 nixos/xkb/symbols/macintosh_vndr/latam create mode 100644 nixos/xkb/symbols/macintosh_vndr/nl create mode 100644 nixos/xkb/symbols/macintosh_vndr/no create mode 100644 nixos/xkb/symbols/macintosh_vndr/pt create mode 100644 nixos/xkb/symbols/macintosh_vndr/se create mode 100644 nixos/xkb/symbols/macintosh_vndr/us create mode 100644 nixos/xkb/symbols/md create mode 100644 nixos/xkb/symbols/me create mode 100644 nixos/xkb/symbols/mk create mode 100644 nixos/xkb/symbols/ml create mode 100644 nixos/xkb/symbols/mm create mode 100644 nixos/xkb/symbols/mn create mode 100644 nixos/xkb/symbols/mt create mode 100644 nixos/xkb/symbols/mv create mode 100644 nixos/xkb/symbols/my create mode 100644 nixos/xkb/symbols/nbsp create mode 100644 nixos/xkb/symbols/nec_vndr/jp create mode 100644 nixos/xkb/symbols/ng create mode 100644 nixos/xkb/symbols/nl create mode 100644 nixos/xkb/symbols/no create mode 100644 nixos/xkb/symbols/np create mode 100644 nixos/xkb/symbols/nz create mode 100644 nixos/xkb/symbols/olpc create mode 100644 nixos/xkb/symbols/parens create mode 100644 nixos/xkb/symbols/pc create mode 100644 nixos/xkb/symbols/ph create mode 100644 nixos/xkb/symbols/pk create mode 100644 nixos/xkb/symbols/pl create mode 100644 nixos/xkb/symbols/pt create mode 100644 nixos/xkb/symbols/ro create mode 100644 nixos/xkb/symbols/rs create mode 100644 nixos/xkb/symbols/ru create mode 100644 nixos/xkb/symbols/rupeesign create mode 100644 nixos/xkb/symbols/scrolllock create mode 100644 nixos/xkb/symbols/se create mode 100644 nixos/xkb/symbols/sgi_vndr/jp create mode 100644 nixos/xkb/symbols/sharp_vndr/sl-c3x00 create mode 100644 nixos/xkb/symbols/sharp_vndr/ws003sh create mode 100644 nixos/xkb/symbols/sharp_vndr/ws007sh create mode 100644 nixos/xkb/symbols/sharp_vndr/ws011sh create mode 100644 nixos/xkb/symbols/sharp_vndr/ws020sh create mode 100644 nixos/xkb/symbols/shift create mode 100644 nixos/xkb/symbols/si create mode 100644 nixos/xkb/symbols/sk create mode 100644 nixos/xkb/symbols/sn create mode 100644 nixos/xkb/symbols/sony_vndr/us create mode 100644 nixos/xkb/symbols/srvr_ctrl create mode 100644 nixos/xkb/symbols/srvrkeys create mode 100644 nixos/xkb/symbols/sun_vndr/ara create mode 100644 nixos/xkb/symbols/sun_vndr/be create mode 100644 nixos/xkb/symbols/sun_vndr/br create mode 100644 nixos/xkb/symbols/sun_vndr/ca create mode 100644 nixos/xkb/symbols/sun_vndr/ch create mode 100644 nixos/xkb/symbols/sun_vndr/cz create mode 100644 nixos/xkb/symbols/sun_vndr/de create mode 100644 nixos/xkb/symbols/sun_vndr/dk create mode 100644 nixos/xkb/symbols/sun_vndr/ee create mode 100644 nixos/xkb/symbols/sun_vndr/es create mode 100644 nixos/xkb/symbols/sun_vndr/fi create mode 100644 nixos/xkb/symbols/sun_vndr/fr create mode 100644 nixos/xkb/symbols/sun_vndr/gb create mode 100644 nixos/xkb/symbols/sun_vndr/gr create mode 100644 nixos/xkb/symbols/sun_vndr/it create mode 100644 nixos/xkb/symbols/sun_vndr/jp create mode 100644 nixos/xkb/symbols/sun_vndr/kr create mode 100644 nixos/xkb/symbols/sun_vndr/lt create mode 100644 nixos/xkb/symbols/sun_vndr/lv create mode 100644 nixos/xkb/symbols/sun_vndr/nl create mode 100644 nixos/xkb/symbols/sun_vndr/no create mode 100644 nixos/xkb/symbols/sun_vndr/pl create mode 100644 nixos/xkb/symbols/sun_vndr/pt create mode 100644 nixos/xkb/symbols/sun_vndr/ro create mode 100644 nixos/xkb/symbols/sun_vndr/ru create mode 100644 nixos/xkb/symbols/sun_vndr/se create mode 100644 nixos/xkb/symbols/sun_vndr/sk create mode 100644 nixos/xkb/symbols/sun_vndr/solaris create mode 100644 nixos/xkb/symbols/sun_vndr/tr create mode 100644 nixos/xkb/symbols/sun_vndr/tw create mode 100644 nixos/xkb/symbols/sun_vndr/ua create mode 100644 nixos/xkb/symbols/sun_vndr/us create mode 100644 nixos/xkb/symbols/sy create mode 100644 nixos/xkb/symbols/terminate create mode 100644 nixos/xkb/symbols/tg create mode 100644 nixos/xkb/symbols/th create mode 100644 nixos/xkb/symbols/tj create mode 100644 nixos/xkb/symbols/tm create mode 100644 nixos/xkb/symbols/tr create mode 100644 nixos/xkb/symbols/trans create mode 100644 nixos/xkb/symbols/tw create mode 100644 nixos/xkb/symbols/typo create mode 100644 nixos/xkb/symbols/tz create mode 100644 nixos/xkb/symbols/ua create mode 100644 nixos/xkb/symbols/us create mode 100644 nixos/xkb/symbols/uz create mode 100644 nixos/xkb/symbols/vn create mode 100644 nixos/xkb/symbols/xfree68_vndr/amiga create mode 100644 nixos/xkb/symbols/xfree68_vndr/ataritt create mode 100644 nixos/xkb/symbols/za create mode 100644 nixos/xkb/types/README create mode 100644 nixos/xkb/types/basic create mode 100644 nixos/xkb/types/cancel create mode 100644 nixos/xkb/types/caps create mode 100644 nixos/xkb/types/complete create mode 100644 nixos/xkb/types/default create mode 100644 nixos/xkb/types/extra create mode 100644 nixos/xkb/types/iso9995 create mode 100644 nixos/xkb/types/level5 create mode 100644 nixos/xkb/types/mousekeys create mode 100644 nixos/xkb/types/numpad create mode 100644 nixos/xkb/types/pc diff --git a/nixos/xkb/compat/README b/nixos/xkb/compat/README new file mode 100644 index 00000000..3c5747bb --- /dev/null +++ b/nixos/xkb/compat/README @@ -0,0 +1,33 @@ +The core protocol interpretation of keyboard modifiers does not include direct +support for multiple keyboard groups, so XKB reports the effective keyboard +group to XKB-aware clients using some of the reserved bits in the state field +of some core protocol events. This modified state field would not be interpreted +correctly by XKB-unaware clients, so XKB provides a group compatibility mapping +which remaps the keyboard group into a core modifier mask that has similar +effects, when possible. + +XKB maintains three compatibility state components that are used to make +XKB-unaware clients(*) work as well as possible: +- The compatibility state which corresponds to the effective modifier and + effective group state. +- The compatibility lookup state which is the core-protocol equivalent of the + lookup state. +- The compatibility grab state which is the nearest core-protocol equivalent + of the grab state. + +Compatibility states are essentially the corresponding XKB states, but with +the keyboard group possibly encoded as one or more modifiers. + +Modifiers that correspond to each keyboard group are described in this +group compatibility map. + + +---- +(*) The implementation of XKB invisibly extends the X library to use the +keyboard extension if it is present. That means, clients that use library or +toolkit routines to interpret keyboard events automatically use all of XKB's +features; clients that directly interpret the state field of core-protocol +events or the keymap directly may be affected by some of the XKB differences. +Thus most clients can take all advantages without modification but it also +means that XKB state can be reported to clients that have not explicitly +requested the keyboard extension. diff --git a/nixos/xkb/compat/accessx b/nixos/xkb/compat/accessx new file mode 100644 index 00000000..6dd6ca93 --- /dev/null +++ b/nixos/xkb/compat/accessx @@ -0,0 +1,52 @@ +default partial xkb_compatibility "basic" { + interpret AccessX_Enable { + action= LockControls(controls=AccessXKeys); + }; +}; + +partial xkb_compatibility "full" { + + interpret AccessX_Enable { + action= LockControls(controls=AccessXKeys); + }; + + interpret AccessX_Feedback_Enable { + action= LockControls(controls=AccessXFeedback); + }; + + interpret RepeatKeys_Enable { + action= LockControls(controls=RepeatKeys); + }; + + interpret SlowKeys_Enable { + action= LockControls(controls=SlowKeys); + }; + + interpret BounceKeys_Enable { + action= LockControls(controls=BounceKeys); + }; + + interpret StickyKeys_Enable { + action= LockControls(controls=StickyKeys); + }; + + interpret MouseKeys_Enable { + action= LockControls(controls=MouseKeys); + }; + + interpret MouseKeys_Accel_Enable { + action= LockControls(controls=MouseKeysAccel); + }; + + interpret Overlay1_Enable { + action= LockControls(controls=Overlay1); + }; + + interpret Overlay2_Enable { + action= LockControls(controls=Overlay2); + }; + + interpret AudibleBell_Enable { + action= LockControls(controls=AudibleBell); + }; +}; diff --git a/nixos/xkb/compat/basic b/nixos/xkb/compat/basic new file mode 100644 index 00000000..31ad8a62 --- /dev/null +++ b/nixos/xkb/compat/basic @@ -0,0 +1,47 @@ +// Minimal set of symbol interpretations to provide +// reasonable default behavior (Num lock, Shift lock, +// Caps lock, and Mode switch) and set up the +// automatic updating of common keyboard LEDs. + +default xkb_compatibility "basic" { + + virtual_modifiers NumLock; + + interpret.repeat= False; + setMods.clearLocks= True; + latchMods.clearLocks= True; + latchMods.latchToLock= True; + + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + + interpret Any+Lock { + action= LockMods(modifiers=Lock); + }; + + interpret Num_Lock+Any { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + + interpret Mode_switch { + action= SetGroup(group=+1); + }; + + interpret Any + Any { + action= SetMods(modifiers=modMapMods); + }; + + group 2 = Mod5; + group 3 = Mod5; + group 4 = Mod5; + + include "ledcaps" + include "lednum" + indicator "Shift Lock" { + !allowExplicit; + whichModState= Locked; + modifiers= Shift; + }; +}; diff --git a/nixos/xkb/compat/caps b/nixos/xkb/compat/caps new file mode 100644 index 00000000..4ed43105 --- /dev/null +++ b/nixos/xkb/compat/caps @@ -0,0 +1,15 @@ +partial xkb_compatibility "caps_lock" { + // Keysym Caps_Lock locks the Lock modifier. + // With this definition, the keysym Caps_Lock can be used without binding + // the whole key to a real modifier. This is essential when you don't + // want to use Caps_Lock on the first level. + // This should not have any compatibility issues when used together with + // other layouts which don't utilize this capability. + interpret Caps_Lock { + action = LockMods(modifiers = Lock); + }; +}; + +partial xkb_compatibility "shiftlock" { + include "ledcaps(shift_lock)" +}; diff --git a/nixos/xkb/compat/complete b/nixos/xkb/compat/complete new file mode 100644 index 00000000..8f77538d --- /dev/null +++ b/nixos/xkb/compat/complete @@ -0,0 +1,10 @@ +default xkb_compatibility "complete" { + include "basic" + augment "iso9995" + augment "mousekeys" + augment "accessx(full)" + augment "misc" + augment "xfree86" + augment "level5" + augment "caps(caps_lock)" +}; diff --git a/nixos/xkb/compat/grab b/nixos/xkb/compat/grab new file mode 100644 index 00000000..e51d8460 --- /dev/null +++ b/nixos/xkb/compat/grab @@ -0,0 +1,3 @@ +partial xkb_compatibility "break_actions" { + include "xfree86(grab_break)" +}; diff --git a/nixos/xkb/compat/grp_led b/nixos/xkb/compat/grp_led new file mode 100644 index 00000000..9755c477 --- /dev/null +++ b/nixos/xkb/compat/grp_led @@ -0,0 +1,11 @@ +partial xkb_compatibility "num" { + include "lednum(group_lock)" +}; + +partial xkb_compatibility "caps" { + include "ledcaps(group_lock)" +}; + +partial xkb_compatibility "scroll" { + include "ledscroll(group_lock)" +}; diff --git a/nixos/xkb/compat/iso9995 b/nixos/xkb/compat/iso9995 new file mode 100644 index 00000000..fe848fd9 --- /dev/null +++ b/nixos/xkb/compat/iso9995 @@ -0,0 +1,72 @@ +// Fairly complete set of symbol interpretations +// to provide reasonable default behavior. + +default partial xkb_compatibility "default" { + + virtual_modifiers LevelThree; + + interpret.repeat= False; + setMods.clearLocks= True; + latchMods.clearLocks= True; + latchMods.latchToLock= True; + + interpret ISO_Level2_Latch+Shift { + useModMapMods= level1; + action= LatchMods(modifiers=Shift); + }; + + interpret ISO_Level3_Shift+Any { + useModMapMods= level1; + virtualModifier= LevelThree; + action= SetMods(modifiers=LevelThree); + }; + + interpret ISO_Level3_Shift { + action= SetMods(modifiers=LevelThree); + }; + + interpret ISO_Level3_Latch+Any { + useModMapMods= level1; + virtualModifier= LevelThree; + action= LatchMods(modifiers=LevelThree); + }; + + interpret ISO_Level3_Latch { + action= LatchMods(modifiers=LevelThree); + }; + + interpret ISO_Level3_Lock+Any { + useModMapMods= level1; + virtualModifier= LevelThree; + action= LockMods(modifiers=LevelThree); + }; + + interpret ISO_Level3_Lock { + action= LockMods(modifiers=LevelThree); + }; + + interpret ISO_Group_Latch { + action= LatchGroup(group=2); + }; + + interpret ISO_Next_Group { + action= LockGroup(group=+1); + }; + + interpret ISO_Prev_Group { + action= LockGroup(group=-1); + }; + + interpret ISO_First_Group { + action= LockGroup(group=1); + }; + + interpret ISO_Last_Group { + action= LockGroup(group=2); + }; + + indicator "Group 2" { + !allowExplicit; + groups= All-Group1; + }; +}; diff --git a/nixos/xkb/compat/japan b/nixos/xkb/compat/japan new file mode 100644 index 00000000..558f7898 --- /dev/null +++ b/nixos/xkb/compat/japan @@ -0,0 +1,45 @@ +// Japanese keyboards need the Eisu and Kana Shift +// and Lock keys, which are typically bound to the +// second shift level of some other modifier key. +// These interpretations disable the default +// interpretation (which would have these keys set +// to the same modifier as the level one symbol). + +default partial xkb_compatibility "japan" { + + interpret.repeat= False; + + interpret Eisu_Shift+Lock { + action= NoAction(); + }; + + interpret Eisu_toggle+Lock { + action= NoAction(); + }; + + interpret Kana_Shift+Lock { + action= NoAction(); + }; + + interpret Kana_Lock+Lock { + action= NoAction(); + }; +}; + +// Some Japanese keyboards have an explict +// Kana Lock key and matching LED. +partial xkb_compatibility "kana_lock" { + + virtual_modifiers Kana_Lock; + + interpret Kana_Lock+AnyOfOrNone(all) { + virtualModifier= Kana_Lock; + useModMapMods=level1; + action= LockGroup(group=+1); + }; + + indicator "Kana" { + !allowExplicit; + groups= All-Group1; + }; +}; diff --git a/nixos/xkb/compat/ledcaps b/nixos/xkb/compat/ledcaps new file mode 100644 index 00000000..f1460ba3 --- /dev/null +++ b/nixos/xkb/compat/ledcaps @@ -0,0 +1,24 @@ +// Use the Caps Lock LED to show either +// Caps Lock, Group, or Shift Lock state. + +default partial xkb_compatibility "caps_lock" { + indicator "Caps Lock" { + !allowExplicit; + whichModState= Locked; + modifiers= Lock; + }; +}; + +partial xkb_compatibility "group_lock" { + indicator "Caps Lock" { + modifiers= None; + groups=All-group1; + }; +}; + +partial xkb_compatibility "shift_lock" { + indicator "Caps Lock" { + whichModState= Locked; + modifiers= Shift; + }; +}; diff --git a/nixos/xkb/compat/ledcompose b/nixos/xkb/compat/ledcompose new file mode 100644 index 00000000..9b0c81be --- /dev/null +++ b/nixos/xkb/compat/ledcompose @@ -0,0 +1,16 @@ + +default partial xkb_compatibility "compose" { + + virtual_modifiers Compose; + + interpret Multi_key+Any { + virtualModifier= Compose; + action = LatchMods(modifiers=modMapMods); + }; + + indicator "Compose" { + allowExplicit; + whichModState= Latched; + modifiers= Compose; + }; +}; diff --git a/nixos/xkb/compat/lednum b/nixos/xkb/compat/lednum new file mode 100644 index 00000000..bfdcd744 --- /dev/null +++ b/nixos/xkb/compat/lednum @@ -0,0 +1,24 @@ +// Use the Num Lock LED to show either +// Num Lock, Group, or Shift Lock state. + +default partial xkb_compatibility "num_lock" { + indicator "Num Lock" { + !allowExplicit; + whichModState= Locked; + modifiers= NumLock; + }; +}; + +partial xkb_compatibility "group_lock" { + indicator "Num Lock" { + modifiers= None; + groups=All-group1; + }; +}; + +partial xkb_compatibility "shift_lock" { + indicator "Num Lock" { + whichModState= Locked; + modifiers= Shift; + }; +}; diff --git a/nixos/xkb/compat/ledscroll b/nixos/xkb/compat/ledscroll new file mode 100644 index 00000000..a2416982 --- /dev/null +++ b/nixos/xkb/compat/ledscroll @@ -0,0 +1,24 @@ +// Use the Scroll Lock LED to show either +// Scroll Lock, Group, or Shift Lock state. + +default partial xkb_compatibility "scroll_lock" { + indicator "Scroll Lock" { + allowExplicit; + whichModState= Locked; + modifiers= ScrollLock; + }; +}; + +partial xkb_compatibility "group_lock" { + indicator "Scroll Lock" { + modifiers= None; + groups=All-group1; + }; +}; + +partial xkb_compatibility "shift_lock" { + indicator "Scroll Lock" { + whichModState= Locked; + modifiers= Shift; + }; +}; diff --git a/nixos/xkb/compat/level5 b/nixos/xkb/compat/level5 new file mode 100644 index 00000000..d6642d11 --- /dev/null +++ b/nixos/xkb/compat/level5 @@ -0,0 +1,53 @@ +// Fairly complete set of symbol interpretations +// to provide reasonable default behavior. + +default partial xkb_compatibility "default" { + + virtual_modifiers LevelFive; + + interpret.repeat= False; + setMods.clearLocks= True; + latchMods.clearLocks= True; + latchMods.latchToLock= True; + + interpret ISO_Level5_Shift+Any { + useModMapMods= level1; + virtualModifier= LevelFive; + action= SetMods(modifiers=LevelFive); + }; + + interpret ISO_Level5_Shift { + action= SetMods(modifiers=LevelFive); + }; + + interpret ISO_Level5_Latch+Any { + useModMapMods= level1; + virtualModifier= LevelFive; + action= LatchMods(modifiers=LevelFive); + }; + + interpret ISO_Level5_Latch { + action= LatchMods(modifiers=LevelFive); + }; + + interpret ISO_Level5_Lock+Any { + useModMapMods= level1; + virtualModifier= LevelFive; + action= LockMods(modifiers=LevelFive); + }; + + interpret ISO_Level5_Lock { + action= LockMods(modifiers=LevelFive); + }; +}; + +partial xkb_compatibility "level5_lock" { + // This defines a Level5-Lock using the NumLock virtual modifier. + // See also types/level5 (EIGHT_LEVEL_WITH_LEVEL5_LOCK) and symbols/level5(lock). + + virtual_modifiers NumLock; + + interpret ISO_Level5_Lock { + action = LockMods(modifiers = NumLock); + }; +}; diff --git a/nixos/xkb/compat/misc b/nixos/xkb/compat/misc new file mode 100644 index 00000000..e9ff4b39 --- /dev/null +++ b/nixos/xkb/compat/misc @@ -0,0 +1,128 @@ +default partial xkb_compatibility "misc" { + + virtual_modifiers Alt,Meta,Super,Hyper,ScrollLock; + + // Interpretations for some other useful keys. + + interpret Terminate_Server { + action = Terminate(); + }; + + setMods.clearLocks= True; + + // Set the "Alt" virtual modifier. + + interpret Alt_L+Any { + virtualModifier= Alt; + action = SetMods(modifiers=modMapMods); + }; + + interpret Alt_L { + action = SetMods(modifiers=Alt); + }; + + interpret Alt_R+Any { + virtualModifier= Alt; + action = SetMods(modifiers=modMapMods); + }; + + interpret Alt_R { + action = SetMods(modifiers=Alt); + }; + + // Set the "Meta" virtual modifier. + + interpret Meta_L+Any { + virtualModifier= Meta; + action = SetMods(modifiers=modMapMods); + }; + + interpret Meta_L { + action = SetMods(modifiers=Meta); + }; + + interpret Meta_R+Any { + virtualModifier= Meta; + action = SetMods(modifiers=modMapMods); + }; + + interpret Meta_R { + action = SetMods(modifiers=Meta); + }; + + // Set the "Super" virtual modifier. + + interpret Super_L+Any { + virtualModifier= Super; + action = SetMods(modifiers=modMapMods); + }; + + interpret Super_L { + action = SetMods(modifiers=Super); + }; + + interpret Super_R+Any { + virtualModifier= Super; + action = SetMods(modifiers=modMapMods); + }; + + interpret Super_R { + action = SetMods(modifiers=Super); + }; + + // Set the "Hyper" virtual modifier. + + interpret Hyper_L+Any { + virtualModifier= Hyper; + action = SetMods(modifiers=modMapMods); + }; + + interpret Hyper_L { + action = SetMods(modifiers=Hyper); + }; + + interpret Hyper_R+Any { + virtualModifier= Hyper; + action = SetMods(modifiers=modMapMods); + }; + + interpret Hyper_R { + action = SetMods(modifiers=Hyper); + }; + + // Sets the "ScrollLock" virtual modifier and + // makes it actually lock when pressed. Sets + // up a map for the scroll lock indicator. + interpret Scroll_Lock+Any { + virtualModifier= ScrollLock; + action = LockMods(modifiers=modMapMods); + }; + + include "ledscroll" + + include "misc(assign_shift_left_action)" + include "misc(assign_shift_right_action)" +}; + +partial xkb_compatibility "assign_shift_left_action" { + // Because of the irreversible mapping of the Lock modifier to the + // keysym Caps_Lock in symbols/pc, some combinations of options + // involving e.g symbols/shift(lshift_both_capslock) may make + // bound to the Lock modifier, creating unwanted behaviour. + // The following statement ensures Shift_L always sets the Shift + // modifier. + interpret Shift_L { + action = SetMods(modifiers = Shift); + }; +}; + +partial xkb_compatibility "assign_shift_right_action" { + // A similar issue as assign_shift_left_action hereinabove may + // happen to with some combinations of options, + // involving e.g symbols/shift(shift_both_capslock) and + // symbols/group(lalt_lshift_toggle). The following statement + // ensures Shift_R always sets the Shift modifier. + interpret Shift_R { + action = SetMods(modifiers = Shift); + }; +}; diff --git a/nixos/xkb/compat/mod_led b/nixos/xkb/compat/mod_led new file mode 100644 index 00000000..bb4c9647 --- /dev/null +++ b/nixos/xkb/compat/mod_led @@ -0,0 +1,4 @@ +partial +xkb_compatibility "compose" { + include "ledcompose(compose)" +}; diff --git a/nixos/xkb/compat/mousekeys b/nixos/xkb/compat/mousekeys new file mode 100644 index 00000000..094ac4c6 --- /dev/null +++ b/nixos/xkb/compat/mousekeys @@ -0,0 +1,200 @@ +// Interpretations for arrow keys and a bunch of +// other common keysyms which make it possible to +// bind "mouse" keys using xmodmap and activate or +// deactivate them from the keyboard. + +default partial xkb_compatibility "mousekeys" { + + // Keypad actions. + + interpret.repeat= True; + + interpret KP_1 { + action = MovePtr(x=-1,y= +1); + }; + interpret KP_End { + action = MovePtr(x=-1,y= +1); + }; + + interpret KP_2 { + action = MovePtr(x=+0,y= +1); + }; + interpret KP_Down { + action = MovePtr(x=+0,y= +1); + }; + + interpret KP_3 { + action = MovePtr(x=+1,y=+1); + }; + interpret KP_Next { + action = MovePtr(x=+1,y=+1); + }; + + interpret KP_4 { + action = MovePtr(x=-1,y=+0); + }; + interpret KP_Left { + action = MovePtr(x=-1,y=+0); + }; + + interpret KP_6 { + action = MovePtr(x=+1,y=+0); + }; + interpret KP_Right { + action = MovePtr(x=+1,y=+0); + }; + + interpret KP_7 { + action = MovePtr(x=-1,y=-1); + }; + interpret KP_Home { + action = MovePtr(x=-1,y=-1); + }; + + interpret KP_8 { + action = MovePtr(x=+0,y=-1); + }; + interpret KP_Up { + action = MovePtr(x=+0,y=-1); + }; + + interpret KP_9 { + action = MovePtr(x=+1,y=-1); + }; + interpret KP_Prior { + action = MovePtr(x=+1,y=-1); + }; + + interpret KP_5 { + action = PointerButton(button=default); + }; + interpret KP_Begin { + action = PointerButton(button=default); + }; + + interpret KP_F2 { + action = SetPtrDflt(affect=defaultButton,button=1); + }; + interpret KP_Divide { + action = SetPtrDflt(affect=defaultButton,button=1); + }; + + interpret KP_F3 { + action = SetPtrDflt(affect=defaultButton,button=2); + }; + interpret KP_Multiply { + action = SetPtrDflt(affect=defaultButton,button=2); + }; + + interpret KP_F4 { + action = SetPtrDflt(affect=defaultButton,button=3); + }; + interpret KP_Subtract { + action = SetPtrDflt(affect=defaultButton,button=3); + }; + + interpret KP_Separator { + action = PointerButton(button=default,count=2); + }; + interpret KP_Add { + action = PointerButton(button=default,count=2); + }; + + interpret KP_0 { + action = LockPointerButton(button=default,affect=lock); + }; + interpret KP_Insert { + action = LockPointerButton(button=default,affect=lock); + }; + + interpret KP_Decimal { + action = LockPointerButton(button=default,affect=unlock); + }; + interpret KP_Delete { + action = LockPointerButton(button=default,affect=unlock); + }; + + // Additional mappings for Solaris keypad compatibility. + + interpret F25 { // aka KP_Divide + action = SetPtrDflt(affect=defaultButton,button=1); + }; + interpret F26 { // aka KP_Multiply + action = SetPtrDflt(affect=defaultButton,button=2); + }; + interpret F27 { // aka KP_Home + action = MovePtr(x=-1,y=-1); + }; + interpret F29 { // aka KP_Prior + action = MovePtr(x=+1,y=-1); + }; + interpret F31 { // aka KP_Begin + action = PointerButton(button=default); + }; + interpret F33 { // aka KP_End + action = MovePtr(x=-1,y= +1); + }; + interpret F35 { // aka KP_Next + action = MovePtr(x=+1,y=+1); + }; + + interpret.repeat= False; + + // New keysym actions. + + interpret Pointer_Button_Dflt { + action= PointerButton(button=default); + }; + interpret Pointer_Button1 { + action= PointerButton(button=1); + }; + interpret Pointer_Button2 { + action= PointerButton(button=2); + }; + interpret Pointer_Button3 { + action= PointerButton(button=3); + }; + interpret Pointer_DblClick_Dflt { + action= PointerButton(button=default,count=2); + }; + interpret Pointer_DblClick1 { + action= PointerButton(button=1,count=2); + }; + interpret Pointer_DblClick2 { + action= PointerButton(button=2,count=2); + }; + interpret Pointer_DblClick3 { + action= PointerButton(button=3,count=2); + }; + interpret Pointer_Drag_Dflt { + action= LockPointerButton(button=default); + }; + interpret Pointer_Drag1 { + action= LockPointerButton(button=1); + }; + interpret Pointer_Drag2 { + action= LockPointerButton(button=2); + }; + interpret Pointer_Drag3 { + action= LockPointerButton(button=3); + }; + + interpret Pointer_EnableKeys { + action= LockControls(controls=MouseKeys); + }; + interpret Pointer_Accelerate { + action= LockControls(controls=MouseKeysAccel); + }; + interpret Pointer_DfltBtnNext { + action= SetPtrDflt(affect=defaultButton,button= +1); + }; + interpret Pointer_DfltBtnPrev { + action= SetPtrDflt(affect=defaultButton,button= -1); + }; + + // Allow an indicator for MouseKeys. + indicator "Mouse Keys" { + indicatorDrivesKeyboard; + controls= MouseKeys; + }; +}; diff --git a/nixos/xkb/compat/olpc b/nixos/xkb/compat/olpc new file mode 100644 index 00000000..9df89e93 --- /dev/null +++ b/nixos/xkb/compat/olpc @@ -0,0 +1,47 @@ +// +// Map the OLPC game keys to virtual modifiers. +// +// Created by Bernardo Innocenti +// + +default xkb_compatibility "olpc" { + include "complete" + + virtual_modifiers Square,Cross,Triangle,Circle; + + interpret KP_Home+Any { + virtualModifier= Square; + action = SetMods(modifiers=modMapMods); + }; + + interpret KP_Home { + action = SetMods(modifiers=Square); + }; + + interpret KP_Next+Any { + virtualModifier= Cross; + action = SetMods(modifiers=modMapMods); + }; + + interpret KP_Next { + action = SetMods(modifiers=Cross); + }; + + interpret KP_End+Any { + virtualModifier= Circle; + action = SetMods(modifiers=modMapMods); + }; + + interpret KP_End { + action = SetMods(modifiers=Circle); + }; + + interpret KP_Prior+Any { + virtualModifier= Triangle; + action = SetMods(modifiers=modMapMods); + }; + + interpret KP_Prior { + action = SetMods(modifiers=Triangle); + }; +}; diff --git a/nixos/xkb/compat/pc b/nixos/xkb/compat/pc new file mode 100644 index 00000000..eb11dfca --- /dev/null +++ b/nixos/xkb/compat/pc @@ -0,0 +1,18 @@ +default partial xkb_compatibility "pc" { + + // Sets the "Alt" virtual modifier. + + virtual_modifiers Alt; + + setMods.clearLocks= True; + + interpret Alt_L+Any { + virtualModifier= Alt; + action = SetMods(modifiers=modMapMods); + }; + + interpret Alt_R+Any { + virtualModifier= Alt; + action = SetMods(modifiers=modMapMods); + }; +}; diff --git a/nixos/xkb/compat/pc98 b/nixos/xkb/compat/pc98 new file mode 100644 index 00000000..6f708390 --- /dev/null +++ b/nixos/xkb/compat/pc98 @@ -0,0 +1,50 @@ +// Minimal set of symbol interpretations to provide +// reasonable default behavior (Num lock, Shift lock, +// and Mode switch) and set up the automatic updating +// of common keyboard LEDs. + +default xkb_compatibility "basic" { + + virtual_modifiers NumLock; + + interpret.repeat= False; + setMods.clearLocks= True; + latchMods.clearLocks= True; + latchMods.latchToLock= True; + + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= LockMods(modifiers=Shift); + }; + + interpret Num_Lock+Any { + virtualModifier= NumLock; + action= LockMods(modifiers=NumLock); + }; + + interpret Mode_switch { + action= SetGroup(group=2,clearLocks); + }; + + interpret Any + Any { + action= SetMods(modifiers=modMapMods); + }; + + group 2 = Mod5; + group 3 = Mod5; + group 4 = Mod5; + + indicator.allowExplicit= False; + indicator "Caps Lock" { + whichModState= Locked; + modifiers= Lock; + }; + indicator "Num Lock" { + whichModState= Locked; + modifiers= NumLock; + }; + indicator "Shift Lock" { + whichModState= Locked; + modifiers= Shift; + }; + indicator.allowExplicit= True; +}; diff --git a/nixos/xkb/compat/xfree86 b/nixos/xkb/compat/xfree86 new file mode 100644 index 00000000..cc438197 --- /dev/null +++ b/nixos/xkb/compat/xfree86 @@ -0,0 +1,66 @@ +// XFree86 special keysyms. + +default partial xkb_compatibility "basic" { + + interpret.repeat= True; + + interpret XF86_Switch_VT_1 { + action = SwitchScreen(Screen=1, !SameServer); + }; + interpret XF86_Switch_VT_2 { + action = SwitchScreen(Screen=2, !SameServer); + }; + interpret XF86_Switch_VT_3 { + action = SwitchScreen(Screen=3, !SameServer); + }; + interpret XF86_Switch_VT_4 { + action = SwitchScreen(Screen=4, !SameServer); + }; + interpret XF86_Switch_VT_5 { + action = SwitchScreen(Screen=5, !SameServer); + }; + interpret XF86_Switch_VT_6 { + action = SwitchScreen(Screen=6, !SameServer); + }; + interpret XF86_Switch_VT_7 { + action = SwitchScreen(Screen=7, !SameServer); + }; + interpret XF86_Switch_VT_8 { + action = SwitchScreen(Screen=8, !SameServer); + }; + interpret XF86_Switch_VT_9 { + action = SwitchScreen(Screen=9, !SameServer); + }; + interpret XF86_Switch_VT_10 { + action = SwitchScreen(Screen=10, !SameServer); + }; + interpret XF86_Switch_VT_11 { + action = SwitchScreen(Screen=11, !SameServer); + }; + interpret XF86_Switch_VT_12 { + action = SwitchScreen(Screen=12, !SameServer); + }; + + interpret XF86LogGrabInfo { + action = Private(type=0x86, data="PrGrbs"); + }; + interpret XF86LogWindowTree { + action = Private(type=0x86, data="PrWins"); + }; + + interpret XF86_Next_VMode { + action = Private(type=0x86, data="+VMode"); + }; + interpret XF86_Prev_VMode { + action = Private(type=0x86, data="-VMode"); + }; +}; + +partial xkb_compatibility "grab_break" { + interpret XF86_Ungrab { + action = Private(type=0x86, data="Ungrab"); + }; + interpret XF86_ClearGrab { + action = Private(type=0x86, data="ClsGrb"); + }; +}; diff --git a/nixos/xkb/compat/xtest b/nixos/xkb/compat/xtest new file mode 100644 index 00000000..6fb5e771 --- /dev/null +++ b/nixos/xkb/compat/xtest @@ -0,0 +1,54 @@ +default xkb_compatibility "xtest" { + + // Minimal set of symbol interpretations to provide + // reasonable behavior for testing. + // The X Test Suite assumes that it can set any modifier + // by simulating a KeyPress and clear it by simulating a + // KeyRelease. Because of the way that XKB implements + // locking/latching modifiers, this approach fails in + // some cases (typically the Lock or NumLock modifiers). + // These symbol interpretations make all modifier keys + // just set the corresponding modifier so that xtest + // will see the behavior it expects. + + virtual_modifiers NumLock; + + interpret.repeat= False; + setMods.clearLocks= True; + latchMods.clearLocks= True; + latchMods.latchToLock= False; + + interpret Shift_Lock+AnyOf(Shift+Lock) { + action= SetMods(modifiers=Shift); + }; + + interpret Num_Lock+Any { + virtualModifier= NumLock; + action= SetMods(modifiers=NumLock); + }; + + interpret Mode_switch { + action= SetGroup(group=2); + }; + + interpret Any + Any { + action= SetMods(modifiers=modMapMods); + }; + + group 2 = Mod5; + group 3 = Mod5; + group 4 = Mod5; + + indicator.allowExplicit= False; + indicator "Caps Lock" { + modifiers= Lock; + }; + indicator "Num Lock" { + modifiers= NumLock; + }; + indicator "Shift Lock" { + whichModState= Locked; + modifiers= Shift; + }; + indicator.allowExplicit= True; +}; diff --git a/nixos/xkb/geometry/README b/nixos/xkb/geometry/README new file mode 100644 index 00000000..5f4dcc72 --- /dev/null +++ b/nixos/xkb/geometry/README @@ -0,0 +1,6 @@ +The geometry component of a keyboard mapping specifies primarily the geometry of +the keyboard. It contains the geometry symbolic name and the keyboard geometry +description. The geometry component might also contain aliases for some keys or +symbolic names for some indicators and might affect the set of indicators that +are physically present. Key aliases defined in the geometry component of a +keyboard mapping override those defined in the keycodes component. diff --git a/nixos/xkb/geometry/amiga b/nixos/xkb/geometry/amiga new file mode 100644 index 00000000..5a39ac3d --- /dev/null +++ b/nixos/xkb/geometry/amiga @@ -0,0 +1,264 @@ +default xkb_geometry "usa1" { + + description= "Amiga (usa1)"; + width= 490; + height= 175; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "FCTS" { { [ 23,18] }, { [2,1], [ 21,17] } }; + shape "TLDE" { { [ 28,18] }, { [2,1], [ 21,17] } }; + shape "TABK" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "CTRL" { { [ 23,18] }, { [2,1], [ 21,17] } }; + shape "CAPS" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "RTRN" { + approx = { [ 16, 0], [42,37] }, + { [16, 0], [42, 0], [42,37], + [ 0,37], [ 0,19], [16,19] }, + { [18, 1], [40, 1], [40,36], + [ 2,36], [ 2,20], [18,20] } }; + shape "LFSH" { { [ 52,18] }, { [2,1], [ 50,17] } }; + shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } }; + shape "MODK" { { [ 23,18] }, { [2,1], [ 21,17] } }; + shape "SPCE" { { [172,18] }, { [2,1], [170,17] } }; + shape "DELE" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } }; + + section.left= 22; + row.left= 1; + key.shape= "FCTS"; + key.gap= 1; + section "Function" { + top= 28; + row { + top= 1; + keys { { , shape="NORM" }, + { , 9 }, , , , , + { , 9 }, , , , + }; + }; + }; // End of "Function" section + + key.shape= "NORM"; + section "Alpha" { + top= 56; + row { + top= 1; + keys { { , shape="TLDE" }, + , , , , , , + , , , , , , + , { , "BKSP" } + }; + }; + row { + top= 20; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "RTRN", -15 } + }; + }; + row { + top= 39; + keys { { , "CTRL" }, { , "CAPS" }, + , , , , , + , , , , , + + }; + }; + row { + top= 58; + keys { { , "LFSH" }, + , , , , , + , , , , , + { , "RTSH" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + keys { { , 10 }, , + { , "SPCE" }, + , + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 56; + left= 326; + row { + top= 1; + key.shape = "DELE"; + keys { , }; + }; + row { + top= 39; + left = 20; + keys { }; + }; + row { + top= 58; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 56; + left= 392; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , }; + }; + row { + top= 39; + keys { , , , }; + }; + row { + top= 58; + keys { , , , { , "KPEN" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + +}; + +xkb_geometry "de" { + + description= "Amiga (de)"; + width= 490; + height= 175; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "FCTS" { { [ 23,18] }, { [2,1], [ 21,17] } }; + shape "TLDE" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "TABK" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "CTRL" { { [ 23,18] }, { [2,1], [ 21,17] } }; + shape "CAPS" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "RTRN" { + { [ 0, 0], [28,0], [28,37], [5,37], [5,18], [ 0,18] }, + { [ 2, 1], [26,1], [26,36], [7,36], [7,17], [ 2,17] } }; + shape "LFSH" { { [ 32,18] }, { [2,1], [ 29,17] } }; + shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } }; + shape "MODK" { { [ 23,18] }, { [2,1], [ 21,17] } }; + shape "SPCE" { { [172,18] }, { [2,1], [170,17] } }; + shape "DELE" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } }; + + section.left= 22; + row.left= 1; + key.shape= "FCTS"; + key.gap= 1; + section "Function" { + top= 28; + row { + top= 1; + keys { { , shape="NORM" }, + { , 9 }, , , , , + { , 9 }, , , , + }; + }; + }; // End of "Function" section + + key.shape= "NORM"; + section "Alpha" { + top= 56; + row { + top= 1; + keys { { , shape="TLDE" }, + , , , , , , + , , , , , , + , { , "BKSP" } + }; + }; + row { + top= 20; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "RTRN" } + }; + }; + row { + top= 39; + keys { { , "CTRL" }, { , "CAPS" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { { , "LFSH" }, + , , , , , , + , , , , , + { , "RTSH" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + keys { { , 14 }, , + { , "SPCE" }, + , + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 56; + left= 326; + row { + top= 1; + key.shape = "DELE"; + keys { , }; + }; + row { + top= 39; + left = 20; + keys { }; + }; + row { + top= 58; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 56; + left= 392; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , }; + }; + row { + top= 39; + keys { , , , }; + }; + row { + top= 58; + keys { , , , { , "KPEN" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + +}; diff --git a/nixos/xkb/geometry/ataritt b/nixos/xkb/geometry/ataritt new file mode 100644 index 00000000..9d27657b --- /dev/null +++ b/nixos/xkb/geometry/ataritt @@ -0,0 +1,251 @@ +default xkb_geometry "us" { + + description= "Atari TT (us)"; + width= 480; + height= 173; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "BKSP" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "RTRN" { approx = { [0,19], [32,37] }, + { [ 14, 0], [32, 0], [32,37], [0,37], [0,19], [14,19] }, + { [ 16, 1], [30, 1], [30,36], [2,36], [2,20], [16,20] } }; + shape "CTRL" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } }; + shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "SPCE" { { [172,18] }, { [2,1], [170,17] } }; + shape "FCTS" { { [ 28,10] }, { [2,1], [ 26,9] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } }; + + section.left= 21; + row.left= 1; + key.shape = "NORM"; + key.gap= 1; + section "Function" { + top= 36; + key.shape= "FCTS"; + row { + top= 1; + keys { , , , , + , , , , + , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 63; + row { + top= 1; + keys { , , , , , + , , , , , + , , , , + { , "BKSP" } + }; + }; + row { + top= 20; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "RTRN", -13 }, + }; + }; + row { + top= 39; + keys { { , "CTRL" }, + , , , , , + , , , , , + , { , 34 } + }; + }; + row { + top= 58; + keys { { , "LFSH" }, + , , , , , + , , , , , + { , "RTSH" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + keys { { , 24 }, + { , "SPCE" }, + + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 63; + left= 319; + row { + top= 1; + key.shape = "BKSP"; + keys { , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 39; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 63; + left= 381; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , }; + }; + row { + top= 39; + keys { , , , }; + }; + row { + top= 58; + keys { , , , { , "KPEN" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + +}; + +xkb_geometry "de" { + + description= "Atari TT (de)"; + width= 480; + height= 173; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "BKSP" { { [ 27,18] }, { [2,1], [ 25,17] } }; + shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } }; + shape "RTRN" { approx = { [0,19], [32,37] }, + { [ 14, 0], [32, 0], [32,37], [0,37], [0,19], [14,19] }, + { [ 16, 1], [30, 1], [30,36], [2,36], [2,20], [16,20] } }; + shape "CTRL" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "LFSH" { { [ 23,18] }, { [2,1], [ 21,17] } }; + shape "RTSH" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "SPCE" { { [170,18] }, { [2,1], [168,17] } }; + shape "FCTS" { { [ 28,11] }, { [2,1], [ 26,10] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } }; + + section.left= 21; + row.left= 1; + key.shape = "NORM"; + key.gap= 1; + section "Function" { + top= 36; + key.shape= "FCTS"; + row { + top= 1; + keys { , , , , + , , , , + , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 63; + row { + top= 1; + keys { , , , , , + , , , , , + , , , , + { , "BKSP" } + }; + }; + row { + top= 20; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "RTRN", -13 }, + }; + }; + row { + top= 39; + keys { { , "CTRL" }, + , , , , , + , , , , , + , { , 34 } + }; + }; + row { + top= 58; + keys { { , "LFSH" }, , + , , , , + , , , , , , + { , "RTSH" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + keys { { , 24 }, { , "SPCE" }, + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 63; + left= 319; + row { + top= 1; + key.shape = "BKSP"; + keys { , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 39; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 63; + left= 381; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , }; + }; + row { + top= 39; + keys { , , , }; + }; + row { + top= 58; + keys { , , , { , "KPEN" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + +}; diff --git a/nixos/xkb/geometry/chicony b/nixos/xkb/geometry/chicony new file mode 100644 index 00000000..92eee005 --- /dev/null +++ b/nixos/xkb/geometry/chicony @@ -0,0 +1,189 @@ +// -*- indent-tabs-mode: nil -*- + +// Created by Alexander Pohoyda +// Geometry specification for Chicony KB-9820 keyboard. + +// 86 keys +default xkb_geometry "us" { + description = "Chicony KB-9820 infra-red keyboard"; + width = 350; + height = 180; + //baseColor = "grey60"; + labelColor = "white"; + + shape "EDGE" { cornerRadius = 25, + { [0, 8], [142.5, 0], [202.5, 0], [347, 8], + [347, 60], [327, 100], [322, 160], + [202.5, 165], [142.5, 165], + [25, 160], [20, 100], [0, 60] } }; + shape "KEYS" { cornerRadius = 2, { [271, 109] } }; + shape "MOUS" { cornerRadius = 12, { [24, 24] } }; + shape "MOUS2" { cornerRadius = 9, { [18, 18] } }; + shape "BTNS" { cornerRadius = 5, { [10, 10] } }; + + solid "Edges" { + top = 0; + left = 0; + shape = "EDGE"; + color = "grey60"; + }; + + solid "KeyPanel" { + shape = "KEYS"; + left = 38; + top = 22; + color = "black"; + }; + + solid "Mouse" { + shape = "MOUS"; + left = 315; + top = 30; + color = "grey30"; + }; + + outline "Mouse2" { + shape = "MOUS2"; + left = 318; + top = 33; + color = "black"; + }; + + solid "Button1" { + shape = "BTNS"; + left = 10; + top = 32; + color = "grey30"; + }; + + solid "Button2" { + shape = "BTNS"; + left = 20; + top = 42; + color = "grey30"; + }; + + outline "Buttons" { + shape = "MOUS"; + left = 8; + top = 30; + color = "black"; + }; + + shape.cornerRadius = 1; + shape "ESC" { { [17, 12] }, { [1.5, 0], [15.5, 10] } }; + shape "SMALL" { { [15, 12] }, { [1.5, 0], [13.5, 10] } }; + shape "THIN" { { [14, 18] }, { [2, 0], [12, 15] } }; + shape "NARR" { { [16, 18] }, { [2, 0], [14, 15] } }; + shape "NORM" { { [17, 18] }, { [2, 0], [15, 15] } }; + shape "WIDER" { { [18, 18] }, { [2, 0], [16, 15] } }; + shape "CAPS" { { [22, 18] }, { [2, 0], [20, 15] } }; + shape "RTSH" { { [23, 18] }, { [2, 0], [21, 15] } }; + shape "WIDEST" { { [30, 18] }, { [2, 0], [28, 15] } }; + shape "SPCE" { { [68, 18] }, { [2, 0], [66, 15] } }; + + section "Function" { + key.shape = "SMALL"; + key.gap = 0.79; + key.color = "grey60"; + left = 38; + top = 22; + row { + top = 1; + keys { { , shape="ESC", 1 }, + { , 1.5 }, , , , + , , , , + , , , , + , , , + }; + }; + }; // End of "Function" section + + section "Control" { + key.shape = "NORM"; + key.gap = 1; + key.color = "grey60"; + left = 38; + top = 111; + row { + top = 1; + keys { , , , , + { , shape="SPCE" }, + , + { , shape="THIN" }, + { , shape="THIN" }, + { , shape="THIN" }, + { , shape="THIN" } }; + }; + }; // End of "Control" section + + section "Editing" { + key.shape = "NORM"; + key.gap = 1; + key.color = "grey60"; + left = 291; + top = 34; + row.vertical = True; + row { + top = 1; + keys { , , , }; + }; + }; // End of "Editing" section + + section "Navigation" { + key.gap = 1; + key.shape = "NARR"; + key.color = "grey60"; + left = 257; + top = 92; + row { + left = 16; + top = 1; + keys { }; + }; + row { + top = 20; + keys { , , }; + }; + }; // End of "Navigation" section + + section "Alpha" { + key.gap = 1; + key.shape = "NORM"; + key.color = "grey60"; + left = 38; + top = 35; + row { + top = 1; + keys { { , shape="NARR" }, + , , , , + , , , , , + , , , { , shape="WIDER" } + }; + }; + row { + top = 20; + keys { , + , , , , , + , , , , , + , , + }; + }; + row { + top = 39; + keys { { , shape="CAPS" }, + , , , , , + , , , , , + , { , shape="WIDEST" } + }; + }; + row { + top = 58; + keys { { , shape="WIDEST" }, + , , , , , + , , , , , + { , shape="RTSH" } + }; + }; + }; // End of "Alpha" section +}; diff --git a/nixos/xkb/geometry/dell b/nixos/xkb/geometry/dell new file mode 100644 index 00000000..a0c8833f --- /dev/null +++ b/nixos/xkb/geometry/dell @@ -0,0 +1,644 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +default xkb_geometry "dell101" { + + description= "Dell 101"; + width= 470; + height= 210; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } }; + shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "CAPS" { { [ 33,18] }, { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } }; + shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } }; + shape "SPCE" { { [133,18] }, { [2,1], [131,16] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } }; + + shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 5, 1 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 52; + left= 377; + color= "grey10"; + }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 67; + indicator.shape= "LED"; + indicator "Num Lock" { left= 382; }; + indicator "Caps Lock" { left= 407; }; + indicator "Scroll Lock" { left= 433; }; + text.top= 55; + text.color= "black"; + text "NumLockLabel" { left= 378; text="Num\nLock"; }; + text "CapsLockLabel" { left= 403; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 52; + row { + top= 1; + keys { { , color="grey20" }, + { , 20 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 8 }, , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 91; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , { , "BKSL" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , { , "RTRN", color="grey20" } + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , 21 }, + { , "SPCE", color="white" }, + , { , 21 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 91; + left= 312; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 91; + left= 376; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; // End of "default" geometry + + +xkb_geometry "dell65" { +}; + +xkb_geometry "dell65x" { + + description= "Dell 101"; + width= 470; + height= 210; + color="grey10"; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } }; + shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "CAPS" { { [ 33,18] }, { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } }; + shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } }; + shape "SPCE" { { [133,18] }, { [2,1], [131,16] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } }; + + shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 5, 1 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 52; + left= 377; + color= "grey10"; + }; + + shape "BACKGROUND" { cornerRadius=5, { [ 470, 210 ] } }; + solid "Background" { + shape= "BACKGROUND"; + top= 0; + left= 0; + color= "grey10"; + }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 67; + indicator.shape= "LED"; + indicator "Num Lock" { left= 382; }; + indicator "Caps Lock" { left= 407; }; + indicator "Scroll Lock" { left= 433; }; + text.top= 55; + text.color= "black"; + text "NumLockLabel" { left= 378; text="Num\nLock"; }; + text "CapsLockLabel" { left= 403; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 52; + row { + top= 1; + keys { { , color="grey20" }, + { , 20 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 8 }, , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 91; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , { , "BKSL" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , { , "RTRN", color="grey20" } + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , 21 }, + { , "SPCE", color="white" }, + , { , 21 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 91; + left= 312; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 91; + left= 376; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; + + +// +// Dell Precision M65 laptop +// + +xkb_geometry "dellm65" { + + description= "Dell Precision M65 laptop"; + width= 308; + height= 152; + baseColor = "grey20"; + labelColor = "white"; + + shape "BACKGROUND" { cornerRadius = 3, { [ 308, 152 ] } }; + shape "BACKGROUND2" { cornerRadius = 2, { [ 7, 22 ], + [ 171, 22 ], + [ 171, 10 ], + [ 301, 10 ], + [ 301, 148 ], + [ 244, 148 ], + [ 244, 132 ], + [ 7, 132] } }; + solid "Background" { + shape = "BACKGROUND"; + top = 0; + left = 0; + color = "grey20"; + }; + solid "Background2" { + shape = "BACKGROUND2"; + top = 0; + left = 0; + color = "black"; + }; + + shape "LEDS" { cornerRadius = 4, { [ 26, 8 ] } }; + shape "LED" { cornerRadius = 0, { [ 4, 4 ] } }; + solid "LedPanel" { + shape = "LEDS"; + top = 8; + left = 69; + color = "grey20"; + }; + + indicator.onColor= "green"; + indicator.offColor= "gray20"; + indicator.top= 10; + indicator.shape= "LED"; + indicator "Num Lock" { left= 72; }; + indicator "Caps Lock" { left= 80; }; + indicator "Scroll Lock" { left= 88; }; + + shape "MEDIA" { cornerRadius = 5, { [ 2, 2], [ 12, 12 ] } }; + shape "POWER" { cornerRadius = 7, { [ 14, 14 ] } }; + + section "Media" { + top = 5; + left = 102; + width = 60; + height = 14; + key.color="grey30"; + key.shape = "MEDIA"; + row { + top = 0; + keys { + , , , { , shape = "POWER", gap = 3 } + }; + }; + }; + + + shape "FKEY" { cornerRadius = 1, { [ 18, 12 ] }, { [ 1, 1 ], [ 17, 10 ] } }; + + section "Function" { + top = 12; + left = 8; + width = 290; + height = 24; + key.color = "grey80"; + key.shape = "FKEY"; + key.gap = 0; + row { + top = 0; + keys { { , 165 }, , , , + { , 1 }, , }; + }; + row { + top = 12; + keys { , { , 1 }, , , , + { , 1 }, , , , + { , 1 }, , , , + { , 1 }, , }; + }; + }; + + shape "AKEY" { cornerRadius = 1, { [ 19, 19 ] }, { [ 2, 1 ], [ 17, 15 ] } }; + shape "BKSP" { cornerRadius = 1, { [ 44, 19 ] }, { [ 2, 1 ], [ 42, 15 ] } }; + shape "TABK" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } }; + shape "BKSL" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } }; + shape "CAPS" { cornerRadius = 1, { [ 34, 19 ] }, { [ 2, 1 ], [ 32, 15 ] } }; + shape "RTRN" { cornerRadius = 1, { [ 47, 19 ] }, { [ 2, 1 ], [ 45, 15 ] } }; + shape "LFSH" { cornerRadius = 1, { [ 44, 19 ] }, { [ 2, 1 ], [ 42, 15 ] } }; + shape "RTSH" { cornerRadius = 1, { [ 56, 19 ] }, { [ 2, 1 ], [ 54, 15 ] } }; + shape "LCTL" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } }; + shape "LALT" { cornerRadius = 1, { [ 25, 19 ] }, { [ 2, 1 ], [ 23, 15 ] } }; + shape "RCTL" { cornerRadius = 1, { [ 25, 19 ] }, { [ 2, 1 ], [ 23, 15 ] } }; + shape "SPCE" { cornerRadius = 1, { [ 96, 19 ] }, { [ 2, 1 ], [ 94, 15 ] } }; + + + section "Alpha" { + top = 36; + left = 8; + width = 290; + height = 21; + key.color = "grey80"; + key.shape = "AKEY"; + key.gap = 0; + row { + top = 1; + keys { , , , , , + , , , , , + , , , { , 1, "BKSP" } }; + }; + row { + top = 20; + keys { { , "TABK" }, + { , 1 }, , , , , + , , , , , + , , { , 1, "BKSL" } }; + }; + row { + top = 39; + keys { { , "CAPS" }, + { , 1 }, , , , , + , , , , , + , { , 1, "RTRN" } }; + }; + row { + top = 58; + keys { { , "LFSH" }, + { , 1 }, , , , , + , , , , , + { , 1, "RTSH" } }; + }; + row { + top = 77; + keys { { , "LCTL" }, { , 20 }, { , "LALT" }, + { , "SPCE" }, , { , "RCTL" } }; + }; + }; + + shape "SKEY" { cornerRadius = 1, { [ 18, 17 ] }, { [ 2, 1 ], [ 16, 13 ] } }; + section "Arrows" { + top = 113; + left = 243; + width = 54; + height = 36; + + key.color = "grey80"; + key.shape = "SKEY"; + row { + top = 0; + left = 20; + + keys { }; + }; + + row { + top = 17; + left = 2; + + keys { , , }; + }; + }; + + shape "STIK" { cornerRadius = 4, { [ 7, 7 ] } }; + + solid "STIK" { + priority = 255; + color = "blue"; + shape = "STIK"; + top = 90; + left = 135; + }; +}; + +xkb_geometry "latitude" { + description="Dell Latitude"; + width=304.2; height=219.1; + + baseColor="grey"; labelColor="white"; + + alias =; + alias =; + + shape "EXTERNAL" {corner=3, + {[0,0], [302,0], [302,154], [174,154], [174,198], [166,216], [107,216], [100,198], [100,154], [0,154]}}; + solid "external" {shape="EXTERNAL"; top=1.1; left=1.1; color="grey10"; priority=10;}; + + shape "INTERNAL" {corner=3, + {[0,13], [162.2,13], [162.2,0], [286,0], [286,138], [230,138], [230,124], [163,124], [163,138], [96,138], [96,124], [0,124]}}; + solid "internal" {shape="INTERNAL"; top=7; left=8.5; color="black"; priority=20;}; + + shape "TOUCHPAD" {corner=2, {[68,40]}}; + solid "touchpad" {shape="TOUCHPAD"; top=153; left=104; color="grey20"; priority=20;}; + + shape "TOUCHPADBUTTONS" {corner=1, + {[0,0], [33.5,0], [33.5,16], [6,16]}, + {[34.5,0], [68,0], [61, 16], [34.5,16]}}; + solid "touchleft" {shape="TOUCHPADBUTTONS"; top=198; left=104; color="grey20"; priority=20;}; + + shape "NIPPLE" {corner=3, {[7.5,7.5]}}; + solid "nipple" {shape="NIPPLE"; top=87; left=134; color="blue"; priority=200;}; + shape "NIPPLEBUTTONS" {corner=2, {[32.5,13]}, {[33.5,0],[66,13]}}; + solid "nipplebuttons" {shape="NIPPLEBUTTONS"; top=131; left=105; color="grey20"; priority=20;}; + + shape "FILLINGS" {corner=1.5, {[19,15]}, {[38,0],[55,15]}}; + solid "fillings" {shape="FILLINGS"; top=112; left=238; color="grey"; priority=200;}; + + shape "FUNC" {corner=1.5, {[16.3,12]}, {[2,0.5], [14,10]}}; + shape "ESC" {corner=1.5, {[18,12]}, {[2,0.5], [16,10]}}; + shape "BKSP" {corner=1.5, {[36.5,18]}, {[3,0.5], [33.5,14]}}; + + section "Function" {key.color="grey"; priority=100; top=9; left=10; width=290; height=28; + row {top=0; left=161.1; keys {{,"FUNC",1.1}, {,"FUNC",1.1}, {,"FUNC",1.1}, + {,"FUNC",1.1}, {,"FUNC",2.5}, {,"FUNC",1.1}, {,"FUNC",1.1}};}; + row {top=12.5; left=0; keys {{,"ESC",0}, + {,"FUNC",2.7}, {,"FUNC",1.1}, {,"FUNC",1.1}, {,"FUNC",1.1}, + {,"FUNC",2.5}, {,"FUNC",1.1}, {,"FUNC",1.1}, {,"FUNC",1.1}, + {,"FUNC",2.5}, {,"FUNC",1.1}, {,"FUNC",1.1}, {,"FUNC",1.1}, + {,"FUNC",2.5}, {, "FUNC",1.1}, {,"FUNC",1.1}};}; + }; // End of "Function" section + + shape "NORM" {corner=1.5, {[18,18]}, {[3,0.5], [14.8,14]}}; + shape "TABK" {corner=1.5, {[28,18]}, {[3,0.5], [25,14]}}; + shape "CAPS" {corner=1.5, {[32,18]}, {[3,0.5], [22,14]}}; + shape "LFSH" {corner=1.5, {[23,18]}, {[3,0.5], [20,14]}}; + shape "RTSH" {corner=1.5, {[50,18]}, {[3,1], [47,14]}}; + shape "RTRN" {corner=1.5, {[0,0],[26.5,0],[26.5,37],[4,37],[4,18],[0,18]}, + {[3,0.5], [23.5,0.5], [23.5,33], [7,33], [7,14], [3,14]}}; + shape "SPCE" {corner=1.5,{[95,18]}, {[3,0.5],[92,14]}}; + shape "LCTL" {corner=1.5, {[27,18]}, {[3,0.5],[24,14]}}; + shape "LALT" {corner=1.5, {[22,18]}, {[3,0.5],[19,14]}}; + shape "WIN" {corner=1.5, {[18,18]}, {[3,0.5],[15,14]}}; + + section "Alpha" {key.color="grey"; priority=100; top=36; left=10; width=290; height=18; + row {top=0; left=0; keys {{, "NORM", 0}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, + {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, + {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "BKSP", 1}};}; + row {top=19; left=0; keys {{, "TABK", 0}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, + {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, + {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "RTRN", 1}};}; + row {top=38; left=0; keys {{, "CAPS", 0}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, + {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, + {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}};}; + // TODO There's a weird <> key here, check it out: + row {top=57; left=0; keys {{, "LFSH", 0}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, + {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, + {, "NORM", 1}, {, "NORM", 1}, {, "NORM", 1}, {, "RTSH", 1}};}; + row {top=76; left=0; keys {{, "LCTL", 0}, {, "WIN", 1},{, "WIN", 1}, {, "LALT", 1}, + {, "SPCE", 1}, {, "WIN", 1},{, "LALT", 1}};}; + }; // End of "Alpha" section + + shape "ARROW" {corner=1.5, {[17,15]}, {[2,0.5],[15,13]}}; + section "Arrows" {key.color="grey"; priority=110; top=112; left=240; width=43; height=31; + row {top=0; left=18; keys {{, "ARROW", 0}};}; + row {top=16; left=0; keys {{, "ARROW", 0}, {, "ARROW", 1}, {, "ARROW", 1}};}; + }; // End of "Arrows" section + + shape "LEDS" {corner=3, {[25,7]}}; + solid "leds" {shape="LEDS"; top=5.7; left=69; color="grey"; priority=10;}; + shape "LED" {corner=0, {[0,1.5], [3,4.5]}, {[0.5,1.5], [1,0] , [2,0], [2.5,1.5]}}; + indicator.onColor="green"; + indicator.offColor="grey"; + indicator.top=7; + indicator.shape="LED"; + indicator.priority=200; + indicator "Num Lock" {left=72;}; + indicator "Caps Lock" {left=80;}; + indicator "Scroll Lock" {left=88;}; + + text "LATITUDE" {left=10; top=7; text="L A T I T U D E | D620";}; + + shape "ROUND" {corner=5, {[10,10]}}; + shape "POWER" {corner=7, {[15,15]}}; + section "Topbuttons" {key.color="grey"; priority=110; top=2; left=100; + row {top=2; left=0; keys {{, "ROUND", 0}, {, "ROUND", 3}, {, "ROUND", 3}};}; + row {top=0; left=45; keys {{, "POWER", 0}};}; + }; // End of "TopButtons" section +}; diff --git a/nixos/xkb/geometry/digital_vndr/lk b/nixos/xkb/geometry/digital_vndr/lk new file mode 100644 index 00000000..37fa8391 --- /dev/null +++ b/nixos/xkb/geometry/digital_vndr/lk @@ -0,0 +1,728 @@ +// +//Copyright (c) 1996 Digital Equipment Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining +//a copy of this software and associated documentation files (the +//"Software"), to deal in the Software without restriction, including +//without limitation the rights to use, copy, modify, merge, publish, +//distribute, sublicense, and sell copies of the Software, and to +//permit persons to whom the Software is furnished to do so, subject to +//the following conditions: +// +//The above copyright notice and this permission notice shall be included +//in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, +//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +//THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of the Digital Equipment +//Corporation shall not be used in advertising or otherwise to promote +//the sale, use or other dealings in this Software without prior written +//authorization from Digital Equipment Corporation. +// +// HISTORY +// Log: lk,v +// Revision 1.2 1996/06/18 09:12:47 erik +// use flags correctly, assorted cleanups and consortium fixes +// +// Revision 1.1.6.2 1995/08/18 21:15:16 William_Walker +// Upgrade XKB to Protocol Rev. 0.64 +// [1995/08/18 20:41:46 William_Walker] +// +// Revision 1.1.2.5 1995/08/11 19:35:47 William_Walker +// Sync up with Erik's pool. +// [1995/08/11 18:35:58 William_Walker] +// +// Revision 1.1.2.4 1995/06/27 12:17:28 William_Walker +// Rename to ISO9995 compliant . +// [1995/06/26 20:23:07 William_Walker] +// +// Revision 1.1.2.3 1995/06/09 20:54:36 William_Walker +// Add VT105 layout support and ISO group support +// [1995/06/09 20:40:38 William_Walker] +// +// Revision 1.1.2.2 1995/06/05 19:21:16 William_Walker +// New file. I love keymaps. +// [1995/06/05 18:05:43 William_Walker] +// +// EndLog +// +// @(#)RCSfile: lk,v Revision: 1.2 (DEC) Date: 1996/01/24 12:16:00 +// +xkb_geometry "lk201" { + width = 530; + height = 170; + shape.cornerRadius = 1; + + shape "NORM" { { [18,19] }, { [3,2], [15,16] } }; + shape "RTRN" { + approx = { [0,0],[23,19] }, + { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] }, + { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] } + }; + shape "LONG" { { [37,19] }, { [3,2], [34,16] } }; + shape "TALL" { { [18,39] }, { [3,2], [15,36] } }; + shape "MED" { { [28,19] }, { [3,2], [25,16] } }; + shape "CAPS" { { [28,19] }, { [3,2], [18,16] } }; + shape "SPCE" { { [171,19] },{ [3,2], [168,16]} }; + shape "LEDS" { [ 30,15] }; + shape "LED" { [ 5, 2] }; + + section.left= 27; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + section "Function" { top = 20; + row { top = 1; + keys { , , , , , + { , 19 }, , , , , + { , 19 }, , , , + { , 98 }, , , + }; + }; + }; + + section "Editing" { top = 20; left = 350; + row { top = 1; + keys { , { , "LONG" } }; + }; + row { top = 41; + keys { , , }; + }; + row { top = 61; + keys { , , }; + }; + row { top = 81; left = 20; + keys { }; + }; + row { top = 101; + keys { , , }; + }; + }; + + section "Keypad" { top = 60; left = 426; + row { top = 1; + keys { , , , }; + }; + row { top = 21; + keys { , , , }; + }; + row { top = 41; + keys { , , , }; + }; + row { top = 61; + keys { , , , { , "TALL" } }; + }; + row { top = 81; + keys { { , "LONG" }, }; + }; + }; + + section "Alpha" { top = 60; + row { top = 1; left = 15; + keys { , + , , , , , , + , , , , , , + { , "MED" } + }; + }; + row { top = 21; left = 15; + keys { { , "MED" }, + , , , , , , + , , , , , , + { , "RTRN" } + }; + + }; + row { top = 41; + keys { , + { , "CAPS" }, + , , , , , , + , , , , , + }; + }; + row { top = 61; + keys { { , "LONG" }, + , , , , , , + , , , , , + { , "LONG" } + }; + }; + row { top = 81; left = 26; + keys { { , "LONG" }, + { , "SPCE" } + }; + }; + }; + + section.left = 341; + section.top = 3; + + section "Indicators" { + indicator.onColor = "#00ff00"; + indicator.offColor= "#001000"; + indicator.top = 10; + indicator.shape= "LED"; + indicator "Scroll Lock" { left = 9; }; + indicator "Caps Lock" { left = 27; }; + indicator "Compose" { left = 45; }; + indicator "Wait" { left = 63; }; + text.top = 4; + text.color = "black"; + text "HoldScreenLabel" {left = 5; text="Hold\n"; }; + text "CapsLockLabel" {left = 23; text="Lock\n"; }; + text "ComposeLabel" {left = 37; text="Compose\n"; }; + text "WaitLabel" {left = 60; text="Wait\n"; }; + }; +}; + +xkb_geometry "lk401" { + + width = 480; + height = 180; + shape.cornerRadius = 1; + + shape "NORM" { { [18,19] }, { [3,2], [15,16] } }; + shape "RTRN" { + approx = { [0,0],[23,19] }, + { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] }, + { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] } + }; + shape "LONG" { { [37,19] }, { [3,2], [34,16] } }; + shape "TALL" { { [18,39] }, { [3,2], [15,36] } }; + shape "MED" { { [28,19] }, { [3,2], [25,16] } }; + shape "CAPS" { { [28,19] }, { [3,2], [18,16] } }; + shape "SPCE" { { [131,19] },{ [3,2], [128,16]} }; + shape "LEDS" { [ 36,15] }; + shape "LED" { [ 5, 2] }; + + section.left= 17; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + text "Logo" {left = 20; top = 10; text="digital\n"; }; + + section "Function" { top = 20; + row { top = 1; + keys { , , , , , + { , 15 }, , , , , + { , 15 }, , , , + { , 75 }, , , + }; + }; + }; + + section "Editing" { top = 20; left = 320; + row { top = 1; + keys { , { , "LONG" } }; + }; + row { top = 41; + keys { , , }; + }; + row { top = 61; + keys { , , }; + }; + row { top = 81; left= 20; + keys { }; + }; + row { top = 101; + keys { , , }; + }; + }; + + section "Keypad" { top = 60; left = 385; + row { top = 1; + keys { , , , }; + }; + row { + top = 21; + keys { , , , }; + }; + row { top = 41; + keys { , , , }; + }; + row { top = 61; + keys { , , , { , "TALL" } }; + }; + row { top = 81; + keys { { , "LONG" }, }; + }; + }; + + section "Alpha" { top = 60; + row { top = 1; left = 15; + keys { , + , , , , , , + , , , , , , + { , "MED" } + }; + }; + row { top = 21; left = 15; + keys { { , "MED" }, + , , , , , , + , , , , , , + { , "RTRN" } + }; + + }; + row { top = 41; + keys { , + { , "CAPS" }, + , , , , , , + , , , , , + }; + }; + row { top = 61; + keys { { , "LONG" }, + , , , , , , + , , , , , + { , "LONG" } + }; + }; + row { top = 81; left = 29; + keys { { , "MED" }, + { , "MED" }, + { , "SPCE" }, + { , "MED" }, + { , "MED" } + }; + }; + }; + + section.left = 69; + section.top = 3; + section "Indicators" { + solid "led_panel" { top = 0; left = 0; + cornerRadius = 1; + shape = "LEDS"; + color = "grey"; + }; + indicator.onColor = "#00ff00"; + indicator.offColor= "#001000"; + indicator.shape = "LED"; + indicator.top = 1; + indicator "Scroll Lock" { left = 3; }; + indicator "Caps Lock" { left = 22; }; + }; + section "IndicatorLabels" { + text.top = 4; + text.color = "black"; + text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; }; + text "CapsLockLabel" {left = 22; text="Caps\nLock"; }; + }; +}; + +xkb_geometry "lk450" { + + width = 480; + height = 180; + shape.cornerRadius = 1; + + shape "NORM" { { [18,19] }, { [3,2], [15,16] } }; + shape "RTRN" { + approx = { [0,0],[23,19] }, + { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] }, + { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] } + }; + shape "LONG" { { [37,19] }, { [3,2], [34,16] } }; + shape "TALL" { { [18,39] }, { [3,2], [15,36] } }; + shape "MED" { { [28,19] }, { [3,2], [25,16] } }; + shape "CAPS" { { [28,19] }, { [3,2], [18,16] } }; + shape "SPCE" { { [131,19] },{ [3,2], [128,16]} }; + shape "LEDS" { [ 36,15] }; + shape "LED" { [ 5, 2] }; + + section.left= 17; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + text "Logo" {left = 20; top = 10; text="digital\n"; }; + + section "Function" { top = 20; + row { top = 1; + keys { , , , , , + { , 15 }, , , , , + { , 15 }, , , , + { , 75 }, , , + }; + }; + }; + + section "Editing" { top = 20; left = 320; + row { top = 1; + keys { , { , "LONG" } }; + }; + row { top = 41; + keys { , , }; + }; + row { top = 61; + keys { , , }; + }; + row { top = 81; left= 20; + keys { }; + }; + row { top = 101; + keys { , , }; + }; + }; + + section "Keypad" { top = 60; left = 385; + row { top = 1; + keys { , , , }; + }; + row { + top = 21; + keys { , , , }; + }; + row { top = 41; + keys { , , , }; + }; + row { top = 61; + keys { , , , { , "TALL" } }; + }; + row { top = 81; + keys { { , "LONG" }, }; + }; + }; + + section "Alpha" { top = 60; + row { top = 1; left = 15; + keys { , + , , , , , , + , , , , , , + { , "MED" } + }; + }; + row { top = 21; left = 15; + keys { { , "MED" }, + , , , , , , + , , , , , , + { , "RTRN" } + }; + + }; + row { top = 41; + keys { , + { , "CAPS" }, + , , , , , , + , , , , , + }; + }; + row { top = 61; + keys { { , "LONG" }, + , , , , , , + , , , , , + { , "LONG" } + }; + }; + row { top = 81; left = 29; + keys { { , "MED" }, + { , "MED" }, + { , "SPCE" }, + { , "MED" }, + { , "MED" } + }; + }; + }; + + section.left = 69; + section.top = 3; + section "Indicators" { + solid "led_panel" { top = 0; left = 0; + cornerRadius = 1; + shape = "LEDS"; + color = "grey"; + }; + indicator.onColor = "#00ff00"; + indicator.offColor= "#001000"; + indicator.shape = "LED"; + indicator.top = 1; + indicator "Scroll Lock" { left = 3; }; + indicator "Caps Lock" { left = 22; }; + }; + section "IndicatorLabels" { + text.top = 4; + text.color = "black"; + text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; }; + text "CapsLockLabel" {left = 22; text="Caps\nLock"; }; + }; +}; + +xkb_geometry "lk401bj" +{ + width = 480; + height = 180; + shape.cornerRadius = 1; + + shape "NORM" { { [18,19] }, { [3,2], [15,16] } }; + shape "RTRN" { + approx = { [0,0],[23,19] }, + { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] }, + { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] } + }; + shape "LONG" { { [37,19] }, { [3,2], [34,16] } }; + shape "TALL" { { [18,39] }, { [3,2], [15,36] } }; + shape "MED" { { [28,19] }, { [3,2], [25,16] } }; + shape "CAPS" { { [28,19] }, { [3,2], [18,16] } }; + shape "SPCE" { { [131,19] },{ [3,2], [128,16]} }; + shape "LEDS" { [ 30,15] }; + shape "LED" { [ 5, 2] }; + + section.left= 17; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + text "Logo" {left = 20; top = 10; text="digital\n"; }; + + section "Function" { top = 20; + row { top = 1; + keys { , , , , , + { , 15 }, , , , , + { , 15 }, , , , + { , 75 }, , , + }; + }; + }; + + section "Editing" { top = 20; left = 320; + row { top = 1; + keys { , { , "LONG" } }; + }; + row { top = 41; + keys { , , }; + }; + row { top = 61; + keys { , , }; + }; + row { top = 81; left = 20; + keys { }; + }; + row { top = 101; + keys { , , }; + }; + }; + + section "Keypad" { top = 60; left = 385; + row { top = 1; + keys { , , , }; + }; + row { top = 21; + keys { , , , }; + }; + row { top = 41; + keys { , , , }; + }; + row { top = 61; + keys { , , , { , "TALL" } }; + }; + row { top = 81; + keys { { , "LONG" }, }; + }; + }; + + section "Alpha" { top = 60; + row { top = 1; left = 15; + keys { , + , , , , , , + , , , , , , + { , "MED" } + }; + }; + row { top = 21; left = 15; + keys { { , "MED" }, + , , , , , , + , , , , , , + { , "RTRN" } + }; + }; + row { top = 41; + keys { , + { , "CAPS" }, + , , , , , , + , , , , , + }; + }; + row { top = 61; + keys { { , "LONG" }, + , , , , , , + , , , , , + { , "LONG" } + }; + }; + row { top = 81; left = 29; + keys { { , "MED" }, + { , "MED" }, + { , "SPCE" }, + { , "MED" }, + { , "MED" } + }; + }; + }; + + section.left = 69; + section.top = 3; + + section "Indicators" { + solid "led_panel" { top = 0; left = 0; + cornerRadius = 1; + shape = "LEDS"; + color = "grey"; + }; + indicator.onColor = "#00ff00"; + indicator.offColor= "#001000"; + indicator.top = 1; + indicator.shape= "LED"; + indicator "Scroll Lock" { left = 3; }; + indicator "Caps Lock" { left = 22; }; + text.top = 4; + text.color = "black"; + text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; }; + text "CapsLockLabel" {left = 19; text="Caps\nLock"; }; + }; +}; + +xkb_geometry "lk401jj" { + + width = 460; + height = 180; + shape.cornerRadius = 1; + + shape "NORM" { { [18,19] }, { [3,2], [15,16] } }; + shape "RTRN" { + approx = { [0,0],[28,23] }, + { [0,0], [28,0], [28,39], [5,39], [5,19], [0,19] }, + { [3,2], [25,2], [25,36], [8,36], [8,16], [3,16] } + }; + shape "LONG" { { [37,19] }, { [3,2], [34,16] } }; + shape "LONG1" { { [32,19] }, { [3,2], [29,16] } }; + shape "TALL" { { [18,39] }, { [3,2], [15,36] } }; + shape "MED" { { [28,19] }, { [3,2], [25,16] } }; + shape "MED1" { { [23,19] }, { [3,2], [20,16] } }; + shape "CTRL" { { [43,19] }, { [3,2], [38,16] } }; + shape "SPCE" { { [55,19] },{ [3,2], [53,16]} }; + shape "LEDS" { [ 56,15] }; + shape "LED" { [ 5, 2] }; + + section.left = 5; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + text "Logo" {left = 7; top = 10; text="digital\n"; }; + + section "Function" { top = 40; + row { top = 1; + keys { , , , , , + { , 18 }, , , , , + { , 18 }, , , , + { , 73 }, , , + }; + }; + }; + + section "Editing" { top = 40; left = 313; + row { top = 1; + keys { , { , "LONG" } }; + }; + row { top = 31; + keys { , , }; + }; + row { top = 51; + keys { , , }; + }; + row { top = 71; left= 20; + keys { }; + }; + row { top = 91; + keys { , , }; + }; + }; + + section "Keypad" { top = 70; left = 377; + row { top = 1; + keys { , , , }; + }; + row { top = 21; + keys { , , , }; + }; + row { top = 41; + keys { , , , }; + }; + row { top = 61; + keys { , , , { , "TALL" } }; + }; + row { top = 81; + keys { { , "LONG" }, }; + }; + }; + + section "Alpha" { top = 70; + row { top = 1; left = 7; + keys { { , "MED1" }, + , , , , , , + , , , , , , + , { , "MED1" } + }; + }; + row { top = 21; left = 7; + keys { { , "LONG1" }, + , , , , , , + , , , , , , + { , "RTRN" } + }; + }; + row { top = 41; + keys { { , "CTRL" }, + , , , , , , + , , , , , + }; + }; + row { top = 61; + keys { , { , "LONG1" }, + , , , , , + , , , , , + , { , "MED" } + }; + }; + row { top = 81; left = 7; + keys { { , "LONG" }, + { , "LONG" }, + { , "LONG" }, + { , "SPCE" }, + { , "LONG" }, + { , "LONG" }, + , + }; + }; + }; + + section.left = 315; + section.top = 20; + + section "Indicators" { + solid "led_panel" { top = 0; left = 0; + cornerRadius = 1; + shape = "LEDS"; + color = "grey"; + }; + indicator.onColor = "#00ff00"; + indicator.offColor= "#001000"; + indicator.top = 11; + indicator.shape= "LED"; + indicator "Scroll Lock" { left = 6; }; + indicator "Caps Lock" { left = 26; }; + text.top = 4; + text.color = "black"; + text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; }; + text "CapsLockLabel" {left = 22; text="Caps\nLock"; }; + }; +}; diff --git a/nixos/xkb/geometry/digital_vndr/pc b/nixos/xkb/geometry/digital_vndr/pc new file mode 100644 index 00000000..ee798b0b --- /dev/null +++ b/nixos/xkb/geometry/digital_vndr/pc @@ -0,0 +1,349 @@ +// +//Copyright (c) 1996 Digital Equipment Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining +//a copy of this software and associated documentation files (the +//"Software"), to deal in the Software without restriction, including +//without limitation the rights to use, copy, modify, merge, publish, +//distribute, sublicense, and sell copies of the Software, and to +//permit persons to whom the Software is furnished to do so, subject to +//the following conditions: +// +//The above copyright notice and this permission notice shall be included +//in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, +//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +//THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of the Digital Equipment +//Corporation shall not be used in advertising or otherwise to promote +//the sale, use or other dealings in this Software without prior written +//authorization from Digital Equipment Corporation. +// +// HISTORY +// Log: pc,v +// Revision 1.2 1996/06/18 09:12:50 erik +// use flags correctly, assorted cleanups and consortium fixes +// +// Revision 1.1.6.2 1995/08/18 21:15:18 William_Walker +// Upgrade XKB to Protocol Rev. 0.64 +// [1995/08/18 20:41:49 William_Walker] +// +// Revision 1.1.2.4 1995/08/11 19:35:48 William_Walker +// Sync up with Erik's pool. +// [1995/08/11 18:36:03 William_Walker] +// +// Revision 1.1.2.3 1995/06/27 12:17:29 William_Walker +// Rename to ISO9995 compliant . +// [1995/06/26 20:23:10 William_Walker] +// +// Revision 1.1.2.2 1995/06/05 19:21:19 William_Walker +// New file. I love keymaps. +// [1995/06/05 18:05:51 William_Walker] +// +// EndLog +// +// @(#)RCSfile: pc,v Revision: 1.2 (DEC) Date: 1996/02/02 14:40:25 +// +partial xkb_geometry "common" { + width = 480; + height = 200; + + shape.cornerRadius = 1; + shape "NORM" { primary = { [18,19] }, { [3,2], [15,16] } }; + shape "KP0" { primary = { [37,19] }, { [3,2], [34,16] } }; + shape "KPAD" { primary = { [18,39] }, { [3,2], [15,36] } }; + shape "LEDS" { [78,22] }; + shape "LED" { [5,2] }; + + text.color = "black"; + section.left = 17; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + section "Function" { top = 40; + row { top = 1; + keys { , + { , 20 }, , , , + { , 10 }, , , , + { , 10 }, , , + }; + }; + }; + + section "Editing" { top = 40; left = 308; + row { top = 1; + keys { , , }; + }; + row { top = 41; + keys { , , }; + }; + row { top = 61; + keys { , , }; + }; + row { top = 101; left = 20; + keys { }; + }; + row { top = 121; + keys { , , }; + }; + }; + + section "Keypad" { top = 80; left = 374; + row { top = 1; + keys { , , , }; + }; + row { top = 21; + keys { , , , { , "KPAD" } }; + }; + row { top = 41; + keys { , , }; + }; + row { top = 61; + keys { , , , { , "KPAD" } }; + }; + row { top = 81; + keys { { , "KP0" }, }; + }; + }; +}; + +partial xkb_geometry "leds_on_keys" { + section.top = 40; + section.left = 17; + section "LedPanel" { + indicator.onColor = "#00ff00"; + indicator.offColor = "#001000"; + indicator.shape = "LED"; + indicator "Scroll Lock" { left = 317; top = 5; }; + indicator "Num Lock" { left = 364; top = 45; }; + indicator "Caps Lock" { left = 10; top = 85; }; + }; + + section.left = 375; + section.top = 40; + section "LogoPanel" { + solid "logo_panel" { top = 0; left = 0; + shape = "LEDS"; + color = "grey"; + }; + text "Logo" {left = 28; top = 10; text="digital\n"; }; + }; +}; + +partial xkb_geometry "leds_alone" { + section.left = 375; + section.top = 40; + section "Indicators" { + solid "led_panel" { top = 0; left = 0; + shape = "LEDS"; + color = "grey"; + }; + indicator.top = 16; + indicator.onColor = "#00ff00"; + indicator.offColor = "#001000"; + indicator.shape = "LED"; + indicator "Num Lock" { left = 3; }; + indicator "Caps Lock" { left = 26; }; + indicator "Scroll Lock" { left = 50; }; + text "Logo" {left = 2; top = 3; text="digital\n"; }; + }; + section "IndicatorLabels" { + text.top = 11; + text "NumLockLabel" {left = 10; text="Num\nLock"; }; + text "CapsLockLabel" {left = 33; text="Caps\nLock"; }; + text "ScrollLockLabel" {left = 58; text="Scroll\nLock"; }; + }; +}; + +xkb_geometry "pc101" { + include "digital_vndr/pc(common)" + + shape.cornerRadius = 1; + shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } }; + shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } }; + shape "RTRN" { primary = { [41,19] }, { [3,2], [38,16] } }; + shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } }; + shape "LFSH" { primary = { [41,19] }, { [3,2], [38,16] } }; + shape "RTSH" { primary = { [51,19] }, { [3,2], [49,16] } }; + shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } }; + shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } }; + shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} }; + + section.left = 17; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + section "Alpha" { top = 80; + row { top = 1; + keys { , + , , , , , , + , , , , , , + { , "BKSP" } + }; + }; + row { top = 21; + keys { { , "TABK" }, + , , , , , , + , , , , , , + { , "BKSL" } + }; + + }; + row { top = 41; + keys { { , "CAPS" }, + , , , , , , + , , , , , + { , "RTRN" } + }; + }; + row { top = 61; + keys { { , "LFSH" }, + , , , , , , + , , , , + { , "RTSH" } + }; + }; + row { top = 81; + key.shape = "MODK"; + keys { , + { , 20 }, + { , "SPCE" }, + , + { , 21 } + }; + }; + }; +}; + +xkb_geometry "pc102" { + include "digital_vndr/pc(common)" + + shape.cornerRadius = 1; + shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } }; + shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } }; + shape "RTRN" { + approx = { [0,0],[28,19] }, + { [0,0], [27,0], [27,39], [5,39], [5,19], [0,19] }, + { [3,2], [24,2], [24,36], [8,36], [8,16], [3,16] } + }; + shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } }; + shape "LFSH" { primary = { [22,19] }, { [3,2], [19,16] } }; + shape "RTSH" { primary = { [51,19] }, { [3,2], [49,16] } }; + shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } }; + shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } }; + shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} }; + + section.left = 17; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + section "Alpha" { top = 80; + row { top = 1; + keys { , + , , , , , , + , , , , , , + { , "BKSP" } + }; + }; + row { top = 21; + keys { { , "TABK" }, + , , , , , , + , , , , , , + { , "RTRN" } + }; + + }; + row { top = 41; + keys { { , "CAPS" }, + , , , , , , + , , , , , + }; + }; + row { top = 61; + keys { { , "LFSH" }, + , , , , , , + , , , , , + { , "RTSH" } + }; + }; + row { top = 81; + key.shape = "MODK"; + keys { , + { , 20 }, + { , "SPCE" }, + , + { , 21 } + }; + }; + }; +}; + +xkb_geometry "pcxaj" { + include "digital_vndr/pc(common)" + + shape.cornerRadius = 1; + shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } }; + shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } }; + shape "RTRN" { primary = { [22,19] }, { [3,2], [19,16] } }; + shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } }; + shape "LFSH" { primary = { [41,19] }, { [3,2], [38,16] } }; + shape "RTSH" { primary = { [32,19] }, { [3,2], [29,16] } }; + shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } }; + shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } }; + shape "SPCE" { primary = { [114,19]}, { [3,2], [111,16]} }; + + section.left = 17; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + section "Alpha" { top = 80; + row { top = 1; + keys { , + , , , , , , + , , , , , , + { , "BKSP" } + }; + }; + row { top = 21; + keys { { , "TABK" }, + , , , , , , + , , , , , , + { , "BKSL" } + }; + }; + row { top = 41; + keys { { , "CAPS" }, + , , , , , , + , , , , , , + { , "RTRN" } + }; + }; + row { top = 61; + keys { { , "LFSH" }, + , , , , , , + , , , , , + { , "RTSH" } + }; + }; + row { top = 81; + key.shape = "MODK"; + keys { , , + { , "NORM" }, + { , "SPCE" }, + { , "NORM" }, + { , "NORM" }, + , + }; + }; + }; +}; diff --git a/nixos/xkb/geometry/digital_vndr/unix b/nixos/xkb/geometry/digital_vndr/unix new file mode 100644 index 00000000..141e4ed8 --- /dev/null +++ b/nixos/xkb/geometry/digital_vndr/unix @@ -0,0 +1,227 @@ +// +//Copyright (c) 1996 Digital Equipment Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining +//a copy of this software and associated documentation files (the +//"Software"), to deal in the Software without restriction, including +//without limitation the rights to use, copy, modify, merge, publish, +//distribute, sublicense, and sell copies of the Software, and to +//permit persons to whom the Software is furnished to do so, subject to +//the following conditions: +// +//The above copyright notice and this permission notice shall be included +//in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, +//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +//THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of the Digital Equipment +//Corporation shall not be used in advertising or otherwise to promote +//the sale, use or other dealings in this Software without prior written +//authorization from Digital Equipment Corporation. +// +// HISTORY +// Log: unix,v +// Revision 1.2 1996/06/18 09:12:53 erik +// use flags correctly, assorted cleanups and consortium fixes +// +// Revision 1.1.2.3 1995/06/27 12:17:30 William_Walker +// Rename to ISO9995 compliant . +// [1995/06/26 20:23:12 William_Walker] +// +// Revision 1.1.2.2 1995/06/05 19:21:23 William_Walker +// New file. I love keymaps. +// [1995/06/05 18:05:56 William_Walker] +// +// EndLog +// +// @(#)RCSfile: unix,v Revision: 1.2 (DEC) Date: 1996/01/24 12:16: +// +xkb_geometry "unix" { + + width = 340; + height = 160; + shape.cornerRadius = 1; + + shape "NORM" { primary = { [18,19] }, { [3,2], [15,16] } }; + shape "AE00" { primary = { [28,19] }, { [3,2], [25,16] } }; + shape "BKSP" { primary = { [46,19] }, { [3,2], [43,16] } }; + shape "TABK" { primary = { [37,19] }, { [3,2], [34,16] } }; + shape "CTRL" { primary = { [46,19] }, { [3,2], [43,16] } }; + shape "RTRN" { primary = { [46,19] }, { [3,2], [43,16] } }; + shape "SHFT" { primary = { [56,19] }, { [3,2], [53,16] } }; + shape "MODK" { primary = { [37,19] }, { [3,2], [34,16] } }; + shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} }; + + section.left= 17; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + text.color = "black"; + text "Logo" {left = 20; top = 10; text="digital\n"; }; + + section "Function" { top = 30; + row { top = 1; + keys { , , , , , + { , 20 }, , , , , + { , 20 }, , , + }; + }; + }; + + section "Alpha" { top = 50; + row { top = 1; + keys { { , "AE00" }, + , , , , , , + , , , , , , + { , "BKSP" } + }; + }; + row { top = 21; + keys { { , "TABK" }, + , , , , , , + , , , , , , + , + }; + + }; + row { top = 41; left = -4; + keys { { , "CTRL" }, + , , , , , , + , , , , , + { , "RTRN" } + }; + }; + row { top = 61; left = -4; + keys { { , "SHFT" }, + , , , , , , + , , , , + { , "SHFT" } + }; + }; + solid "ExtendKey" { top = 81; left= 1; + shape= "NORM"; + color= "grey20"; + }; + text.top = 89; + text.color = "black"; + text "ExtendLabel" {left = 6; text="Ext\nend"; }; + row { top = 81; left = 19; + key.shape = "MODK"; + keys { { , "NORM" }, , + { , "SPCE" }, + , + }; + }; + }; +}; + +xkb_geometry "lk421jj" { + + width = 315; + height = 170; + shape.cornerRadius = 1; + + shape "NORM" { { [18,19] }, { [3,2], [15,16] } }; + shape "RTRN" { + approx = { [0,0],[28,23] }, + { [0,0], [28,0], [28,39], [5,39], [5,19], [0,19] }, + { [3,2], [25,2], [25,36], [8,36], [8,16], [3,16] } + }; + shape "LONG" { { [37,19] }, { [3,2], [34,16] } }; + shape "LONG1" { { [32,19] }, { [3,2], [29,16] } }; + shape "TALL" { { [18,39] }, { [3,2], [15,36] } }; + shape "MED" { { [23,19] }, { [3,2], [20,16] } }; + shape "CTRL" { { [43,19] }, { [3,2], [38,16] } }; + shape "SPCE" { { [55,19] },{ [3,2], [53,16]} }; + shape "LEDS" { [ 56,15] }; + shape "LED" { [ 5, 2] }; + + section.left = 5; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + text "Logo" {left = 7; top = 10; text="digital\n"; }; + + section "Function" { top = 45; + row { top = 1; left = 7; + keys { , , , , , + { , 18 }, , , , + }; + }; + }; + + section "Editing" { top = 45; left= 230; + row { top = 1; + keys { , , , }; + }; + }; + + section "Alpha" { top = 65; + row { top = 1; left = 7; + keys { { , "MED" }, + , , , , , , + , , , , , , + , { , "MED" } + }; + }; + row { top = 21; left = 7; + keys { { , "LONG1" }, + , , , , , , + , , , , , , + { , "RTRN" } + }; + }; + row { top = 41; + keys { { , "CTRL" }, + , , , , , , + , , , , , + }; + }; + row { top = 61; + keys { , { , "LONG1" }, + , , , , , + , , , , , + , { , "LONG1" } + }; + }; + row { top = 81; left = 7; + keys { , , + { , "LONG" }, + { , "LONG" }, + { , "SPCE" }, + { , "LONG" }, + { , "LONG" }, + , + }; + }; + }; + + section.left = 233; + section.top = 20; + + section "Indicators" { + solid "led_panel" { top = 0; left = 0; + cornerRadius = 1; + shape = "LEDS"; + color = "grey"; + }; + indicator.onColor = "#00ff00"; + indicator.offColor= "#001000"; + indicator.top = 11; + indicator.shape= "LED"; + indicator "Scroll Lock" { left = 6; }; + indicator "Caps Lock" { left = 26; }; + text.top = 3; + text.color = "black"; + text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; }; + text "CapsLockLabel" {left = 22; text="Caps\nLock"; }; + }; +}; diff --git a/nixos/xkb/geometry/everex b/nixos/xkb/geometry/everex new file mode 100644 index 00000000..1e49110e --- /dev/null +++ b/nixos/xkb/geometry/everex @@ -0,0 +1,170 @@ +default xkb_geometry "STEPnote" { + + description= "Everex STEPnote"; + width= 281; + height= 150; + + shape.cornerRadius= 1; + + shape "NORM" { + { [17,17] }, + { [ 2, 1], [ 15, 15 ] } + }; + shape "NARR" { + { [ 15, 17 ] }, + { [ 2, 1 ], [ 13, 15 ] } + }; + shape "FKEY" { + { [ 15.1, 15.5 ] }, + { [ 1, 1 ], [ 14.1, 14.5 ] } + }; + shape "ESC" { + { [ 16.4, 15.5 ] }, + { [ 1, 1 ], [ 14.1, 14.5 ] } + }; + shape "WIDE" { // backspace, tab and Fn + { [ 25, 17 ] }, + { [ 2, 1 ], [ 23, 15 ] } + }; + shape "RTRN" { + { [ 27.5, 17 ] }, + { [ 2, 1 ], [ 25.5, 15 ] } + }; + shape "CAPS" { + { [ 30, 17 ] }, + { [ 2, 1 ], [ 28, 15 ] } + }; + shape "LFSH" { + { [ 38.5, 17 ] }, + { [ 2, 1 ], [ 36.5, 15 ] } + }; + shape "RTSH" { + { [ 21, 17 ] }, + { [ 2, 1 ], [ 19, 15 ] } + }; + shape "SPCE" { + { [ 88.8, 17 ] }, + { [ 2, 1 ], [ 86.8, 15 ] } + }; + shape "WELL" { + { [ 269, 105 ] } + }; + shape "LED" { + cornerRadius= 1.5, + { [ 3, 10 ] } + }; + + section.left= 6; + row.left= 1; + key.shape= "NORM"; + key.gap= 0.5; + + key.color= "grey20"; + labelColor= "white"; + baseColor= "grey20"; + + indicator.top= 20; + indicator.shape= "LED"; + indicator.onColor= "green"; + indicator.offColor= "green30"; + + indicator "Power" { left= 40; }; + indicator "Battery" { left=101; }; + indicator "Suspend" { left=112; }; + indicator "HardDrive" { left=123; }; + indicator "Floppy" { left=134; }; + indicator "KeyPad" { left=145; }; + indicator "Num Lock" { left=156; }; + indicator "Caps Lock" { left=167; }; + indicator "Scroll Lock" { left=178; }; + + solid "KeyWell" { + top= 35; + left= 6; + shape= "WELL"; + color= "grey10"; + }; + section "Whole" { + top= 35; + row { + top= 0.5; + key.color= "grey30"; + key.shape= "FKEY"; + keys { + { , "ESC" }, + , , , , , , + , , , , , , + , , , + }; + }; + row { + top= 16.5; + keys { + { , "NARR" }, + , , , , , , + , , , , , , + { , shape="WIDE", color="grey30" }, + { , shape="NARR", color="grey30" } + }; + }; + row { + top= 34; + keys { + { , shape="WIDE", color="grey30" }, + , , , , , , + , , , , , , + { , "NARR" }, + { , shape="NARR", color="grey30" } + }; + }; + row { + top= 51.5; + keys { + { , shape="CAPS", color="grey30" }, + , , , , , + , , , , , + , + { , shape="RTRN", color="grey30" }, + { , shape="NARR", color="grey30" } + }; + }; + row { + top= 69; + keys { + { , shape="LFSH", color="grey30" }, + , , , , , + , , , , , + { , shape="RTSH", color="grey30" }, + { , shape="NARR", color="grey30" }, + { , shape="NARR", color="grey30" } + }; + }; + row { + top= 86.5; + key.color= "grey30"; + keys { + { , "WIDE" }, + , , + { , shape="SPCE", 18, color="grey20" }, + , , , + { , "NARR" }, { , "NARR" }, + { , "NARR" } + }; + }; + solid "FakeKey" { + top= 86.5; + left= 62.1; + shape= "NORM"; + color= "grey20"; + }; + overlay "KPAD" { + =, =, =, =, + =, =, =, =, + =, =, =, =, + =, =, = + }; + }; // End of "Whole" section + + alias = ; + alias = ; +}; diff --git a/nixos/xkb/geometry/fujitsu b/nixos/xkb/geometry/fujitsu new file mode 100644 index 00000000..6550a3e0 --- /dev/null +++ b/nixos/xkb/geometry/fujitsu @@ -0,0 +1,314 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +default xkb_geometry "138" { + + // This is an approximate layout for a (US/ASCII) Fujitsu keyboard. + + description= "Fujitsu English keyboard"; + + width= 480; + height= 215; + + shape "EDGE" { cornerRadius= 2, { [ 480, 215 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } }; + shape "RTRN" { + approx = { [ 0, 0], [28,37] }, + { [ 0, 0], [28, 0], [28,37], + [ 5,37], [ 5,19], [ 0,19] }, + { [ 1, 1], [26, 1], [26,36], + [ 7,36], [ 7,18], [ 1,18] } + }; + shape "LFSH" { { [ 41,18] }, { [2,1], [ 39,17] } }; + shape "RTSH" { { [ 33,18] }, { [2,1], [ 31,17] } }; + shape "LCTL" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "SPCE" { { [151,18] }, { [2,1], [149,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } }; + shape "EXEC" { { [ 57,18] }, { [2,1], [ 55,17] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 15; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + + section "Alpha" { + top= 28; + row { + top= 1; + keys { + , { , 6 }, + { , 30 }, , , , + { , 6 }, , , , + { , 6 }, , , , + { , 68 }, , , + }; + }; + row { + top= 20; + keys { + , { , 6 }, + { , 30 }, , , , + { , 6 }, , , , + { , 6 }, , , , + { , 6 }, , , + { , 6 }, , , + }; + }; + row { + top= 39; + left= 316; + keys { + , , + }; + }; + row { + top= 54; + keys { + , { , 6 }, + , , , , , + , , , , , + , , , , + { , 68 }, , , + + }; + }; + row { + top= 58; + left= 316; + keys { + , , + }; + }; + row { + top= 73; + keys { , + { , 6, "TABK" }, + , , , , , + , , , , , + , , { , "RTRN" }, + { , 68 }, , , + }; + }; + row { + top= 92; + keys { , + { , 6, "LCTL" }, + , , , , , + , , , , , + , , + { , 49 }, + { , 25 }, , , + }; + }; + row { + top= 102; + left= 316; + keys { , { , 19 } + }; + }; + row { + top= 111; + keys { , + { , 6 , "LFSH" }, + , , , , , + , , , , , + , { , "RTSH" }, + { , 25 }, + { , 25 }, , , { , "KPEN" } + }; + }; + row { + top= 130; + keys { , { , 6 }, + , , + { , "SPCE" }, + , , , , + { , 68, "KP0" }, + }; + }; + row { + top= 149; + left= 316; + keys { + { , "EXEC" } + }; + }; + }; // End of "Alpha" section +}; + +xkb_geometry "140" { + + // This is an approximate layout for a Fujitsu Japanese keyboard. + + description= "Fujitsu Japanese keyboard"; + + width= 480; + height= 215; + + shape "EDGE" { cornerRadius= 2, { [ 480, 215 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } }; + shape "RTRN" { + approx = { [ 0, 0], [28,37] }, + { [ 0, 0], [28, 0], [28,37], + [ 5,37], [ 5,19], [ 0,19] }, + { [ 1, 1], [26, 1], [26,36], + [ 7,36], [ 7,18], [ 1,18] } + }; + shape "LFSH" { { [ 41,18] }, { [2,1], [ 39,17] } }; + shape "RTSH" { { [ 33,18] }, { [2,1], [ 31,17] } }; + shape "LCTL" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "SPCE" { { [113,18] }, { [2,1], [111,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } }; + shape "HNKN" { { [ 23,18] }, { [2,1], [ 21,17] } }; + shape "EXEC" { { [ 57,18] }, { [2,1], [ 55,17] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 15; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + + section "Alpha" { + top= 28; + row { + top= 1; + keys { + , { , 6 }, + { , 30 }, , , , + { , 6 }, , , , + { , 6 }, , , , + { , 68 }, , , + }; + }; + row { + top= 20; + keys { + , { , 6 }, + { , 30 }, , , , + { , 6 }, , , , + { , 6 }, , , , + { , 6 }, , , + { , 6 }, , , + }; + }; + row { + top= 39; + left= 316; + keys { + , , + }; + }; + row { + top= 54; + keys { + , { , 6 }, + , , , , , + , , , , , + , , , , + { , 68 }, , , + + }; + }; + row { + top= 58; + left= 316; + keys { + , , + }; + }; + row { + top= 73; + keys { , + { , 6, "TABK" }, + , , , , , + , , , , , + , , { , "RTRN" }, + { , 68 }, , , + }; + }; + row { + top= 92; + keys { , + { , 6, "LCTL" }, + , , , , , + , , , , , + , , + { , 49 }, + { , 25 }, , , + }; + }; + row { + top= 102; + left= 316; + keys { , { , 19 } + }; + }; + row { + top= 111; + keys { , + { , 6 , "LFSH" }, + , , , , , + , , , , , + , { , "RTSH" }, + { , 25 }, + { , 25 }, , , { , "KPEN" } + }; + }; + row { + top= 130; + keys { , { , 6 }, + , , , + { , "SPCE" }, + , , , , , + { , 68, "KP0" }, + }; + }; + row { + top= 149; + left= 134; + keys { + { , "HNKN" }, { , "HNKN" }, + { , 132, "EXEC" } + }; + }; + }; // End of "Alpha" section +}; diff --git a/nixos/xkb/geometry/hhk b/nixos/xkb/geometry/hhk new file mode 100644 index 00000000..a325f1ea --- /dev/null +++ b/nixos/xkb/geometry/hhk @@ -0,0 +1,266 @@ +// +// XKB geometry for the Happy Hacking (Lite). +// Different variants correspond to different switch +// settings on the HHK. +// +// Copyright (c) Doug Palmer , 2002 +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in +//all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +//THE SOFTWARE. + +// SW = 100 Default layout with windows keys +default xkb_geometry "win1" { + include "hhk(basic)" + + key.gap = 1; + section "Space" { + top = 86; + left = 30; + row { + top = 1; + keys { + , + { , "DIAM" }, + { , "SPCE" }, + { , "DIAM" }, + + }; + }; + }; +}; + +// SW = 101 Layout with windows and alt keys swapped +xkb_geometry "win2" { + include "hhk(basic)" + + key.gap = 1; + section "Space" { + top = 86; + left = 30; + row { + top = 1; + keys { + , + { , "DIAM" }, + { , "SPCE" }, + { , "DIAM" }, + + }; + }; + }; +}; + +// SW = 110 Default layout with windows keys, and left diamond = Fn key +xkb_geometry "win3" { + include "hhk(basic)" + + key.gap = 1; + section "Space" { + top = 86; + left = 30; + row { + top = 1; + keys { + , + { , "DIAM" }, + { , "SPCE" }, + { , "DIAM" }, + + }; + }; + }; +}; + +// SW = 101 Layout with windows and alt keys swapped and left-Alt = Fn key +xkb_geometry "win4" { + include "hhk(basic)" + + key.gap = 1; + section "Space" { + top = 86; + left = 30; + row { + top = 1; + keys { + , + { , "DIAM" }, + { , "SPCE" }, + { , "DIAM" }, + + }; + }; + }; +}; + +// SW = 000 Layout with Muhenkan and Henkan keys +xkb_geometry "jp1" { + include "hhk(basic)" + + key.gap = 1; + section "Space" { + top = 86; + left = 30; + row { + top = 1; + keys { + , + { , "DIAM" }, + { , "SPCE" }, + { , "DIAM" }, + + }; + }; + }; +}; + +// SW = 001 Layout with Muhenkan and Henkan keys swapped with Alt +xkb_geometry "jp2" { + include "hhk(basic)" + + key.gap = 1; + section "Space" { + top = 86; + left = 30; + row { + top = 1; + keys { + , + { , "DIAM" }, + { , "SPCE" }, + { , "DIAM" }, + + }; + }; + }; +}; + +// SW = 010 Layout with Henkan key and left-diamond as Fn +xkb_geometry "jp3" { + include "hhk(basic)" + + key.gap = 1; + section "Space" { + top = 86; + left = 30; + row { + top = 1; + keys { + , + { , "DIAM" }, + { , "SPCE" }, + { , "DIAM" }, + + }; + }; + }; +}; + +// SW = 001 Layout with Henkan key swapped with Alt and left-Alt as Fn +xkb_geometry "jp4" { + include "hhk(basic)" + + key.gap = 1; + section "Space" { + top = 86; + left = 30; + row { + top = 1; + keys { + , + { , "DIAM" }, + { , "SPCE" }, + { , "DIAM" }, + + }; + }; + }; +}; + +// Basic layout for non-switchable keys +partial hidden xkb_geometry "basic" { + + description = "Happy Hacking"; + width = 290; + height = 106; + + shape.cornerRadius = 1; + shape "NORM" { { [18, 18] }, { [2, 1], [14, 14] } }; + shape "BKSP" { { [28, 18] }, { [2, 1], [24, 14] } }; + shape "TABK" { { [28, 18] }, { [2, 1], [24, 14] } }; + shape "CTRL" { { [32, 18] }, { [2, 1], [28, 14] } }; + shape "RTRN" { { [42, 18] }, { [2, 1], [38, 14] } }; + shape "LFSH" { { [42, 18] }, { [2, 1], [38, 14] } }; + shape "RTSH" { { [32, 18] }, { [2, 1], [28, 14] } }; + shape "DIAM" { { [28, 18] }, { [2, 1], [24, 14] } }; + shape "SPCE" { { [114, 18] }, { [2, 1], [110, 14] } }; + + text.color = "black"; + text "PFULabel" { left = 16; top = 2; fontsize = 20; text = "PFU"; }; + text "HHKLabel" { left = 254; top = 90; text = "Happy Hacking\nKeyboard"; }; + + section.left = 1; + row.left = 1; + key.shape = "NORM"; + key.gap = 1; + + section "Alphanumeric" { + top = 10; + row { + top = 1; + keys { + , + , , , , , + , , , , , + , , + , + }; + }; + row { + top = 20; + keys { + { , "TABK" }, + , , , , , + , , , , , + , , + { , "BKSP" } + }; + }; + row { + top = 39; + keys { + { , "CTRL" }, + , , , , , + , , , , , + , + { , "RTRN" } + }; + }; + row { + top = 58; + keys { + { , "LFSH" }, + , , , , , + , , , , , + { , "RTSH" }, + { , color = "grey20" } + }; + }; + }; + + alias = ; +}; diff --git a/nixos/xkb/geometry/hp b/nixos/xkb/geometry/hp new file mode 100644 index 00000000..43e0e8f8 --- /dev/null +++ b/nixos/xkb/geometry/hp @@ -0,0 +1,696 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// + +default xkb_geometry "pc101" { + + description= "HP PC101"; + width= 470; + height= 210; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "BKSP" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,17] } }; + shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } }; + shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "SPCE" { { [132,18] }, { [2,1], [130,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 52; + row { + top= 1; + keys { { , color="grey20" }, + { , 18 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 8 }, , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 91; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , { , "BKSL" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , { , "RTRN", color="grey20" } + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , 20 }, + { , "SPCE", color="white" }, + , { , 20 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 91; + left= 310; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 91; + left= 375; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; // End of "default" geometry + +xkb_geometry "hil" { + + description= "HP hil"; + width= 455; + height= 170; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "BKSP" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "TABK" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "BKSL" { { [ 24,18] }, { [2,1], [ 22,17] } }; + shape "RTRN" { { [ 38,18] }, { [2,1], [ 36,17] } }; + shape "LFSH" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "RTSH" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "SPCE" { { [151,18] }, { [2,1], [150,17] } }; + shape "KP0" { { [ 38,18] }, { [2,1], [ 36,17] } }; + shape "KPTB" { { [ 18,38] }, { [2,1], [ 16,37] } }; + shape "TLDE" { { [ 24,18] }, { [2,1], [ 22,17] } }; + shape "FKT1" { { [ 17,14] }, { [2,1], [ 15,13] } }; + shape "FKT2" { { [ 23,14] }, { [2,1], [ 21,13] } }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 14; + row { + top= 1; + keys { { , "FKT1" }, { , "FKT1" } , + { , "FKT2", 10 }, { , "FKT2" }, + { , "FKT2" }, { , "FKT2" }, + { , "FKT1" }, { , "FKT1" }, + { , "FKT2" }, { , "FKT2" }, + { , "FKT2" }, { , "FKT2" }, + { , "FKT1", 10 }, { , "FKT1" }, + { , "FKT1", 19 }, { , "FKT1" }, + { , "FKT1" }, { , "FKT1" } + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 52; + row { + top= 1; + keys { { , "TLDE" }, , , , , + , , , , , + , , , + { , "BKSP" }, , + }; + }; + row { + top= 20; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "BKSL" }, + , + }; + }; + row { + top= 39; + keys { , , + , , , , , + , , , , , + , { , "RTRN" }, + , + }; + }; + row { + top= 58; + keys { , { , "LFSH" }, + , , , , , + , , , , , + { , "RTSH" }, , + , + }; + }; + row { + top= 77; + keys { , { , 30 }, + { , "SPCE" }, + , { , 30 }, , + }; + }; + }; // End of "Alpha" section + + section "Keypad" { + top= 52; + left= 360; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , }; + }; + row { + top= 39; + keys { , , , }; + }; + row { + top= 58; + keys { , , , { , "KPTB" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + +}; + + +// Created by Alexander Pohoyda +// Geometry specification for HP Omnibook keyboards. +// Compatible Models: 6100, 6000. + +xkb_geometry "omnibook" { + width = 282; + height = 128; + baseColor = "grey80"; + labelColor = "white"; + + shape "FN0" { cornerRadius = 1, { [15.5, 12] }, { [1, 0], [14.5, 11] } }; + shape "NORM" { cornerRadius = 1, { [18, 16] }, { [2, 0], [16, 14] } }; + shape "BKSP" { cornerRadius = 1, { [31, 16] }, { [2, 0], [29, 14] } }; + shape "TABK" { cornerRadius = 1, { [27, 16] }, { [2, 0], [25, 14] } }; + shape "CAPS" { cornerRadius = 1, { [32, 16] }, { [2, 0], [30, 14] } }; + shape "RTSH" { cornerRadius = 1, { [45, 16] }, { [2, 0], [43, 14] } }; + shape "MODK" { cornerRadius = 1, { [28, 16] }, { [2, 0], [26, 14] } }; + shape "SPCE" { cornerRadius = 1, { [90, 16] }, { [2, 0], [88, 14] } }; + shape "ARRS" { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 11] } }; + + shape "LED" { cornerRadius = 1, { [2, 4] } }; + + shape "KEYS" { cornerRadius = 1, + { [0, 13], + [197, 13], [197, 0], + [280, 0], [280, 125], + [224, 125], [224, 112], + [0, 112] } + }; + + solid "KeyPanel" { + shape = "KEYS"; + left = 1; + top = 1; + color = "black"; + }; + + shape "NULL1" { cornerRadius = 1, { [54, 16] } }; + + solid "NullPanel1" { + shape = "NULL1"; + left = 226; + top = 96; + color = "grey80"; + }; + + shape "NULL2" { cornerRadius = 1, { [19, 14] } }; + + solid "NullPanel2" { + shape = "NULL2"; + left = 243; + top = 97; + color = "black"; + }; + + indicator.onColor = "green"; + indicator.offColor = "grey10"; + indicator.top = 4; + indicator.shape = "LED"; + indicator "Caps Lock" { left = 45; }; + indicator "Num Lock" { left = 60; }; + indicator "Scroll Lock" { left = 75; }; + indicator "HDDActivity" { onColor = "red"; left = 90; }; + + key.color = "grey60"; + + section "Function" { + key.gap = 0.99; + left = 1; + top = 1; + key.shape = "FN0"; + row { + left = 197; + top = 1; + keys { , , , , }; + }; + row { + top = 14; + keys { , + , , , , + , , , , + , , , , + , , , + }; + }; + }; // End of "Function" section + + section "Control" { + left = 1; + top = 34; + key.gap = 1; + row { + top = 62; + key.shape = "NORM"; + keys { , , , , + { , "SPCE" }, , , + }; + }; + }; // End of "Control" section + + section "Navigation" { + key.shape = "ARRS"; + left = 225; + top = 97; + key.gap = 1.4; + row { + left= 18; + top = 1; + keys { }; + }; + row { + top = 16; + keys { , , }; + }; + }; // End of "Navigation" section + + shape "STIK" { cornerRadius = 4, { [7, 7] } }; + + solid "STIK" { + priority = 255; + color = "red"; + shape = "STIK"; + top = 73; + left = 126; + }; +}; + +// 86 keys +xkb_geometry "omnibook_intl" { + include "hp(omnibook)" + description = "HP Omnibook 6000/6100, Intl"; + + shape "RTRN" { cornerRadius = 1, + { [22, 0], [22, 33], [5, 33], [5, 16], [0, 16], [0, 0] }, + { [20, 0], [20, 31], [7, 31], [7, 14], [2, 14], [2, 0] } }; + shape "LFSH" { cornerRadius = 1, { [23, 16] }, { [2, 0], [21, 14] } }; + + section "Alpha" { + key.gap = 1; + key.color = "grey60"; + key.shape = "NORM"; + left = 1; + top = 27; + row { + top = 1; + keys { , , , , , + , , , , , + , , , { , "BKSP" } + }; + }; + row { + top = 18; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "RTRN" } + }; + }; + row { + top = 35; + keys { { , "CAPS" }, + , , , , , + , , , , , + , + }; + }; + row { + top = 52; + keys { { , "LFSH" }, , + , , , , , + , , , , , + { , "RTSH" } + }; + }; + }; // End of "Alpha" section +}; + +xkb_geometry "mini110" { + + description= "HP Mini 110"; + width= 262; + height= 106; + + shape.cornerRadius = 0; + shape "FN0" { { [ 14, 10 ] } , { [ 14, 10 ] } }; + shape "NORM" { { [ 16.7, 16 ] } , { [ 16.7, 16 ] } }; + shape "TLDE" { { [ 12, 16 ] } , { [ 12, 16 ] } }; + shape "ONE" { { [ 14, 16 ] } , { [ 14, 16 ] } }; + shape "BKSP" { { [ 31.3, 16 ] } , { [ 31.3, 16 ] } }; + shape "BKSL" { { [ 23.9, 16 ] } , { [ 23.9, 16 ] } }; + shape "CAPS" { { [ 22, 16 ] } , { [ 22, 16 ] } }; + shape "RTRN" { { [ 36.3, 16 ] } , { [ 36.3, 16 ] } }; + shape "LFSH" { { [ 31, 16 ] } , { [ 31, 16 ] } }; + shape "RTSH" { { [ 45, 16 ] } , { [ 45, 16 ] } }; + shape "CTLS" { { [ 16.5, 19 ] } , { [ 16.5, 19 ] } }; + shape "SPCE" { { [ 78.4, 19 ] } , { [ 78.4, 19 ] } }; + shape "ARRW" { { [ 16.7, 9 ] } , { [ 16.7, 9 ] } }; + + key.gap=1; + + section "Function" { + top=4; + left=3; + key.shape="FN0"; + row { + keys { + , , , , , , + , , , , , , + , , , , + }; + }; + }; + + section "Alphanum" { + top=15; + left=3; + key.shape="NORM"; + row { + top= 0; + keys { { , "TLDE" } , { , "ONE" }, , , , + , , , , , + , , , + { , "BKSP" } + }; + }; + row { + top= 17; + keys { , , , , , , + , , , , , + , , { , "BKSL" } + }; + }; + row { + top= 34; + keys { { , "CAPS" } , + , , , , , + , , , , , + , { , "RTRN" } + }; + }; + row { + top= 51; + keys { { , "LFSH" }, + , , , , , + , , , , , + { , "RTSH" } + }; + }; + + }; + + section "Control" { + top=83; + left=3; + key.shape="CTLS"; + row { + keys { + , , , , { , "SPCE" }, , , + }; + }; + }; + + section "Arrows" { + top=83; + left=204.9; + key.shape="ARRW"; + row { + left= 17.7; + keys { + + }; + }; + row { + top = 10; + keys { + , , + }; + }; + }; + +}; + +xkb_geometry "dv5" { + + height=118.4; + width=310.6; + + description = "HP Pavilion dv5"; + + shape.cornerRadius = 1; + + shape "ESC" { { [20.0, 12.5] }, { [2.2, 1], [17.8, 10.5] } }; + shape "FN0" { { [15.9, 12.5] }, { [2.2, 1], [13.7, 10.5] } }; + shape "DELE" { { [19.4, 12.5] }, { [2.2, 1], [17.2, 10.5] } }; + + shape "NORM" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } }; + + shape "BKSP" { { [36.1, 18.3] }, { [2.4, 1], [33.7, 16.3] } }; + + shape "TABK" { { [26.8, 18.3] }, { [2.4, 1], [24.4, 16.3] } }; + shape "BKSL" { { [27.1, 18.3] }, { [2.4, 1], [24.7, 16.3] } }; + + shape "CAPS" { { [31.6, 18.3] }, { [2.4, 1], [29.2, 16.3] } }; + shape "RTRN" { { [41.2, 18.3] }, { [2.4, 1], [39.3, 16.3] } }; + + shape "LFSH" { { [41.5, 18.3] }, { [2.4, 1], [38.8, 16.3] } }; + shape "RTSH" { { [31.5, 18.3] }, { [2.4, 1], [29.1, 16.3] } }; + + shape "LCTL" { { [22.4, 18.3] }, { [2.2, 1], [20.2, 16.3] } }; + shape "RCTL" { { [22.6, 18.3] }, { [2.2, 1], [20.4, 16.3] } }; + shape "CTLS" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } }; + shape "SPCE" { { [94.3, 18.3] }, { [2.5, 1], [91.8, 16.3] } }; + + shape "ARRW" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } }; + + shape "EDIT" { { [16.6, 18.3] }, { [2.2, 1], [14.4, 16.3] } }; + + key.gap = 1.2; + + section "Function" { + top=4.2; + left=3; + row { + key.shape = "FN0"; + keys { + {, "ESC"}, + {2.9, }, , , , + {2.9, }, , , , + {2.9, }, , , , + {2.9, }, , , {, "DELE"} + }; + }; + }; + + section "Alpha" { + top = 17.9; + key.shape = "NORM"; + left = 3; + + row { + top = 0; + keys { , , , , , + , , , , , + , , , { , "BKSP" } + }; + }; + row { + top = 19.5; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "BKSL" } + }; + }; + row { + top = 39; + keys { { , "CAPS" }, + , , , , , + , , , , , + , { , "RTRN" } + }; + }; + row { + top = 58.5; + keys { { , "LFSH" }, + , , , , , + , , , , , + { , "RTSH" } + }; + }; + }; // End of "Alpha" section + + section "Controls" { + top = 95.9; + key.shape = "CTLS"; + left = 3; + row { + top = 0; + keys { {, "LCTL"}, , , , {, "SPCE"}, + , , {, "RCTL"} + }; + }; + }; + + section "Editing" { + top = 16.5; + left = 289.9; + key.shape = "EDIT"; + key.gap = 1.4; + row { + top = 0; + vertical = true; + keys { + , , , + }; + }; + }; + + section "Arrows" { + top = 76.4; + key.shape = "ARRW"; + left = 249.3; + row { + top = 0; + left = 19.1; + keys { + + }; + }; + row { + top = 19.5; + left = 0; + keys { + , , + }; + }; + }; +}; diff --git a/nixos/xkb/geometry/keytronic b/nixos/xkb/geometry/keytronic new file mode 100644 index 00000000..a24c3301 --- /dev/null +++ b/nixos/xkb/geometry/keytronic @@ -0,0 +1,252 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +default xkb_geometry "FlexPro" { + + // This is an approximate layout for a Key Tronic FlexPro + // keyboard. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes of a few keys by eye. I didn't actually + // *measure* a real keyboard. + + description= "Key Tronic FlexPro keyboard"; + + width= 515; + height= 200; + + shape "EDGE" { cornerRadius= 2, { [ 515, 200 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [ 32,18] }, { [2,1], [30,17] } }; + shape "TABK" { { [ 32,18] }, { [2,1], [30,17] } }; + shape "BKSL" { { [ 23,18] }, { [2,1], [21,17] } }; + shape "RTRN" { + approx = { [16, 0], [38,37] }, + { [16, 0], [38, 0], [38,37], + [ 0,37], [ 0,19], [16,19] }, + { [18, 1], [36, 1], [36,36], + [ 2,36], [ 2,20], [18,20] } }; + shape "CAPS" { { [36,18] }, { [2,1], [34,17] } }; + shape "SHFT" { { [46,18] }, { [2,1], [44,17] } }; + shape "LCTL" { { [32,18] }, { [2,1], [30,17] } }; + shape "RCTL" { { [38,18] }, { [2,1], [36,17] } }; + shape "LALT" { { [28,18] }, { [2,1], [26,17] } }; + shape "RALT" { { [33,18] }, { [2,1], [31,17] } }; + shape "LSPC" { { [66,22] }, { [0,0], [66,22] } }; + shape "RSPC" { { [76,22] }, { [0,0], [76,22] } }; + shape "KP0" { { [37,18] }, { [2,1], [35,17] } }; + shape "KPEN" { { [18,37] }, { [2,1], [16,36] } }; + shape "LOGO" { cornerRadius= 3, { [80,35] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 9; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + + section "Function" { + top= 56; + row { + top = 1; + key.color= "grey20"; + keys { , }; + }; + row { + top = 20; + key.color= "grey20"; + keys { , }; + }; + row { + top = 39; + keys { , }; + }; + row { + top = 58; + key.color= "grey20"; + keys { , }; + }; + row { + top = 77; + key.color= "grey20"; + keys { , }; + }; + row { + top = 96; + keys { , }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 56; + left= 53; + row { + top= 1; + keys { + { , color="grey20" }, { , "BKSL", color="grey20" }, + , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { + { , color="grey20" }, { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , + { , "RTRN", -14, color="grey20" } + }; + }; + row { + top= 39; + keys { + { , color="grey20" }, { , "CAPS", color="grey20" }, + , , , , , + , , , , , + }; + }; + row { + top= 58; + keys { + { , color="grey20" }, + { , "SHFT", color="grey20" }, + , , , , , + , , , , , + { , "SHFT", color="grey20" } + }; + }; + row { + top= 77; + key.color= "grey20"; + keys { + , + { , shape="LCTL" }, + { , shape="LALT" }, + { , shape="LSPC", 4, color="white" }, + { , shape="RSPC",color="white" }, + { , shape="RALT", 4 }, + { , shape="RCTL" } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 12; + left= 365; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 45; + keys { , , }; + }; + row { + top= 64; + keys { , , }; + }; + row { + top= 102; + left= 20; + keys { }; + }; + row { + top= 121; + keys { , , }; + }; + }; // End of "Editing" section + + shape "LEDS" { cornerRadius= 3, { [ 76, 20 ] } }; + shape "LED" { cornerRadius= 0, { [ 7, 4 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 11; + left= 430; + color= "grey10"; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 13; + indicator.shape= "LED"; + indicator "Num Lock" { left= 440; }; + indicator "Caps Lock" { left= 467; }; + indicator "Scroll Lock" { left= 489; }; + text.top= 22; + text.color= "black"; + text "NumLockLabel" { left= 438; text="Num\nLock"; }; + text "CapsLockLabel" { left= 465; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 487; text="Scroll\nLock"; }; + + logo "FlexProLogoImage" { + top= 12; + left= 45; + name= "KeyTronic"; + shape= "LOGO"; + }; + text "KeyTronicLogoText" { + top= 15; + left= 50; + width= 55; + text= "FlexPro"; + font= "times"; + slant= "o"; + weight= "bold"; + fontWidth= "narrow"; + fontSize= 36; + }; + + section "Keypad" { + top= 56; + left= 430; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , color= "grey20" } }; + }; + row { + top= 39; + keys { , , , { , color= "grey20" } }; + }; + row { + top= 58; + keys { , , , { , "KPEN", color= "grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section +}; diff --git a/nixos/xkb/geometry/kinesis b/nixos/xkb/geometry/kinesis new file mode 100644 index 00000000..4cb0987a --- /dev/null +++ b/nixos/xkb/geometry/kinesis @@ -0,0 +1,189 @@ +default xkb_geometry "model100" { + + // This is an approximate layout for a Kinesis Ergonomic keyboard + // Generated completely by eye. I didn't actually *measure* a real + // keyboard. + + description= "Kinesis Ergonomic"; + width= 421; + height= 185; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } }; + shape "WIDE" { { [ 21,18] }, { [2,1], [19,17] } }; + shape "TALL" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "FKEY" { cornerRadius=0, { [ 10,13] } }; + shape "LED" { cornerRadius= 1.5, { [ 3, 3] } }; + shape "LOGO" { { [ 40, 10 ] } }; + shape "EDGE" { cornerRadius=5, { [ 421, 185 ] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section "LeftFunction" { + left= 15; + top= 11; + key.shape= "FKEY"; + key.gap= 3; + row { + left= 1; + top= 1; + keys { + , , , , , + , , , + }; + }; + }; // End of "LeftFunction" section + + section "RightFunction" { + left= 290; + top= 11; + key.shape= "FKEY"; + key.gap= 3; + row { + left= 1; + top= 0.2; + keys { + , , , , , + , , , + }; + }; + }; // End of "RightFunction" section + + row.vertical= True; + row.top= 1; + key.gap= 0.5; + + logo "KinesisLogoImage" { + top= 25; + left= 240; + name= "Kinesis"; + shape= "LOGO"; + }; + + indicator.shape= "LED"; + indicator.top= 30; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator "Caps Lock" { left= 23; }; + + section "LeftAlpha" { + top= 34; + left= 15; + row { + left= 2; + key.shape= "WIDE"; + keys { , , , }; + }; + row { + top= 4; + left= 24; + keys { , , { , color="grey20" }, , }; + }; + row { + left= 43; + keys { , , { , color="grey20" }, , }; + }; + row { + left= 62; + keys { , , { , color="grey20" }, , }; + }; + row { + left= 81; + keys { , , { , color="grey20" }, , }; + }; + row { + left= 100; + keys { , , , }; + }; + }; // End of "LeftAlpha" section + + indicator "NumLock" { left= 318; }; + indicator "Overlay" { left= 387; }; + section "RightAlpha" { + top= 34; + left= 290; + row { + left= 2; + keys { , , , }; + }; + row { + left= 21; + keys { , , { , color="grey20" }, , }; + }; + row { + left= 40; + keys { , , { , color="grey20" }, , }; + }; + row { + left= 59; + keys { , , { , color="grey20" }, , }; + }; + row { + top= 4; + left= 78; + keys { , , { , color="grey20" }, , }; + }; + row { + left= 97; + key.shape= "WIDE"; + keys { , , , }; + }; + overlay "KPAD" { + =, =, =, =, + =, =, =, =, + =, =, =, =, + =, =, =, =, + =, = + }; + }; // End of "RightAlpha" section + + section "LeftEdit" { + top= 109; + left= 123; + angle= 20; + row.top= -18; + row { + top= 1; + left= 1; + keys { { , "TALL" } }; + }; + row { + left= 20; + keys { , { , "TALL" } }; + }; + row { + left= 39; + keys { , , }; + }; + }; // End of "LeftEdit" section + + section "RightEdit" { + top= 109; + left= 302; + angle= -20; + row.top= -18; + row { + left= -57; + keys { , , }; + }; + row { + left= -38; + keys { , { , "TALL" } }; + }; + row { + top= 1; + left= -19; + keys { { , "TALL" } }; + }; + overlay "KPAD" { + = + }; + }; // End of "RightEdit" section + + alias = ; + alias = ; +}; diff --git a/nixos/xkb/geometry/macintosh b/nixos/xkb/geometry/macintosh new file mode 100644 index 00000000..baab1d66 --- /dev/null +++ b/nixos/xkb/geometry/macintosh @@ -0,0 +1,1026 @@ +// This section describes the geometry of the "Apple Pro" keyboard +// included with NewWorld desktop machines +// +// It adds four new keysyms, labeled SDDN, SDUP, SDNO, EJCT. +// +// 2005/10 -- Simon Vallet + +xkb_geometry "applepro" { + + description= "Apple Pro Keyboard"; + width = 455; + height = 150; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18, 18] }, { [2, 1], [ 16, 15] } }; + shape "FUNC" { { [ 18, 21] }, { [2, 1], [ 16, 16] } }; + shape "BKSP" { { [ 38, 18] }, { [2, 1], [ 36, 15] } }; + shape "TAB" { { [ 29, 18] }, { [2, 1], [ 26, 15] } }; + shape "LFSH" { { [ 28, 18] }, { [2, 1], [ 26, 15] } }; + shape "RTSH" { { [ 47, 18] }, { [2, 1], [ 45, 15] } }; + + shape "RTRN" { + { [0,0],[27,0],[27,37],[4,37],[4,18],[0,18] }, + { [2,1],[25,1],[25,34],[6,34],[6,15],[2,15] } }; + + shape "CAPS" { { [ 32, 18] }, { [2, 1], [ 26, 15] } }; + shape "LCTL" { { [ 28, 20] }, { [2, 1], [ 26, 17] } }; + shape "RCTL" { { [ 28, 20] }, { [2, 1], [ 26, 17] } }; + shape "LALT" { { [ 23, 20] }, { [2, 1], [ 21, 17] } }; + shape "RALT" { { [ 23, 20] }, { [2, 1], [ 21, 17] } }; + shape "LMTA" { { [ 28, 20] }, { [2, 1], [ 26, 17] } }; + shape "RMTA" { { [ 28, 20] }, { [2, 1], [ 26, 17] } }; + shape "SPCE" { { [121, 20] }, { [3, 1], [118, 17] } }; + shape "BOTM" { { [ 18, 20] }, { [2, 1], [ 16, 17] } }; + + shape "KP0" { { [ 37, 20] }, { [2, 1], [ 35, 17] } }; + shape "KPEN" { { [ 18, 39] }, { [2, 1], [ 16, 36] } }; + + section.left = 7; + row.left = 1; + key.gap = 1; + key.shape = "NORM"; + + section "Function" { + key.shape = "FUNC"; + top = 26; + row { + top= 1; + keys { , + { , 14 }, , , , + { , 14 }, , , , + { , 14 }, , , , + { , 11 }, , , + { , 11 }, , , + }; + }; + }; // End of "Function" section + + + section "Alpha" { + top = 48; + row { + top= 1; + keys { , , , , + , , , , , , + , , , { , "BKSP" } + }; + }; + row { + top= 20; + keys { { , "TAB" }, , , , + , , , , , , + , , , { , "RTRN" } + }; + }; + row { + top= 39; + keys { { , "CAPS" }, , , , + , , , , , , + , , + }; + }; + row { + top= 58; + keys { { , "LFSH" }, , , , + , , , , , , + , , { , "RTSH" } + }; + }; + row { + top= 77; + keys { { , "LCTL" }, { , "LALT" }, + { , "LMTA" }, + { , "SPCE" }, + { , "RMTA" }, + { , "RALT" }, { , "RCTL" } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top = 48; + left = 303; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + key.shape = "BOTM"; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top = 48; + left = 370; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , }; + }; + row { + top= 39; + keys { , , , }; + }; + row { + top= 58; + keys { , , , { , "KPEN" } }; + }; + row { + top= 77; + keys { { , "KP0" }, { , "BOTM" } }; + }; + }; // End of "Keypad" section + +}; // End of "applepro" geometry + +// Aluminium Keyboard, ANSI model (United States, 109 keys) +xkb_geometry "applealu_ansi" { + + width= 430; + height= 113.5; + + baseColor= "white"; + labelColor= "black"; + xfont= "-*-helvetica-medium-r-normal--*-80-*-*-*-*-iso8859-1"; + description= "Aluminium Keyboard (ANSI)"; + + shape "NORM" { + corner= 1, + { [ 15.5, 15 ] } + }; + shape "FUNC" { + corner= 1, + { [ 16.1, 9 ] } + }; + shape "FUNS" { + corner= 1, + { [ 15.5, 9 ] } + }; + shape "BKSP" { + corner= 1, + { [ 24.5, 15 ] } + }; + shape "TAB" { + corner= 1, + { [ 24.5, 15 ] } + }; + shape "RTRN" { + corner= 1, + { [ 29.5, 15 ] } + }; + shape "CAPS" { + corner= 1, + { [ 29.5, 15 ] } + }; + shape "LCTL" { + corner= 1, + { [ 25, 18 ] } + }; + shape "LALT" { + corner= 1, + { [ 20, 18 ] } + }; + shape "LMTA" { + corner= 1, + { [ 25, 18 ] } + }; + shape "LFSH" { + corner= 1, + { [ 39, 15 ] } + }; + shape "RCTL" { + corner= 1, + { [ 25, 18 ] } + }; + shape "RALT" { + corner= 1, + { [ 20, 18 ] } + }; + shape "RMTA" { + corner= 1, + { [ 25, 18 ] } + }; + shape "RTSH" { + corner= 1, + { [ 39, 15 ] } + }; + shape "SPCE" { + corner= 1, + { [ 110.5, 18 ] } + }; + shape "KP0" { + corner= 1, + { [ 34.5, 18 ] } + }; + shape "KPEN" { + corner= 1, + { [ 15.5, 36.5 ] } + }; + shape "KPDT" { + corner= 1, + { [ 15.5, 18 ] } + }; + shape "LED" { + corner= 0.5, + { [ 1.5, 1.5 ] } + }; + + section "Function" { + key.color= "white"; + priority= 7; + top= 4.5; + left= 4.7; + width= 420.5; + height= 10; + row { + top= 0; + left= 0; + keys { + { , "FUNC", 0 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.5 }, + { , "FUNS", 11.5 }, { , "FUNS", 3.5 }, + { , "FUNS", 3.5 }, { , "FUNS", 11.5 }, + { , "FUNS", 3.5 }, { , "FUNS", 3.5 }, + { , "FUNS", 3.5 } + }; + }; + }; // End of "Function" section + + section "Alpha" { + key.color= "white"; + priority= 8; + top= 17; + left= 5; + width= 271.5; + height= 92; + row { + top= 0; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "BKSP", 3.5 } + }; + }; + row { + top= 18.5; + left= 0; + keys { + { , "TAB", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 } + + }; + }; + row { + top= 37; + left= 0; + keys { + { , "CAPS", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "RTRN", 3.5 } + }; + }; + row { + top= 55.5; + left= 0; + keys { + { , "LFSH", 0 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "RTSH", 3.5 } + }; + }; + row { + top= 74; + left= 0; + keys { + { , "LCTL", 0 }, { , "LALT", 3.5 }, + { , "LMTA", 3.5 }, { , "SPCE", 3.5 }, + { , "RMTA", 3.5 }, { , "RALT", 3.5 }, + { , "RCTL", 3.5 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + key.color= "white"; + priority= 9; + top= 17; + left= 287.7; + width= 53.5; + height= 92; + row { + top= 0; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + row { + top= 18.5; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + row { + top= 58.5; + left= 19; + keys { + { , "NORM", 0 } + }; + }; + row { + top= 77; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + }; // End of "Editing" section + + section "Keypad" { + key.color= "white"; + priority= 10; + top= 17; + left= 352.7; + width= 72.5; + height= 92; + row { + top= 0; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 } + }; + }; + row { + top= 18.5; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 } + }; + }; + row { + top= 37; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 } + }; + }; + row { + top= 55.5; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "KPEN", 3.5 } + }; + }; + row { + top= 74; + left= 0; + keys { + { , "KP0", 0 }, { , "KPDT", 3.5 } + }; + }; + }; // End of "Keypad" section + + indicator "Caps Lock" { + top= 56; + left= 6.7; + priority= 2; + onColor= "green"; + offColor= "gray"; + shape= "LED"; + }; + +}; + +// Aluminium Keyboard, ISO model (International, 110 keys) +xkb_geometry "applealu_iso" { + + width= 430; + height= 113.5; + + baseColor= "white"; + labelColor= "black"; + xfont= "-*-helvetica-medium-r-normal--*-80-*-*-*-*-iso8859-1"; + description= "Aluminium Keyboard (ISO)"; + + shape "NORM" { + corner= 1, + { [ 15.5, 15 ] } + }; + shape "FUNC" { + corner= 1, + { [ 16.1, 9 ] } + }; + shape "FUNS" { + corner= 1, + { [ 15.5, 9 ] } + }; + shape "BKSP" { + corner= 1, + { [ 24.5, 15 ] } + }; + shape "TAB" { + corner= 1, + { [ 24.5, 15 ] } + }; + shape "RTRN" { + corner= 1, + { [ 0, 0 ], [ 15.5 , 0 ], [ 15.5 , 33.5 ], [ 5, 33.5 ], + [ 5, 15 ], [ 0, 15 ] } + }; + shape "CAPS" { + corner= 1, + { [ 29.5, 15 ] } + }; + shape "LCTL" { + corner= 1, + { [ 25, 18 ] } + }; + shape "LALT" { + corner= 1, + { [ 20, 18 ] } + }; + shape "LMTA" { + corner= 1, + { [ 25, 18 ] } + }; + shape "LFSH" { + corner= 1, + { [ 20, 15 ] } + }; + shape "RCTL" { + corner= 1, + { [ 25, 18 ] } + }; + shape "RALT" { + corner= 1, + { [ 20, 18 ] } + }; + shape "RMTA" { + corner= 1, + { [ 25, 18 ] } + }; + shape "RTSH" { + corner= 1, + { [ 39, 15 ] } + }; + shape "SPCE" { + corner= 1, + { [ 110.5, 18 ] } + }; + shape "KP0" { + corner= 1, + { [ 34.5, 18 ] } + }; + shape "KPEN" { + corner= 1, + { [ 15.5, 36.5 ] } + }; + shape "KPDT" { + corner= 1, + { [ 15.5, 18 ] } + }; + shape "LED" { + corner= 0.5, + { [ 1.5, 1.5 ] } + }; + + section "Function" { + key.color= "white"; + priority= 7; + top= 4.5; + left= 4.7; + width= 420.5; + height= 10; + row { + top= 0; + left= 0; + keys { + { , "FUNC", 0 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.5 }, + { , "FUNS", 11.5 }, { , "FUNS", 3.5 }, + { , "FUNS", 3.5 }, { , "FUNS", 11.5 }, + { , "FUNS", 3.5 }, { , "FUNS", 3.5 }, + { , "FUNS", 3.5 } + }; + }; + }; // End of "Function" section + + section "Alpha" { + key.color= "white"; + priority= 8; + top= 17; + left= 5; + width= 271.5; + height= 92; + row { + top= 0; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "BKSP", 3.5 } + }; + }; + row { + top= 18.5; + left= 0; + keys { + { , "TAB", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "RTRN", 3.5 } + }; + }; + row { + top= 37; + left= 0; + keys { + { , "CAPS", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + row { + top= 55.5; + left= 0; + keys { + { , "LFSH", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "RTSH", 3.5 } + }; + }; + row { + top= 74; + left= 0; + keys { + { , "LCTL", 0 }, { , "LALT", 3.5 }, + { , "LMTA", 3.5 }, { , "SPCE", 3.5 }, + { , "RMTA", 3.5 }, { , "RALT", 3.5 }, + { , "RCTL", 3.5 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + key.color= "white"; + priority= 9; + top= 17; + left= 287.7; + width= 53.5; + height= 92; + row { + top= 0; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + row { + top= 18.5; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + row { + top= 58.5; + left= 19; + keys { + { , "NORM", 0 } + }; + }; + row { + top= 77; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + }; // End of "Editing" section + + section "Keypad" { + key.color= "white"; + priority= 10; + top= 17; + left= 352.7; + width= 72.5; + height= 92; + row { + top= 0; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 } + }; + }; + row { + top= 18.5; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 } + }; + }; + row { + top= 37; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 } + }; + }; + row { + top= 55.5; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "KPEN", 3.5 } + }; + }; + row { + top= 74; + left= 0; + keys { + { , "KP0", 0 }, { , "KPDT", 3.5 } + }; + }; + }; // End of "Keypad" section + + indicator "Caps Lock" { + top= 56; + left= 6.7; + priority= 2; + onColor= "green"; + offColor= "gray"; + shape= "LED"; + }; + +}; + +// Aluminium Keyboard, JIS model (Japanese, 112 keys) +xkb_geometry "applealu_jis" { + + width= 430; + height= 113.5; + + baseColor= "white"; + labelColor= "black"; + xfont= "-*-helvetica-medium-r-normal--*-80-*-*-*-*-iso8859-1"; + description= "Aluminium Keyboard (JIS)"; + + shape "NORM" { + corner= 1, + { [ 15.5, 15 ] } + }; + shape "FUNC" { + corner= 1, + { [ 16.1, 9 ] } + }; + shape "FUNS" { + corner= 1, + { [ 15.5, 9 ] } + }; + shape "KEY1" { + corner= 1, + { [ 24.5, 15 ] } + }; + shape "BKSP" { + corner= 1, + { [ 15.5, 15 ] } + }; + shape "TAB" { + corner= 1, + { [ 15.5, 15 ] } + }; + shape "RTRN" { + corner= 1, + { [ 0, 0 ], [ 24.5 , 0 ], [ 24.5 , 33.5 ], [ 4.5, 33.5 ], + [ 4.5, 15 ], [ 0, 15 ] } + }; + shape "CAPS" { + corner= 1, + { [ 35, 18 ] } + }; + shape "LCTL" { + corner= 1, + { [ 20, 15 ] } + }; + shape "LALT" { + corner= 1, + { [ 27, 18 ] } + }; + shape "LMTA" { + corner= 1, + { [ 27, 18 ] } + }; + shape "LFSH" { + corner= 1, + { [ 29.5, 15 ] } + }; + shape "HNGL" { + corner= 1, + { [ 20, 18 ] } + }; + shape "RCTL" { + corner= 1, + { [ 27, 18 ] } + }; + shape "RALT" { + corner= 1, + { [ 27, 18 ] } + }; + shape "RMTA" { + corner= 1, + { [ 27, 18 ] } + }; + shape "RTSH" { + corner= 1, + { [ 29.5, 15 ] } + }; + shape "HJCV" { + corner= 1, + { [ 20, 18 ] } + }; + shape "SPCE" { + corner= 1, + { [ 64, 18 ] } + }; + shape "KPDT" { + corner= 1, + { [ 15.5, 18 ] } + }; + shape "KPEN" { + corner= 1, + { [ 15.5, 36.5 ] } + }; + shape "LED" { + corner= 0.5, + { [ 1.5, 1.5 ] } + }; + + section "Function" { + key.color= "white"; + priority= 7; + top= 4.5; + left= 4.7; + width= 420.5; + height= 10; + row { + top= 0; + left= 0; + keys { + { , "FUNC", 0 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.6 }, + { , "FUNC", 3.5 }, { , "FUNC", 3.5 }, + { , "FUNS", 11.5 }, { , "FUNS", 3.5 }, + { , "FUNS", 3.5 }, { , "FUNS", 11.5 }, + { , "FUNS", 3.5 }, { , "FUNS", 3.5 }, + { , "FUNS", 3.5 } + }; + }; + }; // End of "Function" section + + section "Alpha" { + key.color= "white"; + priority= 8; + top= 17; + left= 5; + width= 271.5; + height= 92; + row { + top= 0; + left= 0; + keys { + { , "KEY1", 0 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "BKSP", 3.5 } + }; + }; + row { + top= 18.5; + left= 0; + keys { + { , "TAB", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "RTRN", 3.5 } + }; + }; + row { + top= 37; + left= 0; + keys { + { , "LCTL", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + row { + top= 55.5; + left= 0; + keys { + { , "LFSH", 0 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "RTSH", 3.5 } + }; + }; + row { + top= 74; + left= 0; + keys { + { , "LALT", 0 }, { , "LMTA", 3.5 }, + { , "HNGL", 3.5 }, { , "SPCE", 3.5 }, + { , "HJCV", 3.5 }, { , "RMTA", 3.5 }, + { , "RALT", 3.5 }, { , "CAPS", 3.5 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + key.color= "white"; + priority= 9; + top= 17; + left= 287.7; + width= 53.5; + height= 92; + row { + top= 0; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + row { + top= 18.5; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + row { + top= 58.5; + left= 19; + keys { + { , "NORM", 0 } + }; + }; + row { + top= 77; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 } + }; + }; + }; // End of "Editing" section + + section "Keypad" { + key.color= "white"; + priority= 10; + top= 17; + left= 352.7; + width= 72.5; + height= 92; + row { + top= 0; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 } + }; + }; + row { + top= 18.5; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 } + }; + }; + row { + top= 37; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "NORM", 3.5 } + }; + }; + row { + top= 55.5; + left= 0; + keys { + { , "NORM", 0 }, { , "NORM", 3.5 }, + { , "NORM", 3.5 }, { , "KPEN", 3.5 } + }; + }; + row { + top= 74; + left= 0; + keys { + { , "KPDT", 0 }, { , "KPDT", 3.5 }, + { , "KPDT", 3.5 } + }; + }; + }; // End of "Keypad" section + + indicator "Caps Lock" { + top= 93; + left= 273.2; + priority= 2; + onColor= "green"; + offColor= "gray"; + shape= "LED"; + }; + +}; diff --git a/nixos/xkb/geometry/microsoft b/nixos/xkb/geometry/microsoft new file mode 100644 index 00000000..6cfd9819 --- /dev/null +++ b/nixos/xkb/geometry/microsoft @@ -0,0 +1,532 @@ +default xkb_geometry "natural" { + + // Approximate layout for a Microsoft Natural + description= "Microsoft Natural"; + width= 550; + height= 190; + + shape.cornerRadius= 1; + shape "LDEF" { { [ 18,18] }, { [2,1], [15,15] } }; + shape "TABK" { { [ 26,18] }, { [2,1], [23,15] } }; + shape "CAPS" { { [ 30,18] }, { [2,1], [23,15] } }; + shape "LFSH" { { [ 41,18] }, { [2,1], [38,15] } }; + shape "KEY6" { { [ 22,18] }, { [2,1], [15,15] } }; + shape "KEYT" { { [ 33,18] }, { [2,1], [15,15] } }; + shape "KEYG" { { [ 29,18] }, { [2,1], [15,15] } }; + shape "LCTL" { + approx= { [ 32, 22 ] }, + { [ 0, 0], [ 32, 0 ], [ 32, 23 ], [ 0, 22 ] }, + { [ 2, 1], [ 29, 1 ], [ 29, 17 ], [ 2, 15 ] } + }; + shape "LWIN" { + approx= { [ 32, 23 ] }, + { [ 0, 0], [ 32, 0 ], [ 32, 24 ], [ 0, 23 ] }, + { [ 2, 1], [ 29, 1 ], [ 29, 18 ], [ 2, 17 ] } + }; + shape "LALT" { + approx= { [ 32, 24 ] }, + { [ 0, 0], [ 32, 0 ], [ 32, 25 ], [ 0, 24 ] }, + { [ 2, 1], [ 29, 1 ], [ 29, 20 ], [ 2, 19 ] } + }; + shape "RDEF" { { [ 18,18] }, { [3,1], [15,15] } }; + shape "KEY7" { { [ 28, 18 ] }, { [ 14, 1], [26, 15] } }; + shape "KEYH" { { [ 24, 18 ] }, { [ 10, 1], [22, 15] } }; + shape "KEYN" { { [ 32, 18 ] }, { [ 18, 1], [30, 15] } }; + shape "BKSP" { { [ 41, 18 ] }, { [ 3, 1], [39, 15] } }; + shape "BKSL" { { [ 24, 18 ] }, { [ 3, 1], [22, 15] } }; + shape "RTRN" { { [ 37, 18 ] }, { [ 3, 1], [35, 15] } }; + shape "RTSH" { { [ 43, 18 ] }, { [ 3, 1], [41, 15] } }; + shape "RALT" { + approx= { [ 27, 24 ] }, + { [ 0, 0], [ 27, 0 ], [ 27, 24 ], [ 0, 25 ] }, + { [ 3, 1], [ 25, 1 ], [ 25, 19 ], [ 3, 20 ] } + }; + shape "RWIN" { + approx= { [ 27, 23 ] }, + { [ 0, 0], [ 27, 0 ], [ 27, 23 ], [ 0, 24 ] }, + { [ 3, 1], [ 25, 1 ], [ 25, 18 ], [ 3, 19 ] } + }; + shape "MENU" { + approx= { [ 27, 21 ] }, + { [ 0, 0], [ 27, 0 ], [ 27, 21 ], [ 0, 23 ] }, + { [ 3, 1], [ 25, 1 ], [ 25, 16 ], [ 3, 17 ] } + }; + shape "RCTL" { + approx= { [ 27, 19 ] }, + { [ 0, 0], [ 27, 0 ], [ 27, 19 ], [ 0, 21 ] }, + { [ 3, 1], [ 25, 1 ], [ 25, 14 ], [ 3, 15 ] } + }; + shape "KPAD" { { [ 18, 37 ] }, { [ 3, 1 ], [ 16, 34 ] } }; + shape "KP0" { { [ 37, 18 ] }, { [ 3, 1 ], [ 35, 15 ] } }; + shape "SPCE" { + { [ 4, 3], [42,10], [44, 0], [88, 0], [90,10], [130, 3], + [134,26], [99,30], [67,33], [33,30], [ 0,26] }, + { [ 6, 4.5], [43,11], [45, 1], [87, 1], [89,11], [128, 4.5], + [131,23], [99,28], [67,32], [33,28], [ 3,23] } + }; + + shape "EDGE" { + cornerRadius= 2, + { [ 25, 0 ], [ 177, 17 ], [ 329, 0 ], [ 542, 0 ], + [ 542, 150 ], [ 354, 150 ], [ 177, 185 ], [ 0, 150 ] } + }; + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + row.left= 1; + key.shape= "LDEF"; + key.gap= 1; + section "LeftFunction" { + top= 10; + left= 40; + angle= 10; + row { + top= 1; + keys { , { , 12 }, , , , }; + }; + }; // End of "LeftFunction" section + + section "LeftAlpha" { + top= 47; + left= 30; + angle= 10; + row { + top= 1; + keys { , , , , , + , { , "KEY6" } + }; + }; + row { + top= 20; + keys { { , "TABK" }, + , , , , { , "KEYT" } + }; + }; + row { + top= 39; + keys { { , "CAPS" }, + , , , , { , "KEYG" } + }; + }; + row { + top= 58; + keys { { , "LFSH" }, + , , , , + }; + }; + row { + top= 77; + keys { { , "LCTL" }, { , "LWIN" }, { , "LALT" } }; + }; + }; // End of "LeftAlpha" section + + key.shape= "RDEF"; + section "RightFunction" { + top= 32; + left= 195; + angle= -10; + row { + top= 1; + left= 1; + keys { , , , , , , }; + }; + }; // End of "RightFunction" section + + section "RightAlpha" { + top= 71; + left= 190; + angle= -10; + row.left= 1; + row { + top= 1; + keys { { , "KEY7" }, + , , , , , + { , "BKSP" } + }; + }; + row { + top= 20; + keys { + , , , , , , , + { , "BKSL" } + }; + }; + row { + top= 39; + keys { { , "KEYH" }, + , , , , , + { , "RTRN" } + }; + }; + row { + top= 58; + keys { { , "KEYN" }, + , , , , + { , "RTSH" } + }; + }; + row { + top= 77; + left= 40; + keys { { , "RALT" }, { , "RWIN" }, + { , "MENU" }, { , "RCTL" } + }; + }; + }; // End of "RightAlpha" section + + section "SpaceBar" { + top= 139; + left= 111; + key.shape= "SPCE"; + row { keys { }; }; + }; + + section "Editing" { + top= 15; + left= 385; + row { + top= 1; + keys { , , }; + }; + row { + top= 33; + keys { , , }; + }; + row { + top= 53; + keys { , , }; + }; + row { + top= 91; + left= 20; + keys { }; + }; + row { + top= 109; + keys { , , }; + }; + }; // End of "Editing" section + + shape "LED" { + cornerRadius= 0, + { [ 3, 1 ] } + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.left= 177; + indicator.shape= "LED"; + indicator "Num Lock" { top= 90; }; + indicator "Caps Lock" { top= 107; }; + indicator "Scroll Lock" { top= 127; }; + + section "Keypad" { + top= 47; + left= 456; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; +}; + +// Approximate layout for a Microsoft Natural(R) Keyboard Elite +// +// Modified by Pavel Kurashov Mon Oct 8 22:08:20 NOVST 2007 +// +// * Function, editing and navigation keys are reduced in height +// * Navigation keys are repositioned in two columns +// * Leds are enlarged for better look +// * "BKSP" is aligned with "BKSL" and "RTRN" +// * Outline edges are slightly modified +// +xkb_geometry "elite" { + + // Approximate layout for a Microsoft Natural(R) Keyboard Elite + description= "Microsoft Natural(r) Keyboard Elite"; + width= 495; + height= 190; + + shape.cornerRadius= 1; + shape "LDEF" { { [ 18,18] }, { [2,1], [15,15] } }; + shape "FKEY" { { [ 18,13] }, { [2,1], [15,10] } }; + shape "TABK" { { [ 26,18] }, { [2,1], [23,15] } }; + shape "CAPS" { { [ 30,18] }, { [2,1], [23,15] } }; + shape "LFSH" { { [ 41,18] }, { [2,1], [38,15] } }; + shape "KEY6" { { [ 22,18] }, { [2,1], [15,15] } }; + shape "KEYT" { { [ 33,18] }, { [2,1], [15,15] } }; + shape "KEYG" { { [ 29,18] }, { [2,1], [15,15] } }; + shape "LCTL" { + approx= { [ 32, 22 ] }, + { [ 0, 0], [ 32, 0 ], [ 32, 23 ], [ 0, 22 ] }, + { [ 2, 1], [ 29, 1 ], [ 29, 17 ], [ 2, 15 ] } + }; + shape "LWIN" { + approx= { [ 32, 23 ] }, + { [ 0, 0], [ 32, 0 ], [ 32, 24 ], [ 0, 23 ] }, + { [ 2, 1], [ 29, 1 ], [ 29, 18 ], [ 2, 17 ] } + }; + shape "LALT" { + approx= { [ 32, 24 ] }, + { [ 0, 0], [ 32, 0 ], [ 32, 25 ], [ 0, 24 ] }, + { [ 2, 1], [ 29, 1 ], [ 29, 20 ], [ 2, 19 ] } + }; + shape "RDEF" { { [ 18,18 ] }, { [ 2, 1], [15, 15] } }; + shape "KEY7" { { [ 28, 18 ] }, { [ 14, 1], [26, 15] } }; + shape "KEYH" { { [ 24, 18 ] }, { [ 10, 1], [22, 15] } }; + shape "KEYN" { { [ 32, 18 ] }, { [ 18, 1], [30, 15] } }; + shape "BKSP" { { [ 32, 18 ] }, { [ 2, 1], [30, 15] } }; + shape "BKSL" { { [ 24, 18 ] }, { [ 2, 1], [22, 15] } }; + shape "RTRN" { { [ 37, 18 ] }, { [ 2, 1], [35, 15] } }; + shape "RTSH" { { [ 43, 18 ] }, { [ 2, 1], [41, 15] } }; + shape "RALT" { + approx= { [ 27, 24 ] }, + { [ 0, 0], [ 27, 0 ], [ 27, 24 ], [ 0, 25 ] }, + { [ 3, 1], [ 25, 1 ], [ 25, 19 ], [ 3, 20 ] } + }; + shape "RWIN" { + approx= { [ 27, 23 ] }, + { [ 0, 0], [ 27, 0 ], [ 27, 23 ], [ 0, 24 ] }, + { [ 3, 1], [ 25, 1 ], [ 25, 18 ], [ 3, 19 ] } + }; + shape "MENU" { + approx= { [ 27, 21 ] }, + { [ 0, 0], [ 27, 0 ], [ 27, 21 ], [ 0, 23 ] }, + { [ 3, 1], [ 25, 1 ], [ 25, 16 ], [ 3, 17 ] } + }; + shape "RCTL" { + approx= { [ 27, 19 ] }, + { [ 0, 0], [ 27, 0 ], [ 27, 19 ], [ 0, 21 ] }, + { [ 3, 1], [ 25, 1 ], [ 25, 14 ], [ 3, 15 ] } + }; + shape "KPAD" { { [ 18, 37 ] }, { [ 3, 1 ], [ 16, 34 ] } }; + shape "KP0" { { [ 37, 18 ] }, { [ 3, 1 ], [ 35, 15 ] } }; + shape "SPCE" { + { [ 4, 3], [42,10], [44, 0], [88, 0], [90,10], [130, 3], + [134,26], [99,30], [67,33], [33,30], [ 0,26] }, + { [ 6, 4.5], [43,11], [45, 1], [87, 1], [89,11], [128, 4.5], + [131,23], [99,28], [67,32], [33,28], [ 3,23] } + }; + + shape "EDGE" { + cornerRadius= 3, + { [ 32, 15 ], [140, 33],[ 220, 33 ], [ 329, 15 ], [ 493, 15 ], + [ 493, 150 ], [ 354, 150 ], [200, 180], [ 153, 180 ], [ 7, 150 ] } + }; + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + row.left= 1; + key.shape= "FKEY"; + key.gap= 1; + section "LeftFunction" { + top= 26; + left= 40; + angle= 10; + row { + top= 1; + keys { , { , 12 }, , , , }; + }; + }; // End of "LeftFunction" section + + key.shape= "LDEF"; + section "LeftAlpha" { + top= 47; + left= 30; + angle= 10; + row { + top= 1; + keys { , , , , , + , { , "KEY6" } + }; + }; + row { + top= 20; + keys { { , "TABK" }, + , , , , { , "KEYT" } + }; + }; + row { + top= 39; + keys { { , "CAPS" }, + , , , , { , "KEYG" } + }; + }; + row { + top= 58; + keys { { , "LFSH" }, + , , , , + }; + }; + row { + top= 77; + keys { { , "LCTL" }, { , "LWIN" }, { , "LALT" } }; + }; + }; // End of "LeftAlpha" section + + key.shape= "FKEY"; + section "RightFunction" { + top= 48; + left= 195; + angle= -10; + row { + top= 1; + left= 1; + keys { , , , , , , }; + }; + }; // End of "RightFunction" section + + key.shape= "RDEF"; + section "RightAlpha" { + top= 71; + left= 190; + angle= -10; + row.left= 1; + row { + top= 1; + keys { { , "KEY7" }, + , , , , , + { , "BKSP" } + }; + }; + row { + top= 20; + keys { + , , , , , , , + { , "BKSL" } + }; + }; + row { + top= 39; + keys { { , "KEYH" }, + , , , , , + { , "RTRN" } + }; + }; + row { + top= 58; + keys { { , "KEYN" }, + , , , , + { , "RTSH" } + }; + }; + row { + top= 77; + left= 40; + keys { { , "RALT" }, { , "RWIN" }, + { , "MENU" }, { , "RCTL" } + }; + }; + }; // End of "RightAlpha" section + + section "SpaceBar" { + top= 139; + left= 111; + key.shape= "SPCE"; + row { keys { }; }; + }; + + section "Editing" { + key.shape="FKEY"; + top= 23; + left= 348; + row { + top= 0; + keys { , , }; + }; + row { + top= 22; + left=20; + keys { , }; + }; + row { + top= 36; + left=20; + keys { , }; + }; + row { + top= 50; + left=20; + keys { , }; + }; + row { + top= 75; + left= 29; + keys { }; + }; + row { + top= 89; + left=20; + keys { , }; + }; + row { + top= 103; + left=29; + keys { }; + }; + }; // End of "Editing" section + + shape "LED" { + cornerRadius= 1, + { [ 7, 2 ] } + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.left= 177; + indicator.shape= "LED"; + indicator "Num Lock" { top= 90; }; + indicator "Caps Lock" { top= 107; }; + indicator "Scroll Lock" { top= 127; }; + + section "Keypad" { + top= 44; + left= 412; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; +}; diff --git a/nixos/xkb/geometry/nec b/nixos/xkb/geometry/nec new file mode 100644 index 00000000..ed3b7e04 --- /dev/null +++ b/nixos/xkb/geometry/nec @@ -0,0 +1,157 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// + +default xkb_geometry "pc98" { + + description= "Generic PC98"; + width= 405; + height= 172; + + shape.cornerRadius= 1; + shape "NORM" { { [ 17,18] }, { [2,1], [ 15,17] } }; + shape "RTRN" { { [ 20,37] }, { [2,1], [ 18,35] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } }; + shape "RTSH" { { [ 31,18] }, { [2,1], [ 29,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "SPCE" { { [115,18] }, { [2,1], [113,17] } }; + shape "FUNC" { { [ 21,18] }, { [2,1], [ 19,17] } }; + shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } }; + shape "TABK" { { [ 30,18] }, { [2,1], [ 28,17] } }; + shape "ARRW" { { [ 35,18] }, { [2,1], [ 33,17] } }; + + section.left= 8; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 29; + row { + top= 1; + key.shape="FUNC"; + keys { { , "NORM" }, { , "NORM", 5 }, + { , 6 }, , , , , + { , 6 }, , , , , + { , 6 }, , , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 54; + row { + top= 1; + keys { { , shape="BKSP"}, + , , , , + , , , , , + , , , , + { , "BKSP" } + }; + }; + row { + top= 20; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "RTRN", 6 } + }; + }; + row { + top= 39; + keys { , , + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { { , "LFSH" }, + , , , , , + , , , , , , + { , "RTSH" } + }; + }; + row { + top= 77; + keys { { , 35 } , , { , "FUNC" }, + { , "SPCE" }, { , "FUNC" } + + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 54; + left= 281; + row { + top= 1; + keys { , }; + }; + row { + top= 20; + keys { , }; + }; + row { + top= 39; + keys { { , "ARRW" } }; + }; + row { + top= 58; + keys { , }; + }; + row { + top= 77; + keys { { , "ARRW" } }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 54; + left= 320; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , }; + }; + row { + top= 39; + keys { , , , }; + }; + row { + top= 58; + keys { , , , }; + }; + row { + top= 77; + keys { , , , }; + }; + }; // End of "Keypad" section + +}; // End of "pc98" geometry diff --git a/nixos/xkb/geometry/northgate b/nixos/xkb/geometry/northgate new file mode 100644 index 00000000..1a1dd43b --- /dev/null +++ b/nixos/xkb/geometry/northgate @@ -0,0 +1,168 @@ +default xkb_geometry "omnikey101" { + + description= "North Gate Omnikey 101"; + width= 470; + height= 175; + + shape.cornerRadius= 1; + shape "NORM" { { [18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [34,18] }, { [2,1], [32,17] } }; + shape "TABK" { { [27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { + approx = { [15, 0], [40,37] }, + { [15, 0], [40, 0], [40,37], + [ 0,37], [ 0,19], [15,19] }, + { [17, 1], [38, 1], [38,36], + [ 2,36], [ 2,20], [17,20] } + }; + shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } }; + shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } }; + shape "RTSH" { { [ 30,18] }, { [2,1], [28,17] } }; + shape "MODK" { { [ 26,18] }, { [2,1], [24,17] } }; + shape "SPCE" { { [129,18] }, { [2,1], [127,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + + shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 1, 3 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 32; + left= 375; + color= "grey10"; + }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 46.5; + indicator.shape= "LED"; + indicator "Num Lock" { left= 384; }; + indicator "Caps Lock" { left= 409; }; + indicator "Scroll Lock" { left= 434; }; + text.top= 34; + text.color= "black"; + text "NumLockLabel" { left= 380.5; text="Num\nLock"; }; + text "CapsLockLabel" { left= 405; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 32; + row { + top= 1; + keys { { , color="grey20" }, + { , 18}, , , , + { , 9 }, , , , + { , 9 }, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 65; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , + { , "RTRN", -14, color="grey20" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" }, + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , + { , 23 }, + { , "SPCE", color="white" }, + , + { , 23 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 32; + left= 308; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 33; + keys { , , }; + }; + row { + top= 53; + keys { , , }; + }; + row { + top= 91; + left= 20; + keys { }; + }; + row { + top= 110; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 65; + left= 374; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; // End of "default" geometry diff --git a/nixos/xkb/geometry/pc b/nixos/xkb/geometry/pc new file mode 100644 index 00000000..1bb925de --- /dev/null +++ b/nixos/xkb/geometry/pc @@ -0,0 +1,1000 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// + +default xkb_geometry "pc101" { + + description= "Generic 101-key PC"; + width= 470; + height= 180; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } }; + shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } }; + shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } }; + shape "SPCE" { { [133,18] }, { [2,1], [131,16] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } }; + + shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 5, 1 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 22; + left= 377; + color= "grey10"; + }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 37; + indicator.shape= "LED"; + indicator "Num Lock" { left= 382; }; + indicator "Caps Lock" { left= 407; }; + indicator "Scroll Lock" { left= 433; }; + text.top= 25; + text.color= "black"; + text "NumLockLabel" { left= 378; text="Num\nLock"; }; + text "CapsLockLabel" { left= 403; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 22; + row { + top= 1; + keys { { , color="grey20" }, + { , 20 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 8 }, , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 61; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , { , "BKSL" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , { , "RTRN", color="grey20" } + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , 21 }, + { , "SPCE", color="white" }, + , { , 21 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 61; + left= 312; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 376; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; // End of "default" geometry + +xkb_geometry "pc102" { + + description= "Generic 102-key PC"; + width= 470; + height= 180; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } }; + shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "RTRN" { + { [0,0], [28,0], [28,37], [5,37], [5,18], [0,18] }, + { [2,1], [26,1], [26,35], [7,35], [7,16], [2,16] } }; + shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } }; + shape "LFSH" { { [ 25,18] }, { [2,1], [ 23,16] } }; + shape "RTSH" { { [ 50,18] }, { [2,1], [ 48,16] } }; + shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } }; + shape "SPCE" { { [134,18] }, { [2,1], [132,16] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } }; + + shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 5, 1 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 22; + left= 377; + color= "grey10"; + }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 37; + indicator.shape= "LED"; + indicator "Num Lock" { left= 382; }; + indicator "Caps Lock" { left= 407; }; + indicator "Scroll Lock" { left= 433; }; + text.top= 25; + text.color= "black"; + text "NumLockLabel" { left= 378; text="Num\nLock"; }; + text "CapsLockLabel" { left= 403; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 22; + row { + top= 1; + keys { { , "TABK", color="grey20" }, + { , 10 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 8 }, , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 61; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , { , "RTRN", color="grey20" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , 20 }, + { , "SPCE", color="white" }, + , { , 21 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 61; + left= 312; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 376; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; // End of "pc102" geometry + +xkb_geometry "pc104" { + + description= "Generic 104-key PC"; + width= 470; + height= 180; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } }; + shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } }; + shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } }; + shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } }; + shape "SPCE" { { [113,18] }, { [2,1], [111,16] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } }; + + shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 5, 1 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 22; + left= 377; + color= "grey10"; + }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 37; + indicator.shape= "LED"; + indicator "Num Lock" { left= 382; }; + indicator "Caps Lock" { left= 407; }; + indicator "Scroll Lock" { left= 433; }; + text.top= 25; + text.color= "black"; + text "NumLockLabel" { left= 378; text="Num\nLock"; }; + text "CapsLockLabel" { left= 403; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 22; + row { + top= 1; + keys { { , color="grey20" }, + { , 20 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 8 }, , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 61; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , { , "BKSL" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , { , "RTRN", color="grey20" } + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "SMOD"; + key.color= "grey20"; + keys { { , "MODK" }, , , + { , "SPCE", color="white" }, + , , , + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 61; + left= 312; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 376; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; // End of "pc104" geometry + +xkb_geometry "pc105" { + + description= "Generic 105-key PC"; + width= 470; + height= 180; + + shape.cornerRadius= 1; + + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } }; + shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "RTRN" { + { [0,0], [28,0], [28,37], [5,37], [5,18], [0,18] } , + { [2,1], [26,1], [26,35], [7,35], [7,16], [2,16] } , + approx = { [5,0], [28,37] } }; + shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } }; + shape "LFSH" { { [ 25,18] }, { [2,1], [ 23,16] } }; + shape "RTSH" { { [ 50,18] }, { [2,1], [ 48,16] } }; + shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } }; + shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } }; + shape "SPCE" { { [113,18] }, { [2,1], [111,16] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } }; + + shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 5, 1 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 22; + left= 377; + color= "grey10"; + }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 37; + indicator.shape= "LED"; + indicator "Num Lock" { left= 382; }; + indicator "Caps Lock" { left= 407; }; + indicator "Scroll Lock" { left= 433; }; + text.top= 25; + text.color= "black"; + text "NumLockLabel" { left= 378; text="Num\nLock"; }; + text "CapsLockLabel" { left= 403; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 22; + row { + top= 1; + keys { { , color="grey20" }, + { , 20 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 8 }, , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 61; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , { , "RTRN", color="grey20" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "SMOD"; + key.color= "grey20"; + keys { { , "MODK" }, , , + { , "SPCE", color="white" }, + , , , + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 61; + left= 312; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 376; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; // End of "pc105" geometry + +// Created by Alexander Pohoyda + +xkb_geometry "pc86" { + description = "Generic 86-key PC"; + width = 287; + height = 143; + baseColor = "grey20"; + + shape "EDGE" { cornerRadius = 2, { [287, 143] } }; + shape "LED" { cornerRadius = 2, { [3, 3] } }; + shape "LEDS" { cornerRadius = 0, { [75, 5] } }; + shape "KEYS" { cornerRadius = 0, { [271, 109] } }; + + outline "Edges" { + top = 0; + left = 0; + shape = "EDGE"; + color = "black"; + }; + + solid "KeyPanel" { + shape = "KEYS"; + left = 8; + top = 22; + color = "grey70"; + }; + + solid "LedPanel" { + shape = "LEDS"; + left = 212; + top = 10; + color = "black"; + }; + + indicator.onColor = "green"; + indicator.offColor = "green30"; + indicator.top = 11; + indicator.shape = "LED"; + indicator "Num Lock" { left = 212 + 7; }; + indicator "Caps Lock" { left = 212 + 23; }; + indicator "Scroll Lock" { left = 212 + 39; }; + text.fontSize = 6; + text.top = 10; + text.color = "white"; + text "NumLockLabel" { left = 212 + 7 + 5; text = "Num\nLock"; }; + text "CapsLockLabel" { left = 212 + 23 + 5; text = "Caps\nLock"; }; + text "ScrollLockLabel" { left = 212 + 39 + 5; text = "Scroll\nLock"; }; + + shape.cornerRadius = 1; + shape "SMALL" { { [15, 12] }, { [1.5, 0], [13.5, 10] } }; + shape "NARR" { { [13, 18] }, { [1.5, 0], [11.5, 14] } }; + shape "NORM" { { [18, 18] }, { [3, 0], [15, 14] } }; + shape "NORM_1" { { [22, 18] }, { [4, 0], [22, 18] }, + { [7, 0], [19, 14] } }; + shape "WIDER" { { [23, 18] }, { [3, 0], [20, 14] } }; + shape "WIDEST" { { [27, 18] }, { [3, 0], [24, 14] } }; + shape "SPCE" { { [75, 18] }, { [3, 0], [72, 14] } }; + + section "Function" { + key.shape = "SMALL"; + key.gap = 0.99; + key.color = "grey30"; + left = 8; + top = 22; + row { + top = 1; + keys { , + , , , , + , , , , + , , , , + , , , + }; + }; + }; // End of "Function" section + + section "Control" { + key.shape = "NORM"; + key.gap = 1; + key.color = "grey30"; + left = 8; + top = 111; + row { + top = 1; + keys { , , , + { , shape="SPCE", 39 }, , + , + }; + }; + }; // End of "Control" section + + section "Editing" { + key.shape = "NARR"; + key.gap = 1; + key.color = "grey30"; + left = 265; + top = 34; + row.vertical = True; + row { + top = 1; + keys { , , , }; + }; + }; // End of "Editing" section + + section "Navigation" { + key.gap = 1; + key.shape = "NARR"; + key.color = "grey30"; + left = 236; + top = 92; + row { + left = 14; + top = 1; + keys { }; + }; + row { + top = 20; + keys { , , }; + }; + }; // End of "Navigation" section + + section "Alpha" { + key.gap = 1; + key.shape = "NORM"; + key.color = "grey10"; + left = 8; + top = 35; + row { + top = 1; + keys { { , shape="NORM_1" }, , , , + , , , , , + , , , + { , shape="WIDER", color="grey30" } + }; + }; + row { + top = 20; + keys { { , shape="NARR", color="grey30" }, + , , , , , + , , , , , + , , { , shape="NARR" } + }; + }; + row { + top = 39; + keys { { , color="grey30" }, + , , , , , + , , , , , + , { , shape="WIDEST", color="grey30" } + }; + }; + row { + top = 58; + keys { { , shape="WIDEST", color="grey30" }, + , , , , , + , , , , , + { , shape="WIDER", color="grey30" } + }; + }; + row { + left = 57; + top = 77; + keys { , }; + }; + }; // End of "Alpha" section + + alias = ; + alias = ; +}; // End of "pc86" geometry + +xkb_geometry "pc104alt" { + + description= "Generic 104-key PC with L-shaped Enter key"; + width= 470; + height= 210; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } }; + shape "BKSP" { { [ 19,18] }, { [2,1], [ 17,16] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } }; +// shape "RTRN" { { [ 0,19 ], [ 0,37 ], [ 42,37 ], [ 42,0 ], [ 14,0 ], [ 14,19 ] }, +// { [ 2,20 ], [ 2,35 ], [ 40,35 ], [ 40,1 ], [ 16,1 ], [ 16,20 ] }, +// approx = { [ 17,21 ], [ 39,34 ] } +// }; + shape "RTRN" { { [ -14,19 ], [ -14,37 ], [ 28,37 ], [ 28,0 ], [ 0,0 ], [ 0,19 ] }, + { [ -12,20 ], [ -12,35 ], [ 26,35 ], [ 26,1 ], [ 2,1 ], [ 2,20 ] }, + approx = { [ 3,21 ], [ 25,34 ] } + }; + shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } }; + shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } }; + shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } }; + shape "SPCE" { { [113,18] }, { [2,1], [111,16] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } }; + + shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 5, 1 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 52; + left= 377; + color= "grey10"; + }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 67; + indicator.shape= "LED"; + indicator "Num Lock" { left= 382; }; + indicator "Caps Lock" { left= 407; }; + indicator "Scroll Lock" { left= 433; }; + text.top= 55; + text.color= "black"; + text "NumLockLabel" { left= 378; text="Num\nLock"; }; + text "CapsLockLabel" { left= 403; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 52; + row { + top= 1; + keys { { , color="grey20" }, + { , 20 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 8 }, , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 91; + row { + top= 1; + keys { , , , , , + , , , , , + , , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , +// , , { , -13, "RTRN", color="grey20" } + , , { , "RTRN", color="grey20" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "SMOD"; + key.color= "grey20"; + keys { { , "MODK" }, , , + { , "SPCE", color="white" }, + , , , + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 91; + left= 312; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 91; + left= 376; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; // End of "pc104alt" geometry diff --git a/nixos/xkb/geometry/sanwa b/nixos/xkb/geometry/sanwa new file mode 100644 index 00000000..350dbd16 --- /dev/null +++ b/nixos/xkb/geometry/sanwa @@ -0,0 +1,150 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +default xkb_geometry "sanwaskbkg3" { + + description= "Sanwa Supply SKB-KG3"; + // SKB-KG3BK (black) + // http://www.sanwa.co.jp/product/syohin.asp?code=SKB-KG3BK + // http://www.sanwa.co.jp/zooma/keybord/SKB-KG3BK/ + // SKB-KG3W (white) + // http://www.sanwa.co.jp/product/syohin.asp?code=SKB-KG3W + // http://www.sanwa.co.jp/zooma/keybord/SKB-KG3SW/ + // SKB-KG3SV (silver) + // http://www.sanwa.co.jp/product/syohin.asp?code=SKB-KG3SV + // http://www.sanwa.co.jp/zooma/keybord/SKB-KG3SV/ + + width= 304; + height= 127; + + shape.cornerRadius= 1; + shape "TOP" { { [15.25,13] }, { [2,2], [13.25,11] } }; + shape "NORM" { { [17,16] }, { [2,2], [15,14] } }; + shape "TBBK" { { [24.5,16] }, { [2,2], [22.5,14] } }; + shape "RTRN" { { [0,0], [36,0], [36,34], [8.5,34], [8.5,16], [0,16] }, + { [2,2], [34,2], [34,32], [10.5,32], [10.5,14], [2,14] } }; + shape "CAPS" { { [33,16] }, { [28,16] }, { [2,2], [26,14] } }; + shape "LFSH" { { [41,16] }, { [2,2], [39,14] } }; + shape "CTSH" { { [19.5,16] }, { [2,2], [17.5,14] } }; + shape "SPCE" { { [57.5,16] }, { [2,2], [55.5,14] } }; + + shape "LED" { cornerRadius= 0, { [5,1] } }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 3; + indicator.shape= "LED"; + indicator "Num Lock" { left= 247; }; + indicator "Caps Lock" { left= 266; }; + indicator "Scroll Lock" { left= 285; }; + text.color= "black"; + text.top= 1; + text "Vendor1" { left= 10; text="SANWA"; }; + text.top= 4.5; + text "Vendor2" { left= 10; text="SUPPLY"; }; + text "NumLockLabel" { left= 241; text="Num Lock"; }; + text "CapsLockLabel" { left= 260; text="Caps Lock"; }; + text "ScrollLockLabel" { left= 279; text="Scroll Lock"; }; + + section.left= 3; + row.left= 1; + key.shape= "NORM"; + key.gap= 2; + section "Function" { + key.shape= "TOP"; + top= 10; + row { + top= 1; + keys { , , , , , , , + , , , , , , , + {, color="grey20"}, , {, color="grey20"} + }; + }; + overlay "SCLK" { + = + }; + overlay "FN" { + = + }; + }; // End of "Function" section + + section "Alpha" { + top= 24; + row { + top= 2; + keys { , , , , , , , + {, color="grey20"}, {, color="grey20"}, + {, color="grey20"}, {, color="grey20"}, + , , , { , "TBBK" } + }; + }; + row { + top= 20; + keys { { , "TBBK" }, , , , , , + , {, color="grey20"}, {, color="grey20"}, + {, color="grey20"}, {, color="grey20"}, , + , { , "RTRN" } + }; + }; + row { + top= 38; + keys { { , "CAPS" }, , , , , , + , {, color="grey20"}, {, color="grey20"}, + {, color="grey20"}, {, color="grey20"}, , + + }; + }; + row { + top= 56; + keys { { , "LFSH" }, , , , , , + , {, color="grey20"}, , + {, color="grey20"}, {, color="grey20"}, , + {, color="grey20"}, {, key.shape= "CTSH" } + }; + }; + row { + top= 74; + keys { { , key.shape= "CTSH" }, {, color="grey20"}, + , , , {, "SPCE" }, , , + , , {, color="grey20"}, + {, color="grey20"}, + {, key.shape= "CTSH", color="grey20"} + }; + }; + overlay "SCLK" { + =, =, =, =, + =, =, =, =, + =, =, =, =, + =, =, = + }; + overlay "FN" { + =, =, =, = + }; + }; // End of "Alpha" section + + alias = ; + alias = ; + +}; // End of "default" geometry diff --git a/nixos/xkb/geometry/sgi_vndr/O2 b/nixos/xkb/geometry/sgi_vndr/O2 new file mode 100644 index 00000000..f19bfd0a --- /dev/null +++ b/nixos/xkb/geometry/sgi_vndr/O2 @@ -0,0 +1,614 @@ +// +// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc. +// +// Permission to use, copy, modify, and distribute this +// software and its documentation for any purpose and without +// fee is hereby granted, provided that the above copyright +// notice appear in all copies and that both that copyright +// notice and this permission notice appear in supporting +// documentation, and that the name of Silicon Graphics not be +// used in advertising or publicity pertaining to distribution +// of the software without specific prior written permission. +// Silicon Graphics makes no representation about the suitability +// of this software for any purpose. It is provided "as is" +// without any express or implied warranty. +// +// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +// GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH +// THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +default xkb_geometry "pc101" { + + // This is an approximate layout for a 101-key (US/ASCII) SGI + // keyboard. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes of a few keys by eye. I didn't actually + // *measure* a real keyboard. + + description= "101-key keyboard for Silicon Graphics O2"; + + width= 448; + height= 162; + + shape "EDGE" { + cornerRadius= 2, + { [ 15, 0 ], [ 433, 0 ], [ 433, 10 ], [ 448, 10 ], + [ 448, 162 ], [ 0, 162 ], [ 0, 10 ], [ 15, 10 ] } + }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } }; + shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } }; + shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } }; + shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "SPCE" { { [130,18] }, { [2,1], [128,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "LOGO" { { [ 12,12] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 6; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 25; + row { + top= 1; + keys { { , color="grey20" }, + { , 19}, , , , + { , 11}, , , , + { , 11}, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 58; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color= "grey20" }, + , , , , , + , , , , , + , , + { , "BKSL" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , { , "RTRN", color="grey20" } + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , 20 }, + { , "SPCE",color="white" }, + , { , 20 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 25; + left= 299; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 33; + keys { , , }; + }; + row { + top= 53; + keys { , , }; + }; + row { + top= 91; + left= 20; + keys { }; + }; + row { + top= 110; + keys { , , }; + }; + }; // End of "Editing" section + + shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 3, 1.5] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 25; + left= 364; + color= "grey10"; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 40.5; + indicator.shape= "LED"; + indicator "Num Lock" { left= 372; }; + indicator "Caps Lock" { left= 397; }; + indicator "Scro llLock" { left= 422; }; + + text.font= "helvetica"; + text.weight= "bold"; + text.slant= "r"; + text.fontWidth= "normal"; + text.fontSize= 12; + text.top= 39.5; + text.color= "black"; + text "NumLockLabel" { left= 376.5; text="1"; }; + text "CapsLockLabel" { left= 401.5; text="A"; }; + text "ScrollLockLabel" { left= 426.5; text="S"; }; + + logo "SGILogoImage" { + top= 26.5; + left= 396; + name= "SGI"; + shape= "LOGO"; + }; + text.font= "helvetica"; + text.weight= "bold"; + text.slant= "o"; + text.fontWidth= "narrow"; + text.fontSize= 18; + text "SiliconLogoText" { + top= 27; + left= 375; + width= 20; + text= "Silicon"; + }; + text "GraphicsLogoText" { + top= 27; + left= 409; + width= 20; + text= "Graphics"; + }; + + section "Keypad" { + top= 58; + left= 363; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + alias = ; + alias = ; +}; + +xkb_geometry "pc102" { + + // This is an approximate layout for 102-key SGI international + // keyboards. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes of a few keys by eye. I didn't actually + // *measure* a real keyboard. + + description= "Silicon Graphics 102-key Keyboard"; + width= 470; + height= 193; + + shape.cornerRadius= 1; + shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } }; + shape "NORM" { { [18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [35,18] }, { [2,1], [33,17] } }; + shape "TABK" { { [27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { + approx = { [ 0, 0], [26,37] }, + { [ 0, 0], [26, 0], [26,37], + [ 5,37], [ 5,18], [ 0,18] }, + { [ 1, 1], [24, 1], [24,36], + [ 7,36], [ 7,17], [ 1,17] } + }; + shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } }; + shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } }; + shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "SPCE" { { [130,18] }, { [2,1], [128,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 50; + row { + top= 1; + keys { { , color="grey20" }, + { , 18}, , , , + { , 10}, , , , + { , 10}, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 83; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color= "grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color= "grey20" }, + , , , , , + , , , , , + , , + { , "RTRN", color= "grey20" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color= "grey20" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { { , "LFSH", color= "grey20" }, , + , , , , , + , , , , , + { , "RTSH", color= "grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , + { , 19 }, + { , "SPCE", color="white" }, + , + { , 19 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 50; + left= 308; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 33; + keys { , , }; + }; + row { + top= 53; + keys { , , }; + }; + row { + top= 91; + left= 20; + keys { }; + }; + row { + top= 110; + keys { , , }; + }; + }; // End of "Editing" section + + shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 1, 3 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 50; + left= 375; + color= "grey10"; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 64.5; + indicator.shape= "LED"; + indicator "Num Lock" { left= 384; }; + indicator "Caps Lock" { left= 409; }; + indicator "Scroll Lock" { left= 434; }; + text.top= 52; + text.color= "black"; + text "NumLockLabel" { left= 380.5; text="Num\nLock"; }; + text "CapsLockLabel" { left= 405; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; }; + + logo "SGILogoImage" { + top= 17; + left= 22; + name= "SGI"; + shape= "LOGO"; + }; + text "SGILogoText" { + top= 21; + left= 40; + width= 50; + text= "SiliconGraphics"; + font= "helvetica"; + slant= "o"; + weight= "bold"; + setWidth= "narrow"; + fontSize= 24; + }; + + section "Keypad" { + top= 83; + left= 374; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + alias = ; + alias = ; +}; + +xkb_geometry "jp106" { + description= "Silicon Graphics 106-key Japanese keyboard"; + width= 442; + height= 167; + + shape "EDGE" { cornerRadius= 2, { [ 442, 167 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } }; + shape "RTRN" { + { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } , + { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } }; + shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } }; + shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + logo "SGILogoImage" { + top= 5; + left= 6; + name= "SGI"; + shape= "LOGO"; + }; + + text "SGILogoText" { + top= 9; + left= 25; + width= 50; + text= "SiliconGraphics"; + font= "helvetica"; + slant= "o"; + weight= "bold"; + fontWidth= "narrow"; + fontSize= 24; + }; + + shape "LEDS" { cornerRadius= 0.1, { [ 76 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 5, 1 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 25; + left= 362; + color= "grey10"; + }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 40; + indicator.shape= "LED"; + indicator "Num Lock" { left= 366; }; + indicator "Caps Lock" { left= 391; }; + indicator "Scroll Lock" { left= 416; }; + text.top= 28; + text.color= "black"; + text "NumLockLabel" { left= 366; text="Num\nLock"; }; + text "CapsLockLabel" { left= 391; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 416; text="Scroll\nLock"; }; + + section.left= 5; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 25; + row { + top= 1; + keys { { , color="grey20" }, + { , 18 }, , , , + { , 11 ,color="grey20"}, {,color="grey20"}, + { , color="grey20"}, {,color="grey20"}, + { , 11 }, , , , + { , 8 }, , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 61; + row { + top= 1; + keys { {,color="grey20"}, , , + , , , , , + , , , , , + , { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , { , 1 ,"RTRN",color="grey20" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + , { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , 20 },, + { , "SPCE", color="white" }, + ,,, { , 17 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 61; + left= 296; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 361; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; // End of "jp106" geometry diff --git a/nixos/xkb/geometry/sgi_vndr/indigo b/nixos/xkb/geometry/sgi_vndr/indigo new file mode 100644 index 00000000..60b02f65 --- /dev/null +++ b/nixos/xkb/geometry/sgi_vndr/indigo @@ -0,0 +1,410 @@ +// +// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc. +// +// Permission to use, copy, modify, and distribute this +// software and its documentation for any purpose and without +// fee is hereby granted, provided that the above copyright +// notice appear in all copies and that both that copyright +// notice and this permission notice appear in supporting +// documentation, and that the name of Silicon Graphics not be +// used in advertising or publicity pertaining to distribution +// of the software without specific prior written permission. +// Silicon Graphics makes no representation about the suitability +// of this software for any purpose. It is provided "as is" +// without any express or implied warranty. +// +// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +// GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH +// THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +default xkb_geometry "pc101" { + + // This is an approximate layout for a 101-key (US/ASCII) SGI + // keyboard. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes of a few keys by eye. I didn't actually + // *measure* a real keyboard. + + description= "Silicon Graphics 101-key keyboard"; + + width= 472; + height= 193; + + shape "EDGE" { cornerRadius= 2, { [ 472, 193 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } }; + shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } }; + shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } }; + shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "SPCE" { { [130,18] }, { [2,1], [128,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 50; + row { + top= 1; + keys { { , color="grey20" }, + { , 19}, , , , + { , 11}, , , , + { , 11}, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 83; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color= "grey20" }, + , , , , , + , , , , , + , , + { , "BKSL" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , { , "RTRN", color="grey20" } + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , 20 }, + { , "SPCE",color="white" }, + , { , 20 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 50; + left= 312; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 33; + keys { , , }; + }; + row { + top= 53; + keys { , , }; + }; + row { + top= 91; + left= 20; + keys { }; + }; + row { + top= 110; + keys { , , }; + }; + }; // End of "Editing" section + + shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 1, 3 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 50; + left= 377; + color= "grey10"; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 64.5; + indicator.shape= "LED"; + indicator "Num Lock" { left= 386; }; + indicator "Caps Lock" { left= 411; }; + indicator "Scroll Lock" { left= 436; }; + text.top= 52; + text.color= "black"; + text "NumLockLabel" { left= 382.5; text="Num\nLock"; }; + text "CapsLockLabel" { left= 407; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 432; text="Scroll\nLock"; }; + + logo "SGILogoImage" { + top= 17; + left= 22; + name= "SGI"; + shape= "LOGO"; + }; + text "SGILogoText" { + top= 21; + left= 40; + width= 50; + text= "SiliconGraphics"; + font= "helvetica"; + slant= "o"; + weight= "bold"; + fontWidth= "narrow"; + fontSize= 24; + }; + + section "Keypad" { + top= 83; + left= 376; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + alias = ; + alias = ; +}; +xkb_geometry "pc102" { + + // This is an approximate layout for 102-key SGI international + // keyboards. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes of a few keys by eye. I didn't actually + // *measure* a real keyboard. + + description= "Silicon Graphics 102-key Keyboard"; + width= 470; + height= 193; + + shape.cornerRadius= 1; + shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } }; + shape "NORM" { { [18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [35,18] }, { [2,1], [33,17] } }; + shape "TABK" { { [27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { + approx = { [ 0, 0], [26,37] }, + { [ 0, 0], [26, 0], [26,37], + [ 5,37], [ 5,18], [ 0,18] }, + { [ 1, 1], [24, 1], [24,36], + [ 7,36], [ 7,17], [ 1,17] } + }; + shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } }; + shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } }; + shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "SPCE" { { [130,18] }, { [2,1], [128,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 50; + row { + top= 1; + keys { { , color="grey20" }, + { , 18}, , , , + { , 10}, , , , + { , 10}, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 83; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color= "grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color= "grey20" }, + , , , , , + , , , , , + , , + { , "RTRN", color= "grey20" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color= "grey20" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { { , "LFSH", color= "grey20" }, , + , , , , , + , , , , , + { , "RTSH", color= "grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , + { , 19 }, + { , "SPCE", color="white" }, + , + { , 19 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 50; + left= 308; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 33; + keys { , , }; + }; + row { + top= 53; + keys { , , }; + }; + row { + top= 91; + left= 20; + keys { }; + }; + row { + top= 110; + keys { , , }; + }; + }; // End of "Editing" section + + shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 1, 3 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 50; + left= 375; + color= "grey10"; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 64.5; + indicator.shape= "LED"; + indicator "Num Lock" { left= 384; }; + indicator "Caps Lock" { left= 409; }; + indicator "Scroll Lock" { left= 434; }; + text.top= 52; + text.color= "black"; + text "NumLockLabel" { left= 380.5; text="Num\nLock"; }; + text "CapsLockLabel" { left= 405; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; }; + + logo "SGILogoImage" { + top= 17; + left= 22; + name= "SGI"; + shape= "LOGO"; + }; + text "SGILogoText" { + top= 21; + left= 40; + width= 50; + text= "SiliconGraphics"; + font= "helvetica"; + slant= "o"; + weight= "bold"; + setWidth= "narrow"; + fontSize= 24; + }; + + section "Keypad" { + top= 83; + left= 374; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + alias = ; + alias = ; +}; diff --git a/nixos/xkb/geometry/sgi_vndr/indy b/nixos/xkb/geometry/sgi_vndr/indy new file mode 100644 index 00000000..e726a8bb --- /dev/null +++ b/nixos/xkb/geometry/sgi_vndr/indy @@ -0,0 +1,598 @@ +// +// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc. +// +// Permission to use, copy, modify, and distribute this +// software and its documentation for any purpose and without +// fee is hereby granted, provided that the above copyright +// notice appear in all copies and that both that copyright +// notice and this permission notice appear in supporting +// documentation, and that the name of Silicon Graphics not be +// used in advertising or publicity pertaining to distribution +// of the software without specific prior written permission. +// Silicon Graphics makes no representation about the suitability +// of this software for any purpose. It is provided "as is" +// without any express or implied warranty. +// +// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +// GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH +// THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +default xkb_geometry "pc101" { + + // This is an approximate layout for a 101-key (US/ASCII) SGI + // keyboard. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes of a few keys by eye. I didn't actually + // *measure* a real keyboard. + + description= "Silicon Graphics 101-key keyboard"; + + width= 472; + height= 193; + + shape "EDGE" { cornerRadius= 2, { [ 472, 193 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } }; + shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } }; + shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } }; + shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "SPCE" { { [130,18] }, { [2,1], [128,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 50; + row { + top= 1; + keys { { , color="grey20" }, + { , 19}, , , , + { , 11}, , , , + { , 11}, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 83; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color= "grey20" }, + , , , , , + , , , , , + , , + { , "BKSL" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , { , "RTRN", color="grey20" } + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , 20 }, + { , "SPCE",color="white" }, + , { , 20 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 50; + left= 312; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 33; + keys { , , }; + }; + row { + top= 53; + keys { , , }; + }; + row { + top= 91; + left= 20; + keys { }; + }; + row { + top= 110; + keys { , , }; + }; + }; // End of "Editing" section + + shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 1, 3 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 50; + left= 377; + color= "grey10"; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 64.5; + indicator.shape= "LED"; + indicator "Num Lock" { left= 386; }; + indicator "Caps Lock" { left= 411; }; + indicator "Scroll Lock" { left= 436; }; + text.top= 52; + text.color= "black"; + text "NumLockLabel" { left= 382.5; text="Num\nLock"; }; + text "CapsLockLabel" { left= 407; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 432; text="Scroll\nLock"; }; + + logo "SGILogoImage" { + top= 17; + left= 22; + name= "SGI"; + shape= "LOGO"; + }; + text "SGILogoText" { + top= 21; + left= 40; + width= 50; + text= "SiliconGraphics"; + font= "helvetica"; + slant= "o"; + weight= "bold"; + fontWidth= "narrow"; + fontSize= 24; + }; + + section "Keypad" { + top= 83; + left= 376; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + alias = ; + alias = ; +}; + +xkb_geometry "pc102" { + + // This is an approximate layout for 102-key SGI international + // keyboards. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes of a few keys by eye. I didn't actually + // *measure* a real keyboard. + + description= "Silicon Graphics 102-key Keyboard"; + width= 470; + height= 193; + + shape.cornerRadius= 1; + shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } }; + shape "NORM" { { [18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [35,18] }, { [2,1], [33,17] } }; + shape "TABK" { { [27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { + approx = { [ 0, 0], [26,37] }, + { [ 0, 0], [26, 0], [26,37], + [ 5,37], [ 5,18], [ 0,18] }, + { [ 1, 1], [24, 1], [24,36], + [ 7,36], [ 7,17], [ 1,17] } + }; + shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } }; + shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } }; + shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "SPCE" { { [130,18] }, { [2,1], [128,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 19; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 50; + row { + top= 1; + keys { { , color="grey20" }, + { , 18}, , , , + { , 10}, , , , + { , 10}, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 83; + row { + top= 1; + keys { , , , , , + , , , , , + , , , + { , "BKSP", color= "grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color= "grey20" }, + , , , , , + , , , , , + , , + { , "RTRN", color= "grey20" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color= "grey20" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { { , "LFSH", color= "grey20" }, , + , , , , , + , , , , , + { , "RTSH", color= "grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , + { , 19 }, + { , "SPCE", color="white" }, + , + { , 19 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 50; + left= 308; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 33; + keys { , , }; + }; + row { + top= 53; + keys { , , }; + }; + row { + top= 91; + left= 20; + keys { }; + }; + row { + top= 110; + keys { , , }; + }; + }; // End of "Editing" section + + shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 1, 3 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 50; + left= 375; + color= "grey10"; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 64.5; + indicator.shape= "LED"; + indicator "Num Lock" { left= 384; }; + indicator "Caps Lock" { left= 409; }; + indicator "Scroll Lock" { left= 434; }; + text.top= 52; + text.color= "black"; + text "NumLockLabel" { left= 380.5; text="Num\nLock"; }; + text "CapsLockLabel" { left= 405; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; }; + + logo "SGILogoImage" { + top= 17; + left= 22; + name= "SGI"; + shape= "LOGO"; + }; + text "SGILogoText" { + top= 21; + left= 40; + width= 50; + text= "SiliconGraphics"; + font= "helvetica"; + slant= "o"; + weight= "bold"; + setWidth= "narrow"; + fontSize= 24; + }; + + section "Keypad" { + top= 83; + left= 374; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + alias = ; + alias = ; +}; + +xkb_geometry "jp106" { + description= "Silicon Graphics 106-key Japanese keyboard"; + width= 442; + height= 167; + + shape "EDGE" { cornerRadius= 2, { [ 442, 167 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } }; + shape "RTRN" { + { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } , + { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } }; + shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } }; + shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } }; + shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + logo "SGILogoImage" { + top= 5; + left= 6; + name= "SGI"; + shape= "LOGO"; + }; + + text "SGILogoText" { + top= 9; + left= 25; + width= 50; + text= "SiliconGraphics"; + font= "helvetica"; + slant= "o"; + weight= "bold"; + fontWidth= "narrow"; + fontSize= 24; + }; + + shape "LEDS" { cornerRadius= 0.1, { [ 76 ,20 ] } }; + shape "LED" { cornerRadius= 0, { [ 5, 1 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 25; + left= 362; + color= "grey10"; + }; + + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 40; + indicator.shape= "LED"; + indicator "Num Lock" { left= 366; }; + indicator "Caps Lock" { left= 391; }; + indicator "Scroll Lock" { left= 416; }; + text.top= 28; + text.color= "black"; + text "NumLockLabel" { left= 366; text="Num\nLock"; }; + text "CapsLockLabel" { left= 391; text="Caps\nLock"; }; + text "ScrollLockLabel" { left= 416; text="Scroll\nLock"; }; + + section.left= 5; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 25; + row { + top= 1; + keys { { , color="grey20" }, + { , 18 }, , , , + { , 11 ,color="grey20"}, {,color="grey20"}, + { , color="grey20"}, {,color="grey20"}, + { , 11 }, , , , + { , 8 }, , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 61; + row { + top= 1; + keys { {,color="grey20"}, , , + , , , , , + , , , , , + , { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , { , 1 ,"RTRN",color="grey20" } + }; + }; + row { + top= 39; + keys { { , "CAPS", color="grey20" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { { , "LFSH", color="grey20" }, + , , , , , + , , , , , + , { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , 20 },, + { , "SPCE", color="white" }, + ,,, { , 17 } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 61; + left= 296; + key.color= "grey20"; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 361; + row { + top= 1; + key.color= "grey20"; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color="grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + alias = ; + alias = ; + +}; // End of "jp106" geometry diff --git a/nixos/xkb/geometry/sony b/nixos/xkb/geometry/sony new file mode 100644 index 00000000..25beb122 --- /dev/null +++ b/nixos/xkb/geometry/sony @@ -0,0 +1,179 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +default xkb_geometry "nwp5461" { + + description= "Sony NEWS NWS-5000 Keyboard"; + width= 425; + height= 190; + + shape.cornerRadius= 1; + shape "NORM" { { [18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [28,18] }, { [2,1], [26,17] } }; + shape "TABK" { { [28,18] }, { [2,1], [26,17] } }; + shape "BKSL" { { [28,18] }, { [2,1], [26,17] } }; + shape "RTRN" { + approx = { [15, 0], [33,37] }, + { [15, 0], [33, 0], [33,37], + [ 0,37], [ 0,19], [15,19] }, + { [17, 1], [31, 1], [31,36], + [ 2,36], [ 2,20], [17,20] } + }; + shape "SHFT" { { [42,18] }, { [2,1], [40,17] } }; + shape "MODK" { { [33,18] }, { [2,1], [31,17] } }; + shape "SPCE" { { [85,18] }, { [2,1], [83,17] } }; + shape "KPEN" { { [18,38] }, { [2,1], [16,37] } }; + shape "STOP" { { [28,18] }, { [2,1], [26,17] } }; + shape "CUT" { { [55,18] }, { [2,1], [53,17] } }; + shape "EXEC" { { [32,18] }, { [2,1], [30,17] } }; + shape "UNK" { { [18,18] }, { [2,1], [16,17] } }; + shape "CAPS" { { [18,18] }, { [2,1], [16,17] } }; + shape "FKEY" { { [23,18] }, { [2,1], [21,17] } }; + + section.left= 13; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 55; + row { + top= 1; + left= 37; + key.shape="FKEY"; + keys { , , , , , + { , 5 }, , , , , + { , 5 }, + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 80; + row { + top= 1; + keys { { , color="grey20" } , + , , , , + , , , , + , , , , + , { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { { , "TABK", color="grey20" }, + , , , , , + , , , , , + , , { , color="grey20" }, + { , "RTRN", -14, color="grey20" } + }; + }; + row { + top= 39; + keys { { , "MODK", color="grey20" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { { , "SHFT", color="grey20" }, + , , , , , + , , , , , , + { , "SHFT", color="grey20" } + }; + }; + row { + top= 77; + key.shape= "MODK"; + key.color= "grey20"; + keys { , { , "CAPS" }, + { , "STOP", color="white" }, + { , "SPCE", color="white" }, + { , "CUT", color="white" }, + { , "UNK" }, { , "UNK" }, + { , "EXEC" } + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 80; + left= 312; + key.color= "grey20"; + row { + top= 1; + keys { }; + }; + row { + top= 20; + keys { }; + }; + row { + top= 39; + keys { }; + }; + row { + top= 58; + keys { }; + }; + row { + top= 77; + keys { }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 334; + row { + top= 1; + key.color= "grey20"; + keys { { , 19 }, , }; + }; + row { + top= 20; + keys { , , , { , color="grey20" } }; + }; + row { + top= 39; + keys { , , , { , color="grey20" } }; + }; + row { + top= 58; + keys { , , , { , "KPEN", color="grey20" } }; + }; + row { + top= 77; + keys { , { , color="grey20" }, }; + }; + row { + top= 96; + key.color= "grey20"; + keys { , , , }; + }; + }; // End of "Keypad" section + +}; // End of "default" geometry diff --git a/nixos/xkb/geometry/steelseries b/nixos/xkb/geometry/steelseries new file mode 100644 index 00000000..df3788c1 --- /dev/null +++ b/nixos/xkb/geometry/steelseries @@ -0,0 +1,223 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// + + + +// modified from /usr/share/X11/xkb/geometry/pc(pc104) +// +// The Apex 300 (Apex RAW) has 21 additional keys and +// is replaced by a hardware key. These +// additions to the basic PC104 layout are shown in red. +// +// Currently the kernel doesn't initialize these keys; a userspace +// tool is needed (apexctl: https://github.com/tuxmark5/ApexCtl). +// With this tool or a proper driver, the extra keys (except FN) +// can be assigned keycodes via udev-hwdb. +// +// FIXME: Keycodes shown here should be changed to match +// kernel defaults when a driver is developed. +// +// The additional keys are in 4 groups: +// 1) L1-L2 left of Escape (column) , +// 2) M1-M12 above F1-F12 (row) - +// 3) MX1-MX5 left of alpha keys (column) - +// 4) LeftUp, RightUp with regular arrows , +// +// Known key functions: +// + = kbd backlight step dimmer (NoSymbol) +// + = kbd backlight step brighter (NoSymbol) +// + = (AudioPrev) +// + = (AudioPlay, AudioPause) +// + = (AudioNext) +// + = (AudioMute) +// + = (VolumeUp) +// + = (VolumeDown) +// +// And yes, the spacebar really is that ridiculous. +// +// 2017.April +// +default xkb_geometry "apex300" { + + description= "SteelSeries Apex 300 (Apex RAW)"; + width= 450; + height= 150; + + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } }; + shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } }; + shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } }; + shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } }; + shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } }; + shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } }; + shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } }; + shape "SPCE" { { [113,37] }, { [2,1], [111,35] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } }; + shape "MKEY" { { [ 18,8] }, { [2,1], [ 16,7] } }; + shape "ESCA" { { [ 18,28] }, { [2,1], [ 16,27] } }; + shape "LKEY" { { [ 18,14] }, { [2,1], [ 16,13] } }; + shape "LEDS" { cornerRadius= 0, { [ 54, 6 ] } }; + shape "LED" { cornerRadius= 0, { [ 4, 1 ] } }; + + + solid "LedPanel" { + shape= "LEDS"; + top= 2; + left= 315; + color= "grey10"; + }; + + + indicator.onColor= "red"; + indicator.offColor= "red"; + indicator.top= 7; + indicator.shape= "LED"; + indicator "Num Lock" { left= 321; }; + indicator "Caps Lock" { left= 340; }; + indicator "Scroll Lock" { left= 359; }; + text.top= 2; + text.color= "black"; + text "NumLockLabel" { left= 322; text="N"; }; + text "CapsLockLabel" { left= 341; text="C"; }; + text "ScrollLockLabel" { left= 360; text="S"; }; + text "SteelSeriesLogo" { top= 10; left= 400; text="SteelSeries"; }; + text "FNLogoKeyLabel" { top= 130; left= 248; text="FN"; }; + + key.shape= "NORM"; + key.gap= 1; + key.color= "grey10"; + + + section "Lkeys" { + key.shape= "LKEY"; + key.color= "red"; + row { top= 1; keys { }; }; + row { top= 15; keys { }; }; + }; // end of "Lkeys" section + + + section "MXkeys" { + key.shape= "NORM"; + key.color= "red"; + row { top= 35; keys { }; }; // 40 59 78 97 116 + row { top= 54; keys { }; }; // 35 54 73 92 111 + row { top= 73; keys { }; }; + row { top= 92; keys { }; }; + row { top=111; keys { }; }; + }; // end of "MXkeys" section + + + section "Escape" { + left= 23; + key.shape= "ESCA"; + key.color= "grey30"; + row { top= 1; keys { }; }; + }; // end of "Escape" section + + + section "Mkeys" { + left= 61; + key.color= "red"; + key.shape= "MKEY"; + row { top= 1; + keys { , , , , + { , 11 }, , , , + { , 11 }, , , }; }; + }; // end of "Mkeys" section + + + section "Function" { + left= 61; + key.color= "grey30"; + row { top= 10; + keys { , , , , + { , 11 }, , , , + { , 11 }, , , , + { , 5 }, , }; }; + }; // end of "Function" section + + + section "Alpha" { + top= 35; + left= 23; + key.color= "grey10"; + row { keys { , , , , , + , , , , , + , , , + { , "BKSP", color="grey30" } }; }; + row { top= 19; + keys { { , "TABK", color="grey30" }, + , , , , , + , , , , , + , , { , "BKSL" } }; }; + row { top= 38; + keys { { , "CAPS", color="grey30" }, + , , , , , + , , , , , + , { , "RTRN", color="grey30" } }; }; + row { top= 57; + keys { { , "LFSH", color="grey30" }, + , , , , , + , , , , , + { , "RTSH", color="grey30" } }; }; + row { top= 76; + key.shape= "SMOD"; + key.color= "grey30"; + keys { { , "MODK" }, , , { , "SPCE" }, + , { , color="red" }, , }; }; + }; // end of "Alpha" section + + + section "Editing" { + top= 35; + left= 313; + key.color= "grey30"; + row { keys { , , }; }; + row { top= 19; keys { , , }; }; + row { top= 57; keys { { , color="red" }, , { , color="red" } }; }; + row { top= 76; keys { , , }; }; + }; // end of "Editing" section + + + section "Keypad" { + top= 35; + left= 373; + key.color= "grey10"; + row { keys { , , , }; }; + row { top= 19; keys { , , , { , "KPAD" } }; }; + row { top= 38; keys { , , }; }; + row { top= 57; keys { , , , { , "KPAD" } }; }; + row { top= 76; keys { { , "KP0" }, }; }; + }; // end of "Keypad" section + + alias = ; + alias = ; + +}; // end of "apex300" geometry diff --git a/nixos/xkb/geometry/sun b/nixos/xkb/geometry/sun new file mode 100644 index 00000000..2d1658d5 --- /dev/null +++ b/nixos/xkb/geometry/sun @@ -0,0 +1,756 @@ +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// + +xkb_geometry "t6" { + + // This is an approximate layout for a (US/ASCII) Sun Type6 + // keyboard. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes. + + width= 515; + height= 170; + + shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } }; + shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } }; + shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } }; + shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } }; + shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "SPCE" { { [136,18] }, { [2,1], [134,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 14; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 24; + row { + top= 1; + keys { { , "HELP" }, { , 9 }, + { , 19 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 9 }, , , + { , 9 }, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 61; + row { + top= 1; + keys { , , + { , 9}, , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { , , { , 9, shape="TABK" }, + , , , , , + , , , , , + , , + { , "BKSL" } + }; + }; + row { + top= 39; + keys { , , { , 9, shape="CAPS" }, + , , , , , + , , , , , + , + { , "RTRN" } + }; + }; + row { + top= 58; + keys { , , { , 9 , shape="LFSH" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + keys { , , { , 9, shape="LCTL" }, + , { , "LMTA" }, + { , "SPCE" }, + { , "RMTA" }, , + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 61; + left= 352; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 420; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } }; + shape "LED" { cornerRadius= 2, { [ 3, 6 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 1; + left= 218; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 10; + indicator.shape= "LED"; + indicator "CapsLock" { left= 243; }; + indicator "Compose" { left= 281; }; + indicator "ScrollLock" { left= 262; }; + indicator "NumLock" { left= 224; }; + text.top= 1; + text.color= "black"; + text "CapsLockLabel" { left= 243; text="Caps\nLock"; }; + text "ComposeLabel" { left= 281; text="Compose"; }; + text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; }; + text "NumLockLabel" { left= 224; text="Num\nLock"; }; + +}; + +xkb_geometry "t6tuv" { + + // This is an approximate layout for a (US/ASCII) Sun Type6 + // keyboard. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes. + + width= 515; + height= 170; + + shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { + approx = { [ 0, 0], [28,37] }, + { [ 0, 0], [28, 0], [28,37], + [ 5,37], [ 5,18], [ 0,18] }, + { [ 1, 1], [26, 1], [26,36], + [ 7,36], [ 7,17], [ 1,17] } + }; + shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } }; + shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } }; + shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } }; + shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "SPCE" { { [137,18] }, { [2,1], [135,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 14; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 24; + row { + top= 1; + keys { { , "HELP" }, { , 9 }, + { , 19 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 9 }, , , + { , 9 }, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 61; + row { + top= 1; + keys { , , + { , 9}, , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { , , { , 9, shape="TABK" }, + , , , , , + , , , , , + , , + { , "RTRN" } + }; + }; + row { + top= 39; + keys { , , { , 9, shape="CAPS" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { , , { , 9 , shape="LFSH" }, , + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + keys { , , { , 9, shape="LCTL" }, + , { , "LMTA" }, + { , "SPCE" }, + { , "RMTA" }, , + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 61; + left= 352; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 420; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } }; + shape "LED" { cornerRadius= 2, { [ 3, 6 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 1; + left= 218; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 10; + indicator.shape= "LED"; + indicator "CapsLock" { left= 243; }; + indicator "Compose" { left= 281; }; + indicator "ScrollLock" { left= 262; }; + indicator "NumLock" { left= 224; }; + text.top= 1; + text.color= "black"; + text "CapsLockLabel" { left= 243; text="Caps\nLock"; }; + text "ComposeLabel" { left= 281; text="Compose"; }; + text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; }; + text "NumLockLabel" { left= 224; text="Num\nLock"; }; + +}; + +xkb_geometry "t6jp" { + + // This is an approximate layout for a (US/ASCII) Sun Type6 + // keyboard. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes. + + width= 515; + height= 170; + + shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } }; + shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } }; + shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { + approx = { [ 0, 0], [28,37] }, + { [ 0, 0], [28, 0], [28,37], + [ 5,37], [ 5,18], [ 0,18] }, + { [ 1, 1], [26, 1], [26,36], + [ 7,36], [ 7,17], [ 1,17] } + }; + shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } }; + shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "SPCE" { { [ 96,18] }, { [2,1], [94,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 14; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 24; + row { + top= 1; + keys { { , "HELP" }, { , 9 }, + { , 19 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 9 }, , , + { , 9 }, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 61; + row { + top= 1; + keys { , , + { , 9}, , , , , + , , , , , + , , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 20; + keys { , , { , 9, shape="TABK" }, + , , , , , + , , , , , + , , + { , "RTRN" } + }; + }; + row { + top= 39; + keys { , , { , 9, shape="CAPS" }, + , , , , , + , , , , , + , + }; + }; + row { + top= 58; + keys { , , { , 9 , shape="LFSH" }, + , , , , , + , , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + keys { , , { , 9 }, + , , { , "EXEC" }, + { , "SPCE" }, { , "KANJ" }, , + , , + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 61; + left= 352; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 420; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } }; + shape "LED" { cornerRadius= 2, { [ 3, 6 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 1; + left= 218; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 10; + indicator.shape= "LED"; + indicator "CapsLock" { left= 243; }; + indicator "Compose" { left= 281; }; + indicator "ScrollLock" { left= 262; }; + indicator "NumLock" { left= 224; }; + text.top= 1; + text.color= "black"; + text "CapsLockLabel" { left= 243; text="Caps\nLock"; }; + text "ComposeLabel" { left= 281; text="Compose"; }; + text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; }; + text "NumLockLabel" { left= 224; text="Num\nLock"; }; + +}; + +xkb_geometry "t6unix" { + + // This is an approximate layout for a (US/ASCII) Sun Type6 + // keyboard. I just took a similar layout (101 key PC keyboard) + // and adjusted the sizes. + + width= 515; + height= 170; + + shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } }; + shape.cornerRadius= 1; + shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } }; + shape "BKSP" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } }; + shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } }; + shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } }; + shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } }; + shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } }; + shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } }; + shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "SPCE" { { [136,18] }, { [2,1], [134,17] } }; + shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } }; + shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } }; + shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } }; + shape "LOGO" { { [ 16,16] } }; + + outline "Edges" { + top= 0; + left= 0; + shape= "EDGE"; + }; + + section.left= 14; + row.left= 1; + key.shape= "NORM"; + key.gap= 1; + section "Function" { + top= 24; + row { + top= 1; + keys { { , "HELP" }, { , 9 }, + { , 19 }, , , , + { , 11 }, , , , + { , 11 }, , , , + { , 9 }, , , + { , 9 }, , , + }; + }; + }; // End of "Function" section + + section "Alpha" { + top= 61; + row { + top= 1; + keys { , , + { , 9}, , , , , + , , , , , + , , , + , + }; + }; + row { + top= 20; + keys { , , { , 9, shape="TABK" }, + , , , , , + , , , , , + , , + { , "BKSP", color="grey20" } + }; + }; + row { + top= 39; + keys { , , { , 9, shape="CAPS" }, + , , , , , + , , , , , + , + { , "RTRN" } + }; + }; + row { + top= 58; + keys { , , { , 9 , shape="LFSH" }, + , , , , , + , , , , , + { , "RTSH", color="grey20" } + }; + }; + row { + top= 77; + keys { , , { , 9, shape="LCTL" }, + , {, "LMTA"}, + { , "SPCE" }, + {, "RMTA"}, , + }; + }; + }; // End of "Alpha" section + + section "Editing" { + top= 61; + left= 352; + row { + top= 1; + keys { , , }; + }; + row { + top= 20; + keys { , , }; + }; + row { + top= 58; + left= 20; + keys { }; + }; + row { + top= 77; + keys { , , }; + }; + }; // End of "Editing" section + + section "Keypad" { + top= 61; + left= 420; + row { + top= 1; + keys { , , , }; + }; + row { + top= 20; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 39; + keys { , , }; + }; + row { + top= 58; + keys { , , , { , "KPAD", color= "grey20" } }; + }; + row { + top= 77; + keys { { , "KP0" }, }; + }; + }; // End of "Keypad" section + + shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } }; + shape "LED" { cornerRadius= 2, { [ 3, 6 ] } }; + solid "LedPanel" { + shape= "LEDS"; + top= 1; + left= 218; + }; + indicator.onColor= "green"; + indicator.offColor= "green30"; + indicator.top= 10; + indicator.shape= "LED"; + indicator "CapsLock" { left= 243; }; + indicator "Compose" { left= 281; }; + indicator "ScrollLock" { left= 262; }; + indicator "NumLock" { left= 224; }; + text.top= 1; + text.color= "black"; + text "CapsLockLabel" { left= 243; text="Caps\nLock"; }; + text "ComposeLabel" { left= 281; text="Compose"; }; + text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; }; + text "NumLockLabel" { left= 224; text="Num\nLock"; }; +}; + + +default xkb_geometry "type6" { + include "sun(t6)" + description= "Sun Type6 keyboard (US, Korea, Taiwan)"; +}; + +xkb_geometry "type6jp" { + include "sun(t6jp)" + description= "Sun Type6 Japanese keyboard"; +}; + +xkb_geometry "type6tuv" { + include "sun(t6tuv)" + description= "Sun Type6 TUV keyboard"; +}; + +xkb_geometry "type6unix" { + include "sun(t6unix)" + description= "Sun Type6 Unix keyboard"; +}; + +xkb_geometry "type7" { + include "sun(t6)" + description= "Sun Type7 keyboard (US, Korea, Taiwan)"; +}; + +xkb_geometry "type7jp" { + include "sun(t6jp)" + description= "Sun Type7 Japanese keyboard"; +}; + +xkb_geometry "type7tuv" { + include "sun(t6tuv)" + description= "Sun Type7 TUV keyboard"; +}; + +xkb_geometry "type7unix" { + include "sun(t6unix)" + description= "Sun Type7 Unix keyboard"; +}; diff --git a/nixos/xkb/geometry/teck b/nixos/xkb/geometry/teck new file mode 100644 index 00000000..889978d0 --- /dev/null +++ b/nixos/xkb/geometry/teck @@ -0,0 +1,627 @@ +default xkb_geometry "teck227" { + description="Truly Ergonomic Computer Keyboard Model 227 with wide Alt. (Standard US layout)"; + + width=296; + height=155; + + shape.cornerRadius=1; + + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } }; + shape "DBL" { { [36, 18] }, { [2,1], [ 34,16] } }; + shape "RSUP" { + { [ 2, 0], [ 12, 1] , [ 22, 0], [24, 18], [ 12, 19 ], [0, 18] }, + { [ 4, 1], [ 12, 2] , [ 20, 1], [22, 16], [ 12, 17 ], [2, 16] } + }; + shape "DEL" { + { [ 2, 0], [ 14, 1] , [ 26, 0], [28, 18], [ 14, 19 ], [0, 18] }, + { [ 4, 1], [ 14, 2] , [ 24, 1], [26, 16], [ 14, 17 ], [2, 16] } + }; + shape "AE11" { + { [ 2, 0], [ 16, 1] , [ 30, 0], [32, 18], [ 16, 19 ], [0, 18] }, + { [ 4, 1], [ 16, 2] , [ 28, 1], [30, 16], [ 16, 17 ], [2, 16] } + }; + shape "BKSP" { + { [ 2, 0], [ 18, 1] , [ 34, 0], [36, 18], [ 18, 19 ], [0, 18] }, + { [ 4, 1], [ 18, 2] , [ 32, 1], [34, 16], [ 18, 17 ], [2, 16] } + }; + shape "RTRN" { + { [ 2, 0], [ 20, 1] , [ 38, 0], [40, 18], [ 20, 19 ], [0, 18] }, + { [ 4, 1], [ 20, 2] , [ 36, 1], [38, 16], [ 20, 17 ], [2, 16] } + }; + + section "Function" { + left=17; + top=3; + row { + keys { , + { , 3 }, , , , + { , 3 }, , , , + { , 3 }, , , , + { , 3 } + }; + }; + overlay "FN" { + =, + =, + =, + =, + =, + =, + =, + =, + =, + =, + =, + =, + =, + = + }; + }; + + section "Special Keys" { + top=22; + left=122; + row { + keys { + , , + }; + }; + overlay "MISC" { + =, + = + }; + }; + + section "LeftNumbers" { + top=32; + left=12; + angle=6; + row { + keys { + , , , , , , + }; + }; + }; + + section "CenterNumbers" { + top=45; + left=136; + row { + keys { + { , "RSUP" } + }; + }; + }; + + section "RightNumbers" { + top=45; + left=159; + angle=-6; + row { + keys { + , , , , , , + }; + }; + overlay "KPAD" { + =, + =, + = + }; + }; + + section "LeftAlphaQWER" { + top=51; + left=10; + angle=6; + row { + keys { + , , , , , , + }; + }; + }; + + section "CenterAlphaQWER" { + top=64; + left=134; + row { + keys { + { , "DEL" } + }; + }; + }; + + section "RightAlphaQWER" { + top=64; + left=161; + angle=-6; + row { + keys { + , , , , , , + }; + }; + overlay "KPAD" { + =, + =, + =, + =, + = + }; + }; + + section "LeftAlphaASDF" { + top=52; + left=10; + angle=6; + row { + top=18; + keys { + { , "DBL" }, , , , , + }; + }; + }; + + section "CenterAlphaASDF" { + top=83; + left=132; + row { + keys { + { , "AE11" } + }; + }; + }; + + section "RightAlphaASDF" { + top=65; + left=161; + angle=-6; + row { + top=18; + keys { + , , , , , { , "DBL" } + }; + }; + overlay "KPAD" { + =, + =, + =, + = + }; + }; + + section "LeftAlphaZXCV" { + top=89; + left=6; + angle=6; + row { + keys { + { , "DBL" }, + , , , , + }; + }; + }; + + section "CenterAlphaZXCV" { + top=102; + left=130; + row { + keys { + { , "BKSP" } + }; + }; + }; + + section "RightAlphaZXCV" { + top=102; + left=165; + angle=-6; + row { + keys { + , , , , , + { , "DBL" } + }; + }; + overlay "KPAD" { + =, + =, + = + }; + }; + + section "LeftSpecial" { + top=108; + left=4; + angle=6; + row { + keys { + { , "DBL" }, + { , "DBL", 54 } + }; + }; + }; + + section "CenterSpecial" { + top=121; + left=128; + row { + keys { + { , "RTRN" } + }; + }; + }; + + section "RightSpecial" { + top=121; + left=167; + angle=-6; + row { + keys { + { , "DBL" }, + { , "DBL", 54 } + }; + }; + }; + + section "pgup, pgdown, home and end" { + top=112; + left=40; + angle=6; + row { + left=18; + keys { + + }; + }; + row { + top=9; + keys { + , { , 18 } + }; + }; + row { + top=18; + left=18; + keys { + + }; + }; + }; + + section "Arrows" { + top=117; + left=203; + angle=-6; + row { + left=18; + keys { + + }; + }; + row { + top=9; + keys { + , { , 18 } + }; + }; + row { + top=18; + left=18; + keys { + + }; + }; + }; +}; + +xkb_geometry "teck229" { + description="Truly Ergonomic Computer Keyboard Model 229 with standard sized Alt and an additional Menu and Super key. (Standard US layout)"; + + width=296; + height=155; + + shape.cornerRadius=1; + + shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } }; + shape "DBL" { { [36, 18] }, { [2,1], [ 34,16] } }; + shape "RSUP" { + { [ 2, 0], [ 12, 1] , [ 22, 0], [24, 18], [ 12, 19 ], [0, 18] }, + { [ 4, 1], [ 12, 2] , [ 20, 1], [22, 16], [ 12, 17 ], [2, 16] } + }; + shape "DEL" { + { [ 2, 0], [ 14, 1] , [ 26, 0], [28, 18], [ 14, 19 ], [0, 18] }, + { [ 4, 1], [ 14, 2] , [ 24, 1], [26, 16], [ 14, 17 ], [2, 16] } + }; + shape "AE11" { + { [ 2, 0], [ 16, 1] , [ 30, 0], [32, 18], [ 16, 19 ], [0, 18] }, + { [ 4, 1], [ 16, 2] , [ 28, 1], [30, 16], [ 16, 17 ], [2, 16] } + }; + shape "BKSP" { + { [ 2, 0], [ 18, 1] , [ 34, 0], [36, 18], [ 18, 19 ], [0, 18] }, + { [ 4, 1], [ 18, 2] , [ 32, 1], [34, 16], [ 18, 17 ], [2, 16] } + }; + shape "RTRN" { + { [ 2, 0], [ 20, 1] , [ 38, 0], [40, 18], [ 20, 19 ], [0, 18] }, + { [ 4, 1], [ 20, 2] , [ 36, 1], [38, 16], [ 20, 17 ], [2, 16] } + }; + + section "Function" { + left=17; + top=3; + row { + keys { , + { , 3 }, , , , + { , 3 }, , , , + { , 3 }, , , , + { , 3 } + }; + }; + overlay "FN" { + =, + =, + =, + =, + =, + =, + =, + =, + =, + =, + =, + =, + =, + = + }; + }; + + section "Special Keys" { + top=22; + left=122; + row { + keys { + , , + }; + }; + overlay "MISC" { + =, + = + }; + }; + + section "LeftNumbers" { + top=32; + left=12; + angle=6; + row { + keys { + , , , , , , + }; + }; + }; + + section "CenterNumbers" { + top=45; + left=136; + row { + keys { + { , "RSUP" } + }; + }; + }; + + section "RightNumbers" { + top=45; + left=159; + angle=-6; + row { + keys { + , , , , , , + }; + }; + overlay "KPAD" { + =, + =, + = + }; + }; + + section "LeftAlphaQWER" { + top=51; + left=10; + angle=6; + row { + keys { + , , , , , , + }; + }; + }; + + section "CenterAlphaQWER" { + top=64; + left=134; + row { + keys { + { , "DEL" } + }; + }; + }; + + section "RightAlphaQWER" { + top=64; + left=161; + angle=-6; + row { + keys { + , , , , , , + }; + }; + overlay "KPAD" { + =, + =, + =, + =, + = + }; + }; + + section "LeftAlphaASDF" { + top=52; + left=10; + angle=6; + row { + top=18; + keys { + { , "DBL" }, , , , , + }; + }; + }; + + section "CenterAlphaASDF" { + top=83; + left=132; + row { + keys { + { , "AE11" } + }; + }; + }; + + section "RightAlphaASDF" { + top=65; + left=161; + angle=-6; + row { + top=18; + keys { + , , , , , { , "DBL" } + }; + }; + overlay "KPAD" { + =, + =, + =, + = + }; + }; + + section "LeftAlphaZXCV" { + top=89; + left=6; + angle=6; + row { + keys { + { , "DBL" }, + , , , , + }; + }; + }; + + section "CenterAlphaZXCV" { + top=102; + left=130; + row { + keys { + { , "BKSP" } + }; + }; + }; + + section "RightAlphaZXCV" { + top=102; + left=165; + angle=-6; + row { + keys { + , , , , , + { , "DBL" } + }; + }; + overlay "KPAD" { + =, + =, + = + }; + }; + + section "LeftSpecial" { + top=108; + left=4; + angle=6; + row { + keys { + , , + { , "DBL", 54 } + }; + }; + }; + + section "CenterSpecial" { + top=121; + left=128; + row { + keys { + { , "RTRN" } + }; + }; + }; + + section "RightSpecial" { + top=121; + left=167; + angle=-6; + row { + keys { + { , "DBL" }, + { , 54 }, + }; + }; + }; + + section "pgup, pgdown, home and end" { + top=112; + left=40; + angle=6; + row { + left=18; + keys { + + }; + }; + row { + top=9; + keys { + , { , 18 } + }; + }; + row { + top=18; + left=18; + keys { + + }; + }; + }; + + section "Arrows" { + top=117; + left=203; + angle=-6; + row { + left=18; + keys { + + }; + }; + row { + top=9; + keys { + , { , 18 } + }; + }; + row { + top=18; + left=18; + keys { + + }; + }; + }; +}; diff --git a/nixos/xkb/geometry/thinkpad b/nixos/xkb/geometry/thinkpad new file mode 100644 index 00000000..ab16d93d --- /dev/null +++ b/nixos/xkb/geometry/thinkpad @@ -0,0 +1,470 @@ +// -*- indent-tabs-mode: nil -*- + +// Created by Alexander Pohoyda +// Geometry specification for IBM ThinkPad keyboard. +// Compatible Models: THINKPAD 560Z 2640-90U, THINKPAD 560Z 2640-91U, +// THINKPAD 560Z 2640-B0U, THINKPAD 560Z 2640-B1U, THINKPAD 560Z 2640-RR3, +// THINKPAD 600 2645-31U, THINKPAD 600 2645-35U, THINKPAD 600 2645-41U, +// THINKPAD 600 2645-42U, THINKPAD 600 2645-45U, THINKPAD 600 2645-48U, +// THINKPAD 600 2645-51U, THINKPAD 600 2645-85U, THINKPAD 600 2645-A1U, +// THINKPAD 600 2645-RR1, THINKPAD 600 2645-RR2, THINKPAD 600E 2645-3AU, +// THINKPAD 600E 2645-4AU, THINKPAD 600E 2645-4BU, THINKPAD 600E 2645-55U, +// THINKPAD 600E 2645-5AU, THINKPAD 600E 2645-5BU, THINKPAD 600E 2645-5JU, +// THINKPAD 600E 2645-8AO, THINKPAD 600E 2645-8AU, THINKPAD 600E 2645-8BU, +// THINKPAD 600E 2645-AAU, THINKPAD 600E 2645-RRB, THINKPAD 600E 2645-RRD, +// THINKPAD 600E 2645-RRF, THINKPAD 600E 2645-RRS, THINKPAD A22E 2645-45U + +xkb_geometry "common" { + width = 290; + height = 150; + baseColor = "grey80"; + labelColor = "white"; + + shape "FN0" { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 10] } }; + shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2.5, 0], [15.5, 14] } }; + shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2.5, 0], [34.5, 14] } }; + shape "TABK" { cornerRadius = 1, { [27, 18] }, { [2.5, 0], [24.5, 14] } }; + shape "CAPS" { cornerRadius = 1, { [31, 18] }, { [1, 0], [30, 16] }, + { [1, 0], [26, 16] }, + { [2.5, 0], [24.5, 14] } }; + shape "RTSH" { cornerRadius = 1, { [50, 18] }, { [2.5, 0], [46.5, 14] } }; + shape "MODK" { cornerRadius = 1, { [27.5, 18] }, { [2.5, 0], [25, 14] } }; + shape "SPCE" { cornerRadius = 1, { [100, 18] }, { [2.5, 0], [97.5, 14] } }; + shape "ARRS" { cornerRadius = 1, { [16, 13] }, { [1.5, 0], [14.5, 11] } }; + + shape "LED" { cornerRadius = 2, { [3, 3] } }; + + shape "KEYS" { cornerRadius = 2, + { [0, 0], [19, 0], [19, 13], [172, 13], + [172, 0], [286, 0], [286, 138], [216, 138], + [216, 124], [0, 124] } }; + + solid "KeyPanel" { + shape = "KEYS"; + left = 2; + top = 5; + color = "black"; + }; + + shape "NULL1" { cornerRadius = 1, + { [0, 0], [50, 0], [50, 18], [34, 18], [34, 4], + [16, 4], [16, 18], [0, 18] } }; + + solid "NullPanel1" { + shape = "NULL1"; + left = 237; + top = 110; + color = "grey80"; + }; + + shape "NULL2" { cornerRadius = 1, { [17, 13] } }; + + solid "NullPanel2" { + shape = "NULL2"; + left = 219; + top = 129; + color = "grey80"; + }; + + shape "NULL3" { cornerRadius = 1, + { [0, 26], + [72, 26], [72, 13], [76, 13], [76, 26], + [149, 26], [149, 13], [153, 13], [153, 26], + [226, 26], [226, 0], [230, 0], [230, 26], + [284, 26], [285, 27], + [0, 27] } }; + + solid "NullPanel3" { + shape = "NULL3"; + left = 3; + top = 6; + color = "grey80"; + }; + + indicator.onColor = "green"; + indicator.offColor = "grey10"; + indicator.top = 4; + indicator.shape = "LED"; + indicator "HDDActivity" { onColor = "red"; left = 100; }; + indicator "Num Lock" { left = 108; }; + indicator "Caps Lock" { left = 114; }; + indicator "Scroll Lock" { left = 120; }; + indicator "Power" { left = 128; }; + + key.gap = 1; + key.color = "grey60"; + + section "Function" { + left = 2; + top = 5; + key.shape = "FN0"; + row { + top = 1; + keys { , { , 155 }, , }; + }; + row { + top = 14; + keys { , , , , + { , 6 }, , , , + { , 6 }, , , + }; + }; + }; // End of "Function" section + + section "Control" { + left= 2; + top = 109; + key.shape = "MODK"; + row { + top = 1; + keys { { , "NORM" }, , , + { , "SPCE" }, , + }; + }; + }; // End of "Control" section + + section "Editing" { + top = 5; + left = 233; + key.shape = "FN0"; + row { + top = 1; + keys { , , }; + }; + row { + top = 14; + keys { , , }; + }; + }; // End of "Editing" section + + section "Navigation" { + top = 114; + left = 236; + key.shape = "ARRS"; + row { + top = 1; + left = 17; + keys { }; + }; + row { + top = 15; + keys { , , }; + }; + }; // End of "Navigation" section + + shape "STIK" { cornerRadius = 4, { [7, 7] } }; + + solid "STIK" { + priority = 255; + color = "red"; + shape = "STIK"; + top = 85; + left = 126; + }; +}; + +// 85 keys +// US/English (FRU 02K4785). +xkb_geometry "us" { + include "thinkpad(common)" + description = "IBM ThinkPad 560Z/600/600E/A22E, US"; + + shape "RTRN" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } }; + shape "LFSH" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } }; + shape "BKSL" { cornerRadius = 1, { [28, 18] }, { [2.5, 0], [25.5, 14] } }; + + section "Alpha" { + left = 2; + top = 33; + key.gap = 1; + key.color = "grey60"; + key.shape = "NORM"; + row { + top = 1; + keys { , , , , , + , , , , , + , , , { , "BKSP" } + }; + }; + row { + top = 20; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "BKSL" } + }; + }; + row { + top = 39; + keys { { , "CAPS" }, + , , , , , + , , , , , + , { , "RTRN" } + }; + }; + row { + top = 58; + keys { { , "LFSH" }, + , , , , , + , , , , , + { , "RTSH" } + }; + }; + }; // End of "Alpha" section +}; + +// 86 keys +// Tested on: DE/German, UK/English (FRU 02K4787). +xkb_geometry "intl" { + include "thinkpad(common)" + description = "IBM ThinkPad 560Z/600/600E/A22E, Intl"; + + shape "RTRN" { cornerRadius = 1, { [28, 0], [28, 37], [4, 37], [4, 18], + [0, 18], [0, 0] }, + { [25.5, 0], [25.5, 33], [6.5, 33], + [6.5, 14], [2.5, 14], [2.5, 0] } }; + shape "LFSH" { cornerRadius = 1, { [24, 18] }, { [2.5, 0], [21.5, 14] } }; + + section "Alpha" { + left = 2; + top = 33; + key.gap = 1; + key.color = "grey60"; + key.shape = "NORM"; + row { + top = 1; + keys { , , , , , + , , , , , + , , , { , "BKSP" } + }; + }; + row { + top = 20; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "RTRN" } + }; + }; + row { + top = 39; + keys { { , "CAPS" }, + , , , , , + , , , , , + , + }; + }; + row { + top = 58; + keys { { , "LFSH" }, , + , , , , , + , , , , , + { , "RTSH" } + }; + }; + }; // End of "Alpha" section +}; + +xkb_geometry "60" { + width = 290; + height = 140; + baseColor = "grey80"; + labelColor = "white"; + + shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2, 0], [16, 16] } }; + + shape "ESC" { cornerRadius = 1, { [17, 13] }, { [1.5, 0], [15.5, 12] } }; + shape "FN0" { cornerRadius = 1, { [17, 11] }, { [1.5, 0], [15.5, 10] } }; + + shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2, 0], [35, 16] } }; + + shape "TABK" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } }; + shape "BKSL" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } }; + + shape "CAPS" { cornerRadius = 1, { [30.5, 18] }, { [2, 0], [28.5, 16] } }; + shape "RTRN" { cornerRadius = 1, { [43.5, 18] }, { [2, 0], [41.5, 16] } }; + + shape "LFSH" { cornerRadius = 1, { [40, 18] }, { [2, 0], [38, 16] } }; + shape "RTSH" { cornerRadius = 1, { [53, 18] }, { [2, 0], [51, 16] } }; + + shape "LCTL" { cornerRadius = 1, { [21, 18] }, { [2, 0], [19, 16] } }; + shape "LWIN" { cornerRadius = 1, { [15, 18] }, { [1.5, 0], [13.5, 16] } }; + + shape "SPCE" { cornerRadius = 1, { [97, 18] }, { [2, 0], [95, 16] } }; + + shape "ARR1" { cornerRadius = 1, { [17, 13] }, { [1.5, 0], [15.5, 12] } }; + shape "ARR2" { cornerRadius = 1, { [17, 11] }, { [1.5, 0], [15.5, 10] } }; + + shape "VOL" { cornerRadius = 2.5, { [5, 5] } }; + shape "TVTG" { cornerRadius = 0.5, { [0, 1], [17, 1], [17, 4], [0, 4] } }; + + shape "KEYS" { cornerRadius = 2, + { [0, 0], [19, 0], [19, 16], [172, 16], + [172, 4], [286, 4], [286, 133], [231, 133], + [231, 126], [0, 126] } }; + + solid "KeyPanel" { + shape = "KEYS"; + left = 2; + top = 3; + color = "black"; + }; + + shape "NULL0" { cornerRadius = 0.5, + { [0, 26], + [72, 26], [72, 14], [76, 14], [76, 26], + [149, 26], [149, 14], [153, 14], [153, 26], + [226, 26], [226, 2], [230, 2], [230, 26], + [284, 26], [284, 27], + [0, 27] } }; + + solid "NullPanel0" { + shape = "NULL0"; + left = 3; + top = 6; + color = "grey80"; + }; + + shape "NULL1" { cornerRadius = 0.5, { [0, 12], [17, 12], [17, 13], [0, 13] } }; + + solid "NullPanel1" { + shape = "NULL1"; + left = 3; + top = 6; + color = "grey80"; + }; + + shape "MEDIA" { cornerRadius = 0.5, { [0, 0], [55, 0], [55, 10], [0, 10] } }; + + solid "MediaPanel" { + shape = "MEDIA"; + left = 25.5; + top = 6; + color = "black"; + }; + + section "Volume" { + left = 22; + top = 8.5; + key.shape = "VOL"; + key.gap = 6; + key.color = "grey20"; + + row { + keys { , , , {, "TVTG", color = "blue"} }; + }; + }; + + key.gap = 1; + key.color = "grey60"; + + section "Function" { + left = 2; + top = 3; + key.shape = "FN0"; + row { + key.shape = "ESC"; + top = 1; + keys { }; + }; + row { + top = 5; + keys { { , 173 }, , }; + }; + row { + top = 17; + keys { , , , , + { , 6 }, , , , + { , 6 }, , , + }; + }; + }; // End of "Function" section + + section "Control" { + left = 2; + top = 109; + key.shape = "NORM"; + row { + top = 1; + keys { , { , "LCTL" }, { , "LWIN" }, , + { , "SPCE" }, , , + }; + }; + }; // End of "Control" section + + section "Editing" { + top = 7; + left = 233; + key.shape = "FN0"; + row { + top = 1; + keys { , , }; + }; + row { + top = 13; + keys { , , }; + }; + }; // End of "Editing" section + + section "Navigation" { + top = 109; + left = 233; + row { + key.shape = "ARR1"; + top = 1; + keys { , , }; + }; + row { + key.shape = "ARR2"; + top = 15; + keys { , , }; + }; + }; // End of "Navigation" section + + shape "STIK" { cornerRadius = 3.5, { [7, 7] } }; + + solid "STIK" { + priority = 255; + color = "red"; + shape = "STIK"; + top = 85.5; + left = 125.5; + }; + + section "Alpha" { + left = 2; + top = 33; + key.shape = "NORM"; + row { + top = 1; + keys { , , , , , + , , , , , + , , , { , "BKSP" } + }; + }; + row { + top = 20; + keys { { , "TABK" }, + , , , , , + , , , , , + , , { , "BKSL" } + }; + }; + row { + top = 39; + keys { { , "CAPS" }, + , , , , , + , , , , , + , { , "RTRN", color = "blue" } + }; + }; + row { + top = 58; + keys { { , "LFSH" }, + , , , , , + , , , , , + { , "RTSH" } + }; + }; + }; // End of "Alpha" section +}; diff --git a/nixos/xkb/geometry/typematrix b/nixos/xkb/geometry/typematrix new file mode 100644 index 00000000..46f72cb9 --- /dev/null +++ b/nixos/xkb/geometry/typematrix @@ -0,0 +1,733 @@ +// -*- indent-tabs-mode: nil -*- + +// Created by Frédéric Boiteux +// and Gildas Cotomale + +// Note : the special/multimedia keys (Calc, WWW, Desktop…) have a keycode +// , found in definition file /usr/share/X11/xkb/keycodes/evdev. +// Fn = ; +// Calc = ; +// WWW = ; +// CycleWindows = ; +// Mail = ; +// PlayPause = ; +// Desktop = ; + + +xkb_geometry "tm2020" { + description = "TypeMatrix EZ-Reach 2020"; + + // Keyboard total size : + width = 308; + height = 152; + // Background / foreground colours + baseColor = "white"; + labelColor = "black"; + + // Key shapes: base key = 16 mm each side + shape "NORM" { cornerRadius=1, { [16, 16] }, { [1, 1], [15, 15] }}; + shape "ALPL" { cornerRadius=1, { [24.25, 16] }, { [1, 1], [23, 15] }}; + shape "DHAL" { cornerRadius=1, { [24.25, 32.5] }, { [1, 1], [23, 31.5] }}; + shape "FUNC" { cornerRadius=1, { [16, 12] }, { [2.5, 0], [13.5, 10] }}; + shape "FUNL" { cornerRadius=1, { [24.25, 12] }, { [2.5, 0], [21.5, 10] }}; + shape "SPCE" { cornerRadius=1, { [57, 26] }, { [2.5, 1], [54.5, 24] }}; + shape "DBLA" { cornerRadius=1, { [32.5, 16] }, { [1, 1], [31, 15] }}; + shape "LED" { cornerRadius=2, { [4, 4] }}; + shape "DECO" { cornerRadius=1, { [3, 18] }}; + + section "Function" { + left = 4; + top = 24; + key.gap = 0.5; + key.color = "grey10"; + key.shape = "FUNC"; + row { + keys { { , "FUNL" }, + , , , , }; + key.color = "grey20"; + keys { { , "FUNL" } }; + }; + row { + left = 150; + key.color = "red"; + keys { { , "FUNL" } }; + key.color = "grey10"; + keys { , , , , , , + { , "FUNL" } }; + }; + }; + + section "Alpha" { + left = 4; + top = 36.5; + key.gap = 0.5; + key.color = "grey10"; + key.shape = "NORM"; + row { + top = 0; + keys { { , "ALPL" }, + , , , , , + { , "DHAL" } }; + }; + row { + top = 16.5; + keys { { , "ALPL" }, + , , , , }; + }; + row { + top = 33; + keys { { , "DHAL" }, + , , , , , + { , "DHAL" } }; + }; + row { + top = 49.5; + left = 24.5; + keys { , , , , }; + }; + row { + top = 0; + left = 150; + keys { { , "DHAL" }, + , , }; + key.color = "grey20"; + keys { , , , { , "ALPL" } }; + }; + row { + top = 16.5; + left = 174.5; + keys { , , }; + key.color = "grey20"; + keys { , , , { , "ALPL" } }; + }; + row { + top = 33; + left = 150; + keys { { , "DHAL" }, + , , }; + key.color = "grey20"; + keys { , , , { , "DHAL" } }; + }; + row { + top = 49.5; + left = 174.5; + keys { , , }; + key.color = "grey20"; + keys { , , }; + }; + }; + + section "Control" { + left = 4; + top = 102.5; + key.gap = 0.5; + key.color = "grey10"; + key.shape = "ALPL"; + row { + top = 0; + keys { , , }; + keys { { , "SPCE"} }; + }; + row { + top = 16.5; + keys { , , }; + }; + row { + top = 0; + left = 150; + key.shape = "NORM"; + keys { { , "SPCE"}, }; + key.color = "grey20"; + keys { , , , { , "DHAL" } }; + }; + row { + top = 16.5; + left = 207.5; + key.shape = "NORM"; + key.color = "grey20"; + keys { { , "DBLA" }, , }; + }; + }; + + // Leds + indicator.top = 12; + indicator.onColor = "green"; + indicator.offColor = "grey10"; + indicator.shape = "LED"; + indicator "Num Lock" { left = 252; }; + indicator "Caps Lock" { left = 266; }; + indicator "Misc" { left = 280; }; + text.top= 5; + text.color= "black"; + text "NumLockLabel" { left= 252; text="1"; }; + text "CapsLockLabel" { left= 266; text="A"; }; + text "MiscLabel" { left= 280; text="D"; }; + + text "Logo" { left = 29; top = 10; text="TypeMatrix™"; }; + + // Other decorations: drawings + solid "rainure1" { shape = "DECO"; top = 1; left = 110; color = "grey10";}; + solid "rainure2" { shape = "DECO"; top = 1; left = 115; color = "grey10";}; + solid "rainure3" { shape = "DECO"; top = 1; left = 120; color = "grey10";}; + solid "rainure4" { shape = "DECO"; top = 1; left = 125; color = "grey10";}; + solid "rainure5" { shape = "DECO"; top = 1; left = 130; color = "grey10";}; + solid "rainure6" { shape = "DECO"; top = 1; left = 135; color = "grey10";}; + solid "rainure7" { shape = "DECO"; top = 1; left = 140; color = "grey10";}; + solid "rainure8" { shape = "DECO"; top = 1; left = 145; color = "grey10";}; + solid "rainure9" { shape = "DECO"; top = 1; left = 150; color = "grey10";}; + solid "rainure10" { shape = "DECO"; top = 1; left = 155; color = "grey10";}; + solid "rainure11" { shape = "DECO"; top = 1; left = 160; color = "grey10";}; + solid "rainure12" { shape = "DECO"; top = 1; left = 165; color = "grey10";}; + solid "rainure13" { shape = "DECO"; top = 1; left = 170; color = "grey10";}; +}; // geometry tm2020 + + +xkb_geometry "tm2030_shape" { + // Keyboard total size + width = 320; + height = 130; + // Background / foreground colours + baseColor = "white"; + labelColor = "black"; + + // Key shapes: base key = 20 mm each side + shape "NORM" { cornerRadius=1, { [18, 18] }, { [1.5, 1.5], [16.5, 14] } }; + shape "FUNC" { cornerRadius=1, { [18, 12] }, { [2.5, 0], [15.5, 10] } }; + shape "LFSH" { cornerRadius=1, { [18, 36.5] }, { [2.5, 0], [15.5, 30] } }; + shape "ALT1" { cornerRadius=1, { [27.5, 18] }, { [2.5, 0], [23.5, 14] } }; + shape "BKSP" { cornerRadius=1, { [18, 30.5] }, { [1.5, 1.5], [16.5, 29] } }; + shape "SPCE" { cornerRadius=1, { [92, 25] }, { [1.5, 1.5], [90.5, 22] } }; + shape "LED" { cornerRadius=2, { [4, 4] } }; + shape "PAN1" { cornerRadius=1, { [27, 126.5] } }; + shape "PAN2" { cornerRadius=1, { [92, 13] } }; + + // Other decorations: panels + solid "panneau1" { + shape = "PAN1"; + left = 0; + top = 0; + color = "grey40"; + }; + solid "panneau2" { + shape = "PAN2"; + left = 101.5; + top = 113.5; + color = "grey40"; + }; + + // Leds: they must be put after panels, otherwise the panels overwrite them + indicator.left = 6; + indicator.onColor = "green"; + indicator.offColor = "grey10"; + indicator.shape = "LED"; + + indicator "Num Lock" { top = 11 ; }; + indicator "Caps Lock" { top = 27.5; }; + indicator "Scroll Lock" { top = 44 ; }; + + text.left = 12; + text.color = "black"; + text "NumLockLabel" { top = 11; text="num"; }; + text "CapsLockLabel" { top = 27.5; text="caps"; }; + text "SrollLockLabel" { top = 44; text="scroll"; }; +}; // geometry tm2030_shape + + +xkb_geometry "tm2030_MiscDiod_dvk" { + text "ModeLabel" { left = 12; top = 58; color = "black"; text="Dvorak"; }; +}; + +xkb_geometry "tm2030_MiscDiod_102" { + text "ModeLabel" { left = 12; top = 58; color = "black"; text="102"; }; +}; + +xkb_geometry "tm2030_MiscDiod_106" { + text "ModeLabel" { left = 12; top = 58; color = "black"; text="106"; }; +}; + +xkb_geometry "tm2030_MiscDiod_off" { + indicator "Misc" { left = 6; top = 60.5; shape = "LED"; + offColor = "grey10"; onColor = "grey10"; }; +}; + +xkb_geometry "tm2030_MiscDiod_on" { + indicator "Misc" { left = 6; top = 60.5; shape = "LED"; + offColor = "green"; onColor = "green"; }; +}; + + +xkb_geometry "tm2030USB_func" { + section "Function" { + left = 27; + top = 1.5; + key.gap = 0.5; + key.color = "grey30"; + key.shape = "FUNC"; + row { + keys { , , , , , }; + }; + row { + left = 129.5; + keys { , , , , , , + , }; + }; + }; +}; // geometry tm2030USB_func + + +xkb_geometry "tm2030USB_alpha" { + section "Alpha" { + left = 27; + top = 14; + key.gap = 0.5; + key.color = "grey10"; + key.shape = "NORM"; + row { + top = 0; + keys { , , , , , }; + }; + row { + top = 18.5; + keys { , , , , , }; + }; + row { + top = 37; + keys { { , "LFSH" }, , , , , }; + }; + row { + top = 55.5; + left = 18.5; + keys { , , , , }; + }; + + row { + top = 0; + left = 129.5; + keys { , , , , , , , }; + }; + row { + top = 18.5; + left = 129.5; + keys { , , , , , , , }; + }; + row { + top = 37; + left = 129.5; + keys { , , , , , , { , "LFSH" }, }; + }; + row { + top = 55.5; + left = 129.5; + keys { , , , , , }; + }; + row { + top = 55.5; + left = 259; + keys { }; + }; + row { + top = 74; + left = 74; + keys { { , "SPCE" } }; + }; + }; +}; // geometry tm2030USB_alpha + + +xkb_geometry "tm2030USB_ctrl" { + section "Control" { + left = 27; + top = 0; + key.gap = 0.5; + key.color = "grey30"; + key.shape = "NORM"; + row { + top = 88; + keys { , , , }; + }; + row { + top = 106.5; + keys { , { , "ALT1" }, { , "ALT1" } }; + }; + row { + top = 88; + left = 166.5; + keys { , , , , { , "LFSH"}, }; + }; + row { + top = 106.5; + left = 166.5; + keys { , , , }; + }; + row { + top = 106.5; + left = 259; + keys { }; + }; + row { + top = 1; + left = 111.5; + vertical = true; + keys { , { , "BKSP" }, { , "LFSH" } }; + }; + }; +}; // geometry tm2030USB_ctrl + + +xkb_geometry "tm2030PS2" { + include "typematrix(tm2030_shape)" + include "typematrix(tm2030_MiscDiod_dvk)" + include "typematrix(tm2030_MiscDiod_off)" + + description = "TypeMatrix EZ-Reach 2030 PS2"; + + section "Function" { + left = 27; + top = 1.5; + key.gap = 0.5; + key.color = "grey10"; + key.shape = "FUNC"; + row { + key.color = "grey30"; + keys { }; + }; + row { + left = 18.5; + keys { , , , }; + }; + row { + left = 92.5; + key.color = "grey30"; + keys { }; + }; + row { + left = 129.5; + key.color = "grey30"; + keys { , , }; + }; + row { + left = 185; + keys { , , , }; + }; + row { + left = 259; + key.color = "grey30"; + keys { }; + }; + }; + + section "Alpha" { + left = 27; + top = 14; + key.gap = 0.5; + key.color = "grey10"; + key.shape = "NORM"; + row { + top = 0; + keys { , , , , , }; + }; + row { + top = 18.5; + keys { , , , , , }; + }; + row { + top = 37; + keys { { , "LFSH" }, , , , , }; + }; + row { + top = 55.5; + left = 18.5; + keys { , , , , }; + }; + + row { + top = 0; + left = 129.5; + keys { , , , , , , , }; + }; + row { + top = 18.5; + left = 129.5; + keys { , , }; + }; + row { + top = 18.5; + left = 185; + key.color = "grey30"; + keys { , , , }; + }; + row { + top = 18.5; + left = 259; + keys { }; + }; + row { + top = 37; + left = 129.5; + keys { , , }; + }; + row { + top = 37; + left = 185; + key.color = "grey30"; + keys { , , , { , "LFSH" }, + {, key.color="red"} }; + }; + row { + top = 55.5; + left = 129.5; + keys { , , }; + }; + row { + top = 55.5; + left = 185; + key.color = "grey30"; + keys { , , }; + }; + row { + top = 55.5; + left = 259; + keys { }; + }; + row { + top = 74; + left = 74; + keys { { , "SPCE" } }; + }; + }; + + section "Control" { + left = 27; + top = 0; + key.gap = 0.5; + key.color = "grey10"; + key.shape = "NORM"; + row { + top = 88; + keys { , , , }; + }; + row { + top = 106.5; + keys { , { , "ALT1" }, { , "ALT1" } }; + }; + row { + top = 88; + left = 166.5; + keys { }; + }; + row { + top = 88; + left = 185; + key.color = "grey30"; + keys { , , , { , "LFSH"} }; + }; + row { + top = 88; + left = 259; + keys { }; + }; + row { + top = 106.5; + left = 166.5; + keys { }; + }; + row { + top = 106.5; + left = 185; + key.color = "grey30"; + keys { , , }; + }; + row { + top = 106.5; + left = 259; + keys { }; + }; + row { + top = 1; + left = 111.5; + key.color = "grey10"; + vertical = true; + keys { , { , "BKSP" }, { , "LFSH" } }; + }; + }; +}; // geometry tm2030PS2 + + +xkb_geometry "tm2030USB" { + include "typematrix(tm2030_shape)" + include "typematrix(tm2030_MiscDiod_102)" + include "typematrix(tm2030_MiscDiod_off)" + + description = "TypeMatrix EZ-Reach 2030 USB"; + + include "typematrix(tm2030USB_func)" + include "typematrix(tm2030USB_alpha)" + include "typematrix(tm2030USB_ctrl)" +}; // geometry tm2030USB + + +// European 102/105 keys mode. +// Same as the standard keyboard, except for one key: Play becomes LSGT. +xkb_geometry "tm2030USB-102" { + include "typematrix(tm2030_shape)" + include "typematrix(tm2030_MiscDiod_102)" + include "typematrix(tm2030_MiscDiod_on)" + + description = "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"; + + include "typematrix(tm2030USB_func)" + include "typematrix(tm2030USB_alpha)" + + section "Control" { + left = 27; + top = 0; + key.gap = 0.5; + key.color = "grey30"; + key.shape = "NORM"; + row { + top = 88; + keys { , , , }; + }; + row { + top = 106.5; + keys { , { , "ALT1" }, { , "ALT1" } }; + }; + row { + top = 88; + left = 166.5; + keys { , , , , { , "LFSH"}, }; + }; + row { + top = 106.5; + left = 166.5; + keys { , , , }; + }; + row { + top = 106.5; + left = 259; + keys { }; + }; + row { + top = 1; + left = 111.5; + vertical = true; + keys { , { , "BKSP" }, { , "LFSH" } }; + }; + }; +}; // geometry tm2030USB-102 + + +// Japan / Korean 106 keys mode. +// Same as the standard keyboard, except for the following keys: +// – is replaced by +// – WWW key becomes +// — Calc key becomes +// — key becomes +// — and Mail key becomes + +// About control keys: +// NFER/MEHU and XFER/KANJ: TMx keeps LWIN (and RWIN if it happens to exist). +// HKTG/HIRA: TMx keeps MENU/COMP, but locates this key in alpha section (see above). + +xkb_geometry "tm2030USB-106" { + include "typematrix(tm2030_shape)" + include "typematrix(tm2030_MiscDiod_106)" + include "typematrix(tm2030_MiscDiod_on)" + + description = "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"; + + include "typematrix(tm2030USB_func)" + + section "Alpha" { + left = 27; + top = 14; + key.gap = 0.5; + key.color = "grey10"; + key.shape = "NORM"; + row { + top = 0; + keys { , , , , , }; + }; + row { + top = 18.5; + keys { , , , , , }; + }; + row { + top = 37; + keys { { , "LFSH" }, , , , , }; + }; + row { + top = 55.5; + left = 18.5; + keys { , , , , }; + }; + + row { + top = 0; + left = 129.5; + keys { , , , , , , , }; + }; + row { + top = 18.5; + left = 129.5; + keys { , , , , , , , }; + }; + row { + top = 37; + left = 129.5; + keys { , , , , , , { , "LFSH" }, }; + }; + row { + top = 55.5; + left = 129.5; + keys { , , , , , }; + }; + row { + top = 55.5; + left = 259; + keys { }; + }; + row { + top = 74; + left = 74; + keys { { , "SPCE" } }; + }; + }; + + section "Control" { + left = 27; + top = 0; + key.gap = 0.5; + key.color = "grey30"; + key.shape = "NORM"; + row { + top = 88; + keys { , , , }; + }; + row { + top = 106.5; + keys { , { , "ALT1" }, { , "ALT1" } }; + }; + row { + top = 88; + left = 166.5; + keys { , , , , { , "LFSH"}, }; + }; + row { + top = 106.5; + left = 166.5; + keys { , , , }; + }; + row { + top = 106.5; + left = 259; + keys { }; + }; + row { + top = 1; + left = 111.5; + vertical = true; + keys { , { , "BKSP" }, { , "LFSH" } }; + }; + }; +}; // geometry tm2030USB-106 diff --git a/nixos/xkb/geometry/winbook b/nixos/xkb/geometry/winbook new file mode 100644 index 00000000..db4561c1 --- /dev/null +++ b/nixos/xkb/geometry/winbook @@ -0,0 +1,143 @@ +default xkb_geometry "XP5" { + + description= "WinBook XP5"; + width= 281; + height= 180; + + shape.cornerRadius= 1; + + shape "NORM" { + { [17,17] }, + { [ 2, 1], [ 15, 15 ] } + }; + shape "FKEY" { + { [ 15, 10 ] }, + { [ 1, 0 ], [ 14, 9.5 ] } + }; + shape "ONE" { + { [ 28, 17 ] }, + { [ 11, 0 ], [ 28, 17 ] }, + { [ 13, 1 ], [ 26, 15 ] } + }; + shape "WIDE" { // backspace, caps lock, ctrl alt ? + { [ 24.5, 17 ] }, + { [ 2, 1 ], [ 22.5, 15 ] } + }; + shape "WIDR" { // backslash, left shift + { [ 35, 17 ] }, + { [ 2, 1 ], [ 33, 15 ] } + }; + shape "RTRN" { + { [ 45, 17 ] }, + { [ 2, 1 ], [ 43, 15 ] } + }; + shape "SPCE" { + { [ 90, 17 ] }, + { [ 2, 1 ], [ 88, 15 ] } + }; + shape "STIK" { + cornerRadius= 4, + { [ 8, 8 ] } + }; + shape "BTN" { + { [ 31, 6 ] } + }; + + section.left= 2; + row.left= 1; + key.shape= "NORM"; + key.gap= 0.5; + + key.color= "grey10"; + labelColor= "white"; + baseColor= "grey20"; + + section "Whole" { + top= 10; + row { + top= 11; + key.shape= "FKEY"; + keys { + , + , , , , , , + , , , , , , + , , , + }; + }; + row { + top= 22; + keys { + { , "ONE" }, + , , , , , + , , , , , , + { , shape="WIDE" }, + + }; + }; + row { + top= 40; + keys { + , , , , , , , + , , , , , , + { , "WIDR" } + }; + }; + row { + top= 58; + keys { { , shape="WIDE" }, + , , , , , + , , , , , + , + { , shape="RTRN" } + }; + }; + row { + top= 76; + keys { + { , shape="WIDR" }, + , , , , , + , , , , , + , , + }; + }; + row { + top= 94; + keys { + { , "WIDE" }, , { , "WIDE" }, + , { , shape="SPCE" }, , , + , , + }; + }; + overlay "KPAD" { + =, =, =, =, + =, =, =, =, + =, =, =, =, + =, =, = + }; + }; // End of "Whole" section + + solid "STIK" { + color= "red"; + shape= "STIK"; + top= 81; + left= 112; + }; + + solid "BTN1" { + color= "red"; + shape= "BTN"; + top= 137; + left= 93; + }; + + solid "BTN2" { + color= "red"; + shape= "BTN"; + top= 137; + left= 127; + }; + + alias = ; + alias = ; + +}; diff --git a/nixos/xkb/keycodes/README b/nixos/xkb/keycodes/README new file mode 100644 index 00000000..6363f3d5 --- /dev/null +++ b/nixos/xkb/keycodes/README @@ -0,0 +1,6 @@ +The keycodes component of a keyboard mapping specifies the range and +interpretation of the raw keycodes reported by the device. It sets the keycodes +symbolic name, the minimum and maximum legal codes for the keyboard, and the +symbolic name for each key. The keycodes component might also contain aliases +for some keys, symbolic names for some indicators and a description of which +indicators are physically present. diff --git a/nixos/xkb/keycodes/aliases b/nixos/xkb/keycodes/aliases new file mode 100644 index 00000000..f398772f --- /dev/null +++ b/nixos/xkb/keycodes/aliases @@ -0,0 +1,99 @@ + +// keycode aliases for phonetic keyboard maps + +default +xkb_keycodes "qwerty" { + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_keycodes "azerty" { + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; + +xkb_keycodes "qwertz" { + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; +}; diff --git a/nixos/xkb/keycodes/amiga b/nixos/xkb/keycodes/amiga new file mode 100644 index 00000000..877d94f9 --- /dev/null +++ b/nixos/xkb/keycodes/amiga @@ -0,0 +1,225 @@ +default xkb_keycodes "usa1" { + + minimum= 8; + maximum= 255; + + = 77; + = 88; + = 89; + = 90; + = 91; + = 92; + = 93; + = 94; + = 95; + = 96; + = 97; + + = 8; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 73; + + = 74; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 76; + + = 107; + = 106; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + + = 104; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 105; + + = 108; + = 110; + = 72; + = 111; + = 109; + + = 78; + = 103; + = 84; + = 87; + = 85; + = 86; + + = 98; + = 99; + = 100; + = 101; + + = 69; + = 70; + = 71; + = 82; + + = 53; + = 54; + = 55; + = 102; + + = 37; + = 38; + = 39; + + = 23; + = 68; + = 75; +}; + +xkb_keycodes "de" { + + minimum= 8; + maximum= 255; + + = 77; + = 88; + = 89; + = 90; + = 91; + = 92; + = 93; + = 94; + = 95; + = 96; + = 97; + + = 8; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 73; + + = 74; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 76; + + = 107; + = 106; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + = 51; + + = 104; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 105; + + = 108; + = 110; + = 72; + = 111; + = 109; + + = 78; + = 103; + = 84; + = 87; + = 85; + = 86; + + = 98; + = 99; + = 100; + = 101; + + = 69; + = 70; + = 71; + = 82; + + = 53; + = 54; + = 55; + = 102; + + = 37; + = 38; + = 39; + + = 23; + = 68; + = 75; +}; diff --git a/nixos/xkb/keycodes/ataritt b/nixos/xkb/keycodes/ataritt new file mode 100644 index 00000000..c7df8dd3 --- /dev/null +++ b/nixos/xkb/keycodes/ataritt @@ -0,0 +1,117 @@ +default xkb_keycodes "us" { + + minimum= 8; + maximum= 255; + + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 49; + = 22; + + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + = 91; + + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 51; + + = 50; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + + = 64; + = 65; + = 66; + + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + + = 106; + = 105; + = 90; + = 79; + = 80; + = 83; + = 88; + = 85; + + = 107; + = 108; + = 109; + = 110; + + = 111; + = 112; + = 113; + = 82; + + = 114; + = 115; + = 116; + = 86; + + = 117; + = 118; + = 119; + + = 120; + = 121; + = 122; +}; + +xkb_keycodes "de" { + include "ataritt(us)" + + = 104; +}; diff --git a/nixos/xkb/keycodes/digital_vndr/lk b/nixos/xkb/keycodes/digital_vndr/lk new file mode 100644 index 00000000..a5d96428 --- /dev/null +++ b/nixos/xkb/keycodes/digital_vndr/lk @@ -0,0 +1,270 @@ +// +//Copyright (c) 1996 Digital Equipment Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining +//a copy of this software and associated documentation files (the +//"Software"), to deal in the Software without restriction, including +//without limitation the rights to use, copy, modify, merge, publish, +//distribute, sublicense, and sell copies of the Software, and to +//permit persons to whom the Software is furnished to do so, subject to +//the following conditions: +// +//The above copyright notice and this permission notice shall be included +//in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, +//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +//THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of the Digital Equipment +//Corporation shall not be used in advertising or otherwise to promote +//the sale, use or other dealings in this Software without prior written +//authorization from Digital Equipment Corporation. +// +// HISTORY +// Log +// Revision 1.2 1996/06/18 09:13:22 erik +// use flags correctly, assorted cleanups and consortium fixes +// +// Revision 1.1.6.2 1995/08/07 17:40:34 William_Walker +// Upgrade XKB to protocol 0.62 (dual submit from decx11) +// [1995/08/06 14:06:25 William_Walker] +// +// Revision 1.1.2.4 1995/08/05 15:25:55 William_Walker +// Upgrade to XKB protocol 0.62 +// [1995/08/05 14:39:58 William_Walker] +// +// Revision 1.1.2.3 1995/06/27 12:17:31 William_Walker +// Rename to ISO9995 compliant . +// [1995/06/26 20:24:04 William_Walker] +// +// Revision 1.1.2.2 1995/06/05 19:21:28 William_Walker +// New file. I love keymaps. +// [1995/06/05 18:07:29 William_Walker] +// +// EndLog +// +// @(#)RCSfile: lk Revision: /main/3 (DEC) Date: 1996/01/24 12:13:31 +// +xkb_keycodes "lk_common" { + // "Function" keys + = 86; + = 87; + = 88; + = 89; + = 90; + = 100; + = 101; + = 102; + = 103; + = 104; + = 113; + = 114; + + = 170; + = 167; + = 169; + = 168; + + // "Keypad" keys + = 157; + = 158; + = 159; + = 153; + = 154; + = 155; + = 150; + = 151; + = 152; + = 149; + = 146; + = 148; + + // "Alphanumeric" keys + = 191; + = 192; + = 197; + = 203; + = 208; + = 214; + = 219; + = 224; + = 229; + = 234; + = 239; + = 249; + = 245; + = 188; + + = 190; + = 193; + = 198; + = 204; + = 209; + = 215; + = 220; + = 225; + = 230; + = 235; + = 240; + = 250; + = 246; + = 189; + + = 175; + = 176; + = 194; + = 199; + = 205; + = 210; + = 216; + = 221; + = 226; + = 231; + = 236; + = 242; + = 251; + + = 174; + = 195; + = 200; + = 206; + = 211; + = 217; + = 222; + = 227; + = 232; + = 237; + = 243; + = 171; + + = 212; + + = 255; // Support R5 Lock Down Modifiers + + alias = ; +}; + +xkb_keycodes "lkx01" { + include "digital_vndr/lk(lk_common)" + = 201; + = 115; + = 116; + = 128; + = 129; + = 130; + = 131; + = 124; + = 125; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 161; + = 162; + = 163; + = 164; + = 160; + = 156; + = 247; + = 177; +}; + +xkb_keycodes "lk201" { + include "digital_vndr/lk(lkx01)" + indicator 4 = "Scroll Lock"; + indicator 3 = "Caps Lock"; + indicator 2 = "Compose"; + indicator 1 = "Wait"; +}; + +xkb_keycodes "lk421" { + include "digital_vndr/lk(lkx01)" + = 172; + = 178; + = 173; +}; + +xkb_keycodes "lk401" { + include "digital_vndr/lk(lk421)" + indicator 4 = "Scroll Lock"; + indicator 3 = "Caps Lock"; +}; + +xkb_keycodes "lk44x" { + include "digital_vndr/lk(lk_common)" + = 85; + = 115; + = 116; + = 124; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 161; + = 162; + = 163; + = 164; + = 156; + = 172; + = 178; + = 173; +}; + +xkb_keycodes "lk443" { + include "digital_vndr/lk(lk44x)" + = 247; + indicator 3 = "Caps Lock"; + indicator 4 = "Scroll Lock"; + indicator 5 = "Num Lock"; +}; + +xkb_keycodes "lk444" { + include "digital_vndr/lk(lk44x)" + = 201; + = 247; + indicator 3 = "Caps Lock"; + indicator 4 = "Scroll Lock"; + indicator 5 = "Num Lock"; +}; + +// LK201-LT = lk201 +// LK421-AJ = lk421 +AB11 +// LK421-JJ = lk421aj+MUHE+KANJ+HIRA +// LK401-AJ = lk401 +// LK401-BJ = lk401 +MUHE+KANJ+HIRA +// LK401-JJ = lk401bj+AB11 +// LK401-LT = lk401 +// LK441-LT = lk443 + +xkb_keycodes "lk421aj" { + include "digital_vndr/lk(lk421)" + = 252; +}; + +xkb_keycodes "lk421jj" { + include "digital_vndr/lk(lk421aj)" + = 94; + = 95; + = 97; +}; + +xkb_keycodes "lk401bj" { + include "digital_vndr/lk(lk401)" + = 94; + = 95; + = 97; +}; + +xkb_keycodes "lk401jj" { + include "digital_vndr/lk(lk401bj)" + = 252; +}; diff --git a/nixos/xkb/keycodes/digital_vndr/pc b/nixos/xkb/keycodes/digital_vndr/pc new file mode 100644 index 00000000..d55cdab6 --- /dev/null +++ b/nixos/xkb/keycodes/digital_vndr/pc @@ -0,0 +1,277 @@ +// +//Copyright (c) 1996 Digital Equipment Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining +//a copy of this software and associated documentation files (the +//"Software"), to deal in the Software without restriction, including +//without limitation the rights to use, copy, modify, merge, publish, +//distribute, sublicense, and sell copies of the Software, and to +//permit persons to whom the Software is furnished to do so, subject to +//the following conditions: +// +//The above copyright notice and this permission notice shall be included +//in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, +//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +//THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of the Digital Equipment +//Corporation shall not be used in advertising or otherwise to promote +//the sale, use or other dealings in this Software without prior written +//authorization from Digital Equipment Corporation. +// +// HISTORY +// Log +// Revision 1.2 1996/06/18 09:13:25 erik +// use flags correctly, assorted cleanups and consortium fixes +// +// Revision 1.1.6.3 1995/10/25 21:00:14 William_Walker +// Add pc104-key support +// [1995/10/23 15:46:21 William_Walker] +// +// Revision 1.1.6.2 1995/08/07 17:40:37 William_Walker +// Upgrade XKB to protocol 0.62 (dual submit from decx11) +// [1995/08/06 14:06:28 William_Walker] +// +// Revision 1.1.2.4 1995/08/05 15:25:56 William_Walker +// Upgrade to XKB protocol 0.62 +// [1995/08/05 14:40:02 William_Walker] +// +// Revision 1.1.2.3 1995/06/27 12:17:32 William_Walker +// Rename to ISO9995 compliant . +// [1995/06/26 20:24:07 William_Walker] +// +// Revision 1.1.2.2 1995/06/05 19:21:31 William_Walker +// New file. I love keymaps. +// [1995/06/05 18:07:34 William_Walker] +// +// EndLog +// +// @(#)RCSfile: pc Revision: /main/3 (DEC) Date: 1996/01/24 12:13:36 +// +xkb_keycodes "pc_common" { + // "Function" keys + = 9; + = 15; + = 23; + = 31; + = 39; + = 47; + = 55; + = 63; + = 71; + = 79; + = 86; + = 94; + + // "Editing" keys + + = 99; + = 97; + = 96; + = 106; + + // "Keypad" keys + = 108; + = 117; + = 125; + + = 107; + = 115; + = 116; + + = 105; + = 114; + = 122; + = 121; + + = 112; + = 113; + + // "Alphanumeric" keys + = 22; + = 30; + = 38; + = 37; + = 46; + = 54; + = 61; + = 62; + = 70; + = 69; + = 78; + = 85; + = 102; + + = 13; + = 21; + = 29; + = 36; + = 45; + = 44; + = 53; + = 60; + = 67; + = 68; + = 77; + = 84; + = 91; + + = 20; + = 28; + = 27; + = 35; + = 43; + = 52; + = 51; + = 59; + = 66; + = 75; + = 76; + = 82; + = 90; + + = 18; + = 26; + = 34; + = 33; + = 42; + = 50; + = 49; + = 58; + = 65; + = 73; + = 74; + = 89; + + = 17; + = 25; + = 41; + = 57; + + = 255; // Support R5 Lock Down Modifiers + +}; + +xkb_keycodes "pc10x" { + include "digital_vndr/pc(pc_common)" + = 8; + = 14; + = 87; + = 95; + = 98; + = 103; + = 110; + = 111; + = 100; + = 101; + = 109; + = 118; + = 119; + = 126; + = 132; + = 124; + = 88; + + alias = ; + + indicator 3 = "Caps Lock"; + indicator 4 = "Scroll Lock"; +}; + +xkb_keycodes "pc101" { + include "digital_vndr/pc(pc10x)" + = 92; + indicator 5 = "Num Lock"; +}; + + +xkb_keycodes "pc102" { + include "digital_vndr/pc(pc10x)" + = 19; + = 83; + indicator 5 = "Num Lock"; +}; + +xkb_keycodes "pc104" { + include "digital_vndr/pc(pc101)" + = 139; + = 140; + = 141; +}; + +xkb_keycodes "lk411_common" { + include "digital_vndr/pc(pc_common)" + = 8; + = 14; + = 24; + = 10; + = 16; + = 87; + = 95; + = 98; + = 11; + = 12; + = 110; + = 103; + = 100; + = 101; + = 111; + = 109; + = 118; + = 119; + = 126; + = 132; + = 19; + = 124; + = 40; + = 88; + + alias = ; + + indicator 3 = "Caps Lock"; + indicator 4 = "Scroll Lock"; +}; + +xkb_keycodes "lk411" { + include "digital_vndr/pc(lk411_common)" + = 92; +}; + +xkb_keycodes "lk450" { + include "digital_vndr/pc(lk411)" + indicator 2 = "Compose"; + indicator 1 = "Wait"; +}; + +// Japanese variants +// +// PCXAJ-AA = pc+BKSL+AC12+AB11+MUHE+KANJ+HIRA+indicator +// LK411-AJ = lk411+MUHE+KANJ+HIRA +// LK411-JJ = lk411+BKSL+AZ01+MUHE+KANJ+HIRA +// LK411-LT = lk411 + +xkb_keycodes "pcxajaa" { + include "digital_vndr/pc(pc10x)" + = 93; + = 83; + = 81; + = 133; + = 134; + = 135; + indicator 5 = "Group 2"; +}; + +xkb_keycodes "lk411jj" { + include "digital_vndr/pc(lk411_common)" + = 81; + = 83; + = 133; + = 134; + = 135; +}; diff --git a/nixos/xkb/keycodes/empty b/nixos/xkb/keycodes/empty new file mode 100644 index 00000000..eedc943c --- /dev/null +++ b/nixos/xkb/keycodes/empty @@ -0,0 +1,4 @@ +default xkb_keycodes "empty" { + minimum= 8; + maximum= 255; +}; diff --git a/nixos/xkb/keycodes/evdev b/nixos/xkb/keycodes/evdev new file mode 100644 index 00000000..c2c837fa --- /dev/null +++ b/nixos/xkb/keycodes/evdev @@ -0,0 +1,612 @@ +// translation from evdev scancodes to something resembling xfree86 keycodes. + +default xkb_keycodes "evdev" { + minimum = 8; + maximum = 255; + + = 49; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 51; + = 36; + + = 66; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + alias = ; + + = 50; + = 94; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + + = 37; + = 133; + = 64; + = 65; + = 108; + alias = ; + = 134; + = 135; + alias = ; + = 105; + + = 9; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 95; + = 96; + + = 107; + = 78; + = 127; + + = 118; + = 110; + = 112; + = 119; + = 115; + = 117; + + = 111; + = 113; + = 116; + = 114; + + = 77; + = 106; + = 63; + = 82; + + = 79; + = 80; + = 81; + = 86; + + = 83; + = 84; + = 85; + + = 87; + = 88; + = 89; + = 104; + + = 90; + = 91; + = 125; + + = 191; + = 192; + = 193; + = 194; + = 195; + = 196; + = 197; + = 198; + = 199; + = 200; + = 201; + = 202; + + // Keys that are generated on Japanese keyboards + + alias = ; // Hankaku/Zenkaku toggle + = 101; // Hiragana/Katakana toggle + = 97; // backslash/underscore + = 100; // Henkan + = 102; // Muhenkan + = 132; // Yen + = 98; // Katakana + = 99; // Hiragana + = 103; // KPJPComma + + // Keys that are generated on Korean keyboards + + = 130; // Hangul Latin toggle + = 131; // Hangul to Hanja conversion + + // Solaris compatibility + + alias = ; + alias = ; + = 121; + = 122; + = 123; + = 124; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + alias = ; + alias = ; + alias = ; + alias = ; + + // Extended keys that may be generated on "Internet" keyboards. + // evdev has standardize names for these. + + = 109; // #define KEY_LINEFEED 101 + + // Key codes below are autogenerated + = 120; // #define KEY_MACRO 112 + alias = ; // #define KEY_MUTE 113 + alias = ; // #define KEY_VOLUMEDOWN 114 + alias = ; // #define KEY_VOLUMEUP 115 + alias = ; // #define KEY_POWER 116 + alias = ; // #define KEY_KPEQUAL 117 + = 126; // #define KEY_KPPLUSMINUS 118 + alias = ; // #define KEY_PAUSE 119 + = 128; // #define KEY_SCALE 120 + = 129; // #define KEY_KPCOMMA 121 + alias = ; // #define KEY_HANGEUL 122 + alias = ; // #define KEY_HANJA 123 + alias = ; // #define KEY_YEN 124 + alias = ; // #define KEY_LEFTMETA 125 + alias = ; // #define KEY_RIGHTMETA 126 + alias = ; // #define KEY_COMPOSE 127 + alias = ; // #define KEY_STOP 128 + alias = ; // #define KEY_AGAIN 129 + alias = ; // #define KEY_PROPS 130 + alias = ; // #define KEY_UNDO 131 + alias = ; // #define KEY_FRONT 132 + alias = ; // #define KEY_COPY 133 + alias = ; // #define KEY_OPEN 134 + alias = ; // #define KEY_PASTE 135 + alias = ; // #define KEY_FIND 136 + alias = ; // #define KEY_CUT 137 + alias = ; // #define KEY_HELP 138 + = 147; // #define KEY_MENU 139 + = 148; // #define KEY_CALC 140 + = 149; // #define KEY_SETUP 141 + = 150; // #define KEY_SLEEP 142 + = 151; // #define KEY_WAKEUP 143 + = 152; // #define KEY_FILE 144 + = 153; // #define KEY_SENDFILE 145 + = 154; // #define KEY_DELETEFILE 146 + = 155; // #define KEY_XFER 147 + = 156; // #define KEY_PROG1 148 + = 157; // #define KEY_PROG2 149 + = 158; // #define KEY_WWW 150 + = 159; // #define KEY_MSDOS 151 + = 160; // #define KEY_COFFEE 152 + = 161; // #define KEY_ROTATE_DISPLAY 153 + = 162; // #define KEY_CYCLEWINDOWS 154 + = 163; // #define KEY_MAIL 155 + = 164; // #define KEY_BOOKMARKS 156 + = 165; // #define KEY_COMPUTER 157 + = 166; // #define KEY_BACK 158 + = 167; // #define KEY_FORWARD 159 + = 168; // #define KEY_CLOSECD 160 + = 169; // #define KEY_EJECTCD 161 + = 170; // #define KEY_EJECTCLOSECD 162 + = 171; // #define KEY_NEXTSONG 163 + = 172; // #define KEY_PLAYPAUSE 164 + = 173; // #define KEY_PREVIOUSSONG 165 + = 174; // #define KEY_STOPCD 166 + = 175; // #define KEY_RECORD 167 + = 176; // #define KEY_REWIND 168 + = 177; // #define KEY_PHONE 169 + = 178; // #define KEY_ISO 170 + = 179; // #define KEY_CONFIG 171 + = 180; // #define KEY_HOMEPAGE 172 + = 181; // #define KEY_REFRESH 173 + = 182; // #define KEY_EXIT 174 + = 183; // #define KEY_MOVE 175 + = 184; // #define KEY_EDIT 176 + = 185; // #define KEY_SCROLLUP 177 + = 186; // #define KEY_SCROLLDOWN 178 + = 187; // #define KEY_KPLEFTPAREN 179 + = 188; // #define KEY_KPRIGHTPAREN 180 + = 189; // #define KEY_NEW 181 + = 190; // #define KEY_REDO 182 + alias = ; // #define KEY_F13 183 + alias = ; // #define KEY_F14 184 + alias = ; // #define KEY_F15 185 + alias = ; // #define KEY_F16 186 + alias = ; // #define KEY_F17 187 + alias = ; // #define KEY_F18 188 + alias = ; // #define KEY_F19 189 + alias = ; // #define KEY_F20 190 + alias = ; // #define KEY_F21 191 + alias = ; // #define KEY_F22 192 + alias = ; // #define KEY_F23 193 + alias = ; // #define KEY_F24 194 + = 208; // #define KEY_PLAYCD 200 + = 209; // #define KEY_PAUSECD 201 + = 210; // #define KEY_PROG3 202 + = 211; // #define KEY_PROG4 203 + = 212; // #define KEY_ALL_APPLICATIONS 204 + = 213; // #define KEY_SUSPEND 205 + = 214; // #define KEY_CLOSE 206 + = 215; // #define KEY_PLAY 207 + = 216; // #define KEY_FASTFORWARD 208 + = 217; // #define KEY_BASSBOOST 209 + = 218; // #define KEY_PRINT 210 + = 219; // #define KEY_HP 211 + = 220; // #define KEY_CAMERA 212 + = 221; // #define KEY_SOUND 213 + = 222; // #define KEY_QUESTION 214 + = 223; // #define KEY_EMAIL 215 + = 224; // #define KEY_CHAT 216 + = 225; // #define KEY_SEARCH 217 + = 226; // #define KEY_CONNECT 218 + = 227; // #define KEY_FINANCE 219 + = 228; // #define KEY_SPORT 220 + = 229; // #define KEY_SHOP 221 + = 230; // #define KEY_ALTERASE 222 + = 231; // #define KEY_CANCEL 223 + = 232; // #define KEY_BRIGHTNESSDOWN 224 + = 233; // #define KEY_BRIGHTNESSUP 225 + = 234; // #define KEY_MEDIA 226 + = 235; // #define KEY_SWITCHVIDEOMODE 227 + = 236; // #define KEY_KBDILLUMTOGGLE 228 + = 237; // #define KEY_KBDILLUMDOWN 229 + = 238; // #define KEY_KBDILLUMUP 230 + = 239; // #define KEY_SEND 231 + = 240; // #define KEY_REPLY 232 + = 241; // #define KEY_FORWARDMAIL 233 + = 242; // #define KEY_SAVE 234 + = 243; // #define KEY_DOCUMENTS 235 + = 244; // #define KEY_BATTERY 236 + = 245; // #define KEY_BLUETOOTH 237 + = 246; // #define KEY_WLAN 238 + = 247; // #define KEY_UWB 239 + = 248; // #define KEY_UNKNOWN 240 + = 249; // #define KEY_VIDEO_NEXT 241 + = 250; // #define KEY_VIDEO_PREV 242 + = 251; // #define KEY_BRIGHTNESS_CYCLE 243 + = 252; // #define KEY_BRIGHTNESS_AUTO 244 + = 253; // #define KEY_DISPLAY_OFF 245 + = 254; // #define KEY_WWAN 246 + = 255; // #define KEY_RFKILL 247 + + // Key codes below cannot be used in X + + = 256; // #define KEY_MICMUTE 248 + = 360; // #define KEY_OK 352 + = 361; // #define KEY_SELECT 353 + = 362; // #define KEY_GOTO 354 + = 363; // #define KEY_CLEAR 355 + = 364; // #define KEY_POWER2 356 + = 365; // #define KEY_OPTION 357 + = 366; // #define KEY_INFO 358 + = 367; // #define KEY_TIME 359 + = 368; // #define KEY_VENDOR 360 + = 369; // #define KEY_ARCHIVE 361 + = 370; // #define KEY_PROGRAM 362 + = 371; // #define KEY_CHANNEL 363 + = 372; // #define KEY_FAVORITES 364 + = 373; // #define KEY_EPG 365 + = 374; // #define KEY_PVR 366 + = 375; // #define KEY_MHP 367 + = 376; // #define KEY_LANGUAGE 368 + = 377; // #define KEY_TITLE 369 + = 378; // #define KEY_SUBTITLE 370 + = 379; // #define KEY_ANGLE 371 + = 380; // #define KEY_FULL_SCREEN 372 + = 381; // #define KEY_MODE 373 + = 382; // #define KEY_KEYBOARD 374 + = 383; // #define KEY_ASPECT_RATIO 375 + = 384; // #define KEY_PC 376 + = 385; // #define KEY_TV 377 + = 386; // #define KEY_TV2 378 + = 387; // #define KEY_VCR 379 + = 388; // #define KEY_VCR2 380 + = 389; // #define KEY_SAT 381 + = 390; // #define KEY_SAT2 382 + = 391; // #define KEY_CD 383 + = 392; // #define KEY_TAPE 384 + = 393; // #define KEY_RADIO 385 + = 394; // #define KEY_TUNER 386 + = 395; // #define KEY_PLAYER 387 + = 396; // #define KEY_TEXT 388 + = 397; // #define KEY_DVD 389 + = 398; // #define KEY_AUX 390 + = 399; // #define KEY_MP3 391 + = 400; // #define KEY_AUDIO 392 + = 401; // #define KEY_VIDEO 393 + = 402; // #define KEY_DIRECTORY 394 + = 403; // #define KEY_LIST 395 + = 404; // #define KEY_MEMO 396 + = 405; // #define KEY_CALENDAR 397 + = 406; // #define KEY_RED 398 + = 407; // #define KEY_GREEN 399 + = 408; // #define KEY_YELLOW 400 + = 409; // #define KEY_BLUE 401 + = 410; // #define KEY_CHANNELUP 402 + = 411; // #define KEY_CHANNELDOWN 403 + = 412; // #define KEY_FIRST 404 + = 413; // #define KEY_LAST 405 + = 414; // #define KEY_AB 406 + = 415; // #define KEY_NEXT 407 + = 416; // #define KEY_RESTART 408 + = 417; // #define KEY_SLOW 409 + = 418; // #define KEY_SHUFFLE 410 + = 419; // #define KEY_BREAK 411 + = 420; // #define KEY_PREVIOUS 412 + = 421; // #define KEY_DIGITS 413 + = 422; // #define KEY_TEEN 414 + = 423; // #define KEY_TWEN 415 + = 424; // #define KEY_VIDEOPHONE 416 + = 425; // #define KEY_GAMES 417 + = 426; // #define KEY_ZOOMIN 418 + = 427; // #define KEY_ZOOMOUT 419 + = 428; // #define KEY_ZOOMRESET 420 + = 429; // #define KEY_WORDPROCESSOR 421 + = 430; // #define KEY_EDITOR 422 + = 431; // #define KEY_SPREADSHEET 423 + = 432; // #define KEY_GRAPHICSEDITOR 424 + = 433; // #define KEY_PRESENTATION 425 + = 434; // #define KEY_DATABASE 426 + = 435; // #define KEY_NEWS 427 + = 436; // #define KEY_VOICEMAIL 428 + = 437; // #define KEY_ADDRESSBOOK 429 + = 438; // #define KEY_MESSENGER 430 + = 439; // #define KEY_DISPLAYTOGGLE 431 + = 440; // #define KEY_SPELLCHECK 432 + = 441; // #define KEY_LOGOFF 433 + = 442; // #define KEY_DOLLAR 434 + = 443; // #define KEY_EURO 435 + = 444; // #define KEY_FRAMEBACK 436 + = 445; // #define KEY_FRAMEFORWARD 437 + = 446; // #define KEY_CONTEXT_MENU 438 + = 447; // #define KEY_MEDIA_REPEAT 439 + = 448; // #define KEY_10CHANNELSUP 440 + = 449; // #define KEY_10CHANNELSDOWN 441 + = 450; // #define KEY_IMAGES 442 + = 452; // #define KEY_NOTIFICATION_CENTER 444 + = 453; // #define KEY_PICKUP_PHONE 445 + = 454; // #define KEY_HANGUP_PHONE 446 + = 456; // #define KEY_DEL_EOL 448 + = 457; // #define KEY_DEL_EOS 449 + = 458; // #define KEY_INS_LINE 450 + = 459; // #define KEY_DEL_LINE 451 + = 472; // #define KEY_FN 464 + = 473; // #define KEY_FN_ESC 465 + = 474; // #define KEY_FN_F1 466 + = 475; // #define KEY_FN_F2 467 + = 476; // #define KEY_FN_F3 468 + = 477; // #define KEY_FN_F4 469 + = 478; // #define KEY_FN_F5 470 + = 479; // #define KEY_FN_F6 471 + = 480; // #define KEY_FN_F7 472 + = 481; // #define KEY_FN_F8 473 + = 482; // #define KEY_FN_F9 474 + = 483; // #define KEY_FN_F10 475 + = 484; // #define KEY_FN_F11 476 + = 485; // #define KEY_FN_F12 477 + = 486; // #define KEY_FN_1 478 + = 487; // #define KEY_FN_2 479 + = 488; // #define KEY_FN_D 480 + = 489; // #define KEY_FN_E 481 + = 490; // #define KEY_FN_F 482 + = 491; // #define KEY_FN_S 483 + = 492; // #define KEY_FN_B 484 + = 493; // #define KEY_FN_RIGHT_SHIFT 485 + = 505; // #define KEY_BRL_DOT1 497 + = 506; // #define KEY_BRL_DOT2 498 + = 507; // #define KEY_BRL_DOT3 499 + = 508; // #define KEY_BRL_DOT4 500 + = 509; // #define KEY_BRL_DOT5 501 + = 510; // #define KEY_BRL_DOT6 502 + = 511; // #define KEY_BRL_DOT7 503 + = 512; // #define KEY_BRL_DOT8 504 + = 513; // #define KEY_BRL_DOT9 505 + = 514; // #define KEY_BRL_DOT10 506 + = 520; // #define KEY_NUMERIC_0 512 + = 521; // #define KEY_NUMERIC_1 513 + = 522; // #define KEY_NUMERIC_2 514 + = 523; // #define KEY_NUMERIC_3 515 + = 524; // #define KEY_NUMERIC_4 516 + = 525; // #define KEY_NUMERIC_5 517 + = 526; // #define KEY_NUMERIC_6 518 + = 527; // #define KEY_NUMERIC_7 519 + = 528; // #define KEY_NUMERIC_8 520 + = 529; // #define KEY_NUMERIC_9 521 + = 530; // #define KEY_NUMERIC_STAR 522 + = 531; // #define KEY_NUMERIC_POUND 523 + = 532; // #define KEY_NUMERIC_A 524 + = 533; // #define KEY_NUMERIC_B 525 + = 534; // #define KEY_NUMERIC_C 526 + = 535; // #define KEY_NUMERIC_D 527 + = 536; // #define KEY_CAMERA_FOCUS 528 + = 537; // #define KEY_WPS_BUTTON 529 + = 538; // #define KEY_TOUCHPAD_TOGGLE 530 + = 539; // #define KEY_TOUCHPAD_ON 531 + = 540; // #define KEY_TOUCHPAD_OFF 532 + = 541; // #define KEY_CAMERA_ZOOMIN 533 + = 542; // #define KEY_CAMERA_ZOOMOUT 534 + = 543; // #define KEY_CAMERA_UP 535 + = 544; // #define KEY_CAMERA_DOWN 536 + = 545; // #define KEY_CAMERA_LEFT 537 + = 546; // #define KEY_CAMERA_RIGHT 538 + = 547; // #define KEY_ATTENDANT_ON 539 + = 548; // #define KEY_ATTENDANT_OFF 540 + = 549; // #define KEY_ATTENDANT_TOGGLE 541 + = 550; // #define KEY_LIGHTS_TOGGLE 542 + = 568; // #define KEY_ALS_TOGGLE 560 + = 569; // #define KEY_ROTATE_LOCK_TOGGLE 561 + = 584; // #define KEY_BUTTONCONFIG 576 + = 585; // #define KEY_TASKMANAGER 577 + = 586; // #define KEY_JOURNAL 578 + = 587; // #define KEY_CONTROLPANEL 579 + = 588; // #define KEY_APPSELECT 580 + = 589; // #define KEY_SCREENSAVER 581 + = 590; // #define KEY_VOICECOMMAND 582 + = 591; // #define KEY_ASSISTANT 583 + = 592; // #define KEY_KBD_LAYOUT_NEXT 584 + = 593; // #define KEY_EMOJI_PICKER 585 + = 594; // #define KEY_DICTATE 586 + = 595; // #define KEY_CAMERA_ACCESS_ENABLE 587 + = 596; // #define KEY_CAMERA_ACCESS_DISABLE 588 + = 597; // #define KEY_CAMERA_ACCESS_TOGGLE 589 + = 600; // #define KEY_BRIGHTNESS_MIN 592 + = 601; // #define KEY_BRIGHTNESS_MAX 593 + = 616; // #define KEY_KBDINPUTASSIST_PREV 608 + = 617; // #define KEY_KBDINPUTASSIST_NEXT 609 + = 618; // #define KEY_KBDINPUTASSIST_PREVGROUP 610 + = 619; // #define KEY_KBDINPUTASSIST_NEXTGROUP 611 + = 620; // #define KEY_KBDINPUTASSIST_ACCEPT 612 + = 621; // #define KEY_KBDINPUTASSIST_CANCEL 613 + = 622; // #define KEY_RIGHT_UP 614 + = 623; // #define KEY_RIGHT_DOWN 615 + = 624; // #define KEY_LEFT_UP 616 + = 625; // #define KEY_LEFT_DOWN 617 + = 626; // #define KEY_ROOT_MENU 618 + = 627; // #define KEY_MEDIA_TOP_MENU 619 + = 628; // #define KEY_NUMERIC_11 620 + = 629; // #define KEY_NUMERIC_12 621 + = 630; // #define KEY_AUDIO_DESC 622 + = 631; // #define KEY_3D_MODE 623 + = 632; // #define KEY_NEXT_FAVORITE 624 + = 633; // #define KEY_STOP_RECORD 625 + = 634; // #define KEY_PAUSE_RECORD 626 + = 635; // #define KEY_VOD 627 + = 636; // #define KEY_UNMUTE 628 + = 637; // #define KEY_FASTREVERSE 629 + = 638; // #define KEY_SLOWREVERSE 630 + = 639; // #define KEY_DATA 631 + = 640; // #define KEY_ONSCREEN_KEYBOARD 632 + = 641; // #define KEY_PRIVACY_SCREEN_TOGGLE 633 + = 642; // #define KEY_SELECTIVE_SCREENSHOT 634 + = 643; // #define KEY_NEXT_ELEMENT 635 + = 644; // #define KEY_PREVIOUS_ELEMENT 636 + = 645; // #define KEY_AUTOPILOT_ENGAGE_TOGGLE 637 + = 646; // #define KEY_MARK_WAYPOINT 638 + = 647; // #define KEY_SOS 639 + = 648; // #define KEY_NAV_CHART 640 + = 649; // #define KEY_FISHING_CHART 641 + = 650; // #define KEY_SINGLE_RANGE_RADAR 642 + = 651; // #define KEY_DUAL_RANGE_RADAR 643 + = 652; // #define KEY_RADAR_OVERLAY 644 + = 653; // #define KEY_TRADITIONAL_SONAR 645 + = 654; // #define KEY_CLEARVU_SONAR 646 + = 655; // #define KEY_SIDEVU_SONAR 647 + = 656; // #define KEY_NAV_INFO 648 + = 657; // #define KEY_BRIGHTNESS_MENU 649 + = 664; // #define KEY_MACRO1 656 + = 665; // #define KEY_MACRO2 657 + = 666; // #define KEY_MACRO3 658 + = 667; // #define KEY_MACRO4 659 + = 668; // #define KEY_MACRO5 660 + = 669; // #define KEY_MACRO6 661 + = 670; // #define KEY_MACRO7 662 + = 671; // #define KEY_MACRO8 663 + = 672; // #define KEY_MACRO9 664 + = 673; // #define KEY_MACRO10 665 + = 674; // #define KEY_MACRO11 666 + = 675; // #define KEY_MACRO12 667 + = 676; // #define KEY_MACRO13 668 + = 677; // #define KEY_MACRO14 669 + = 678; // #define KEY_MACRO15 670 + = 679; // #define KEY_MACRO16 671 + = 680; // #define KEY_MACRO17 672 + = 681; // #define KEY_MACRO18 673 + = 682; // #define KEY_MACRO19 674 + = 683; // #define KEY_MACRO20 675 + = 684; // #define KEY_MACRO21 676 + = 685; // #define KEY_MACRO22 677 + = 686; // #define KEY_MACRO23 678 + = 687; // #define KEY_MACRO24 679 + = 688; // #define KEY_MACRO25 680 + = 689; // #define KEY_MACRO26 681 + = 690; // #define KEY_MACRO27 682 + = 691; // #define KEY_MACRO28 683 + = 692; // #define KEY_MACRO29 684 + = 693; // #define KEY_MACRO30 685 + = 696; // #define KEY_MACRO_RECORD_START 688 + = 697; // #define KEY_MACRO_RECORD_STOP 689 + = 698; // #define KEY_MACRO_PRESET_CYCLE 690 + = 699; // #define KEY_MACRO_PRESET1 691 + = 700; // #define KEY_MACRO_PRESET2 692 + = 701; // #define KEY_MACRO_PRESET3 693 + = 704; // #define KEY_KBD_LCD_MENU1 696 + = 705; // #define KEY_KBD_LCD_MENU2 697 + = 706; // #define KEY_KBD_LCD_MENU3 698 + = 707; // #define KEY_KBD_LCD_MENU4 699 + = 708; // #define KEY_KBD_LCD_MENU5 700 + // End of autogenerated key codes + + // Fake keycodes for virtual keys + = 92; + = 203; + alias = ; + = 204; + = 205; + = 206; + = 207; + + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + indicator 4 = "Compose"; + indicator 5 = "Kana"; + indicator 6 = "Sleep"; + indicator 7 = "Suspend"; + indicator 8 = "Mute"; + indicator 9 = "Misc"; + indicator 10 = "Mail"; + indicator 11 = "Charging"; + + // For Brazilian ABNT2 + alias = ; +}; diff --git a/nixos/xkb/keycodes/fujitsu b/nixos/xkb/keycodes/fujitsu new file mode 100644 index 00000000..ca259f80 --- /dev/null +++ b/nixos/xkb/keycodes/fujitsu @@ -0,0 +1,186 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +default xkb_keycodes "138" { + + minimum= 8; + maximum= 255; + + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + = 51; + + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + + = 84; + = 85; + = 86; + = 87; + = 88; + = 89; + = 90; + = 91; + = 92; + = 93; + = 94; + = 95; + = 96; + = 97; + + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + = 52; + = 118; + + = 127; + = 27; + = 128; + = 125; + = 129; + = 10; + = 130; + = 23; + = 75; + = 119; + = 56; + + = 13; + = 14; + = 16; + = 18; + = 20; + = 22; + = 24; + = 25; + = 26; + = 15; + = 17; + = 19; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 153; + = 154; + = 155; + = 156; + = 149; + = 150; + = 151; + = 152; + + = 34; + = 59; + = 81; + = 105; + = 126; + + = 9; + = 30; + = 21; + = 29; + + = 82; + = 83; + = 12; + = 35; + = 32; + = 36; + = 28; + = 74; + = 60; + = 33; + = 103; + = 57; + = 80; + = 11; + + = 55; + = 54; + = 133; + = 79; + + = 76; + = 77; + = 78; + = 53; + + = 99; + = 100; + = 101; + = 58; + + = 120; + = 121; + = 122; + = 98; + + = 102; + = 31; + + = 123; + = 124; +}; diff --git a/nixos/xkb/keycodes/hp b/nixos/xkb/keycodes/hp new file mode 100644 index 00000000..81983a02 --- /dev/null +++ b/nixos/xkb/keycodes/hp @@ -0,0 +1,270 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +default xkb_keycodes "hp-101" { + + = 23; + = 31; + = 39; + = 47; + = 46; + = 55; + = 63; + = 70; + = 71; + = 79; + = 78; + = 87; + = 94; + = 111; + + = 22; + = 30; + = 38; + = 45; + = 54; + = 53; + = 62; + = 69; + = 76; + = 77; + = 86; + = 93; + = 100; + = 101; + + = 29; + = 37; + = 36; + = 44; + = 52; + = 61; + = 60; + = 68; + = 75; + = 84; + = 85; + = 91; + = 99; + + = 27; + = 35; + = 43; + = 42; + = 51; + = 59; + = 58; + = 67; + = 74; + = 82; + = 83; + = 98; + + = 26; + = 34; + = 50; + = 66; + = 97; + + = 17; + = 16; + = 24; + = 32; + = 40; + = 48; + = 56; + = 64; + = 72; + = 80; + = 88; + = 95; + = 103; + + = 96; + = 104; + = 107; + + = 112; + = 119; + = 120; + = 109; + = 110; + = 118; + + = 108; + = 106; + = 105; + = 115; + + = 127; + = 128; + = 135; + = 141; + + = 117; + = 126; + = 134; + = 133; + + = 116; + = 124; + = 125; + + = 114; + = 123; + = 131; + = 130; + + = 121; + = 122; + + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; +}; + +xkb_keycodes "hil" { + + = 71; + = 70; + = 69; + = 68; + = 67; + = 66; + = 65; + = 64; + = 96; + = 97; + = 98; + = 99; + = 100; + = 101; + + = 63; + = 62; + = 61; + = 60; + = 59; + = 58; + = 57; + = 56; + = 104; + = 105; + = 106; + = 107; + = 108; + = 109; + + = 55; + = 53; + = 52; + = 51; + = 50; + = 49; + = 48; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + + = 13; + = 36; + = 35; + = 34; + = 33; + = 32; + = 128; + = 120; + = 121; + = 122; + = 123; + = 12; + + = 14; + = 11; + = 129; + = 10; + = 87; + + = 39; + = 15; + = 86; + = 84; + = 83; + = 82; + = 81; + = 80; + = 88; + = 89; + = 90; + = 91; + = 92; + = 45; + = 41; + = 43; + = 47; + = 94; + = 95; + + = 102; + = 103; + = 110; + = 111; + + = 118; + = 119; + = 127; + = 125; + + = 134; + = 132; + = 133; + = 135; + + = 25; + = 29; + = 27; + = 31; + + = 21; + = 17; + = 19; + = 23; + + = 16; + = 18; + = 20; + = 22; + + = 24; + = 26; + = 28; + = 46; + + = 30; + = 44; +}; diff --git a/nixos/xkb/keycodes/ibm b/nixos/xkb/keycodes/ibm new file mode 100644 index 00000000..9ebf0586 --- /dev/null +++ b/nixos/xkb/keycodes/ibm @@ -0,0 +1,150 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +xkb_keycodes "rs6k-101" { + + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 23; + + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + = 37; + + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 51; + + = 52; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + = 63; + = 65; + + = 66; + = 68; + = 69; + = 70; + = 72; + + = 118; + = 120; + = 121; + = 122; + = 123; + = 124; + = 125; + = 126; + = 127; + = 128; + = 129; + = 130; + = 131; + + = 132; + = 133; + = 134; + + = 83; + = 88; + = 93; + = 84; + = 89; + = 94; + + = 91; + = 87; + = 92; + = 97; + + = 98; + = 103; + = 108; + = 113; + + = 99; + = 104; + = 109; + = 114; + + = 100; + = 105; + = 110; + + = 101; + = 106; + = 111; + = 116; + + = 107; + = 112; + + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; +}; +xkb_keycodes "rs6k-102" { + include "ibm(rs6k-101)" + = 53; +}; diff --git a/nixos/xkb/keycodes/jolla b/nixos/xkb/keycodes/jolla new file mode 100644 index 00000000..1a4d6ac8 --- /dev/null +++ b/nixos/xkb/keycodes/jolla @@ -0,0 +1,10 @@ +default +xkb_keycodes "jolla" { + + // These keycodes are beyond the X11 255 limit value so it would + // only be valid for the use with SW which supports extended keycodes, + // like xkbcommon. + + = 264; // Jolla phone has the wired headset button sending this keycode + +}; diff --git a/nixos/xkb/keycodes/macintosh b/nixos/xkb/keycodes/macintosh new file mode 100644 index 00000000..ed4ce5ed --- /dev/null +++ b/nixos/xkb/keycodes/macintosh @@ -0,0 +1,43 @@ +// +//Copyright (c) 1996 X Consortium +// +//Permission is hereby granted, free of charge, to any person obtaining +//a copy of this software and associated documentation files (the +//"Software"), to deal in the Software without restriction, including +//without limitation the rights to use, copy, modify, merge, publish, +//distribute, sublicense, and/or sell copies of the Software, and to +//permit persons to whom the Software is furnished to do so, subject to +//the following conditions: +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of the X Consortium shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from the X Consortium. +// +// + +// Aluminium Keyboards +xkb_keycodes "alukbd" { + include "xfree86" + + // Fkeys missing in xfree86 keycodes + = 129; + = 130; + + // Eject key that matches the geometry definition + alias = ; + + // Japanese keypad separator (KPSP in base, JPCM in evdev) + alias = ; +}; diff --git a/nixos/xkb/keycodes/olpc b/nixos/xkb/keycodes/olpc new file mode 100644 index 00000000..d8f1ff86 --- /dev/null +++ b/nixos/xkb/keycodes/olpc @@ -0,0 +1,24 @@ + +// OLPC's mechanical keyboard moves several keys to the AA row. make +// them easier to write symbol files naturally. + +// see http://wiki.laptop.org/go/OLPC_English_Non-membrane_Keyboard +// and http://wiki.laptop.org/go/OLPC_Spanish_Non-membrane_Keyboard + +default +xkb_keycodes "olpc" { + + alias = ; // many OLPC keyboards don't put tilde there + alias = ; // on model olpc, physical position of BKSL + +}; + +default +xkb_keycodes "olpcm" { + + alias = ; // many OLPC keyboards don't put tilde there + alias = ; // on model olpcm, new physical position of BKSL + alias = ; // on model olpcm, new physical position of =+ + alias = ; // on model olpcm, new physical position of '" + +}; diff --git a/nixos/xkb/keycodes/sgi_vndr/indigo b/nixos/xkb/keycodes/sgi_vndr/indigo new file mode 100644 index 00000000..1ce551da --- /dev/null +++ b/nixos/xkb/keycodes/sgi_vndr/indigo @@ -0,0 +1,139 @@ +default xkb_keycodes "pc101" { + minimum= 8; + maximum= 255; + + = 62; + = 15; + = 21; + = 22; + = 29; + = 30; + = 37; + = 38; + = 45; + = 46; + = 53; + = 54; + = 61; + = 68; + + = 16; + = 17; + = 23; + = 24; + = 31; + = 32; + = 39; + = 40; + = 47; + = 48; + = 55; + = 56; + = 63; + = 58; + + = 11; + = 18; + = 19; + = 25; + = 26; + = 33; + = 34; + = 41; + = 42; + = 49; + = 50; + = 57; + + = 13; + = 27; + = 28; + = 35; + = 36; + = 43; + = 44; + = 51; + = 52; + = 59; + = 60; + = 12; + = 64; + + = 91; + = 10; + = 90; + = 93; + = 92; + + = 14; + = 94; + = 95; + = 96; + = 97; + = 98; + = 99; + = 100; + = 101; + = 102; + = 103; + = 104; + = 105; + + = 106; + = 107; + = 108; + + = 109; + = 110; + = 111; + = 69; + = 112; + = 113; + + = 88; + = 80; + = 81; + = 87; + + = 114; + = 115; + = 116; + = 83; + + = 74; + = 75; + = 82; + = 117; + + = 70; + = 76; + = 77; + + = 65; + = 71; + = 72; + = 89; + + = 66; + = 73; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + virtual indicator 1 = "L1"; + virtual indicator 2 = "L2"; + virtual indicator 3 = "L3"; + virtual indicator 4 = "L4"; + indicator 5 = "Caps Lock"; + indicator 6 = "Num Lock"; + indicator 7 = "Scroll Lock"; +}; +xkb_keycodes "pc102" { + include "sgi_vndr/indigo(pc101)" + = 118; +}; diff --git a/nixos/xkb/keycodes/sgi_vndr/indy b/nixos/xkb/keycodes/sgi_vndr/indy new file mode 100644 index 00000000..55cb1895 --- /dev/null +++ b/nixos/xkb/keycodes/sgi_vndr/indy @@ -0,0 +1,202 @@ +default xkb_keycodes "universal" { + minimum= 8; + maximum= 255; + include "sgi_vndr/indy(pc105)" + alternate = 91; + alternate = 100; + alternate = 101; +}; +xkb_keycodes "pc101" { + minimum= 8; + maximum= 255; + + = 22; + = 30; + = 38; + = 46; + = 45; + = 54; + = 62; + = 69; + = 70; + = 78; + = 77; + = 86; + = 93; + = 110; + + = 21; + = 29; + = 37; + = 44; + = 53; + = 52; + = 61; + = 68; + = 75; + = 76; + = 85; + = 92; + = 99; + = 98; + + = 28; + = 36; + = 35; + = 43; + = 51; + = 60; + = 59; + = 67; + = 74; + = 83; + = 84; + = 90; + + = 26; + = 34; + = 42; + = 41; + = 50; + = 58; + = 57; + = 66; + = 73; + = 81; + = 82; + = 97; + = 100; + + = 33; + = 25; + = 49; + = 96; + = 65; + + = 16; + = 15; + = 23; + = 31; + = 39; + = 47; + = 55; + = 63; + = 71; + = 79; + = 87; + = 94; + = 102; + + = 95; + = 103; + = 106; + + = 111; + = 118; + = 119; + = 108; + = 109; + = 117; + + = 107; + = 105; + = 104; + = 114; + + = 126; + = 127; + = 134; + = 140; + + = 116; + = 125; + = 133; + = 132; + + = 115; + = 123; + = 124; + + = 113; + = 122; + = 130; + = 129; + + = 120; + = 121; + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + virtual indicator 1 = "L1"; + virtual indicator 2 = "L2"; + virtual indicator 3 = "L3"; + virtual indicator 4 = "L4"; + indicator 5 = "Caps Lock"; + indicator 6 = "Num Lock"; + indicator 7 = "Scroll Lock"; + +}; +xkb_keycodes "pc102" { + = 91; + = 27; + augment "sgi_vndr/indy(pc101)" + maximum= 255; + minimum= 8; +}; +xkb_keycodes "pc104" { + include "sgi_vndr/indy(pc101)" + minimum= 8; + maximum= 255; + + // These key names are here to support so-called "Windows95" + // keyboards like the Microsoft Natural keyboard. + = 147; + = 148; + = 149; +}; +xkb_keycodes "pc105" { + = 27; + augment "sgi_vndr/indy(pc104)" + minimum= 8; + maximum= 255; +}; +xkb_keycodes "jp106" { + = 22; + = 89; + = 91; + = 141; + = 142; + = 143; + alias = ; + alias = ; + alias = ; + augment "sgi_vndr/indy(pc101)" + minimum= 8; + maximum= 255; +}; +// can be combined with any other "indy" keycode +// description to add virtual keys which can be +// used to implement an overlay-based numeric +// keypad. +partial hidden xkb_keycodes "overlayKeypad" { + = 17; + = 18; + = 19; + = 146; + = 145; + = 144; + = 136; + = 137; + = 138; + = 135; + = 139; +}; +partial hidden xkb_keycodes "shiftLock" { + indicator 5 = "Shift Lock"; +}; diff --git a/nixos/xkb/keycodes/sgi_vndr/iris b/nixos/xkb/keycodes/sgi_vndr/iris new file mode 100644 index 00000000..04733471 --- /dev/null +++ b/nixos/xkb/keycodes/sgi_vndr/iris @@ -0,0 +1,10 @@ +default xkb_keycodes "iris" { + include "sgi_vndr/indigo(pc101)" + indicator 1 = "L1"; + indicator 2 = "L2"; + indicator 3 = "L3"; + indicator 4 = "L4"; + indicator 5 = "Caps Lock"; + indicator 6 = "Num Lock"; + indicator 7 = "Scroll Lock"; +}; diff --git a/nixos/xkb/keycodes/sony b/nixos/xkb/keycodes/sony new file mode 100644 index 00000000..5c034711 --- /dev/null +++ b/nixos/xkb/keycodes/sony @@ -0,0 +1,141 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +xkb_keycodes "nwp5461" { + + = 18; + = 19; + = 20; + = 21; + = 22; + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + + = 33; + = 34; + = 35; + = 36; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + + = 47; + = 48; + = 49; + = 50; + = 51; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + + = 74; + = 75; + = 76; + = 77; + = 78; + = 81; + + = 8; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 111; + = 112; + + = 113; + = 114; + = 115; + = 116; + = 117; + + = 109; + = 95; + = 98; + = 99; + = 100; + + = 107; + = 108; + = 89; + + = 82; + = 83; + = 84; + = 85; + + = 86; + = 87; + = 88; + = 93; + + = 90; + = 91; + = 92; + = 97; + + = 94; + = 96; +}; diff --git a/nixos/xkb/keycodes/sun b/nixos/xkb/keycodes/sun new file mode 100644 index 00000000..5a9d2107 --- /dev/null +++ b/nixos/xkb/keycodes/sun @@ -0,0 +1,246 @@ +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// + +xkb_keycodes "type6" { + + minimum= 8; + maximum= 132; + + = 36; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + = 49; + = 50; + + = 60; + = 61; + = 62; + = 63; + = 64; + = 65; + = 66; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 20; + alias = ; + + = 83; + = 84; + = 85; + = 86; + = 87; + = 88; + = 89; + = 90; + = 91; + = 92; + = 93; + = 94; + = 95; + = 96; + + = 106; + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 116; + = 117; + + = 26; + = 126; + = 127; + = 128; + = 129; + + = 12; + = 13; + = 15; + = 17; + = 19; + = 21; + = 23; + = 24; + = 25; + = 14; + = 16; + = 18; + = 8; + = 10; + = 32; + = 33; + = 56; + = 58; + = 79; + = 80; + = 102; + = 104; + + = 29; + = 30; + = 28; + + = 105; + = 53; + = 54; + = 78; + + = 75; + = 76; + = 77; + = 132; + + = 98; + = 99; + = 100; + + = 119; + = 120; + = 121; + = 97; + + = 101; + = 57; + + = 27; + = 31; + = 34; + = 35; + + = 51; + = 59; + = 81; + = 103; + = 130; + = 125; + + = 52; + = 9; + = 11; + = 55; + indicator 4 = "Caps Lock"; + indicator 3 = "Compose"; + indicator 2 = "Scroll Lock"; + indicator 1 = "Num Lock"; +}; + + +xkb_keycodes "type6tuv" { + include "sun(type6)" + = 131; +}; + +xkb_keycodes "type6_jp" { + include "sun(type6)" + = 122; + = 123; + = 124; + = 118; +}; + +xkb_keycodes "type6_euro" { + include "sun(type6)" + = 131; +}; + +xkb_keycodes "type6unix" { + include "sun(type6)" +}; + +// Even though this is labeled as _usb, I verified these keycodes as accurate +// on my type5 serial and type6 serial keyboards as well on linux-2.6 boxes. +// I'm not sure where the "type6" keycodes above are coming from... +default xkb_keycodes "type6_usb" { + include "xfree86" + +// = 232; +// = 133; +// = 134; +// = 135; +// = 140; +// = 248; +// = 191; +// = 192; +// = 122; +// = 188; + + // = 245; + + // The blank has keycode 239 on my type6 serial kb, but 134 on + // my type6 usb keyboard (same as ) +// = 239; + + // AltGr + PrScr actually sends a different keycode +// = 92; + +// = 160; +// = 174; +// = 176; +// = 222; + + = 155; + = 160; + = 235; + + indicator 4 = "Compose"; +}; + +xkb_keycodes "type6tuv_usb" { + include "sun(type6_usb)" +// = 94; +// = 51; +}; + +xkb_keycodes "type6_jp_usb" { + include "sun(type6_usb)" + alias = ; // 123 + alias = ; // 131 + alias = ; // 129 + alias = ; // 208 + indicator 5 = "Kana"; +}; diff --git a/nixos/xkb/keycodes/xfree86 b/nixos/xkb/keycodes/xfree86 new file mode 100644 index 00000000..e4d817b1 --- /dev/null +++ b/nixos/xkb/keycodes/xfree86 @@ -0,0 +1,416 @@ +// "standard" XFree86 codes +// It seems that the "default" must be the first entry in the file. + +default xkb_keycodes "xfree86" { + include "xfree86(basic)" + = 51; + alias = ; + = 94; +}; + +xkb_keycodes "basic" { + + minimum= 8; + maximum= 255; + + = 49; + alias = ; // Some geometries use AE00 + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + + = 66; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + + = 50; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + = 60; + = 61; + = 62; + + = 64; + = 37; + = 65; + = 109; + = 113; + // Microsoft keyboard extra keys + = 115; + = 116; + = 117; + + = 9; + = 67; + = 68; + = 69; + = 70; + = 71; + = 72; + = 73; + = 74; + = 75; + = 76; + = 95; + = 96; + + = 111; + = 92; + = 78; + = 110; + = 114; + + = 106; + = 97; + = 99; + = 107; + = 103; + = 105; + + = 98; + = 100; + = 104; + = 102; + + = 77; + = 112; + = 63; + = 82; + + = 79; + = 80; + = 81; + = 86; + + = 83; + = 84; + = 85; + + = 87; + = 88; + = 89; + = 108; + + = 90; + = 91; + = 126; + + = 118; + = 119; + = 120; + = 121; + = 122; + = 123; + + // Keys that are generated on Japanese keyboards + + alias = ; // Hankaku_Zenkaku toggle + = 208; // Hiragana_Katakana toggle + = 211; // backslash/underscore + = 129; // Henkan + = 131; // Muhenkan + = 133; // Yen + + // Keys that are generated on Japanese and Korean keyboards + + // USB HID Usage Tables 1.3 Lang1. + // IME On on Japanese keyboards. + // Hangul Latin toggle on Korean keyboards. + = 209; + + // USB HID Usage Tables 1.3 Lang2. + // IME Off on Japanese keyboards. + // Hangul to Hanja conversion on Korean keyboards. + = 210; + + // Extended keys that may be generated on "Internet" keyboards. + // These are not standardised, hence the meaningless names. + // The entries commented out are never generated because the raw codes + // in those positions are already used for well-defined keys. + + = 130; + = 132; + alias = ; + = 134; + = 135; + = 136; + = 137; + = 138; + = 139; + = 140; + = 141; + = 142; + = 143; + = 144; + = 145; + = 146; + = 147; + = 148; + = 149; + = 150; + = 151; + = 152; + = 153; + = 154; + = 155; + // = 156; + // = 157; + = 158; + = 159; + = 160; + = 161; + = 162; + = 163; + = 164; + = 165; + = 166; + = 167; + = 168; + = 169; + // = 170; + = 171; + = 172; + = 173; + = 174; + = 175; + = 176; + = 177; + = 178; + = 179; + = 180; + // = 181; + // = 182; + // = 183; + // = 184; + = 185; + = 186; + = 187; + = 188; + // = 189; + // = 190; + // = 191; + // = 192; + // = 193; + = 194; + = 195; + = 196; + = 197; + // = 198; + // = 199; + // = 200; + // = 201; + = 202; + // = 203; + // = 204; + // = 205; + // = 206; + // = 207; + // = 208; + // = 209; + // = 210; + // = 211; + = 212; + = 213; + = 214; + = 215; + = 216; + = 217; + = 218; + // = 219; + // = 220; + // = 221; + = 222; + = 223; + = 224; + = 225; + = 226; + = 227; + = 228; + = 229; + = 230; + = 231; + = 232; + = 233; + = 234; + = 235; + = 236; + = 237; + = 238; + = 239; + = 240; + = 241; + = 242; + = 243; + = 244; + = 245; + = 246; + = 247; + = 248; + = 249; + = 250; + = 251; + = 252; + alias = ; + = 253; + alias = ; + = 254; + = 255; + + // MacBooks generate 0x65 for the lower brightness key + = 101; + + // Required for apple/logitech_g15 keyboard + = 93; + + // Codes generated for scancodes 0x59-0x5f, 0x62-0x76 + = 157; // + = 170; // + = 181; // + alias = ; + = 182; // + = 183; // + = 184; // + = 189; // + = 190; // + = 191; // + = 192; // + = 193; // + = 198; // + = 199; // + = 200; // + = 201; // + = 203; // + = 204; // + = 205; // + = 206; // + = 207; // + alias = ; // + alias = ; // + alias = ; // + alias = ; // + = 219; // + = 220; // + = 221; // + + // Solaris compatibility + + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + alias = ; + + // Other codes never generated. The XFree86 ddx never generates + // these codes. + // Thus we can use them as fake keys + = 8; + alias = ; + = 124; // + = 125; // + = 156; // + = 127; // + = 128; // + + indicator 1 = "Caps Lock"; + indicator 2 = "Num Lock"; + indicator 3 = "Scroll Lock"; + + alias = ; + + // For Brazilian ABNT2 + alias = ; +}; + +// What keyboard is this? + +xkb_keycodes "102" { + include "xfree86(xfree86)" + + // There will be warnings from xkbcomp because of multiple definitions. + + = 122; + = 123; + + = 121; + = 118; + + = 131; + = 135; + = 119; + = 129; + = 130; + = 134; + + = 128; + = 132; + = 120; + = 133; + + = 125; + + = 124; +}; + + +// IBM ThinkPad Z60m/Z60t/Z61m/Z61t +xkb_keycodes "thinkpadz60" { + include "xfree86(xfree86)" + = 227; +}; diff --git a/nixos/xkb/keycodes/xfree98 b/nixos/xkb/keycodes/xfree98 new file mode 100644 index 00000000..734573ae --- /dev/null +++ b/nixos/xkb/keycodes/xfree98 @@ -0,0 +1,152 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +// +default xkb_keycodes "pc98" { + + minimum= 8; + maximum= 255; + + = 8; + = 9; + = 10; + = 11; + = 12; + = 13; + = 14; + = 15; + = 16; + = 17; + = 18; + = 19; + = 20; + = 21; + = 22; + + = 23; + = 24; + = 25; + = 26; + = 27; + = 28; + = 29; + = 30; + = 31; + = 32; + = 33; + = 34; + = 35; + = 36; + + = 124; + = 121; + = 37; + = 38; + = 39; + = 40; + = 41; + = 42; + = 43; + = 44; + = 45; + = 46; + = 47; + = 48; + + = 120; + = 49; + = 50; + = 51; + = 52; + = 53; + = 54; + = 55; + = 56; + = 57; + = 58; + = 59; + + = 122; + = 123; + = 89; + = 60; + = 61; + + = 104; + = 105; + = 106; + = 107; + = 108; + = 109; + = 110; + = 111; + = 112; + = 113; + = 114; + = 115; + = 90; + = 91; + = 92; + = 93; + = 94; + + + = 64; + = 65; + = 63; + = 62; + = 66; + = 67; + = 68; + = 69; + + = 70; + = 71; + + = 72; + = 73; + + = 74; + = 75; + = 76; + = 77; + + = 78; + = 79; + = 80; + = 81; + + = 82; + = 83; + = 84; + = 85; + + = 86; + = 87; + = 88; + + indicator 1 = "Caps Lock"; + indicator 2 = "Kana"; +}; diff --git a/nixos/xkb/rules/README b/nixos/xkb/rules/README new file mode 100644 index 00000000..bcf19ce0 --- /dev/null +++ b/nixos/xkb/rules/README @@ -0,0 +1,2 @@ +This directory lists sets of rules which can be used to obtain an exact XKB +configuration. diff --git a/nixos/xkb/rules/base b/nixos/xkb/rules/base new file mode 100644 index 00000000..3da6eeac --- /dev/null +++ b/nixos/xkb/rules/base @@ -0,0 +1,1010 @@ +// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.py FROM rules/*.part +// +// +// Rules for resolving XKB components for use with XFree86 +// Copyright 1996 by Joseph Moss +// +// 2002 Modifier: Ivan Pascal The XFree86 Project +// + +// If you want non-latin layouts to implicitly include the en_US layout, +// then uncomment the following lines: +//! $nonlatin = af am ara bd bg bt by eg et ge gn gr id il in ir \ +// jp jv kg kh kr kz la lk ma me mk mm mn mv my \ +// pk rs ru sy th tj tz ua uz + +// PC models +! $pcmodels = pc86 pc101 pc102 pc104 pc104alt pc105 + +// Jolla devices and keyboards +! $jollamodels = jollasbj + +// Microsoft models (using MS geometry) +! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose microsoftsurface + +// TypeMatrix geometries +! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106 + +// Country files that provide specializations for the OLPC: +! $olpclayouts = af am ara br ca es et fr in it kh kz mn ng np pk ru th tr us + +! $applealu = applealu_ansi applealu_iso applealu_jis + +! $macvendorlayouts = ch de dk fi fr gb is it latam nl no pt se us + +// The countries that predominantly have AZERTY or QWERTZ layouts: +! $azerty = be fr +! $qwertz = al ch cz de hr hu ro si sk + +! $thinkpads = thinkpad thinkpad60 thinkpadz60 + +! $sun = sun_type6_jp sun_type6_usb sun_type6_euro_usb \ + sun_type6_jp_usb sun_type6_unix_usb sun_type7_jp_usb \ + sun_type7_usb sun_type7_euro_usb sun_type7_unix_usb + +! $sun_jp = sun_type6_jp sun_type6_jp_usb sun_type7_jp_usb + +// Sun Type_6_7 keyboards with custom layouts +! $sun_custom = ara be br ca ch cz de dk \ + ee es fi fr gb gr it jp \ + kr lt lv nl no pl pt ro \ + ru se sk tr tw ua us + +! $sun_var = sun_type6 sun_type6_suncompat sun_type6_de sun_type6_fr \ + sun_type7 sun_type7_suncompat suncompat + +! $sun_compat = sun_type6 sun_type6_suncompat sun_type7_suncompat suncompat + +! $inetkbds = acer_c300 acer_ferrari4k acer_laptop \ + airkey apex300 \ + apple armada azonaRF2300 \ + benqx brother \ + btc5113rf btc9000 btc9000a btc9001ah btc5090 btc9019u \ + cherryblue cherrybluea cherryblueb \ + cherrycyboard cherrycmexpert \ + chicony chicony0108 chicony0420 chicony9885 \ + compalfl90 \ + compaqeak8 compaqik7 compaqik13 compaqik18 \ + creativedw7000 \ + cymotionlinux \ + dell dellm65 dellusbmm \ + emachines ennyah_dkb1008 evdev \ + genius geniuscomfy2 \ + gyration honeywell_euroboard \ + hp250x hp5xx hp500fa hpdv5 \ + hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx \ + ibm_spacesaver inspiron intel ipaq itouch \ + logiaccess logicda logicink logiclx300 \ + logidinovo logidinovoedge logiex110 \ + logiik logiinkse logiinkseusb logiitc \ + logitech_base logitech_g15 logiultrax \ + microsoft4000 microsoft7000 microsoftinet microsoftmult \ + microsoftoffice microsoftprooem microsoftprose microsoftprousb \ + mx1998 mx2500 mx2750 \ + oretec \ + pc105 ppkb presario propeller \ + qtronix \ + rapidaccess rapidaccess2 \ + samsung4500 samsung4510 \ + silvercrest \ + sk1300 sk2500 sk6200 sk7100 \ + sven sven303 symplon \ + teck227 teck229 thinkpad60 \ + toshiba_s3000 trust trustda \ + unitekkb1925 yahoo + +! $inetmediakbds = \ + a4_rfkb23 a4techKB21 a4techKBS8 acer_ferrari4k acer_laptop \ + armada asus_laptop benqx btc5090 btc6301urf btc9019u \ + cherrybluea cherryblueb cherrycyboard chicony042 \ + compalfl90 compaqik13 compaqik18 creativedw7000 \ + cymotionlinux dellm65 dellusbmm dexxa diamond dtk2000 \ + emachines ennyah_dkb1008 fscaa1667g genius geniuscomfy \ + geniuscomfy2 geniuskb19e hp5xx hpdv5 hpi6 hpxe3gc hpxe3gf \ + hpxe4xxx hpxt1000 hpzt11xx inspiron latitude \ + logidinovo logidinovoedge logitech_base logitech_g15 \ + microsoft4000 microsoft7000 microsoftmult microsoftpro \ + microsoftprooem mx1998 mx2500 mx2750 pc105 precision_m \ + presario propeller samsung4500 samsung4510 scorpius \ + silvercrest sk1300 sk2500 sk7100 sp_inet targa_v811 \ + thinkpad thinkpad60 tm2030USB-102 tm2030USB-106 \ + toshiba_s3000 trust trustda trust_slimline unitekkb1925 + +! model = keycodes + amiga = amiga(de) + ataritt = ataritt(de) + empty = empty + $sun_jp = sun(type6_jp_usb) + $sun = sun(type6_usb) + pc98 = xfree98(pc98) + $applealu = macintosh(alukbd) + thinkpadz60 = xfree86(thinkpadz60) + * = xfree86 + +! layout[1] = keycodes + $azerty = +aliases(azerty) + $qwertz = +aliases(qwertz) + * = +aliases(qwerty) + +! layout = keycodes + $azerty = +aliases(azerty) + $qwertz = +aliases(qwertz) + * = +aliases(qwerty) + +! option = keycodes + +! model layout = geometry + thinkpad us = thinkpad(us) + +! model = geometry + microsoftelite = microsoft(elite) + $msmodels = microsoft(natural) + dell101 = dell(dell101) + dellm65 = dell(dellm65) + latitude = dell(latitude) + flexpro = keytronic(FlexPro) + hp6000 = hp(omnibook) + hpmini110 = hp(mini110) + hpdv5 = hp(dv5) + omnikey101 = northgate(omnikey101) + sanwaskbkg3 = sanwa(sanwaskbkg3) + $pcmodels = pc(%m) + everex = everex(STEPnote) + thinkpad = thinkpad(intl) + thinkpad60 = thinkpad(60) + thinkpadz60 = thinkpad(60) + apex300 = steelseries(apex300) + $tmgeometries = typematrix(%m) + winbook = winbook(XP5) + pc98 = nec(pc98) + $applealu = macintosh(%m) + hhk = hhk(basic) + kinesis = kinesis(model100) + sun_type6_jp = sun(type6jp) + sun_type6_usb = sun(type6) + sun_type6_euro_usb = sun(type6tuv) + sun_type6_jp_usb = sun(type6jp) + sun_type6_unix_usb = sun(type6unix) + sun_type7_jp_usb = sun(type6jp) + sun_type7_usb = sun(type7) + sun_type7_euro_usb = sun(type7tuv) + sun_type7_unix_usb = sun(type7unix) + * = pc(pc104) + +! model layout variant = symbols + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * fi basic = pc+fi(classic) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * in urd = pc+in(urd-phonetic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tel basic = pc+in(tel) + * ara uga = pc+ancient(uga) + * ir ave = pc+ancient(ave) + * in eeyek = pc+in(mni) + * in olck = pc+in(sat) + * de lld = pc+it(lldde) + * ara qwerty = pc+ara(basic) + * ara qwerty_digits = pc+ara(digits) + * mao basic = pc+nz(mao) + * gr extended = pc+gr(basic) + * $sun_custom $sun_var = pc+sun_vndr/%l%(v) + +! model layout = symbols + * ben = pc+in(ben) + * dev = pc+in(deva) + * guj = pc+in(guj) + * gur = pc+in(guru) + * kan = pc+in(kan) + * ogham = pc+ie(ogam) + * ori = pc+in(ori) + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * us_intl = pc+us(alt-intl) + * mao(nz(mao)) = pc+//(Delete) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * fi(basic) = pc+fi(classic) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * in(urd) = pc+in(urd-phonetic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tel(basic) = pc+in(tel) + * ara(uga) = pc+ancient(uga) + * ir(ave) = pc+ancient(ave) + * in(eeyek) = pc+in(mni) + * in(olck) = pc+in(sat) + * de(lld) = pc+it(lldde) + * ara(qwerty) = pc+ara(basic) + * ara(qwerty_digits) = pc+ara(digits) + * mao(basic) = pc+nz(mao) + * gr(extended) = pc+gr(basic) + +! model layout = symbols + ataritt $nonlatin = xfree68_vndr/ataritt(us)+%l%(v):2 + ataritt * = xfree68_vndr/ataritt(us)+%l%(v) + amiga $nonlatin = xfree68_vndr/amiga(usa1)+%l%(v):2 + amiga * = xfree68_vndr/amiga(usa1)+%l%(v) + empty * = empty(basic) + * empty = empty(basic) + jollasbj $nonlatin = jolla_vndr/sbj(common)+us+%l%(v):2 + jollasbj * = jolla_vndr/sbj(common)+%l%(v) + $sun $sun_custom = pc+sun_vndr/%l%(v) + pc98 nec_vndr/jp = nec_vndr/jp(pc98) + applealu_jis jp = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)+macintosh_vndr/jp(mac):2 + applealu_jis * = macintosh_vndr/apple(alukbd)+%l%(v)+macintosh_vndr/jp(mac):2 + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l%(v) + $applealu * = macintosh_vndr/apple(alukbd)+%l%(v) + olpc $olpclayouts = olpc+%l%(m) + olpc * = olpc+%l%(v) + olpcm $olpclayouts = olpc+%l%(m) + olpcm * = olpc+%l%(v) + $thinkpads br = pc+br(thinkpad) + sl-c3x00 * = pc+sharp_vndr/sl-c3x00(basic) + ws003sh * = pc+sharp_vndr/ws003sh(basic) + ws007sh * = pc+sharp_vndr/ws007sh(basic) + ws011sh * = pc+sharp_vndr/ws011sh(basic) + ws020sh * = pc+sharp_vndr/ws020sh(basic) + * $nonlatin = pc+us+%l%(v):2 + * * = pc+%l%(v) + +! model layout[1] = symbols + * ben = pc+in(ben) + * dev = pc+in(deva) + * guj = pc+in(guj) + * gur = pc+in(guru) + * kan = pc+in(kan) + * ogham = pc+ie(ogam) + * ori = pc+in(ori) + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * us_intl = pc+us(alt-intl) + * mao(nz(mao)) = pc+//(Delete) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * fi(basic) = pc+fi(classic) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * in(urd) = pc+in(urd-phonetic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tel(basic) = pc+in(tel) + * ara(uga) = pc+ancient(uga) + * ir(ave) = pc+ancient(ave) + * in(eeyek) = pc+in(mni) + * in(olck) = pc+in(sat) + * de(lld) = pc+it(lldde) + * ara(qwerty) = pc+ara(basic) + * ara(qwerty_digits) = pc+ara(digits) + * mao(basic) = pc+nz(mao) + * gr(extended) = pc+gr(basic) + +! model layout[1] = symbols + ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1]) + amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1]) + jollasbj * = jolla_vndr/sbj(common)+%l[1]%(v[1]) + $sun $sun_custom = pc+sun_vndr/%l[1]%(v[1]) + applealu_jis us = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac) + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l[1]%(v[1]) + $applealu * = macintosh_vndr/apple(alukbd)+%l[1]%(v[1]) + $thinkpads br = pc+%l[1](thinkpad) + * * = pc+%l[1]%(v[1]) + +! model layout[1] variant[1] = symbols + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * fi basic = pc+fi(classic) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * in urd = pc+in(urd-phonetic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tel basic = pc+in(tel) + * ara uga = pc+ancient(uga) + * ir ave = pc+ancient(ave) + * in eeyek = pc+in(mni) + * in olck = pc+in(sat) + * de lld = pc+it(lldde) + * ara qwerty = pc+ara(basic) + * ara qwerty_digits = pc+ara(digits) + * mao basic = pc+nz(mao) + * gr extended = pc+gr(basic) + +! model layout[2] = symbols + * ben = +in(ben):2 + * dev = +in(deva):2 + * guj = +in(guj):2 + * gur = +in(guru):2 + * kan = +in(kan):2 + * ogham = +ie(ogam):2 + * ori = +in(ori):2 + * syr = +sy(syc):2 + * tel = +in(tel):2 + * tml = +in(tam):2 + * us_intl = +us(alt-intl):2 + * mao(nz(mao)) = +//(Delete):2 + * ben(basic) = +in(ben):2 + * ben(probhat) = +in(ben_probhat):2 + * dev(basic) = +in(deva):2 + * fi(basic) = +fi(classic):2 + * guj(basic) = +in(guj):2 + * gur(basic) = +in(guru):2 + * in(urd) = +in(urd-phonetic):2 + * kan(basic) = +in(kan):2 + * mal(basic) = +in(mal):2 + * ogham(basic) = +ie(ogam):2 + * ogham(is434) = +ie(ogam_is434):2 + * ori(basic) = +in(ori):2 + * ro(de) = +ro(winkeys):2 + * ro(us) = +ro(std):2 + * ro(academic) = +ro(std):2 + * ro(std_comma) = +ro(std):2 + * ro(comma) = +ro(basic):2 + * ru(os) = +ru(os_legacy):2 + * pk(urd) = +pk(urd-phonetic):2 + * syr(basic) = +sy(syc):2 + * syr(phonetic) = +sy(syc_phonetic):2 + * tel(basic) = +in(tel):2 + * ara(uga) = +ancient(uga):2 + * ir(ave) = +ancient(ave):2 + * in(eeyek) = +in(mni):2 + * in(olck) = +in(sat):2 + * de(lld) = +it(lldde):2 + * ara(qwerty) = +ara(basic):2 + * ara(qwerty_digits) = +ara(digits):2 + * mao(basic) = +nz(mao):2 + * gr(extended) = +gr(basic):2 + $sun $sun_custom = +sun_vndr/%l[2]%(v[2]):2 + * * = +%l[2]%(v[2]):2 + +! model layout[3] = symbols + * ben = +in(ben):3 + * dev = +in(deva):3 + * guj = +in(guj):3 + * gur = +in(guru):3 + * kan = +in(kan):3 + * ogham = +ie(ogam):3 + * ori = +in(ori):3 + * syr = +sy(syc):3 + * tel = +in(tel):3 + * tml = +in(tam):3 + * us_intl = +us(alt-intl):3 + * mao(nz(mao)) = +//(Delete):3 + * ben(basic) = +in(ben):3 + * ben(probhat) = +in(ben_probhat):3 + * dev(basic) = +in(deva):3 + * fi(basic) = +fi(classic):3 + * guj(basic) = +in(guj):3 + * gur(basic) = +in(guru):3 + * in(urd) = +in(urd-phonetic):3 + * kan(basic) = +in(kan):3 + * mal(basic) = +in(mal):3 + * ogham(basic) = +ie(ogam):3 + * ogham(is434) = +ie(ogam_is434):3 + * ori(basic) = +in(ori):3 + * ro(de) = +ro(winkeys):3 + * ro(us) = +ro(std):3 + * ro(academic) = +ro(std):3 + * ro(std_comma) = +ro(std):3 + * ro(comma) = +ro(basic):3 + * ru(os) = +ru(os_legacy):3 + * pk(urd) = +pk(urd-phonetic):3 + * syr(basic) = +sy(syc):3 + * syr(phonetic) = +sy(syc_phonetic):3 + * tel(basic) = +in(tel):3 + * ara(uga) = +ancient(uga):3 + * ir(ave) = +ancient(ave):3 + * in(eeyek) = +in(mni):3 + * in(olck) = +in(sat):3 + * de(lld) = +it(lldde):3 + * ara(qwerty) = +ara(basic):3 + * ara(qwerty_digits) = +ara(digits):3 + * mao(basic) = +nz(mao):3 + * gr(extended) = +gr(basic):3 + $sun $sun_custom = +sun_vndr/%l[3]%(v[3]):3 + * * = +%l[3]%(v[3]):3 + +! model layout[4] = symbols + * ben = +in(ben):4 + * dev = +in(deva):4 + * guj = +in(guj):4 + * gur = +in(guru):4 + * kan = +in(kan):4 + * ogham = +ie(ogam):4 + * ori = +in(ori):4 + * syr = +sy(syc):4 + * tel = +in(tel):4 + * tml = +in(tam):4 + * us_intl = +us(alt-intl):4 + * mao(nz(mao)) = +//(Delete):4 + * ben(basic) = +in(ben):4 + * ben(probhat) = +in(ben_probhat):4 + * dev(basic) = +in(deva):4 + * fi(basic) = +fi(classic):4 + * guj(basic) = +in(guj):4 + * gur(basic) = +in(guru):4 + * in(urd) = +in(urd-phonetic):4 + * kan(basic) = +in(kan):4 + * mal(basic) = +in(mal):4 + * ogham(basic) = +ie(ogam):4 + * ogham(is434) = +ie(ogam_is434):4 + * ori(basic) = +in(ori):4 + * ro(de) = +ro(winkeys):4 + * ro(us) = +ro(std):4 + * ro(academic) = +ro(std):4 + * ro(std_comma) = +ro(std):4 + * ro(comma) = +ro(basic):4 + * ru(os) = +ru(os_legacy):4 + * pk(urd) = +pk(urd-phonetic):4 + * syr(basic) = +sy(syc):4 + * syr(phonetic) = +sy(syc_phonetic):4 + * tel(basic) = +in(tel):4 + * ara(uga) = +ancient(uga):4 + * ir(ave) = +ancient(ave):4 + * in(eeyek) = +in(mni):4 + * in(olck) = +in(sat):4 + * de(lld) = +it(lldde):4 + * ara(qwerty) = +ara(basic):4 + * ara(qwerty_digits) = +ara(digits):4 + * mao(basic) = +nz(mao):4 + * gr(extended) = +gr(basic):4 + $sun $sun_custom = +sun_vndr/%l[4]%(v[4]):4 + * * = +%l[4]%(v[4]):4 + +! model layout[2] variant[2] = symbols + * ben basic = +in(ben):2 + * ben probhat = +in(ben_probhat):2 + * dev basic = +in(deva):2 + * fi basic = +fi(classic):2 + * guj basic = +in(guj):2 + * gur basic = +in(guru):2 + * in urd = +in(urd-phonetic):2 + * kan basic = +in(kan):2 + * mal basic = +in(mal):2 + * ogham basic = +ie(ogam):2 + * ogham is434 = +ie(ogam_is434):2 + * ori basic = +in(ori):2 + * ro de = +ro(winkeys):2 + * ro us = +ro(std):2 + * ro academic = +ro(std):2 + * ro std_comma = +ro(std):2 + * ro comma = +ro(basic):2 + * ru os = +ru(os_legacy):2 + * pk urd = +pk(urd-phonetic):2 + * syr basic = +sy(syc):2 + * syr phonetic = +sy(syc_phonetic):2 + * tel basic = +in(tel):2 + * ara uga = +ancient(uga):2 + * ir ave = +ancient(ave):2 + * in eeyek = +in(mni):2 + * in olck = +in(sat):2 + * de lld = +it(lldde):2 + * ara qwerty = +ara(basic):2 + * ara qwerty_digits = +ara(digits):2 + * mao basic = +nz(mao):2 + * gr extended = +gr(basic):2 + +! model layout[3] variant[3] = symbols + * ben basic = +in(ben):3 + * ben probhat = +in(ben_probhat):3 + * dev basic = +in(deva):3 + * fi basic = +fi(classic):3 + * guj basic = +in(guj):3 + * gur basic = +in(guru):3 + * in urd = +in(urd-phonetic):3 + * kan basic = +in(kan):3 + * mal basic = +in(mal):3 + * ogham basic = +ie(ogam):3 + * ogham is434 = +ie(ogam_is434):3 + * ori basic = +in(ori):3 + * ro de = +ro(winkeys):3 + * ro us = +ro(std):3 + * ro academic = +ro(std):3 + * ro std_comma = +ro(std):3 + * ro comma = +ro(basic):3 + * ru os = +ru(os_legacy):3 + * pk urd = +pk(urd-phonetic):3 + * syr basic = +sy(syc):3 + * syr phonetic = +sy(syc_phonetic):3 + * tel basic = +in(tel):3 + * ara uga = +ancient(uga):3 + * ir ave = +ancient(ave):3 + * in eeyek = +in(mni):3 + * in olck = +in(sat):3 + * de lld = +it(lldde):3 + * ara qwerty = +ara(basic):3 + * ara qwerty_digits = +ara(digits):3 + * mao basic = +nz(mao):3 + * gr extended = +gr(basic):3 + +! model layout[4] variant[4] = symbols + * ben basic = +in(ben):4 + * ben probhat = +in(ben_probhat):4 + * dev basic = +in(deva):4 + * fi basic = +fi(classic):4 + * guj basic = +in(guj):4 + * gur basic = +in(guru):4 + * in urd = +in(urd-phonetic):4 + * kan basic = +in(kan):4 + * mal basic = +in(mal):4 + * ogham basic = +ie(ogam):4 + * ogham is434 = +ie(ogam_is434):4 + * ori basic = +in(ori):4 + * ro de = +ro(winkeys):4 + * ro us = +ro(std):4 + * ro academic = +ro(std):4 + * ro std_comma = +ro(std):4 + * ro comma = +ro(basic):4 + * ru os = +ru(os_legacy):4 + * pk urd = +pk(urd-phonetic):4 + * syr basic = +sy(syc):4 + * syr phonetic = +sy(syc_phonetic):4 + * tel basic = +in(tel):4 + * ara uga = +ancient(uga):4 + * ir ave = +ancient(ave):4 + * in eeyek = +in(mni):4 + * in olck = +in(sat):4 + * de lld = +it(lldde):4 + * ara qwerty = +ara(basic):4 + * ara qwerty_digits = +ara(digits):4 + * mao basic = +nz(mao):4 + * gr extended = +gr(basic):4 + +! model = symbols + a4techKB21 = +inet(media_nav_common) + a4techKBS8 = +inet(media_nav_acpi_common) + a4_rfkb23 = +inet(media_nav_acpi_common) + asus_laptop = +inet(media_common) + acer_tm_800 = +inet(acer_laptop) + benqx730 = +inet(benqx) + benqx800 = +inet(benqx) + btc5126t = +inet(nav_acpi_common) + btc9116u = +inet(btc9019u) + btc6301urf = +inet(media_nav_acpi_common) + chromebook = +inet(chromebook) + dellsk8125 = +inet(dell) + dellsk8135 = +inet(dell) + cherrybunlim = +inet(nav_common) + dexxa = +inet(media_nav_common) + dtk2000 = +inet(media_nav_acpi_common) + fscaa1667g = +inet(media_nav_common) + geniuskb19e = +inet(media_nav_acpi_common) + geniuscomfy = +inet(media_nav_acpi_common) + geniuskkb2050hs = +inet(dellusbmm) + hpnx9020 = +inet(hpi6) + latitude = +inet(media_common) + logicd = +inet(logitech_base) + logicd_it = +inet(logitech_base) + logicd_nav = +inet(logitech_base) + logicd_opt = +inet(logitech_base) + logiultrax = +inet(logitech_base) + logiclx300 = +inet(logiex110) + logii350 = +inet(logiex110) + logimel = +inet(logiex110) + logicdpa = +inet(logicda) + logiciink = +inet(logicink) + ltcd = +inet(logicda) + microsoftccurve2k = +inet(microsoftprooem) + microsoftpro = +inet(media_nav_acpi_common) + precision_m = +inet(media_nav_common) + scorpius = +inet(media_nav_acpi_common) + sp_inet = +inet(media_nav_acpi_common) + targa_v811 = +inet(media_nav_acpi_common) + thinkpad = +inet(media_nav_common) + thinkpadz60 = +inet(thinkpad60) + tm2030USB-102 = +inet(media_nav_acpi_common) + tm2030USB-106 = +inet(media_nav_acpi_common) + trust_slimline = +inet(media_nav_acpi_common) + vsonku306 = +inet(microsoftprooem) + $inetkbds = +inet(%m) + $applealu = +inet(apple) + sun_type7_jp_usb = +sun_vndr/solaris(defaults_type7jp) + $sun = +sun_vndr/solaris(defaults) + +! model layout = symbols + $inetmediakbds jp = +jp(henkan) + +! layout variant = compat + de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de koy = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone_eszett_home = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwertz = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwerty = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + jp $sun_compat = complete+japan(kana_lock) + +! layout[1] variant[1] = compat + de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de koy = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone_eszett_home = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwertz = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwerty = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + jp $sun_compat = complete+japan(kana_lock) + +! layout[2] variant[2] = compat + de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de adnw = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de koy = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de bone = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de bone_eszett_home = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de neo_qwertz = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de neo_qwerty = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + jp $sun_compat = +complete+japan(kana_lock):2 + +! layout[3] variant[3] = compat + de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de adnw = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de koy = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de bone = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de bone_eszett_home = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de neo_qwertz = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de neo_qwerty = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + jp $sun_compat = +complete+japan(kana_lock):3 + +! layout[4] variant[4] = compat + de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de adnw = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de koy = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de bone = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de bone_eszett_home = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de neo_qwertz = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de neo_qwerty = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + jp $sun_compat = +complete+japan(kana_lock):4 + +! model layout = compat + pc98 nec_vndr/jp = pc98(basic) + * jp = complete+japan + olpc * = olpc + olpcm * = olpc + * * = complete + +! model layout[1] = compat + * * = complete + +! model = types + $applealu = complete+numpad(mac) + * = complete + +! layout option = symbols + * misc:apl = +apl(level3) + * misc:typo = +typo(base) + * lv3:ralt_alt = +level3(ralt_alt) + * grp:toggle = +group(toggle) + * grp:alts_toggle = +group(alts_toggle) + * grp:alt_altgr_toggle = +group(alt_altgr_toggle) + * grp:alt_space_toggle = +group(alt_space_toggle) + * grp:win_space_toggle = +group(win_space_toggle) + * grp:ctrl_space_toggle = +group(ctrl_space_toggle) + * grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle) + * grp:shifts_toggle = +group(shifts_toggle) + $azerty caps:digits_row = +capslock(digits_row) + +! layout[1] option = symbols + * misc:apl = +apl(level3):1 + * misc:typo = +typo(base):1 + * lv3:ralt_alt = +level3(ralt_alt):1 + * grp:toggle = +group(toggle):1 + * grp:alts_toggle = +group(alts_toggle):1 + * grp:alt_altgr_toggle = +group(alt_altgr_toggle):1 + * grp:alt_space_toggle = +group(alt_space_toggle):1 + * grp:win_space_toggle = +group(win_space_toggle):1 + * grp:ctrl_space_toggle = +group(ctrl_space_toggle):1 + * grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle):1 + * grp:shifts_toggle = +group(shifts_toggle):1 + $azerty caps:digits_row = +capslock(digits_row):1 + +! layout[2] option = symbols + * misc:apl = +apl(level3):2 + * misc:typo = +typo(base):2 + * lv3:ralt_alt = +level3(ralt_alt):2 + * grp:toggle = +group(toggle):2 + * grp:alts_toggle = +group(alts_toggle):2 + * grp:alt_altgr_toggle = +group(alt_altgr_toggle):2 + * grp:alt_space_toggle = +group(alt_space_toggle):2 + * grp:win_space_toggle = +group(win_space_toggle):2 + * grp:ctrl_space_toggle = +group(ctrl_space_toggle):2 + * grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle):2 + * grp:shifts_toggle = +group(shifts_toggle):2 + $azerty caps:digits_row = +capslock(digits_row):2 + +! layout[3] option = symbols + * misc:apl = +apl(level3):3 + * misc:typo = +typo(base):3 + * lv3:ralt_alt = +level3(ralt_alt):3 + * grp:toggle = +group(toggle):3 + * grp:alts_toggle = +group(alts_toggle):3 + * grp:alt_altgr_toggle = +group(alt_altgr_toggle):3 + * grp:alt_space_toggle = +group(alt_space_toggle):3 + * grp:win_space_toggle = +group(win_space_toggle):3 + * grp:ctrl_space_toggle = +group(ctrl_space_toggle):3 + * grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle):3 + * grp:shifts_toggle = +group(shifts_toggle):3 + $azerty caps:digits_row = +capslock(digits_row):3 + +! layout[4] option = symbols + * misc:apl = +apl(level3):4 + * misc:typo = +typo(base):4 + * lv3:ralt_alt = +level3(ralt_alt):4 + * grp:toggle = +group(toggle):4 + * grp:alts_toggle = +group(alts_toggle):4 + * grp:alt_altgr_toggle = +group(alt_altgr_toggle):4 + * grp:alt_space_toggle = +group(alt_space_toggle):4 + * grp:win_space_toggle = +group(win_space_toggle):4 + * grp:ctrl_space_toggle = +group(ctrl_space_toggle):4 + * grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle):4 + * grp:shifts_toggle = +group(shifts_toggle):4 + $azerty caps:digits_row = +capslock(digits_row):4 + +! option = symbols + grp:shift_caps_switch = +group(caps_select) + grp:win_menu_switch = +group(win_menu_select) + grp:lctrl_rctrl_switch = +group(ctrl_select) +// Delete the above three aliases in July 2027. + ctrl:swapcaps_hyper = +ctrl(hyper_capscontrol) + ctrl:swapcaps_and_switch_layout = +ctrl(swapcaps)+group(lctrl_toggle) +// Delete the above two aliases in September 2027. + altwin:alt_super_win = +altwin(alt_super_win) + altwin:alt_win = +altwin(alt_win) + altwin:ctrl_alt_win = +altwin(ctrl_alt_win) + altwin:ctrl_rwin = +altwin(ctrl_rwin) + altwin:ctrl_win = +altwin(ctrl_win) + altwin:hyper_win = +altwin(hyper_win) + altwin:left_meta_win = +altwin(left_meta_win) + altwin:menu = +altwin(menu) + altwin:menu_win = +altwin(menu_win) + altwin:meta_alt = +altwin(meta_alt) + altwin:meta_win = +altwin(meta_win) + altwin:prtsc_rwin = +altwin(prtsc_rwin) + altwin:swap_alt_win = +altwin(swap_alt_win) + altwin:swap_lalt_lwin = +altwin(swap_lalt_lwin) + apple:alupckeys = +macintosh_vndr/apple(alupckeys) + apple:jp_oadg109a = +macintosh_vndr/apple(jp_oadg109a) + apple:jp_pc106 = +macintosh_vndr/apple(jp_pc106) + caps:backspace = +capslock(backspace) + caps:capslock = +capslock(capslock) + caps:ctrl_modifier = +capslock(ctrl_modifier) + caps:escape = +capslock(escape) + caps:escape_shifted_capslock = +capslock(escape_shifted_capslock) + caps:escape_shifted_compose = +capslock(escape_shifted_compose) + caps:hyper = +capslock(hyper) + caps:menu = +capslock(menu) + caps:none = +capslock(none) + caps:numlock = +capslock(numlock) + caps:shiftlock = +capslock(shiftlock) + caps:super = +capslock(super) + caps:swapescape = +capslock(swapescape) + compose:102 = +compose(102) + compose:102-altgr = +compose(102-altgr) + compose:caps = +compose(caps) + compose:caps-altgr = +compose(caps-altgr) + compose:ins = +compose(ins) + compose:lctrl = +compose(lctrl) + compose:lctrl-altgr = +compose(lctrl-altgr) + compose:lwin = +compose(lwin) + compose:lwin-altgr = +compose(lwin-altgr) + compose:menu = +compose(menu) + compose:menu-altgr = +compose(menu-altgr) + compose:paus = +compose(paus) + compose:prsc = +compose(prsc) + compose:ralt = +compose(ralt) + compose:rctrl = +compose(rctrl) + compose:rctrl-altgr = +compose(rctrl-altgr) + compose:rwin = +compose(rwin) + compose:rwin-altgr = +compose(rwin-altgr) + compose:sclk = +compose(sclk) + ctrl:aa_ctrl = +ctrl(aa_ctrl) + ctrl:ac_ctrl = +ctrl(ac_ctrl) + ctrl:grouptoggle_capscontrol = +ctrl(grouptoggle_capscontrol) + ctrl:hyper_capscontrol = +ctrl(hyper_capscontrol) + ctrl:lctrl_meta = +ctrl(lctrl_meta) + ctrl:menu_rctrl = +ctrl(menu_rctrl) + ctrl:nocaps = +ctrl(nocaps) + ctrl:ralt_rctrl = +ctrl(ralt_rctrl) + ctrl:rctrl_ralt = +ctrl(rctrl_ralt) + ctrl:swap_lalt_lctl = +ctrl(swap_lalt_lctl) + ctrl:swap_lalt_lctl_lwin = +ctrl(swap_lalt_lctl_lwin) + ctrl:swap_lwin_lctl = +ctrl(swap_lwin_lctl) + ctrl:swap_ralt_rctl = +ctrl(swap_ralt_rctl) + ctrl:swap_rwin_rctl = +ctrl(swap_rwin_rctl) + ctrl:swapcaps = +ctrl(swapcaps) + esperanto:colemak = +epo(colemak) + esperanto:dvorak = +epo(dvorak) + esperanto:qwerty = +epo(qwerty) + eurosign:2 = +eurosign(2) + eurosign:4 = +eurosign(4) + eurosign:5 = +eurosign(5) + eurosign:E = +eurosign(E) + eurosign:e = +eurosign(e) + grab:debug = +grab(debug) + grp:alt_caps_toggle = +group(alt_caps_toggle) + grp:alt_shift_toggle = +group(alt_shift_toggle) + grp:alt_shift_toggle_bidir = +group(alt_shift_toggle_bidir) + grp:caps_select = +group(caps_select) + grp:caps_switch = +group(caps_switch) + grp:caps_toggle = +group(caps_toggle) + grp:ctrl_alt_toggle = +group(ctrl_alt_toggle) + grp:ctrl_alt_toggle_bidir = +group(ctrl_alt_toggle_bidir) + grp:ctrl_select = +group(ctrl_select) + grp:ctrl_shift_toggle = +group(ctrl_shift_toggle) + grp:ctrl_shift_toggle_bidir = +group(ctrl_shift_toggle_bidir) + grp:ctrls_toggle = +group(ctrls_toggle) + grp:lalt_lshift_toggle = +group(lalt_lshift_toggle) + grp:lalt_toggle = +group(lalt_toggle) + grp:lctrl_lalt_toggle = +group(lctrl_lalt_toggle) + grp:lctrl_lshift_toggle = +group(lctrl_lshift_toggle) + grp:lctrl_lwin_rctrl_menu = +group(lctrl_lwin_rctrl_menu) + grp:lctrl_lwin_toggle = +group(lctrl_lwin_toggle) + grp:lctrl_toggle = +group(lctrl_toggle) + grp:lshift_toggle = +group(lshift_toggle) + grp:lswitch = +group(lswitch) + grp:lwin_switch = +group(lwin_switch) + grp:lwin_toggle = +group(lwin_toggle) + grp:menu_switch = +group(menu_switch) + grp:menu_toggle = +group(menu_toggle) + grp:ralt_rshift_toggle = +group(ralt_rshift_toggle) + grp:rctrl_ralt_toggle = +group(rctrl_ralt_toggle) + grp:rctrl_switch = +group(rctrl_switch) + grp:rctrl_toggle = +group(rctrl_toggle) + grp:rshift_toggle = +group(rshift_toggle) + grp:rwin_switch = +group(rwin_switch) + grp:rwin_toggle = +group(rwin_toggle) + grp:sclk_toggle = +group(sclk_toggle) + grp:shift_caps_toggle = +group(shift_caps_toggle) + grp:switch = +group(switch) + grp:win_menu_select = +group(win_menu_select) + grp:win_switch = +group(win_switch) + japan:hztg_escape = +jp(hztg_escape) + japan:nicola_f_bs = +jp(nicola_f_bs) + keypad:atm = +keypad(atm) + keypad:future = +keypad(future) + keypad:future_wang = +keypad(future_wang) + keypad:hex = +keypad(hex) + keypad:legacy = +keypad(legacy) + keypad:legacy_wang = +keypad(legacy_wang) + keypad:oss = +keypad(oss) + keypad:oss_wang = +keypad(oss_wang) + keypad:pointerkeys = +keypad(pointerkeys) + korean:ralt_hangul = +kr(ralt_hangul) + korean:ralt_hanja = +kr(ralt_hanja) + korean:rctrl_hangul = +kr(rctrl_hangul) + korean:rctrl_hanja = +kr(rctrl_hanja) + kpdl:comma = +kpdl(comma) + kpdl:commaoss = +kpdl(commaoss) + kpdl:dot = +kpdl(dot) + kpdl:dotoss = +kpdl(dotoss) + kpdl:dotoss_latin9 = +kpdl(dotoss_latin9) + kpdl:kposs = +kpdl(kposs) + kpdl:momayyezoss = +kpdl(momayyezoss) + kpdl:semi = +kpdl(semi) + lv2:lsgt_switch = +level2(lsgt_switch) + lv3:4_switch_isolated = +level3(4_switch_isolated) + lv3:9_switch_isolated = +level3(9_switch_isolated) + lv3:alt_switch = +level3(alt_switch) + lv3:bksl_switch = +level3(bksl_switch) + lv3:bksl_switch_latch = +level3(bksl_switch_latch) + lv3:caps_switch = +level3(caps_switch) + lv3:caps_switch_latch = +level3(caps_switch_latch) + lv3:enter_switch = +level3(enter_switch) + lv3:lalt_switch = +level3(lalt_switch) + lv3:lsgt_switch = +level3(lsgt_switch) + lv3:lsgt_switch_latch = +level3(lsgt_switch_latch) + lv3:lwin_switch = +level3(lwin_switch) + lv3:menu_switch = +level3(menu_switch) + lv3:ralt_switch = +level3(ralt_switch) + lv3:ralt_switch_multikey = +level3(ralt_switch_multikey) + lv3:rwin_switch = +level3(rwin_switch) + lv3:switch = +level3(switch) + lv3:win_switch = +level3(win_switch) + lv5:caps_switch = +level5(caps_switch) + lv5:lsgt_switch = +level5(lsgt_switch) + lv5:lsgt_switch_lock = +level5(lsgt_switch_lock) + lv5:lwin_switch_lock = +level5(lwin_switch_lock) + lv5:menu_switch = +level5(menu_switch) + lv5:ralt_switch = +level5(ralt_switch) + lv5:ralt_switch_lock = +level5(ralt_switch_lock) + lv5:rctrl_switch = +level5(rctrl_switch) + lv5:rwin_switch_lock = +level5(rwin_switch_lock) + nbsp:level2 = +nbsp(level2) + nbsp:level3 = +nbsp(level3) + nbsp:level3n = +nbsp(level3n) + nbsp:level4 = +nbsp(level4) + nbsp:level4n = +nbsp(level4n) + nbsp:level4nl = +nbsp(level4nl) + nbsp:none = +nbsp(none) + nbsp:zwnj2 = +nbsp(zwnj2) + nbsp:zwnj2nb3 = +nbsp(zwnj2nb3) + nbsp:zwnj2nb3nnb4 = +nbsp(zwnj2nb3nnb4) + nbsp:zwnj2nb3zwj4 = +nbsp(zwnj2nb3zwj4) + nbsp:zwnj2zwj3 = +nbsp(zwnj2zwj3) + nbsp:zwnj2zwj3nb4 = +nbsp(zwnj2zwj3nb4) + nbsp:zwnj3zwj4 = +nbsp(zwnj3zwj4) + parens:swap_brackets = +parens(swap_brackets) + rupeesign:4 = +rupeesign(4) + scrolllock:mod3 = +scrolllock(mod3) + shift:both_capslock = +shift(both_capslock) + shift:both_capslock_cancel = +shift(both_capslock_cancel) + shift:both_shiftlock = +shift(both_shiftlock) + shift:breaks_caps = +shift(breaks_caps) + solaris:sun_compat = +sun_vndr/solaris(sun_compat) + srvrkeys:none = +srvrkeys(none) + terminate:ctrl_alt_bksp = +terminate(ctrl_alt_bksp) + +! option = compat + caps:shiftlock = +caps(shiftlock) + grab:break_actions = +grab(break_actions) + grp_led:caps = +grp_led(caps) + grp_led:num = +grp_led(num) + grp_led:scroll = +grp_led(scroll) + japan:kana_lock = +japan(kana_lock) + mod_led:compose = +mod_led(compose) + +! option = types + caps:internal = +caps(internal) + caps:internal_nocancel = +caps(internal_nocancel) + caps:shift = +caps(shift) + caps:shift_nocancel = +caps(shift_nocancel) + numpad:mac = +numpad(mac) + numpad:microsoft = +numpad(microsoft) + numpad:pc = +numpad(pc) + numpad:shift3 = +numpad(shift3) + custom:types = +custom diff --git a/nixos/xkb/rules/base.extras.xml b/nixos/xkb/rules/base.extras.xml new file mode 100644 index 00000000..64da2626 --- /dev/null +++ b/nixos/xkb/rules/base.extras.xml @@ -0,0 +1,1863 @@ + + + + + + + + ancient + xx + Ancient + + got + uga + ave + + + + + + got + Gothic + + got + + + + + + uga + Ugaritic + + uga + + + + + + ave + Avestan + + ave + + + + + + + + apl + apl + APL + + eng + + + + + + dyalog + dlg + APL symbols (Dyalog APL) + + + + + sax + sax + APL symbols (SAX, Sharp APL for Unix) + + + + + unified + ufd + APL symbols (unified) + + + + + apl2 + apl2 + APL symbols (IBM APL2) + + + + + aplplusII + aplII + APL symbols (Manugistics APL*PLUS II) + + + + + aplx + aplx + APL symbols (APLX unified) + + + + + + + bqn + bqn + BQN + + eng + + + + + + ca + fr + French (Canada) + + CA + + + fra + + + + + + kut + kut + Kutenai + + + + + shs + shs + Secwepemctsin + + + + + sun_type6 + Multilingual (Canada, Sun Type 6/7) + + + + + + + de + de + German + + DE + + + deu + + + + + + hu + German (with Hungarian letters, no dead keys) + + deu + hun + + + + + + pl + Polish (Germany, no dead keys) + + deu + pol + + + + + + sun_type6 + German (Sun Type 6/7) + + + + + adnw + German (Aus der Neo-Welt) + + + + + koy + German (KOY) + + + + + bone + German (Bone) + + + + + bone_eszett_home + German (Bone, eszett in the home row) + + + + + neo_qwertz + German (Neo, QWERTZ) + + + + + neo_qwerty + German (Neo, QWERTY) + + + + + ru-recom + + ru + Russian (Germany, recommended) + + rus + + + + + + ru-translit + + ru + Russian (Germany, transliteration) + + rus + + + + + + + + eg + ar + Arabic (Egypt) + + EG + + + ara + + + + + + cop + cop + Coptic + + cop + + + + + + + + hu + hu + Hungarian + + HU + + + hun + + + + + + oldhunlig + oldhun(lig) + Old Hungarian (for ligatures) + + + + + oldhun_sk_sh + oldhun(SK,Sh) + Old Hungarian (Carpathian Highlands, S as Sh) + + + + + oldhun_sk_sz + oldhun(SK,Sz) + Old Hungarian (Carpathian Highlands, S as Sz) + + + + + us + us + Hungarian (US) + + + + + + + lt + lt + Lithuanian + + LT + + + lit + + + + + + us_dvorak + Lithuanian (Dvorak) + + + + + sun_type6 + Lithuanian (Sun Type 6/7) + + + + + + + lv + lv + Latvian + + LV + + + lav + + + + + + dvorak + Latvian (Dvorak) + + + + + ykeydvorak + Latvian (Dvorak, with Y) + + + + + minuskeydvorak + Latvian (Dvorak, with minus) + + + + + dvorakprogr + Latvian (programmer Dvorak) + + + + + ykeydvorakprogr + Latvian (programmer Dvorak, with Y) + + + + + minuskeydvorakprogr + Latvian (programmer Dvorak, with minus) + + + + + colemak + Latvian (Colemak) + + + + + apostrophecolemak + Latvian (Colemak, with apostrophe) + + + + + sun_type6 + Latvian (Sun Type 6/7) + + + + + apostrophe-deadquotes + Latvian (apostrophe, dead quotes) + + + + + + + us + en + English (US) + + US + + + eng + + + + + + intl-unicode + English (US, intl., AltGr Unicode combining) + + + + + alt-intl-unicode + English (US, intl., AltGr Unicode combining, alt.) + + + + + ats + Atsina + + + + + + crd + Coeur d'Alene Salish + + crd + + + + + + cz_sk_de + Czech, Slovak and German (US) + + eng + ces + slk + deu + + + + + + cz_sk_pl_de_es_fi_sv + Czech, Slovak, Polish, Spanish, Finnish, Swedish and German (US) + + eng + ces + slk + pol + deu + spa + fin + swe + + + + + + drix + English (Drix) + + + + + de_se_fi + German, Swedish and Finnish (US) + + eng + deu + swe + fin + + + + + + ibm238l + English (US, IBM Arabic 238_L) + + + + + sun_type6 + English (US, Sun Type 6/7) + + + + + carpalx + English (Carpalx) + + + + + carpalx-intl + English (Carpalx, intl., with dead keys) + + + + + carpalx-altgr-intl + English (Carpalx, intl., with AltGr dead keys) + + + + + carpalx-full + English (Carpalx, full optimization) + + + + + carpalx-full-intl + English (Carpalx, full optimization, intl., with dead keys) + + + + + carpalx-full-altgr-intl + English (Carpalx, full optimization, intl., with AltGr dead keys) + + + + + 3l + English (3l) + + + + + 3l-cros + English (3l, Chromebook) + + + + + 3l-emacs + English (3l, emacs) + + + + + workman-p + workman-p + English (Workman-P) + + eng + + + + + + scn + Sicilian (US keyboard) + + eng + ita + scn + + + + + + altgr-weur + English (Western European AltGr dead keys) + + eng + dan + deu + fin + fra + ita + nld + nor + por + spa + swe + + + + + + + + pl + pl + Polish + + PL + + + pol + + + + + + intl + Polish (intl., with dead keys) + + + + + colemak + Polish (Colemak) + + + + + colemak_dh_ansi + Polish (Colemak-DH) + + + + + colemak_dh + Polish (Colemak-DH ISO) + + + + + sun_type6 + Polish (Sun Type 6/7) + + + + + glagolica + Polish (Glagolica) + + + + + lefty + Polish (lefty) + + + + + + + ro + ro + Romanian + + RO + + + ron + + + + + + crh_dobruja + crh + Crimean Tatar (Dobruja Q) + + crh + + + + + + ergonomic + Romanian (ergonomic Touchtype) + + + + + sun_type6 + Romanian (Sun Type 6/7) + + + + + + + rs + sr + Serbian + + RS + + + srp + + + + + + combiningkeys + Serbian (combining accents instead of dead keys) + + + + + + + ru + ru + Russian + + RU + + + rus + + + + + + chu + Church Slavonic + + chu + + + + + + ruu + ru + Russian (plus Ukrainian and Belarusian letters) + + rus + ukr + bel + + + + + + rulemak + Russian (Rulemak, phonetic Colemak) + + + + + phonetic_mac + Russian (phonetic, Macintosh) + + + + + sun_type6 + Russian (Sun Type 6/7) + + + + + unipunct + Russian (with US punctuation) + + + + + gost-6431-75-48 + Russian (GOST 6431-75) + + + + + gost-14289-88 + Russian (GOST 14289-88) + + + + + prxn + ru + Russian (Polyglot and Reactionary) + + RU + RS + BA + ME + MK + BG + MD + UA + BY + KZ + MN + KG + TJ + UZ + TM + AZ + + + rus + ukr + bel + srp + mkd + bul + chu + kaz + kir + uzb + bak + aze + tat + uig + kdr + tyv + kjh + crh + tgk + abk + sah + mon + kal + sjd + chv + oss + krl + ale + wbl + kur + niv + dng + kom + udm + sel + ulc + ude + oac + oaa + gld + eve + evn + kca + itl + yrk + neg + + + + + + winkeys-p + winkeys-p + Russian (Programmer) + + rus + + + + + + typo + ru + Russian (plus typographic symbols) + + RU + + + rus + + + + + + rtu + ru + Russian (plus Tatar letters) + + RU + + + rus + tat + + + + + + + + am + hy + Armenian + + AM + + + hye + + + + + + olpc-phonetic + Armenian (OLPC, phonetic) + + + + + + + il + he + Hebrew + + IL + + + heb + + + + + + biblicalSIL + Hebrew (Biblical, SIL phonetic) + + heb + + + + + + + + ara + ar + Arabic + + AE + BH + DZ + EG + EH + JO + KW + LB + LY + MA + MR + OM + PS + QA + SA + SD + SY + TN + YE + + + ara + + + + + + sun_type6 + Arabic (Sun Type 6/7) + + + + + basic_ext + Arabic (Arabic numerals, extensions in the 4th level) + + + + + basic_ext_digits + Arabic (Eastern Arabic numerals, extensions in the 4th level) + + + + + ergoarabic + Arabic (ErgoArabic) + + + + + + + be + be + Belgian + + BE + + + deu + nld + fra + + + + + + sun_type6 + Belgian (Sun Type 6/7) + + + + + + + br + pt + Portuguese (Brazil) + + BR + + + por + + + + + + sun_type6 + Portuguese (Brazil, Sun Type 6/7) + + + + + + + cz + cs + Czech + + CZ + + + ces + + + + + + sun_type6 + Czech (Sun Type 6/7) + + + + + prog + Czech (programming) + + + + + prog_typo + Czech (programming, typographic) + + + + + coder + Czech (coder) + + + + + colemak-ucw + Czech (US, Colemak, UCW support) + + + + + + + dk + da + Danish + + DK + + + dan + + + + + + sun_type6 + Danish (Sun Type 6/7) + + + + + + + nl + nl + Dutch + + NL + + + nld + + + + + + sun_type6 + Dutch (Sun Type 6/7) + + + + + + + ee + et + Estonian + + EE + + + est + + + + + + sun_type6 + Estonian (Sun Type 6/7) + + + + + + + fi + fi + Finnish + + FI + + + fin + + + + + + sun_type6 + Finnish (Sun Type 6/7) + + + + + das + Finnish (DAS) + + + + + fidvorak + Finnish (Dvorak) + + + + + + + fr + fr + French + + FR + + + fra + + + + + + sun_type6 + French (Sun Type 6/7) + + + + + us-alt + French (US with dead keys, alt.) + + + + + us-azerty + French (US, AZERTY) + + + + + + + gr + gr + Greek + + GR + + + ell + + + + + + sun_type6 + Greek (Sun Type 6/7) + + + + + colemak + Greek (Colemak) + + + + + + + it + it + Italian + + IT + + + ita + + + + + + sun_type6 + Italian (Sun Type 6/7) + + + + + lld + it_lld + Ladin (Italian keyboard) + + ita + lld + + + + + + lldde + de_lld + Ladin (German keyboard) + + deu + lld + + + + + + dvorak + Italian (Dvorak) + + ita + + + + + + + + jp + ja + Japanese + + JP + + + jpn + + + + + + sun_type6 + Japanese (Sun Type 6) + + + + + sun_type7 + Japanese (Sun Type 7, PC-compatible) + + + + + sun_type7_suncompat + Japanese (Sun Type 7, Sun-compatible) + + + + + + + no + no + Norwegian + + NO + + + nor + nob + nno + + + + + + sun_type6 + Norwegian (Sun Type 6/7) + + + + + + + pk + ur + Urdu (Pakistan) + + PK + + + urd + + + + + + urd-navees + Urdu (Pakistan, Navees) + + urd + + + + + + + + pt + pt + Portuguese + + PT + + + por + + + + + + sun_type6 + Portuguese (Sun Type 6/7) + + + + + colemak + Portuguese (Colemak) + + + + + + + sk + sk + Slovak + + SK + + + slk + + + + + + acc + Slovak (ACC layout, only accented letters) + + + + + sun_type6 + Slovak (Sun Type 6/7) + + + + + + + es + es + Spanish + + ES + + + spa + + + + + + sun_type6 + Spanish (Sun Type 6/7) + + + + + + + se + sv + Swedish + + SE + + + swe + + + + + + dvorak_a5 + Swedish (Dvorak A5) + + + + + sun_type6 + Swedish (Sun Type 6/7) + + + + + ovd + Elfdalian (Sweden, with combining ogonek) + + ovd + + + + + + + + ch + de + German (Switzerland) + + CH + + + deu + gsw + + + + + + sun_type6_de + German (Switzerland, Sun Type 6/7) + + + + + sun_type6_fr + French (Switzerland, Sun Type 6/7) + + + + + + + tr + tr + Turkish + + TR + + + tur + + + + + + sun_type6 + Turkish (Sun Type 6/7) + + + + + us + Turkish (i and ı swapped) + + + + + otk + Old Turkic + + + + + otkf + Old Turkic (F) + + + + + ot + Ottoman (Q) + + + + + otf + Ottoman (F) + + + + + + + ua + uk + Ukrainian + + UA + + + ukr + + + + + + sun_type6 + Ukrainian (Sun Type 6/7) + + + + + + + gb + en + English (UK) + + GB + + + eng + + + + + + sun_type6 + English (UK, Sun Type 6/7) + + + + + + + kr + ko + Korean + + KR + + + kor + + + + + + sun_type6 + Korean (Sun Type 6/7) + + + + + + + vn + + vi + Vietnamese + + VN + + + vie + + + + + + aderty + Vietnamese (AÐERTY) + + + + + qderty + Vietnamese (QĐERTY) + + + + + + + eu + + eu + EurKEY (US) + + US + + + cat + dan + eng + est + fao + fin + deu + ell + gsw + ita + lav + lit + nld + nor + por + spa + swe + + + + + + trans + + ipa + International Phonetic Alphabet + + + + + qwerty + International Phonetic Alphabet (QWERTY) + + + + + + + in + + in + Indian + + IN + + + + hin + anp + awa + bap + bfy + bgc + bhb + bhi + bho + bjj + bra + brx + btv + doi + dty + gbm + gom + gvr + hne + hoc + hoj + jml + kfr + kfy + khn + kok + kru + mag + mai + mar + mgp + mrd + mtr + mwr + nep + new + noe + raj + rjs + sck + srx + swv + taj + tdg + tdh + thl + thq + thr + tkt + wbr + wtm + xnr + xsr + + + + + + modi-kagapa + mr + Modi (KaGaPa, phonetic) + + mar + + + + + + san-misc + sas + Sanskrit symbols + + san + + + + + + urd-navees + ur + Urdu (Navees) + + urd + + + + + + + + + + + lv3 + Key to choose the 3rd level + + + + + + + + caps + Caps Lock behavior + + + + + + + parens + Parentheses position + + + + + diff --git a/nixos/xkb/rules/base.lst b/nixos/xkb/rules/base.lst new file mode 100644 index 00000000..360af245 --- /dev/null +++ b/nixos/xkb/rules/base.lst @@ -0,0 +1,1007 @@ +! model + pc86 Generic 86-key PC + pc101 Generic 101-key PC + pc102 Generic 102-key PC + pc104 Generic 104-key PC + pc104alt Generic 104-key PC with L-shaped Enter key + pc105 Generic 105-key PC + a4techKB21 A4Tech KB-21 + a4techKBS8 A4Tech KBS-8 + a4_rfkb23 A4Tech Wireless Desktop RFKB-23 + airkey Acer AirKey V + acer_c300 Acer C300 + acer_ferrari4k Acer Ferrari 4000 + acer_laptop Acer laptop + scorpius Advance Scorpius KI + apple Apple + applealu_ansi Apple Aluminium (ANSI) + applealu_iso Apple Aluminium (ISO) + applealu_jis Apple Aluminium (JIS) + asus_laptop Asus laptop + azonaRF2300 Azona RF2300 Wireless Internet + benqx BenQ X-Touch + benqx730 BenQ X-Touch 730 + benqx800 BenQ X-Touch 800 + brother Brother Internet + btc5090 BTC 5090 + btc5113rf BTC 5113RF Multimedia + btc5126t BTC 5126T + btc6301urf BTC 6301URF + btc9000 BTC 9000 + btc9000a BTC 9000A + btc9001ah BTC 9001AH + btc9019u BTC 9019U + btc9116u BTC 9116U Mini Wireless Internet and Gaming + cherryblue Cherry Blue Line CyBo@rd + cherrybluea Cherry Blue Line CyBo@rd (alt.) + cherrybunlim Cherry B.UNLIMITED + cherrycyboard Cherry CyBo@rd USB-Hub + cherrycmexpert Cherry CyMotion Expert + cymotionlinux Cherry CyMotion Master Linux + cherryblueb Cherry CyMotion Master XPress + chicony Chicony Internet + chicony9885 Chicony KB-9885 + chicony0108 Chicony KU-0108 + chicony0420 Chicony KU-0420 + chromebook Chromebook + compalfl90 Compal FL90 + armada Compaq Armada laptop + compaqeak8 Compaq Easy Access + compaqik7 Compaq Internet (7 keys) + compaqik13 Compaq Internet (13 keys) + compaqik18 Compaq Internet (18 keys) + ipaq Compaq iPaq + presario Compaq Presario laptop + creativedw7000 Creative Desktop Wireless 7000 + dell Dell + dell101 Dell 101-key PC + latitude Dell Latitude laptop + inspiron Dell Inspiron 6000/8000 laptop + precision_m Dell Precision M laptop + dellm65 Dell Precision M65 laptop + dellsk8125 Dell SK-8125 + dellsk8135 Dell SK-8135 + dellusbmm Dell USB Multimedia + dexxa Dexxa Wireless Desktop + diamond Diamond 9801/9802 + dtk2000 DTK2000 + emachines eMachines m6800 laptop + ennyah_dkb1008 Ennyah DKB-1008 + everex Everex STEPnote + fscaa1667g Fujitsu-Siemens Amilo laptop + genius Genius Comfy KB-16M/Multimedia KWD-910 + geniuscomfy Genius Comfy KB-12e + geniuscomfy2 Genius Comfy KB-21e-Scroll + geniuskb19e Genius KB-19e NB + geniuskkb2050hs Genius KKB-2050HS + gyration Gyration + hhk Happy Hacking + hpi6 Hewlett-Packard Internet + hpmini110 Hewlett-Packard Mini 110 laptop + hpnx9020 Hewlett-Packard nx9020 + hp5xx Hewlett-Packard Omnibook 500 + hp500fa Hewlett-Packard Omnibook 500 FA + hp6000 Hewlett-Packard Omnibook 6000/6100 + hpxe3gc Hewlett-Packard Omnibook XE3 GC + hpxe3gf Hewlett-Packard Omnibook XE3 GF + hpxt1000 Hewlett-Packard Omnibook XT1000 + hpdv5 Hewlett-Packard Pavilion dv5 + hpzt11xx Hewlett-Packard Pavilion ZT1100 + hp250x Hewlett-Packard SK-2501 Multimedia + honeywell_euroboard Honeywell Euroboard + rapidaccess IBM Rapid Access + rapidaccess2 IBM Rapid Access II + ibm_spacesaver IBM Space Saver + thinkpad IBM ThinkPad 560Z/600/600E/A22E + thinkpad60 IBM ThinkPad R60/T60/R61/T61 + thinkpadz60 IBM ThinkPad Z60m/Z60t/Z61m/Z61t + flexpro Keytronic FlexPro + kinesis Kinesis + logitech_base Logitech + logiaccess Logitech Access + logicd Logitech Cordless Desktop + logicda Logitech Cordless Desktop (alt.) + logiex110 Logitech Cordless Desktop EX110 + logicd_it Logitech Cordless Desktop iTouch + logiclx300 Logitech Cordless Desktop LX-300 + logicd_nav Logitech Cordless Desktop Navigator + logicd_opt Logitech Cordless Desktop Optical + logidinovo Logitech diNovo + logidinovoedge Logitech diNovo Edge + logitech_g15 Logitech G15 extra keys via G15daemon + logiik Logitech Internet + logii350 Logitech Internet 350 + logimel Logitech Internet 350 + logicink Logitech Internet Navigator + itouch Logitech iTouch + logiitc Logitech iTouch Cordless Y-RB6 + logiinkse Logitech iTouch Internet Navigator SE + logiinkseusb Logitech iTouch Internet Navigator SE USB + logiultrax Logitech Ultra-X + logiultraxc Logitech Ultra-X Cordless Media Desktop + mx1998 Memorex MX1998 + mx2500 Memorex MX2500 EZ-Access + mx2750 Memorex MX2750 + microsoftccurve2k Microsoft Comfort Curve 2000 + microsoftinet Microsoft Internet + microsoftprose Microsoft Internet Pro (Swedish) + microsoft Microsoft Natural + microsoftelite Microsoft Natural Elite + microsoft4000 Microsoft Natural Ergonomic 4000 + microsoft7000 Microsoft Natural Wireless Ergonomic 7000 + microsoftpro Microsoft Natural Pro/Internet Pro + microsoftprousb Microsoft Natural Pro USB/Internet Pro + microsoftprooem Microsoft Natural Pro OEM + microsoftoffice Microsoft Office Keyboard + microsoftsurface Microsoft Surface + microsoftmult Microsoft Wireless Multimedia 1.0A + sk1300 NEC SK-1300 + sk2500 NEC SK-2500 + sk6200 NEC SK-6200 + sk7100 NEC SK-7100 + omnikey101 Northgate OmniKey 101 + olpc OLPC + oretec Ortek Multimedia/Internet MCK-800 + pc98 PC-98 + ppkb PinePhone Keyboard + propeller Propeller Voyager KTEZ-1000 + qtronix QTronix Scorpius 98N+ + samsung4500 Samsung SDM 4500P + samsung4510 Samsung SDM 4510P + sanwaskbkg3 Sanwa Supply SKB-KG3 + silvercrest Silvercrest Multimedia Wireless + apex300 SteelSeries Apex 300 (Apex RAW) + sun_type6_jp Sun Type 6 (Japanese) + sun_type6_jp_usb Sun Type 6 USB (Japanese) + sun_type6_unix_usb Sun Type 6 USB (Unix) + sun_type6_usb Sun Type 6/7 USB + sun_type6_euro_usb Sun Type 6/7 USB (European) + sun_type7_usb Sun Type 7 USB + sun_type7_euro_usb Sun Type 7 USB (European) + sun_type7_jp_usb Sun Type 7 USB (Japanese)/Japanese 106-key + sun_type7_unix_usb Sun Type 7 USB (Unix) + sp_inet Super Power Multimedia + sven SVEN Ergonomic 2500 + sven303 SVEN Slim 303 + symplon Symplon PaceBook tablet + targa_v811 Targa Visionary 811 + toshiba_s3000 Toshiba Satellite S3000 + teck227 Truly Ergonomic 227 + teck229 Truly Ergonomic 229 + trustda Trust Direct Access + trust_slimline Trust Slimline + trust Trust Wireless Classic + tm2020 TypeMatrix EZ-Reach 2020 + tm2030PS2 TypeMatrix EZ-Reach 2030 PS2 + tm2030USB TypeMatrix EZ-Reach 2030 USB + tm2030USB-102 TypeMatrix EZ-Reach 2030 USB (102/105:EU mode) + tm2030USB-106 TypeMatrix EZ-Reach 2030 USB (106:JP mode) + unitekkb1925 Unitek KB-1925 + vsonku306 ViewSonic KU-306 Internet + winbook Winbook Model XP5 + yahoo Yahoo! Internet + +! layout + al Albanian + et Amharic + am Armenian + ara Arabic + eg Arabic (Egypt) + iq Arabic (Iraq) + ma Arabic (Morocco) + sy Arabic (Syria) + az Azerbaijani + ml Bambara + bd Bangla + by Belarusian + be Belgian + dz Berber (Algeria, Latin) + ba Bosnian + brai Braille + bg Bulgarian + mm Burmese + cn Chinese + hr Croatian + cz Czech + dk Danish + af Dari + mv Dhivehi + nl Dutch + bt Dzongkha + au English (Australia) + cm English (Cameroon) + gh English (Ghana) + nz English (New Zealand) + ng English (Nigeria) + za English (South Africa) + gb English (UK) + us English (US) + epo Esperanto + ee Estonian + fo Faroese + ph Filipino + fi Finnish + fr French + ca French (Canada) + cd French (Democratic Republic of the Congo) + tg French (Togo) + ge Georgian + de German + at German (Austria) + ch German (Switzerland) + gr Greek + il Hebrew + hu Hungarian + is Icelandic + in Indian + id Indonesian (Latin) + ie Irish + it Italian + jp Japanese + kz Kazakh + kh Khmer (Cambodia) + kr Korean + kg Kyrgyz + la Lao + lv Latvian + lt Lithuanian + mk Macedonian + my Malay (Jawi, Arabic Keyboard) + mt Maltese + md Moldavian + mn Mongolian + me Montenegrin + np Nepali + gn N'Ko (AZERTY) + no Norwegian + ir Persian + pl Polish + pt Portuguese + br Portuguese (Brazil) + ro Romanian + ru Russian + rs Serbian + lk Sinhala (phonetic) + sk Slovak + si Slovenian + es Spanish + latam Spanish (Latin American) + ke Swahili (Kenya) + tz Swahili (Tanzania) + se Swedish + tw Taiwanese + tj Tajik + th Thai + bw Tswana + tm Turkmen + tr Turkish + ua Ukrainian + pk Urdu (Pakistan) + uz Uzbek + vn Vietnamese + sn Wolof + custom A user-defined custom Layout + +! variant + plisi al: Albanian (Plisi) + veqilharxhi al: Albanian (Veqilharxhi) + phonetic am: Armenian (phonetic) + phonetic-alt am: Armenian (alt. phonetic) + eastern am: Armenian (eastern) + eastern-alt am: Armenian (alt. eastern) + western am: Armenian (western) + digits ara: Arabic (Eastern Arabic numerals) + azerty ara: Arabic (AZERTY) + azerty_digits ara: Arabic (AZERTY, Eastern Arabic numerals) + buckwalter ara: Arabic (Buckwalter) + mac ara: Arabic (Macintosh) + mac-phonetic ara: Arabic (Macintosh, phonetic) + olpc ara: Arabic (OLPC) + ku iq: Kurdish (Iraq, Latin Q) + ku_alt iq: Kurdish (Iraq, Latin Alt-Q) + ku_f iq: Kurdish (Iraq, F) + ku_ara iq: Kurdish (Iraq, Arabic-Latin) + tifinagh ma: Berber (Morocco, Tifinagh) + tifinagh-alt ma: Berber (Morocco, Tifinagh alt.) + tifinagh-alt-phonetic ma: Berber (Morocco, Tifinagh phonetic, alt.) + tifinagh-extended ma: Berber (Morocco, Tifinagh extended) + tifinagh-phonetic ma: Berber (Morocco, Tifinagh phonetic) + tifinagh-extended-phonetic ma: Berber (Morocco, Tifinagh extended phonetic) + french ma: French (Morocco) + rif ma: Tarifit + syc sy: Syriac + syc_phonetic sy: Syriac (phonetic) + ku sy: Kurdish (Syria, Latin Q) + ku_alt sy: Kurdish (Syria, Latin Alt-Q) + ku_f sy: Kurdish (Syria, F) + cyrillic az: Azerbaijani (Cyrillic) + fr-oss ml: French (Mali, alt.) + us-mac ml: English (Mali, US, Macintosh) + us-intl ml: English (Mali, US, intl.) + probhat bd: Bangla (Probhat) + legacy by: Belarusian (legacy) + latin by: Belarusian (Latin) + intl by: Belarusian (intl.) + phonetic by: Belarusian (phonetic) + ru by: Russian (Belarus) + oss be: Belgian (alt.) + oss_latin9 be: Belgian (Latin-9 only, alt.) + iso-alternate be: Belgian (ISO, alt.) + nodeadkeys be: Belgian (no dead keys) + wang be: Belgian (Wang 724 AZERTY) + ber dz: Berber (Algeria, Tifinagh) + azerty-deadkeys dz: Kabyle (AZERTY, with dead keys) + qwerty-gb-deadkeys dz: Kabyle (QWERTY, UK, with dead keys) + qwerty-us-deadkeys dz: Kabyle (QWERTY, US, with dead keys) + ar dz: Arabic (Algeria) + alternatequotes ba: Bosnian (with guillemets) + unicode ba: Bosnian (with Bosnian digraphs) + unicodeus ba: Bosnian (US, with Bosnian digraphs) + us ba: Bosnian (US) + left_hand brai: Braille (left-handed) + left_hand_invert brai: Braille (left-handed inverted thumb) + right_hand brai: Braille (right-handed) + right_hand_invert brai: Braille (right-handed inverted thumb) + phonetic bg: Bulgarian (traditional phonetic) + bas_phonetic bg: Bulgarian (new phonetic) + bekl bg: Bulgarian (enhanced) + zawgyi mm: Burmese (Zawgyi) + mnw mm: Mon + mnw-a1 mm: Mon (A1) + shn mm: Shan + zgt mm: Shan (Zawgyi) + altgr-pinyin cn: Hanyu Pinyin Letters (with AltGr dead keys) + mon_trad cn: Mongolian (Bichig) + mon_trad_todo cn: Mongolian (Todo) + mon_trad_xibe cn: Mongolian (Xibe) + mon_trad_manchu cn: Mongolian (Manchu) + mon_trad_galik cn: Mongolian (Galik) + mon_todo_galik cn: Mongolian (Todo Galik) + mon_manchu_galik cn: Mongolian (Manchu Galik) + tib cn: Tibetan + tib_asciinum cn: Tibetan (with ASCII numerals) + ug cn: Uyghur + alternatequotes hr: Croatian (with guillemets) + unicode hr: Croatian (with Croatian digraphs) + unicodeus hr: Croatian (US, with Croatian digraphs) + us hr: Croatian (US) + bksl cz: Czech (extra backslash) + qwerty cz: Czech (QWERTY) + qwerty_bksl cz: Czech (QWERTY, extra backslash) + winkeys cz: Czech (QWERTZ, Windows) + winkeys-qwerty cz: Czech (QWERTY, Windows) + qwerty-mac cz: Czech (QWERTY, Macintosh) + ucw cz: Czech (UCW, only accented letters) + dvorak-ucw cz: Czech (US, Dvorak, UCW support) + rus cz: Russian (Czechia, phonetic) + nodeadkeys dk: Danish (no dead keys) + winkeys dk: Danish (Windows) + mac dk: Danish (Macintosh) + mac_nodeadkeys dk: Danish (Macintosh, no dead keys) + dvorak dk: Danish (Dvorak) + ps af: Pashto + uz af: Uzbek (Afghanistan) + fa-olpc af: Dari (Afghanistan, OLPC) + ps-olpc af: Pashto (Afghanistan, OLPC) + uz-olpc af: Uzbek (Afghanistan, OLPC) + us nl: Dutch (US) + mac nl: Dutch (Macintosh) + std nl: Dutch (standard) + french cm: French (Cameroon) + qwerty cm: Cameroon Multilingual (QWERTY, intl.) + azerty cm: Cameroon (AZERTY, intl.) + dvorak cm: Cameroon (Dvorak, intl.) + mmuock cm: Mmuock + generic gh: English (Ghana, multilingual) + gillbt gh: English (Ghana, GILLBT) + akan gh: Akan + avn gh: Avatime + ewe gh: Ewe + fula gh: Fula + ga gh: Ga + hausa gh: Hausa (Ghana) + mao nz: Maori + hausa ng: Hausa (Nigeria) + igbo ng: Igbo + yoruba ng: Yoruba + extd gb: English (UK, extended, Windows) + intl gb: English (UK, intl., with dead keys) + dvorak gb: English (UK, Dvorak) + dvorakukp gb: English (UK, Dvorak, with UK punctuation) + mac gb: English (UK, Macintosh) + mac_intl gb: English (UK, Macintosh, intl.) + colemak gb: English (UK, Colemak) + colemak_dh gb: English (UK, Colemak-DH) + gla gb: Scottish Gaelic + pl gb: Polish (British keyboard) + euro us: English (US, euro on 5) + intl us: English (US, intl., with dead keys) + alt-intl us: English (US, alt. intl.) + altgr-intl us: English (intl., with AltGr dead keys) + mac us: English (Macintosh) + colemak us: English (Colemak) + colemak_dh us: English (Colemak-DH) + colemak_dh_wide us: English (Colemak-DH Wide) + colemak_dh_ortho us: English (Colemak-DH Ortholinear) + colemak_dh_iso us: English (Colemak-DH ISO) + colemak_dh_wide_iso us: English (Colemak-DH Wide ISO) + dvorak us: English (Dvorak) + dvorak-intl us: English (Dvorak, intl., with dead keys) + dvorak-alt-intl us: English (Dvorak, alt. intl.) + dvorak-l us: English (Dvorak, left-handed) + dvorak-r us: English (Dvorak, right-handed) + dvorak-classic us: English (classic Dvorak) + dvp us: English (programmer Dvorak) + dvorak-mac us: English (Dvorak, Macintosh) + norman us: English (Norman) + symbolic us: English (US, Symbolic) + workman us: English (Workman) + workman-intl us: English (Workman, intl., with dead keys) + olpc2 us: English (the divide/multiply toggle the layout) + chr us: Cherokee + haw us: Hawaiian + rus us: Russian (US, phonetic) + hbs us: Serbo-Croatian (US) + legacy epo: Esperanto (legacy) + nodeadkeys ee: Estonian (no dead keys) + dvorak ee: Estonian (Dvorak) + us ee: Estonian (US) + nodeadkeys fo: Faroese (no dead keys) + qwerty-bay ph: Filipino (QWERTY, Baybayin) + capewell-dvorak ph: Filipino (Capewell-Dvorak, Latin) + capewell-dvorak-bay ph: Filipino (Capewell-Dvorak, Baybayin) + capewell-qwerf2k6 ph: Filipino (Capewell-QWERF 2006, Latin) + capewell-qwerf2k6-bay ph: Filipino (Capewell-QWERF 2006, Baybayin) + colemak ph: Filipino (Colemak, Latin) + colemak-bay ph: Filipino (Colemak, Baybayin) + dvorak ph: Filipino (Dvorak, Latin) + dvorak-bay ph: Filipino (Dvorak, Baybayin) + winkeys fi: Finnish (Windows) + classic fi: Finnish (classic) + nodeadkeys fi: Finnish (classic, no dead keys) + mac fi: Finnish (Macintosh) + smi fi: Northern Saami (Finland) + nodeadkeys fr: French (no dead keys) + oss fr: French (alt.) + oss_nodeadkeys fr: French (alt., no dead keys) + oss_latin9 fr: French (alt., Latin-9 only) + latin9 fr: French (legacy, alt.) + latin9_nodeadkeys fr: French (legacy, alt., no dead keys) + azerty fr: French (AZERTY) + afnor fr: French (AZERTY, AFNOR) + bepo fr: French (BEPO) + bepo_latin9 fr: French (BEPO, Latin-9 only) + bepo_afnor fr: French (BEPO, AFNOR) + dvorak fr: French (Dvorak) + ergol fr: French (Ergo‑L) + ergol_iso fr: French (Ergo‑L, ISO variant) + mac fr: French (Macintosh) + us fr: French (US) + bre fr: Breton (France) + oci fr: Occitan + geo fr: Georgian (France, AZERTY Tskapo) + fr-dvorak ca: French (Canada, Dvorak) + fr-legacy ca: French (Canada, legacy) + multix ca: Canadian (CSA) + eng ca: English (Canada) + ike ca: Inuktitut + ergonomic ge: Georgian (ergonomic) + mess ge: Georgian (MESS) + os ge: Ossetian (Georgia) + ru ge: Russian (Georgia) + deadacute de: German (dead acute) + deadgraveacute de: German (dead grave acute) + deadtilde de: German (dead tilde) + nodeadkeys de: German (no dead keys) + e1 de: German (E1) + e2 de: German (E2) + T3 de: German (T3) + us de: German (US) + dvorak de: German (Dvorak) + mac de: German (Macintosh) + mac_nodeadkeys de: German (Macintosh, no dead keys) + neo de: German (Neo 2) + qwerty de: German (QWERTY) + dsb de: Lower Sorbian + dsb_qwertz de: Lower Sorbian (QWERTZ) + ro de: Romanian (Germany) + ro_nodeadkeys de: Romanian (Germany, no dead keys) + ru de: Russian (Germany, phonetic) + tr de: Turkish (Germany) + nodeadkeys at: German (Austria, no dead keys) + mac at: German (Austria, Macintosh) + de_nodeadkeys ch: German (Switzerland, no dead keys) + de_mac ch: German (Switzerland, Macintosh) + legacy ch: German (Switzerland, legacy) + fr ch: French (Switzerland) + fr_nodeadkeys ch: French (Switzerland, no dead keys) + fr_mac ch: French (Switzerland, Macintosh) + simple gr: Greek (simple) + nodeadkeys gr: Greek (no dead keys) + polytonic gr: Greek (polytonic) + si2 il: Hebrew (SI-1452-2) + lyx il: Hebrew (lyx) + phonetic il: Hebrew (phonetic) + biblical il: Hebrew (Biblical, Tiro) + standard hu: Hungarian (standard) + nodeadkeys hu: Hungarian (no dead keys) + qwerty hu: Hungarian (QWERTY) + 101_qwertz_comma_dead hu: Hungarian (QWERTZ, 101-key, comma, dead keys) + 101_qwertz_comma_nodead hu: Hungarian (QWERTZ, 101-key, comma, no dead keys) + 101_qwertz_dot_dead hu: Hungarian (QWERTZ, 101-key, dot, dead keys) + 101_qwertz_dot_nodead hu: Hungarian (QWERTZ, 101-key, dot, no dead keys) + 101_qwerty_comma_dead hu: Hungarian (QWERTY, 101-key, comma, dead keys) + 101_qwerty_comma_nodead hu: Hungarian (QWERTY, 101-key, comma, no dead keys) + 101_qwerty_dot_dead hu: Hungarian (QWERTY, 101-key, dot, dead keys) + 101_qwerty_dot_nodead hu: Hungarian (QWERTY, 101-key, dot, no dead keys) + 102_qwertz_comma_dead hu: Hungarian (QWERTZ, 102-key, comma, dead keys) + 102_qwertz_comma_nodead hu: Hungarian (QWERTZ, 102-key, comma, no dead keys) + 102_qwertz_dot_dead hu: Hungarian (QWERTZ, 102-key, dot, dead keys) + 102_qwertz_dot_nodead hu: Hungarian (QWERTZ, 102-key, dot, no dead keys) + 102_qwerty_comma_dead hu: Hungarian (QWERTY, 102-key, comma, dead keys) + 102_qwerty_comma_nodead hu: Hungarian (QWERTY, 102-key, comma, no dead keys) + 102_qwerty_dot_dead hu: Hungarian (QWERTY, 102-key, dot, dead keys) + 102_qwerty_dot_nodead hu: Hungarian (QWERTY, 102-key, dot, no dead keys) + mac_legacy is: Icelandic (Macintosh, legacy) + mac is: Icelandic (Macintosh) + dvorak is: Icelandic (Dvorak) + asm-kagapa in: Assamese (KaGaPa, phonetic) + ben in: Bangla (India) + ben_probhat in: Bangla (India, Probhat) + ben_baishakhi in: Bangla (India, Baishakhi) + ben_bornona in: Bangla (India, Bornona) + ben-kagapa in: Bangla (India, KaGaPa, phonetic) + ben_gitanjali in: Bangla (India, Gitanjali) + ben_inscript in: Bangla (India, Baishakhi InScript) + eng in: English (India, with rupee) + guj in: Gujarati + guj-kagapa in: Gujarati (KaGaPa, phonetic) + bolnagri in: Hindi (Bolnagri) + hin-wx in: Hindi (Wx) + hin-kagapa in: Hindi (KaGaPa, phonetic) + kan in: Kannada + kan-kagapa in: Kannada (KaGaPa, phonetic) + mal in: Malayalam + mal_lalitha in: Malayalam (Lalitha) + mal_enhanced in: Malayalam (enhanced InScript, with rupee) + mal_poorna in: Malayalam (Poorna, extended InScript) + mni in: Manipuri (Meitei) + mar-kagapa in: Marathi (KaGaPa, phonetic) + marathi in: Marathi (enhanced InScript) + ori in: Oriya + ori-bolnagri in: Oriya (Bolnagri) + ori-wx in: Oriya (Wx) + guru in: Punjabi (Gurmukhi) + jhelum in: Punjabi (Gurmukhi Jhelum) + san-kagapa in: Sanskrit (KaGaPa, phonetic) + sat in: Santali (Ol Chiki) + tamilnet in: Tamil (TamilNet '99) + tamilnet_tamilnumbers in: Tamil (TamilNet '99 with Tamil numerals) + tamilnet_TAB in: Tamil (TamilNet '99, TAB encoding) + tamilnet_TSCII in: Tamil (TamilNet '99, TSCII encoding) + tam in: Tamil (InScript, with Arabic numerals) + tam_tamilnumbers in: Tamil (InScript, with Tamil numerals) + tel in: Telugu + tel-kagapa in: Telugu (KaGaPa, phonetic) + tel-sarala in: Telugu (Sarala) + urd-phonetic in: Urdu (phonetic) + urd-phonetic3 in: Urdu (alt. phonetic) + urd-winkeys in: Urdu (Windows) + iipa in: Indic IPA + melayu-phonetic id: Indonesian (Arab Melayu, phonetic) + melayu-phoneticx id: Indonesian (Arab Melayu, extended phonetic) + pegon-phonetic id: Indonesian (Arab Pegon, phonetic) + javanese id: Javanese + UnicodeExpert ie: Irish (UnicodeExpert) + CloGaelach ie: CloGaelach + ogam ie: Ogham + ogam_is434 ie: Ogham (IS434) + nodeadkeys it: Italian (no dead keys) + winkeys it: Italian (Windows) + mac it: Italian (Macintosh) + us it: Italian (US) + ibm it: Italian (IBM 142) + fur it: Friulian (Italy) + scn it: Sicilian + geo it: Georgian (Italy) + kana jp: Japanese (Kana) + kana86 jp: Japanese (Kana 86) + OADG109A jp: Japanese (OADG 109A) + mac jp: Japanese (Macintosh) + dvorak jp: Japanese (Dvorak) + kazrus kz: Kazakh (with Russian) + ext kz: Kazakh (extended) + latin kz: Kazakh (Latin) + ruskaz kz: Russian (Kazakhstan, with Kazakh) + kr104 kr: Korean (101/104-key compatible) + phonetic kg: Kyrgyz (phonetic) + stea la: Lao (STEA) + apostrophe lv: Latvian (apostrophe) + tilde lv: Latvian (tilde) + fkey lv: Latvian (F) + modern lv: Latvian (Modern Latin) + modern-cyr lv: Latvian (Modern Cyrillic) + ergonomic lv: Latvian (ergonomic, ŪGJRMV) + adapted lv: Latvian (adapted) + std lt: Lithuanian (standard) + us lt: Lithuanian (US) + ibm lt: Lithuanian (IBM) + lekp lt: Lithuanian (LEKP) + lekpa lt: Lithuanian (LEKPa) + ratise lt: Lithuanian (Ratise) + sgs lt: Samogitian + nodeadkeys mk: Macedonian (no dead keys) + phonetic my: Malay (Jawi, phonetic) + us mt: Maltese (US) + alt-us mt: Maltese (US, with AltGr overrides) + alt-gb mt: Maltese (UK, with AltGr overrides) + gag md: Gagauz (Moldova) + cyrillic me: Montenegrin (Cyrillic) + cyrillicyz me: Montenegrin (Cyrillic, ZE and ZHE swapped) + cyrillicalternatequotes me: Montenegrin (Cyrillic, with guillemets) + latinunicode me: Montenegrin (Latin, Unicode) + latinyz me: Montenegrin (Latin, QWERTY) + latinunicodeyz me: Montenegrin (Latin, Unicode, QWERTY) + latinalternatequotes me: Montenegrin (Latin, with guillemets) + nodeadkeys no: Norwegian (no dead keys) + winkeys no: Norwegian (Windows) + mac no: Norwegian (Macintosh) + mac_nodeadkeys no: Norwegian (Macintosh, no dead keys) + colemak no: Norwegian (Colemak) + colemak_dh no: Norwegian (Colemak-DH) + colemak_dh_wide no: Norwegian (Colemak-DH Wide) + dvorak no: Norwegian (Dvorak) + smi no: Northern Saami (Norway) + smi_nodeadkeys no: Northern Saami (Norway, no dead keys) + pes_keypad ir: Persian (with Persian keypad) + winkeys ir: Persian (Windows) + azb ir: Azerbaijani (Iran) + ku ir: Kurdish (Iran, Latin Q) + ku_alt ir: Kurdish (Iran, Latin Alt-Q) + ku_f ir: Kurdish (Iran, F) + ku_ara ir: Kurdish (Iran, Arabic-Latin) + legacy pl: Polish (legacy) + qwertz pl: Polish (QWERTZ) + dvorak pl: Polish (Dvorak) + dvorak_quotes pl: Polish (Dvorak, with Polish quotes on quotemark key) + dvorak_altquotes pl: Polish (Dvorak, with Polish quotes on key 1) + dvp pl: Polish (programmer Dvorak) + csb pl: Kashubian + szl pl: Silesian + ru_phonetic_dvorak pl: Russian (Poland, phonetic Dvorak) + nodeadkeys pt: Portuguese (no dead keys) + mac pt: Portuguese (Macintosh) + mac_nodeadkeys pt: Portuguese (Macintosh, no dead keys) + nativo pt: Portuguese (Nativo) + nativo-us pt: Portuguese (Nativo for US keyboards) + nativo-epo pt: Esperanto (Portugal, Nativo) + nodeadkeys br: Portuguese (Brazil, no dead keys) + dvorak br: Portuguese (Brazil, Dvorak) + nativo br: Portuguese (Brazil, Nativo) + nativo-us br: Portuguese (Brazil, Nativo for US keyboards) + thinkpad br: Portuguese (Brazil, IBM/Lenovo ThinkPad) + nativo-epo br: Esperanto (Brazil, Nativo) + rus br: Russian (Brazil, phonetic) + std ro: Romanian (standard) + winkeys ro: Romanian (Windows) + phonetic ru: Russian (phonetic) + phonetic_winkeys ru: Russian (phonetic, Windows) + phonetic_YAZHERTY ru: Russian (phonetic, YAZHERTY) + phonetic_azerty ru: Russian (phonetic, AZERTY) + phonetic_dvorak ru: Russian (phonetic, Dvorak) + typewriter ru: Russian (typewriter) + ruchey_ru ru: Russian (engineering, RU) + ruchey_en ru: Russian (engineering, EN) + legacy ru: Russian (legacy) + typewriter-legacy ru: Russian (typewriter, legacy) + dos ru: Russian (DOS) + mac ru: Russian (Macintosh) + ab ru: Abkhazian (Russia) + bak ru: Bashkirian + cv ru: Chuvash + cv_latin ru: Chuvash (Latin) + xal ru: Kalmyk + kom ru: Komi + chm ru: Mari + os_legacy ru: Ossetian (legacy) + os_winkeys ru: Ossetian (Windows) + srp ru: Serbian (Russia) + tt ru: Tatar + udm ru: Udmurt + sah ru: Yakut + alternatequotes rs: Serbian (Cyrillic, with guillemets) + yz rs: Serbian (Cyrillic, ZE and ZHE swapped) + latin rs: Serbian (Latin) + latinalternatequotes rs: Serbian (Latin, with guillemets) + latinunicode rs: Serbian (Latin, Unicode) + latinyz rs: Serbian (Latin, QWERTY) + latinunicodeyz rs: Serbian (Latin, Unicode, QWERTY) + rue rs: Pannonian Rusyn + us lk: Sinhala (US) + tam_unicode lk: Tamil (Sri Lanka, TamilNet '99) + tam_TAB lk: Tamil (Sri Lanka, TamilNet '99, TAB encoding) + bksl sk: Slovak (extra backslash) + qwerty sk: Slovak (QWERTY) + qwerty_bksl sk: Slovak (QWERTY, extra backslash) + alternatequotes si: Slovenian (with guillemets) + us si: Slovenian (US) + nodeadkeys es: Spanish (no dead keys) + deadtilde es: Spanish (dead tilde) + winkeys es: Spanish (Windows) + dvorak es: Spanish (Dvorak) + ast es: Asturian (Spain, with bottom-dot H and L) + cat es: Catalan (Spain, with middle-dot L) + nodeadkeys latam: Spanish (Latin American, no dead keys) + deadtilde latam: Spanish (Latin American, dead tilde) + dvorak latam: Spanish (Latin American, Dvorak) + colemak latam: Spanish (Latin American, Colemak) + kik ke: Kikuyu + nodeadkeys se: Swedish (no dead keys) + dvorak se: Swedish (Dvorak) + us_dvorak se: Swedish (Dvorak, intl.) + svdvorak se: Swedish (Svdvorak) + mac se: Swedish (Macintosh) + us se: Swedish (US) + swl se: Swedish Sign Language + smi se: Northern Saami (Sweden) + rus se: Russian (Sweden, phonetic) + indigenous tw: Taiwanese (indigenous) + saisiyat tw: Saisiyat (Taiwan) + legacy tj: Tajik (legacy) + tis th: Thai (TIS-820.2538) + pat th: Thai (Pattachote) + alt tm: Turkmen (Alt-Q) + f tr: Turkish (F) + e tr: Turkish (E) + alt tr: Turkish (Alt-Q) + intl tr: Turkish (intl., with dead keys) + ku tr: Kurdish (Turkey, Latin Q) + ku_f tr: Kurdish (Turkey, F) + ku_alt tr: Kurdish (Turkey, Latin Alt-Q) + phonetic ua: Ukrainian (phonetic) + typewriter ua: Ukrainian (typewriter) + winkeys ua: Ukrainian (Windows) + macOS ua: Ukrainian (macOS) + legacy ua: Ukrainian (legacy) + homophonic ua: Ukrainian (homophonic) + crh ua: Crimean Tatar (Turkish Q) + crh_f ua: Crimean Tatar (Turkish F) + crh_alt ua: Crimean Tatar (Turkish Alt-Q) + urd-crulp pk: Urdu (Pakistan, CRULP) + urd-nla pk: Urdu (Pakistan, NLA) + ara pk: Arabic (Pakistan) + snd pk: Sindhi + latin uz: Uzbek (Latin) + us vn: Vietnamese (US) + fr vn: Vietnamese (France) + +! option + grp Switching to another layout + grp:switch Right Alt (while pressed) + grp:lswitch Left Alt (while pressed) + grp:lwin_switch Left Win (while pressed) + grp:rwin_switch Right Win (while pressed) + grp:win_switch Any Win (while pressed) + grp:menu_switch Menu (while pressed), Shift+Menu for Menu + grp:caps_switch Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action + grp:rctrl_switch Right Ctrl (while pressed) + grp:toggle Right Alt + grp:lalt_toggle Left Alt + grp:caps_toggle Caps Lock + grp:shift_caps_toggle Shift+Caps Lock + grp:caps_select Caps Lock to first layout; Shift+Caps Lock to second layout + grp:win_menu_select Left Win to first layout; Right Win/Menu to second layout + grp:ctrl_select Left Ctrl to first layout; Right Ctrl to second layout + grp:alt_caps_toggle Alt+Caps Lock + grp:shifts_toggle Both Shifts together + grp:alts_toggle Both Alts together + grp:alt_altgr_toggle Both Alts together; AltGr alone chooses third level + grp:ctrls_toggle Both Ctrls together + grp:ctrl_shift_toggle Ctrl+Shift + grp:lctrl_lshift_toggle Left Ctrl+Left Shift + grp:rctrl_rshift_toggle Right Ctrl+Right Shift + grp:ctrl_shift_toggle_bidir Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout + grp:ctrl_alt_toggle Alt+Ctrl + grp:lctrl_lalt_toggle Left Alt+Left Ctrl + grp:rctrl_ralt_toggle Right Alt+Right Ctrl + grp:ctrl_alt_toggle_bidir Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout + grp:alt_shift_toggle Alt+Shift + grp:lalt_lshift_toggle Left Alt+Left Shift + grp:ralt_rshift_toggle Right Alt+Right Shift + grp:alt_shift_toggle_bidir Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout + grp:menu_toggle Menu + grp:lwin_toggle Left Win + grp:alt_space_toggle Alt+Space + grp:win_space_toggle Win+Space + grp:ctrl_space_toggle Ctrl+Space + grp:rwin_toggle Right Win + grp:lshift_toggle Left Shift + grp:rshift_toggle Right Shift + grp:lctrl_toggle Left Ctrl + grp:rctrl_toggle Right Ctrl + grp:sclk_toggle Scroll Lock + grp:lctrl_lwin_rctrl_menu Ctrl+Left Win to first layout; Ctrl+Menu to second layout + grp:lctrl_lwin_toggle Left Ctrl+Left Win + lv2 Key to choose the 2nd level + lv2:lsgt_switch The "< >" key + lv3 Key to choose the 3rd level + lv3:switch Right Ctrl + lv3:menu_switch Menu + lv3:win_switch Any Win + lv3:lwin_switch Left Win + lv3:rwin_switch Right Win + lv3:alt_switch Any Alt + lv3:lalt_switch Left Alt + lv3:ralt_switch Right Alt + lv3:ralt_switch_multikey Right Alt; Shift+Right Alt as Compose + lv3:ralt_alt Right Alt never chooses 3rd level + lv3:enter_switch Enter on keypad + lv3:caps_switch Caps Lock + lv3:bksl_switch Backslash + lv3:lsgt_switch The "< >" key + lv3:caps_switch_latch Caps Lock; acts as onetime lock when pressed together with another 3rd-level chooser + lv3:bksl_switch_latch Backslash; acts as onetime lock when pressed together with another 3rd level chooser + lv3:lsgt_switch_latch The "< >" key; acts as onetime lock when pressed together with another 3rd level chooser + ctrl Ctrl position + ctrl:nocaps Caps Lock as Ctrl + ctrl:lctrl_meta Left Ctrl as Meta + ctrl:swapcaps Swap Ctrl and Caps Lock + ctrl:grouptoggle_capscontrol Caps Lock as Ctrl, Left Control switches to another layout + ctrl:hyper_capscontrol Caps Lock as Ctrl, Ctrl as Hyper + ctrl:ac_ctrl To the left of "A" + ctrl:aa_ctrl At the bottom left + ctrl:rctrl_ralt Right Ctrl as Right Alt + ctrl:ralt_rctrl Right Alt as Right Control + ctrl:menu_rctrl Menu as Right Ctrl + ctrl:swap_lalt_lctl Swap Left Alt with Left Ctrl + ctrl:swap_ralt_rctl Swap Right Alt with Right Ctrl + ctrl:swap_lwin_lctl Swap Left Win with Left Ctrl + ctrl:swap_rwin_rctl Swap Right Win with Right Ctrl + ctrl:swap_lalt_lctl_lwin Left Alt as Ctrl, Left Ctrl as Win, Left Win as Left Alt + grp_led Use keyboard LED to show alternative layout + grp_led:num Num Lock + grp_led:caps Caps Lock + grp_led:scroll Scroll Lock + mod_led Use keyboard LED to indicate modifiers + mod_led:compose Compose + keypad Layout of numeric keypad + keypad:legacy Legacy + keypad:oss Unicode arrows and math operators + keypad:future Unicode arrows and math operators on default level + keypad:legacy_wang Legacy Wang 724 + keypad:oss_wang Wang 724 keypad with Unicode arrows and math operators + keypad:future_wang Wang 724 keypad with Unicode arrows and math operators on default level + keypad:hex Hexadecimal + keypad:atm Phone and ATM style + kpdl Numeric keypad Delete behavior + kpdl:dot Legacy key with dot + kpdl:comma Legacy key with comma + kpdl:dotoss Four-level key with dot + kpdl:dotoss_latin9 Four-level key with dot, Latin-9 only + kpdl:commaoss Four-level key with comma + kpdl:momayyezoss Four-level key with momayyez + kpdl:kposs Four-level key with abstract separators + kpdl:semi Semicolon on third level + caps Caps Lock behavior + caps:internal Caps Lock uses internal capitalization; Shift "pauses" Caps Lock + caps:internal_nocancel Caps Lock uses internal capitalization; Shift does not affect Caps Lock + caps:shift Caps Lock acts as Shift with locking; Shift "pauses" Caps Lock + caps:shift_nocancel Caps Lock acts as Shift with locking; Shift does not affect Caps Lock + caps:capslock Caps Lock toggles normal capitalization of alphabetic characters + caps:shiftlock Caps Lock toggles Shift Lock (affects all keys) + caps:swapescape Swap Esc and Caps Lock + caps:escape Make Caps Lock an additional Esc + caps:escape_shifted_capslock Make Caps Lock an additional Esc, but Shift + Caps Lock is the regular Caps Lock + caps:backspace Make Caps Lock an additional Backspace + caps:super Make Caps Lock an additional Super + caps:hyper Make Caps Lock an additional Hyper + caps:menu Make Caps Lock an additional Menu key + caps:numlock Make Caps Lock an additional Num Lock + caps:ctrl_modifier Make Caps Lock act as an additional Ctrl modifier, but keep identifying as Caps Lock + caps:digits_row Caps Lock gives digits on the digits row (Azerty layouts) + caps:none Caps Lock is disabled + altwin Alt and Win behavior + altwin:menu Add the standard behavior to Menu key + altwin:menu_win Menu is mapped to Win + altwin:meta_alt Alt and Meta are on Alt + altwin:alt_win Alt is mapped to Win and the usual Alt + altwin:ctrl_win Ctrl is mapped to Win and the usual Ctrl + altwin:ctrl_rwin Ctrl is mapped to Right Win and the usual Ctrl + altwin:ctrl_alt_win Ctrl is mapped to Alt, Alt to Win + altwin:meta_win Meta is mapped to Win + altwin:left_meta_win Meta is mapped to Left Win + altwin:hyper_win Hyper is mapped to Win + altwin:alt_super_win Alt is mapped to Right Win, Super to Menu + altwin:swap_lalt_lwin Left Alt is swapped with Left Win + altwin:swap_alt_win Alt is swapped with Win + altwin:prtsc_rwin Win is mapped to PrtSc and the usual Win + Compose key Position of Compose key + compose:ralt Right Alt + compose:lwin Left Win + compose:lwin-altgr 3rd level of Left Win + compose:rwin Right Win + compose:rwin-altgr 3rd level of Right Win + compose:menu Menu + compose:menu-altgr 3rd level of Menu + compose:lctrl Left Ctrl + compose:lctrl-altgr 3rd level of Left Ctrl + compose:rctrl Right Ctrl + compose:rctrl-altgr 3rd level of Right Ctrl + compose:caps Caps Lock + compose:caps-altgr 3rd level of Caps Lock + compose:102 The "< >" key + compose:102-altgr 3rd level of the "< >" key + compose:paus Pause + compose:ins Insert + compose:prsc PrtSc + compose:sclk Scroll Lock + compat Compatibility options + numpad:pc Default numeric keypad keys + numpad:mac Numeric keypad always enters digits (as in macOS) + numpad:microsoft Num Lock on: digits; Shift for arrows. Num Lock off: arrows (as in Windows) + numpad:shift3 Shift does not cancel Num Lock, chooses 3rd level instead + scrolllock:mod3 Map Scroll Lock to Mod3 + srvrkeys:none Special keys (Ctrl+Alt+<key>) handled in a server + apple:alupckeys Apple Aluminium emulates Pause, PrtSc, Scroll Lock + apple:jp_oadg109a Japanese Apple keyboards emulate OADG109A backslash + apple:jp_pc106 Japanese Apple keyboards emulate PC106 backslash + shift:breaks_caps Shift cancels Caps Lock + misc:typo Enable extra typographic characters + misc:apl Enable APL overlay characters + shift:both_capslock Both Shifts together enable Caps Lock + shift:both_capslock_cancel Both Shifts together enable Caps Lock; one Shift key disables it + shift:both_shiftlock Both Shifts together enable Shift Lock + keypad:pointerkeys Shift + Num Lock enables PointerKeys + grab:break_actions Allow breaking grabs with keyboard actions (warning: security risk) + grab:debug Allow grab and window tree logging + currencysign Currency signs + eurosign:e Euro on E, third level + eurosign:E Euro on E, fourth level + eurosign:2 Euro on 2 + eurosign:4 Euro on 4 + eurosign:5 Euro on 5 + rupeesign:4 Rupee on 4 + lv5 Key to choose the 5th level + lv5:caps_switch Caps Lock chooses 5th level + lv5:lsgt_switch The "< >" key chooses 5th level + lv5:ralt_switch Right Alt chooses 5th level + lv5:menu_switch Menu chooses 5th level + lv5:rctrl_switch Right Ctrl chooses 5th level + lv5:lsgt_switch_lock The "< >" key chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser + lv5:ralt_switch_lock Right Alt chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser + lv5:lwin_switch_lock Left Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser + lv5:rwin_switch_lock Right Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser + nbsp Non-breaking space input + nbsp:none Usual space at any level + nbsp:level2 Non-breaking space at the 2nd level + nbsp:level3 Non-breaking space at the 3rd level + nbsp:level3n Non-breaking space at the 3rd level, thin non-breaking space at the 4th level + nbsp:level4 Non-breaking space at the 4th level + nbsp:level4n Non-breaking space at the 4th level, thin non-breaking space at the 6th level + nbsp:level4nl Non-breaking space at the 4th level, thin non-breaking space at the 6th level (via Ctrl+Shift) + nbsp:zwnj2 Zero-width non-joiner at the 2nd level + nbsp:zwnj2zwj3 Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level + nbsp:zwnj2zwj3nb4 Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level, non-breaking space at the 4th level + nbsp:zwnj2nb3 Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level + nbsp:zwnj2nb3zwj4 Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, zero-width joiner at the 4th level + nbsp:zwnj2nb3nnb4 Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, thin non-breaking space at the 4th level + nbsp:zwnj3zwj4 Zero-width non-joiner at the 3rd level, zero-width joiner at the 4th level + japan Japanese keyboard options + japan:kana_lock Kana Lock key is locking + japan:nicola_f_bs NICOLA-F style Backspace + japan:hztg_escape Make Zenkaku Hankaku an additional Esc + korean Korean Hangul/Hanja keys + korean:ralt_hangul Make right Alt a Hangul key + korean:rctrl_hangul Make right Ctrl a Hangul key + korean:ralt_hanja Make right Alt a Hanja key + korean:rctrl_hanja Make right Ctrl a Hanja key + esperanto Esperanto letters with superscripts + esperanto:qwerty At the corresponding key in a QWERTY layout + esperanto:dvorak At the corresponding key in a Dvorak layout + esperanto:colemak At the corresponding key in a Colemak layout + solaris Old Solaris keycodes compatibility + solaris:sun_compat Sun key compatibility + terminate Key sequence to kill the X server + terminate:ctrl_alt_bksp Ctrl+Alt+Backspace + custom Miscellaneous options + custom:types Use user-defined custom XKB types diff --git a/nixos/xkb/rules/base.xml b/nixos/xkb/rules/base.xml new file mode 100644 index 00000000..03b80726 --- /dev/null +++ b/nixos/xkb/rules/base.xml @@ -0,0 +1,8284 @@ + + + + + + + + pc86 + Generic 86-key PC + Generic + + + + + pc101 + Generic 101-key PC + Generic + + + + + pc102 + Generic 102-key PC + Generic + + + + + pc104 + Generic 104-key PC + Generic + + + + + pc104alt + Generic 104-key PC with L-shaped Enter key + Generic + + + + + pc105 + Generic 105-key PC + Generic + + + + + a4techKB21 + A4Tech KB-21 + A4Tech + + + + + a4techKBS8 + A4Tech KBS-8 + A4Tech + + + + + a4_rfkb23 + A4Tech Wireless Desktop RFKB-23 + A4Tech + + + + + airkey + Acer AirKey V + Acer + + + + + acer_c300 + Acer C300 + Acer + + + + + acer_ferrari4k + Acer Ferrari 4000 + Acer + + + + + acer_laptop + Acer laptop + Acer + + + + + scorpius + Advance Scorpius KI + Scorpius + + + + + apple + Apple + Apple + + + + + applealu_ansi + Apple Aluminium (ANSI) + Apple + + + + + applealu_iso + Apple Aluminium (ISO) + Apple + + + + + applealu_jis + Apple Aluminium (JIS) + Apple + + + + + asus_laptop + Asus laptop + Asus + + + + + azonaRF2300 + Azona RF2300 Wireless Internet + Azona + + + + + benqx + BenQ X-Touch + BenQ + + + + + benqx730 + BenQ X-Touch 730 + BenQ + + + + + benqx800 + BenQ X-Touch 800 + BenQ + + + + + brother + Brother Internet + Brother + + + + + btc5090 + BTC 5090 + BTC + + + + + btc5113rf + BTC 5113RF Multimedia + BTC + + + + + btc5126t + BTC 5126T + BTC + + + + + btc6301urf + BTC 6301URF + BTC + + + + + btc9000 + BTC 9000 + BTC + + + + + btc9000a + BTC 9000A + BTC + + + + + btc9001ah + BTC 9001AH + BTC + + + + + btc9019u + BTC 9019U + BTC + + + + + btc9116u + BTC 9116U Mini Wireless Internet and Gaming + BTC + + + + + cherryblue + Cherry Blue Line CyBo@rd + Cherry + + + + + cherrybluea + Cherry Blue Line CyBo@rd (alt.) + Cherry + + + + + cherrybunlim + Cherry B.UNLIMITED + Cherry + + + + + cherrycyboard + Cherry CyBo@rd USB-Hub + Cherry + + + + + cherrycmexpert + Cherry CyMotion Expert + Cherry + + + + + cymotionlinux + Cherry CyMotion Master Linux + Cherry + + + + + cherryblueb + Cherry CyMotion Master XPress + Cherry + + + + + chicony + Chicony Internet + Chicony + + + + + chicony9885 + Chicony KB-9885 + Chicony + + + + + chicony0108 + Chicony KU-0108 + Chicony + + + + + chicony0420 + Chicony KU-0420 + Chicony + + + + + chromebook + Chromebook + Google + + + + + compalfl90 + Compal FL90 + Compal Electronics + + + + + armada + Compaq Armada laptop + Compaq + + + + + compaqeak8 + Compaq Easy Access + Compaq + + + + + compaqik7 + Compaq Internet (7 keys) + Compaq + + + + + compaqik13 + Compaq Internet (13 keys) + Compaq + + + + + compaqik18 + Compaq Internet (18 keys) + Compaq + + + + + ipaq + Compaq iPaq + Compaq + + + + + presario + Compaq Presario laptop + Compaq + + + + + creativedw7000 + Creative Desktop Wireless 7000 + Creative + + + + + dell + Dell + Dell + + + + + dell101 + Dell 101-key PC + Dell + + + + + latitude + Dell Latitude laptop + Dell + + + + + inspiron + Dell Inspiron 6000/8000 laptop + Dell + + + + + precision_m + Dell Precision M laptop + Dell + + + + + dellm65 + Dell Precision M65 laptop + Dell + + + + + dellsk8125 + Dell SK-8125 + Dell + + + + + dellsk8135 + Dell SK-8135 + Dell + + + + + dellusbmm + Dell USB Multimedia + Dell + + + + + dexxa + Dexxa Wireless Desktop + Dexxa + + + + + diamond + Diamond 9801/9802 + Diamond + + + + + dtk2000 + DTK2000 + DTK + + + + + emachines + eMachines m6800 laptop + eMachines + + + + + ennyah_dkb1008 + Ennyah DKB-1008 + Ennyah + + + + + everex + Everex STEPnote + Everex + + + + + fscaa1667g + Fujitsu-Siemens Amilo laptop + Fujitsu-Siemens + + + + + genius + Genius Comfy KB-16M/Multimedia KWD-910 + Genius + + + + + geniuscomfy + Genius Comfy KB-12e + Genius + + + + + geniuscomfy2 + Genius Comfy KB-21e-Scroll + Genius + + + + + geniuskb19e + Genius KB-19e NB + Genius + + + + + geniuskkb2050hs + Genius KKB-2050HS + Genius + + + + + gyration + Gyration + Gyration + + + + + hhk + Happy Hacking + Fujitsu + + + + + hpi6 + Hewlett-Packard Internet + Hewlett-Packard + + + + + hpmini110 + Hewlett-Packard Mini 110 laptop + Hewlett-Packard + + + + + hpnx9020 + Hewlett-Packard nx9020 + Hewlett-Packard + + + + + hp5xx + Hewlett-Packard Omnibook 500 + Hewlett-Packard + + + + + hp500fa + Hewlett-Packard Omnibook 500 FA + Hewlett-Packard + + + + + hp6000 + Hewlett-Packard Omnibook 6000/6100 + Hewlett-Packard + + + + + hpxe3gc + Hewlett-Packard Omnibook XE3 GC + Hewlett-Packard + + + + + hpxe3gf + Hewlett-Packard Omnibook XE3 GF + Hewlett-Packard + + + + + hpxt1000 + Hewlett-Packard Omnibook XT1000 + Hewlett-Packard + + + + + hpdv5 + Hewlett-Packard Pavilion dv5 + Hewlett-Packard + + + + + hpzt11xx + Hewlett-Packard Pavilion ZT1100 + Hewlett-Packard + + + + + hp250x + Hewlett-Packard SK-2501 Multimedia + Hewlett-Packard + + + + + honeywell_euroboard + Honeywell Euroboard + Hewlett-Packard + + + + + rapidaccess + IBM Rapid Access + Lenovo (previously IBM) + + + + + rapidaccess2 + IBM Rapid Access II + Lenovo (previously IBM) + + + + + ibm_spacesaver + IBM Space Saver + Lenovo (previously IBM) + + + + + thinkpad + IBM ThinkPad 560Z/600/600E/A22E + Lenovo (previously IBM) + + + + + thinkpad60 + IBM ThinkPad R60/T60/R61/T61 + Lenovo (previously IBM) + + + + + thinkpadz60 + IBM ThinkPad Z60m/Z60t/Z61m/Z61t + Lenovo (previously IBM) + + + + + flexpro + Keytronic FlexPro + Keytronic + + + + + kinesis + Kinesis + Kinesis + + + + + logitech_base + Logitech + Logitech + + + + + logiaccess + Logitech Access + Logitech + + + + + logicd + Logitech Cordless Desktop + Logitech + + + + + logicda + Logitech Cordless Desktop (alt.) + Logitech + + + + + logiex110 + Logitech Cordless Desktop EX110 + Logitech + + + + + logicd_it + Logitech Cordless Desktop iTouch + Logitech + + + + + logiclx300 + Logitech Cordless Desktop LX-300 + Logitech + + + + + logicd_nav + Logitech Cordless Desktop Navigator + Logitech + + + + + logicd_opt + Logitech Cordless Desktop Optical + Logitech + + + + + logidinovo + Logitech diNovo + Logitech + + + + + logidinovoedge + Logitech diNovo Edge + Logitech + + + + + logitech_g15 + Logitech G15 extra keys via G15daemon + Logitech + + + + + logiik + Logitech Internet + Logitech + + + + + logii350 + Logitech Internet 350 + Logitech + 046d:c313 + + + + + logimel + Logitech Internet 350 + Logitech + + + + + logicink + Logitech Internet Navigator + Logitech + + + + + itouch + Logitech iTouch + Logitech + + + + + logiitc + Logitech iTouch Cordless Y-RB6 + Logitech + + + + + logiinkse + Logitech iTouch Internet Navigator SE + Logitech + + + + + logiinkseusb + Logitech iTouch Internet Navigator SE USB + Logitech + + + + + logiultrax + Logitech Ultra-X + Logitech + + + + + logiultraxc + Logitech Ultra-X Cordless Media Desktop + Logitech + + + + + mx1998 + Memorex MX1998 + Memorex + + + + + mx2500 + Memorex MX2500 EZ-Access + Memorex + + + + + mx2750 + Memorex MX2750 + Memorex + + + + + microsoftccurve2k + Microsoft Comfort Curve 2000 + Microsoft + + + + + microsoftinet + Microsoft Internet + Microsoft + + + + + microsoftprose + Microsoft Internet Pro (Swedish) + Microsoft + + + + + microsoft + Microsoft Natural + Microsoft + + + + + microsoftelite + Microsoft Natural Elite + Microsoft + + + + + microsoft4000 + Microsoft Natural Ergonomic 4000 + Microsoft + + + + + microsoft7000 + Microsoft Natural Wireless Ergonomic 7000 + Microsoft + + + + + microsoftpro + Microsoft Natural Pro/Internet Pro + Microsoft + + + + + microsoftprousb + Microsoft Natural Pro USB/Internet Pro + Microsoft + + + + + microsoftprooem + Microsoft Natural Pro OEM + Microsoft + + + + + microsoftoffice + Microsoft Office Keyboard + Microsoft + + + + + microsoftsurface + Microsoft Surface + Microsoft + + + + + microsoftmult + Microsoft Wireless Multimedia 1.0A + Microsoft + + + + + sk1300 + NEC SK-1300 + NEC + + + + + sk2500 + NEC SK-2500 + NEC + + + + + sk6200 + NEC SK-6200 + NEC + + + + + sk7100 + NEC SK-7100 + NEC + + + + + omnikey101 + Northgate OmniKey 101 + Northgate + + + + + olpc + OLPC + OLPC + + + + + oretec + Ortek Multimedia/Internet MCK-800 + Ortek + + + + + pc98 + PC-98 + Generic + + + + + ppkb + PinePhone Keyboard + Pine64 + + + + + propeller + Propeller Voyager KTEZ-1000 + KeyTronic + + + + + qtronix + QTronix Scorpius 98N+ + QTronix + + + + + samsung4500 + Samsung SDM 4500P + Samsung + + + + + samsung4510 + Samsung SDM 4510P + Samsung + + + + + sanwaskbkg3 + Sanwa Supply SKB-KG3 + Sanwa Supply Inc. + + + + + silvercrest + Silvercrest Multimedia Wireless + Silvercrest + + + + + apex300 + SteelSeries Apex 300 (Apex RAW) + SteelSeries + + + + + sun_type6_jp + Sun Type 6 (Japanese) + Sun Microsystems + + + + + sun_type6_jp_usb + Sun Type 6 USB (Japanese) + Sun Microsystems + + + + + sun_type6_unix_usb + Sun Type 6 USB (Unix) + Sun Microsystems + + + + + sun_type6_usb + Sun Type 6/7 USB + Sun Microsystems + + + + + sun_type6_euro_usb + Sun Type 6/7 USB (European) + Sun Microsystems + + + + + sun_type7_usb + Sun Type 7 USB + Sun Microsystems + + + + + sun_type7_euro_usb + Sun Type 7 USB (European) + Sun Microsystems + + + + + sun_type7_jp_usb + Sun Type 7 USB (Japanese)/Japanese 106-key + Sun Microsystems + + + + + sun_type7_unix_usb + Sun Type 7 USB (Unix) + Sun Microsystems + + + + + sp_inet + Super Power Multimedia + Generic + + + + + sven + SVEN Ergonomic 2500 + SVEN + + + + + sven303 + SVEN Slim 303 + SVEN + + + + + symplon + Symplon PaceBook tablet + Symplon + + + + + targa_v811 + Targa Visionary 811 + Targa + + + + + toshiba_s3000 + Toshiba Satellite S3000 + Toshiba + + + + + teck227 + Truly Ergonomic 227 + Truly Ergonomic + + + + + teck229 + Truly Ergonomic 229 + Truly Ergonomic + + + + + trustda + Trust Direct Access + Trust + + + + + trust_slimline + Trust Slimline + Trust + + + + + trust + Trust Wireless Classic + Trust + + + + + tm2020 + TypeMatrix EZ-Reach 2020 + TypeMatrix + + + + + tm2030PS2 + TypeMatrix EZ-Reach 2030 PS2 + TypeMatrix + + + + + tm2030USB + TypeMatrix EZ-Reach 2030 USB + TypeMatrix + + + + + tm2030USB-102 + TypeMatrix EZ-Reach 2030 USB (102/105:EU mode) + TypeMatrix + + + + + tm2030USB-106 + TypeMatrix EZ-Reach 2030 USB (106:JP mode) + TypeMatrix + + + + + unitekkb1925 + Unitek KB-1925 + Unitek Group + + + + + vsonku306 + ViewSonic KU-306 Internet + ViewSonic + + + + + winbook + Winbook Model XP5 + Generic + + + + + yahoo + Yahoo! Internet + Yahoo! + + + + + + + + al + + sq + Albanian + + AL + + + sqi + + + + + + plisi + Albanian (Plisi) + + + + + veqilharxhi + Albanian (Veqilharxhi) + + + + + + + et + + am + Amharic + + ET + + + amh + + + + + + + am + + hy + Armenian + + AM + + + hye + + + + + + phonetic + Armenian (phonetic) + + + + + phonetic-alt + Armenian (alt. phonetic) + + + + + eastern + Armenian (eastern) + + + + + eastern-alt + Armenian (alt. eastern) + + + + + western + Armenian (western) + + + + + + + ara + + ar + Arabic + + AE + BH + DZ + EG + EH + JO + KW + LB + LY + MA + MR + OM + PS + QA + SA + SD + SY + TN + YE + + + ara + + + + + + digits + Arabic (Eastern Arabic numerals) + + + + + azerty + Arabic (AZERTY) + + + + + azerty_digits + Arabic (AZERTY, Eastern Arabic numerals) + + + + + buckwalter + Arabic (Buckwalter) + + + + + mac + Arabic (Macintosh) + + + + + mac-phonetic + Arabic (Macintosh, phonetic) + + + + + olpc + Arabic (OLPC) + + + + + + + eg + + ar + Arabic (Egypt) + + EG + + + ara + arz + + + + + + iq + + ar + Arabic (Iraq) + + IQ + + + ara + + + + + + ku + + ku + Kurdish (Iraq, Latin Q) + + kur + + + + + + ku_alt + + ku + Kurdish (Iraq, Latin Alt-Q) + + kur + + + + + + ku_f + + ku + Kurdish (Iraq, F) + + kur + + + + + + ku_ara + + ku + Kurdish (Iraq, Arabic-Latin) + + kur + + + + + + + + ma + + ar + Arabic (Morocco) + + MA + + + ary + + + + + + tifinagh + + ber + Berber (Morocco, Tifinagh) + + ber + + + + + + tifinagh-alt + + ber + Berber (Morocco, Tifinagh alt.) + + ber + + + + + + tifinagh-alt-phonetic + + ber + Berber (Morocco, Tifinagh phonetic, alt.) + + ber + + + + + + tifinagh-extended + + ber + Berber (Morocco, Tifinagh extended) + + ber + + + + + + tifinagh-phonetic + + ber + Berber (Morocco, Tifinagh phonetic) + + ber + + + + + + tifinagh-extended-phonetic + + ber + Berber (Morocco, Tifinagh extended phonetic) + + ber + + + + + + french + + fr + French (Morocco) + + fra + + + + + + rif + + rif + Tarifit + + rif + + + + + + + + sy + + ar + Arabic (Syria) + + SY + + + syr + + + + + + syc + + syc + Syriac + + + + + syc_phonetic + + syc + Syriac (phonetic) + + + + + ku + + ku + Kurdish (Syria, Latin Q) + + kur + + + + + + ku_alt + + ku + Kurdish (Syria, Latin Alt-Q) + + kur + + + + + + ku_f + + ku + Kurdish (Syria, F) + + kur + + + + + + + + az + + az + Azerbaijani + + AZ + + + aze + + + + + + cyrillic + Azerbaijani (Cyrillic) + + + + + + + ml + + bm + Bambara + + ML + + + bam + + + + + + fr-oss + + fr + French (Mali, alt.) + + fra + + + + + + us-mac + + en + English (Mali, US, Macintosh) + + eng + + + + + + us-intl + + en + English (Mali, US, intl.) + + eng + + + + + + + + bd + + bn + Bangla + + BD + + + ben + + sat + + + + + + probhat + Bangla (Probhat) + + + + + + + by + + by + Belarusian + + BY + + + bel + + + + + + legacy + Belarusian (legacy) + + + + + latin + Belarusian (Latin) + + + + + intl + Belarusian (intl.) + + + + + phonetic + Belarusian (phonetic) + + + + + ru + Russian (Belarus) + + rus + + + + + + + + be + + be + Belgian + + BE + + + deu + nld + fra + + + + + + oss + Belgian (alt.) + + + + + oss_latin9 + Belgian (Latin-9 only, alt.) + + + + + iso-alternate + Belgian (ISO, alt.) + + + + + nodeadkeys + Belgian (no dead keys) + + + + + wang + Belgian (Wang 724 AZERTY) + + + + + + + dz + + kab + Berber (Algeria, Latin) + + DZ + + + tzm + fra + kab + + + + + + ber + kab + Berber (Algeria, Tifinagh) + + kab + + + + + + azerty-deadkeys + kab + Kabyle (AZERTY, with dead keys) + + kab + + + + + + qwerty-gb-deadkeys + kab + Kabyle (QWERTY, UK, with dead keys) + + kab + + + + + + qwerty-us-deadkeys + kab + Kabyle (QWERTY, US, with dead keys) + + kab + + + + + + ar + + ar + Arabic (Algeria) + + ara + + + + + + + + ba + + bs + Bosnian + + BA + + + bos + + + + + + alternatequotes + Bosnian (with guillemets) + + + + + unicode + Bosnian (with Bosnian digraphs) + + + + + unicodeus + Bosnian (US, with Bosnian digraphs) + + + + + us + Bosnian (US) + + + + + + + brai + + brl + Braille + + + + + left_hand + Braille (left-handed) + + + + + left_hand_invert + Braille (left-handed inverted thumb) + + + + + right_hand + Braille (right-handed) + + + + + right_hand_invert + Braille (right-handed inverted thumb) + + + + + + + bg + + bg + Bulgarian + + BG + + + bul + + + + + + phonetic + Bulgarian (traditional phonetic) + + + + + bas_phonetic + Bulgarian (new phonetic) + + + + + bekl + Bulgarian (enhanced) + + + + + + + mm + + my + Burmese + + MM + + + mya + + + + + + zawgyi + my-zwg + Burmese (Zawgyi) + + mya + + + + + + mnw + + mnw + Mon + + mnw + eng + + + + + + mnw-a1 + + mnw + Mon (A1) + + mnw + + + + + + shn + + shn + Shan + + shn + eng + + + + + + zgt + shn-zwg + Shan (Zawgyi) + + shn + + + + + + + + cn + + zh + Chinese + + CN + + + zho + + + + + + altgr-pinyin + Hanyu Pinyin Letters (with AltGr dead keys) + + zho + + + + + + mon_trad + Mongolian (Bichig) + + mvf + + + + + + mon_trad_todo + Mongolian (Todo) + + mvf + + + + + + mon_trad_xibe + Mongolian (Xibe) + + sjo + + + + + + mon_trad_manchu + Mongolian (Manchu) + + mnc + + + + + + mon_trad_galik + Mongolian (Galik) + + mvf + + + + + + mon_todo_galik + Mongolian (Todo Galik) + + mvf + + + + + + mon_manchu_galik + Mongolian (Manchu Galik) + + mnc + + + + + + tib + Tibetan + + bod + + + + + + tib_asciinum + Tibetan (with ASCII numerals) + + bod + + + + + + ug + + ug + Uyghur + + uig + + + + + + + + hr + + hr + Croatian + + HR + + + hrv + + + + + + alternatequotes + Croatian (with guillemets) + + + + + unicode + Croatian (with Croatian digraphs) + + + + + unicodeus + Croatian (US, with Croatian digraphs) + + + + + us + Croatian (US) + + + + + + + cz + + cs + Czech + + CZ + + + ces + + + + + + bksl + Czech (extra backslash) + + + + + qwerty + Czech (QWERTY) + + + + + qwerty_bksl + Czech (QWERTY, extra backslash) + + + + + winkeys + Czech (QWERTZ, Windows) + + + + + winkeys-qwerty + Czech (QWERTY, Windows) + + + + + qwerty-mac + Czech (QWERTY, Macintosh) + + + + + ucw + Czech (UCW, only accented letters) + + + + + dvorak-ucw + Czech (US, Dvorak, UCW support) + + + + + rus + + ru + Russian (Czechia, phonetic) + + rus + + + + + + + + dk + + da + Danish + + DK + + + dan + + + + + + nodeadkeys + Danish (no dead keys) + + + + + winkeys + Danish (Windows) + + + + + mac + Danish (Macintosh) + + + + + mac_nodeadkeys + Danish (Macintosh, no dead keys) + + + + + dvorak + Danish (Dvorak) + + + + + + + af + + fa + Dari + + AF + + + prs + + + + + + ps + + ps + Pashto + + pus + + + + + + uz + + uz + Uzbek (Afghanistan) + + uzb + + + + + + fa-olpc + + fa + Dari (Afghanistan, OLPC) + + + + + ps-olpc + + ps + Pashto (Afghanistan, OLPC) + + pus + + + + + + uz-olpc + + uz + Uzbek (Afghanistan, OLPC) + + uzb + + + + + + + + mv + + dv + Dhivehi + + MV + + + div + + + + + + + nl + + nl + Dutch + + NL + + + nld + + + + + + us + Dutch (US) + + + + + mac + Dutch (Macintosh) + + + + + std + Dutch (standard) + + + + + + + bt + + dz + Dzongkha + + BT + + + dzo + + + + + + au + + en + English (Australia) + + AU + + + eng + + + + + + cm + + cm + English (Cameroon) + + CM + + + eng + + + + + + french + + fr + French (Cameroon) + + fra + + + + + + qwerty + Cameroon Multilingual (QWERTY, intl.) + + eng + bas + nmg + fub + ewo + xmd + mfh + bkm + ozm + lns + sox + pny + wes + lem + nyj + mfk + mcp + ass + xed + dua + anv + bum + btb + bfd + azo + ken + yam + yat + yas + + + + + + azerty + Cameroon (AZERTY, intl.) + + fra + bas + nmg + fub + ewo + xmd + mfh + bkm + ozm + lns + sox + pny + wes + lem + nyj + mfk + mcp + ass + xed + dua + anv + bum + btb + bfd + azo + ken + yam + yat + yas + + + + + + dvorak + Cameroon (Dvorak, intl.) + + + + + mmuock + Mmuock + + + + + + + gh + + en + English (Ghana) + + GH + + + eng + + + + + + generic + English (Ghana, multilingual) + + + + + gillbt + English (Ghana, GILLBT) + + + + + akan + + ak + Akan + + aka + + + + + + avn + + avn + Avatime + + avn + + + + + + ewe + + ee + Ewe + + ewe + + + + + + fula + + ff + Fula + + ful + + + + + + ga + + gaa + Ga + + gaa + + + + + + hausa + + ha + Hausa (Ghana) + + hau + + + + + + + + nz + + en + English (New Zealand) + + NZ + + + eng + + + + + + mao + + mi + Maori + + mri + + + + + + + + ng + + en + English (Nigeria) + + NG + + + eng + + + + + + hausa + + ha + Hausa (Nigeria) + + hau + + + + + + igbo + + ig + Igbo + + ibo + + + + + + yoruba + + yo + Yoruba + + yor + + + + + + + + za + + en + English (South Africa) + + ZA + + + eng + + + + + + gb + + en + English (UK) + + GB + + + eng + + + + + + extd + English (UK, extended, Windows) + + + + + intl + English (UK, intl., with dead keys) + + + + + dvorak + English (UK, Dvorak) + + + + + dvorakukp + English (UK, Dvorak, with UK punctuation) + + + + + mac + English (UK, Macintosh) + + + + + mac_intl + English (UK, Macintosh, intl.) + + + + + colemak + English (UK, Colemak) + + + + + colemak_dh + English (UK, Colemak-DH) + + + + + gla + gd + Scottish Gaelic + + GB + CA + + + eng + gla + + + + + + pl + + pl + Polish (British keyboard) + + pol + + + + + + + + us + + en + English (US) + + US + + + eng + + + + + + euro + English (US, euro on 5) + + + + + intl + English (US, intl., with dead keys) + + + + + alt-intl + English (US, alt. intl.) + + + + + altgr-intl + English (intl., with AltGr dead keys) + + eng + fra + deu + + + + + + mac + English (Macintosh) + + + + + colemak + English (Colemak) + + + + + colemak_dh + English (Colemak-DH) + + + + + colemak_dh_wide + English (Colemak-DH Wide) + + + + + colemak_dh_ortho + English (Colemak-DH Ortholinear) + + + + + colemak_dh_iso + English (Colemak-DH ISO) + + + + + colemak_dh_wide_iso + English (Colemak-DH Wide ISO) + + + + + dvorak + English (Dvorak) + + + + + dvorak-intl + English (Dvorak, intl., with dead keys) + + + + + dvorak-alt-intl + English (Dvorak, alt. intl.) + + + + + dvorak-l + English (Dvorak, left-handed) + + + + + dvorak-r + English (Dvorak, right-handed) + + + + + dvorak-classic + English (classic Dvorak) + + + + + dvp + English (programmer Dvorak) + + + + + dvorak-mac + English (Dvorak, Macintosh) + + + + + norman + English (Norman) + + + + + symbolic + English (US, Symbolic) + + + + + workman + English (Workman) + + + + + workman-intl + English (Workman, intl., with dead keys) + + + + + olpc2 + English (the divide/multiply toggle the layout) + + + + + chr + + chr + Cherokee + + chr + + + + + + haw + + haw + Hawaiian + + haw + + + + + + rus + + ru + Russian (US, phonetic) + + rus + + + + + + hbs + Serbo-Croatian (US) + + eng + bos + hbs + hrv + srp + + + + + + + + epo + + eo + Esperanto + + epo + + + + + + legacy + Esperanto (legacy) + + + + + + + ee + + et + Estonian + + EE + + + est + + + + + + nodeadkeys + Estonian (no dead keys) + + + + + dvorak + Estonian (Dvorak) + + + + + us + Estonian (US) + + + + + + + fo + + fo + Faroese + + FO + + + fao + + + + + + nodeadkeys + Faroese (no dead keys) + + + + + + + ph + + ph + Filipino + + PH + + + eng + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + qwerty-bay + Filipino (QWERTY, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + + + + + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + + + + + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + colemak + Filipino (Colemak, Latin) + + + + + colemak-bay + Filipino (Colemak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + dvorak + Filipino (Dvorak, Latin) + + + + + dvorak-bay + Filipino (Dvorak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + + + fi + + fi + Finnish + + FI + + + fin + + + + + + winkeys + Finnish (Windows) + + + + + classic + Finnish (classic) + + + + + nodeadkeys + Finnish (classic, no dead keys) + + + + + mac + Finnish (Macintosh) + + + + + smi + Northern Saami (Finland) + + sme + + + + + + + + fr + + fr + French + + FR + + + fra + + + + + + nodeadkeys + French (no dead keys) + + + + + oss + French (alt.) + + + + + oss_nodeadkeys + French (alt., no dead keys) + + + + + oss_latin9 + French (alt., Latin-9 only) + + + + + latin9 + French (legacy, alt.) + + + + + latin9_nodeadkeys + French (legacy, alt., no dead keys) + + + + + azerty + French (AZERTY) + + + + + afnor + French (AZERTY, AFNOR) + + + + + bepo + French (BEPO) + + + + + bepo_latin9 + French (BEPO, Latin-9 only) + + + + + bepo_afnor + French (BEPO, AFNOR) + + + + + dvorak + French (Dvorak) + + + + + ergol + French (Ergo‑L) + + + + + ergol_iso + French (Ergo‑L, ISO variant) + + + + + mac + French (Macintosh) + + + + + us + French (US) + + + + + bre + Breton (France) + + bre + + + + + + oci + Occitan + + oci + + + + + + geo + Georgian (France, AZERTY Tskapo) + + kat + + + + + + + + ca + + fr + French (Canada) + + CA + + + fra + + + + + + fr-dvorak + + fr + French (Canada, Dvorak) + + + + + fr-legacy + + fr + French (Canada, legacy) + + + + + multix + Canadian (CSA) + + + + + eng + + en + English (Canada) + + eng + + + + + + ike + + ike + Inuktitut + + iku + + + + + + + + cd + + fr + French (Democratic Republic of the Congo) + + CD + + + fra + + + + + + + tg + + fr + French (Togo) + + TG + + + fra + ajg + blo + kpo + ewe + fon + fue + gej + ife + kbp + las + dop + mfg + nmz + bud + gng + kdh + soy + + + + + + ge + + ka + Georgian + + GE + + + kat + + + + + + ergonomic + Georgian (ergonomic) + + + + + mess + Georgian (MESS) + + + + + os + Ossetian (Georgia) + + oss + + + + + + ru + + ru + Russian (Georgia) + + rus + + + + + + + + de + + de + German + + DE + + + deu + + + + + + deadacute + German (dead acute) + + + + + deadgraveacute + German (dead grave acute) + + + + + deadtilde + German (dead tilde) + + + + + nodeadkeys + German (no dead keys) + + + + + e1 + German (E1) + + + + + e2 + German (E2) + + + + + T3 + German (T3) + + + + + us + German (US) + + + + + dvorak + German (Dvorak) + + + + + mac + German (Macintosh) + + + + + mac_nodeadkeys + German (Macintosh, no dead keys) + + + + + neo + German (Neo 2) + + + + + qwerty + German (QWERTY) + + + + + dsb + Lower Sorbian + + dsb + + + + + + dsb_qwertz + Lower Sorbian (QWERTZ) + + dsb + + + + + + ro + Romanian (Germany) + + ron + + + + + + ro_nodeadkeys + Romanian (Germany, no dead keys) + + ron + + + + + + ru + + ru + Russian (Germany, phonetic) + + rus + + + + + + tr + Turkish (Germany) + + tur + + + + + + + + at + + de + German (Austria) + + AT + + + deu + + + + + + nodeadkeys + German (Austria, no dead keys) + + + + + mac + German (Austria, Macintosh) + + + + + + + ch + + de + German (Switzerland) + + CH + + + deu + gsw + + + + + + de_nodeadkeys + + de + German (Switzerland, no dead keys) + + + + + de_mac + + de + German (Switzerland, Macintosh) + + + + + legacy + German (Switzerland, legacy) + + + + + fr + + fr + French (Switzerland) + + fra + + + + + + fr_nodeadkeys + + fr + French (Switzerland, no dead keys) + + fra + + + + + + fr_mac + + fr + French (Switzerland, Macintosh) + + fra + + + + + + + + gr + + gr + Greek + + GR + + + ell + + + + + + simple + Greek (simple) + + + + + nodeadkeys + Greek (no dead keys) + + + + + polytonic + Greek (polytonic) + + + + + + + il + + he + Hebrew + + IL + + + heb + + + + + + si2 + Hebrew (SI-1452-2) + + + + + lyx + Hebrew (lyx) + + + + + phonetic + Hebrew (phonetic) + + + + + biblical + Hebrew (Biblical, Tiro) + + + + + + + hu + + hu + Hungarian + + HU + + + hun + + + + + + standard + Hungarian (standard) + + + + + nodeadkeys + Hungarian (no dead keys) + + + + + qwerty + Hungarian (QWERTY) + + + + + 101_qwertz_comma_dead + Hungarian (QWERTZ, 101-key, comma, dead keys) + + + + + 101_qwertz_comma_nodead + Hungarian (QWERTZ, 101-key, comma, no dead keys) + + + + + 101_qwertz_dot_dead + Hungarian (QWERTZ, 101-key, dot, dead keys) + + + + + 101_qwertz_dot_nodead + Hungarian (QWERTZ, 101-key, dot, no dead keys) + + + + + 101_qwerty_comma_dead + Hungarian (QWERTY, 101-key, comma, dead keys) + + + + + 101_qwerty_comma_nodead + Hungarian (QWERTY, 101-key, comma, no dead keys) + + + + + 101_qwerty_dot_dead + Hungarian (QWERTY, 101-key, dot, dead keys) + + + + + 101_qwerty_dot_nodead + Hungarian (QWERTY, 101-key, dot, no dead keys) + + + + + 102_qwertz_comma_dead + Hungarian (QWERTZ, 102-key, comma, dead keys) + + + + + 102_qwertz_comma_nodead + Hungarian (QWERTZ, 102-key, comma, no dead keys) + + + + + 102_qwertz_dot_dead + Hungarian (QWERTZ, 102-key, dot, dead keys) + + + + + 102_qwertz_dot_nodead + Hungarian (QWERTZ, 102-key, dot, no dead keys) + + + + + 102_qwerty_comma_dead + Hungarian (QWERTY, 102-key, comma, dead keys) + + + + + 102_qwerty_comma_nodead + Hungarian (QWERTY, 102-key, comma, no dead keys) + + + + + 102_qwerty_dot_dead + Hungarian (QWERTY, 102-key, dot, dead keys) + + + + + 102_qwerty_dot_nodead + Hungarian (QWERTY, 102-key, dot, no dead keys) + + + + + + + is + + is + Icelandic + + IS + + + isl + + + + + + mac_legacy + Icelandic (Macintosh, legacy) + + + + + mac + Icelandic (Macintosh) + + + + + dvorak + Icelandic (Dvorak) + + + + + + + in + + in + Indian + + IN + + + + hin + anp + awa + bap + bfy + bgc + bhb + bhi + bho + bjj + bra + brx + btv + doi + dty + gbm + gom + gvr + hne + hoc + hoj + jml + kfr + kfy + khn + kok + kru + mag + mai + mar + mgp + mrd + mtr + mwr + nep + new + noe + raj + rjs + sck + srx + swv + taj + tdg + tdh + thl + thq + thr + tkt + wbr + wtm + xnr + xsr + + + + + + asm-kagapa + + as + Assamese (KaGaPa, phonetic) + + asm + + + + + + ben + + bn + Bangla (India) + + ben + + sat + + + + + + ben_probhat + + bn + Bangla (India, Probhat) + + ben + + sat + + + + + + ben_baishakhi + Bangla (India, Baishakhi) + + ben + + sat + + + + + + ben_bornona + Bangla (India, Bornona) + + ben + + sat + + + + + + ben-kagapa + Bangla (India, KaGaPa, phonetic) + + ben + sat + + + + + + ben_gitanjali + Bangla (India, Gitanjali) + + ben + + sat + + + + + + ben_inscript + Bangla (India, Baishakhi InScript) + + ben + + sat + + + + + + eng + + en + English (India, with rupee) + + eng + + + + + + guj + + gu + Gujarati + + guj + + + + + + guj-kagapa + + gu + Gujarati (KaGaPa, phonetic) + + guj + + + + + + bolnagri + + hi + Hindi (Bolnagri) + + hin + + + + + + hin-wx + + hi + Hindi (Wx) + + hin + + + + + + hin-kagapa + + hi + Hindi (KaGaPa, phonetic) + + hin + + + + + + kan + + kn + Kannada + + kan + + + + + + kan-kagapa + + kn + Kannada (KaGaPa, phonetic) + + kan + + + + + + mal + + ml + Malayalam + + mal + + + + + + mal_lalitha + + ml + Malayalam (Lalitha) + + mal + + + + + + mal_enhanced + + ml + Malayalam (enhanced InScript, with rupee) + + mal + + + + + + mal_poorna + + ml + Malayalam (Poorna, extended InScript) + + mal + + + + + + mni + Manipuri (Meitei) + + mni + + + + + + mar-kagapa + + mr + Marathi (KaGaPa, phonetic) + + mar + + + + + + marathi + Marathi (enhanced InScript) + + mar + + + + + + ori + + or + Oriya + + ori + + sat + + + + + + ori-bolnagri + + or + Oriya (Bolnagri) + + ori + + sat + + + + + + ori-wx + + or + Oriya (Wx) + + ori + + sat + + + + + + guru + + pa + Punjabi (Gurmukhi) + + pan + + + + + + jhelum + + pa + Punjabi (Gurmukhi Jhelum) + + pan + + + + + + san-kagapa + + sa + Sanskrit (KaGaPa, phonetic) + + san + + + + + + sat + + sat + Santali (Ol Chiki) + + + sat + + + + + + tamilnet + + ta + Tamil (TamilNet '99) + + tam + + + + + + tamilnet_tamilnumbers + + ta + Tamil (TamilNet '99 with Tamil numerals) + + tam + + + + + + tamilnet_TAB + + ta + Tamil (TamilNet '99, TAB encoding) + + tam + + + + + + tamilnet_TSCII + + ta + Tamil (TamilNet '99, TSCII encoding) + + tam + + + + + + tam + + ta + Tamil (InScript, with Arabic numerals) + + tam + + + + + + tam_tamilnumbers + + ta + Tamil (InScript, with Tamil numerals) + + tam + + + + + + tel + + te + Telugu + + tel + + + + + + tel-kagapa + + te + Telugu (KaGaPa, phonetic) + + tel + + + + + + tel-sarala + + te + Telugu (Sarala) + + tel + + + + + + urd-phonetic + + ur + Urdu (phonetic) + + urd + + + + + + urd-phonetic3 + + ur + Urdu (alt. phonetic) + + urd + + + + + + urd-winkeys + + ur + Urdu (Windows) + + urd + + + + + + iipa + Indic IPA + + eng + + + + + + + + id + + id + Indonesian (Latin) + + ID + + + ind + ace + ban + bbc + bew + bjn + btm + bts + bug + gor + jav + jax + mad + mak + min + mui + sas + sun + + + + + + melayu-phonetic + Indonesian (Arab Melayu, phonetic) + + + + + melayu-phoneticx + Indonesian (Arab Melayu, extended phonetic) + + + + + pegon-phonetic + Indonesian (Arab Pegon, phonetic) + + + + + javanese + Javanese + + + + + + + ie + + ie + Irish + + IE + + + eng + + + + + + UnicodeExpert + Irish (UnicodeExpert) + + + + + CloGaelach + CloGaelach + + gle + + + + + + ogam + Ogham + + sga + + + + + + ogam_is434 + Ogham (IS434) + + sga + + + + + + + + it + + it + Italian + + IT + + + ita + + + + + + nodeadkeys + Italian (no dead keys) + + + + + winkeys + Italian (Windows) + + + + + mac + Italian (Macintosh) + + + + + us + Italian (US) + + + + + ibm + Italian (IBM 142) + + + + + fur + Friulian (Italy) + + fur + + + + + + scn + Sicilian + + ita + scn + + + + + + geo + Georgian (Italy) + + kat + + + + + + + + jp + + ja + Japanese + + JP + + + jpn + + + + + + kana + Japanese (Kana) + + + + + kana86 + Japanese (Kana 86) + + + + + OADG109A + Japanese (OADG 109A) + + + + + mac + Japanese (Macintosh) + + + + + dvorak + Japanese (Dvorak) + + + + + + + kz + + kk + Kazakh + + KZ + + + kaz + + + + + + kazrus + Kazakh (with Russian) + + kaz + rus + + + + + + ext + Kazakh (extended) + + kaz + + + + + + latin + Kazakh (Latin) + + kaz + + + + + + ruskaz + + ru + Russian (Kazakhstan, with Kazakh) + + kaz + rus + + + + + + + + kh + + km + Khmer (Cambodia) + + KH + + + khm + + + + + + + kr + + ko + Korean + + KR + + + kor + + + + + + kr104 + Korean (101/104-key compatible) + + + + + + + kg + + ki + Kyrgyz + + KG + + + kir + + + + + + phonetic + Kyrgyz (phonetic) + + + + + + + la + + lo + Lao + + LA + + + lao + + + + + + stea + Lao (STEA) + + lao + + + + + + + + lv + + lv + Latvian + + LV + + + lav + + + + + + apostrophe + Latvian (apostrophe) + + + + + tilde + Latvian (tilde) + + + + + fkey + Latvian (F) + + + + + modern + Latvian (Modern Latin) + + + + + modern-cyr + Latvian (Modern Cyrillic) + + + + + ergonomic + Latvian (ergonomic, ŪGJRMV) + + + + + adapted + Latvian (adapted) + + + + + + + lt + + lt + Lithuanian + + LT + + + lit + + + + + + std + Lithuanian (standard) + + + + + us + Lithuanian (US) + + + + + ibm + Lithuanian (IBM) + + + + + lekp + Lithuanian (LEKP) + + + + + lekpa + Lithuanian (LEKPa) + + + + + ratise + Lithuanian (Ratise) + + + + + sgs + Samogitian + + sgs + + + + + + + + mk + + mk + Macedonian + + MK + + + mkd + + + + + + nodeadkeys + Macedonian (no dead keys) + + + + + + + my + + ms + Malay (Jawi, Arabic Keyboard) + + MY + + + ind + msa + min + ace + bjn + tsg + mfa + + + + + + phonetic + Malay (Jawi, phonetic) + + + + + + + mt + + mt + Maltese + + MT + + + mlt + + + + + + us + Maltese (US) + + + + + alt-us + Maltese (US, with AltGr overrides) + + + + + alt-gb + Maltese (UK, with AltGr overrides) + + + + + + + md + + ro + Moldavian + + MD + + + ron + + + + + + gag + + gag + Gagauz (Moldova) + + gag + + + + + + + + mn + + mn + Mongolian + + MN + + + mon + + + + + + + me + + sr + Montenegrin + + ME + + + srp + + + + + + cyrillic + Montenegrin (Cyrillic) + + + + + cyrillicyz + Montenegrin (Cyrillic, ZE and ZHE swapped) + + + + + cyrillicalternatequotes + Montenegrin (Cyrillic, with guillemets) + + + + + latinunicode + Montenegrin (Latin, Unicode) + + + + + latinyz + Montenegrin (Latin, QWERTY) + + + + + latinunicodeyz + Montenegrin (Latin, Unicode, QWERTY) + + + + + latinalternatequotes + Montenegrin (Latin, with guillemets) + + + + + + + np + + ne + Nepali + + NP + + + nep + + sat + + + + + + gn + + nqo + N'Ko (AZERTY) + + GN + + + nqo + + + + + + + no + + no + Norwegian + + NO + + + nor + nob + nno + + + + + + nodeadkeys + Norwegian (no dead keys) + + + + + winkeys + Norwegian (Windows) + + + + + mac + Norwegian (Macintosh) + + + + + mac_nodeadkeys + Norwegian (Macintosh, no dead keys) + + + + + colemak + Norwegian (Colemak) + + + + + colemak_dh + Norwegian (Colemak-DH) + + + + + colemak_dh_wide + Norwegian (Colemak-DH Wide) + + + + + dvorak + Norwegian (Dvorak) + + + + + smi + Northern Saami (Norway) + + sme + + + + + + smi_nodeadkeys + Northern Saami (Norway, no dead keys) + + sme + + + + + + + + ir + + fa + Persian + + IR + + + fas + + + + + + pes_keypad + Persian (with Persian keypad) + + + + + winkeys + Persian (Windows) + + + + + azb + + azb + Azerbaijani (Iran) + + azb + + + + + + ku + + ku + Kurdish (Iran, Latin Q) + + kur + + + + + + ku_alt + + ku + Kurdish (Iran, Latin Alt-Q) + + kur + + + + + + ku_f + + ku + Kurdish (Iran, F) + + kur + + + + + + ku_ara + + ku + Kurdish (Iran, Arabic-Latin) + + kur + + + + + + + + pl + + pl + Polish + + PL + + + pol + + + + + + legacy + Polish (legacy) + + + + + qwertz + Polish (QWERTZ) + + + + + dvorak + Polish (Dvorak) + + + + + dvorak_quotes + Polish (Dvorak, with Polish quotes on quotemark key) + + + + + dvorak_altquotes + Polish (Dvorak, with Polish quotes on key 1) + + + + + dvp + Polish (programmer Dvorak) + + + + + csb + Kashubian + + csb + + + + + + szl + Silesian + + szl + + + + + + ru_phonetic_dvorak + + ru + Russian (Poland, phonetic Dvorak) + + rus + + + + + + + + pt + + pt + Portuguese + + PT + + + por + + + + + + nodeadkeys + Portuguese (no dead keys) + + + + + mac + Portuguese (Macintosh) + + + + + mac_nodeadkeys + Portuguese (Macintosh, no dead keys) + + + + + nativo + Portuguese (Nativo) + + + + + nativo-us + Portuguese (Nativo for US keyboards) + + + + + nativo-epo + Esperanto (Portugal, Nativo) + + epo + + + + + + + + br + + pt + Portuguese (Brazil) + + BR + + + por + + + + + + nodeadkeys + Portuguese (Brazil, no dead keys) + + + + + dvorak + Portuguese (Brazil, Dvorak) + + + + + nativo + Portuguese (Brazil, Nativo) + + + + + nativo-us + Portuguese (Brazil, Nativo for US keyboards) + + + + + thinkpad + Portuguese (Brazil, IBM/Lenovo ThinkPad) + + + + + nativo-epo + Esperanto (Brazil, Nativo) + + epo + + + + + + rus + + ru + Russian (Brazil, phonetic) + + rus + + + + + + + + ro + + ro + Romanian + + RO + + + ron + + + + + + std + Romanian (standard) + + + + + winkeys + Romanian (Windows) + + + + + + + ru + + ru + Russian + + RU + + + rus + + + + + + phonetic + Russian (phonetic) + + + + + phonetic_winkeys + Russian (phonetic, Windows) + + + + + phonetic_YAZHERTY + Russian (phonetic, YAZHERTY) + + + + + phonetic_azerty + Russian (phonetic, AZERTY) + + + + + phonetic_dvorak + Russian (phonetic, Dvorak) + + + + + typewriter + Russian (typewriter) + + + + + ruchey_ru + Russian (engineering, RU) + + + + + ruchey_en + en + Russian (engineering, EN) + + + + + legacy + Russian (legacy) + + + + + typewriter-legacy + Russian (typewriter, legacy) + + + + + dos + Russian (DOS) + + + + + mac + Russian (Macintosh) + + + + + ab + Abkhazian (Russia) + + abk + + + + + + bak + Bashkirian + + bak + + + + + + cv + Chuvash + + chv + + + + + + cv_latin + Chuvash (Latin) + + chv + + + + + + xal + Kalmyk + + xal + + + + + + kom + Komi + + kom + + + + + + chm + Mari + + chm + + + + + + os_legacy + Ossetian (legacy) + + oss + + + + + + os_winkeys + Ossetian (Windows) + + oss + + + + + + srp + Serbian (Russia) + + rus + srp + + + + + + tt + Tatar + + tat + + + + + + udm + Udmurt + + udm + + + + + + sah + Yakut + + sah + + + + + + + + rs + + sr + Serbian + + RS + + + srp + + + + + + alternatequotes + Serbian (Cyrillic, with guillemets) + + + + + yz + Serbian (Cyrillic, ZE and ZHE swapped) + + + + + latin + Serbian (Latin) + + + + + latinalternatequotes + Serbian (Latin, with guillemets) + + + + + latinunicode + Serbian (Latin, Unicode) + + + + + latinyz + Serbian (Latin, QWERTY) + + + + + latinunicodeyz + Serbian (Latin, Unicode, QWERTY) + + + + + rue + Pannonian Rusyn + + rue + + + + + + + + lk + + si + Sinhala (phonetic) + + LK + + + sin + + + + + + us + + si + Sinhala (US) + + + + + tam_unicode + + ta + Tamil (Sri Lanka, TamilNet '99) + + tam + + + + + + tam_TAB + Tamil (Sri Lanka, TamilNet '99, TAB encoding) + + tam + + + + + + + + sk + + sk + Slovak + + SK + + + slk + + + + + + bksl + Slovak (extra backslash) + + + + + qwerty + Slovak (QWERTY) + + + + + qwerty_bksl + Slovak (QWERTY, extra backslash) + + + + + + + si + + sl + Slovenian + + SI + + + slv + + + + + + alternatequotes + Slovenian (with guillemets) + + + + + us + Slovenian (US) + + + + + + + es + + es + Spanish + + ES + + + spa + + + + + + nodeadkeys + Spanish (no dead keys) + + + + + deadtilde + Spanish (dead tilde) + + + + + winkeys + Spanish (Windows) + + + + + dvorak + Spanish (Dvorak) + + + + + ast + ast + Asturian (Spain, with bottom-dot H and L) + + ast + + + + + + cat + ca + Catalan (Spain, with middle-dot L) + + cat + + + + + + + + latam + + es + Spanish (Latin American) + + AR + BO + CL + CO + CR + CU + DO + EC + GT + HN + HT + MX + NI + PA + PE + PR + PY + SV + US + UY + VE + + + spa + + + + + + nodeadkeys + Spanish (Latin American, no dead keys) + + + + + deadtilde + Spanish (Latin American, dead tilde) + + + + + dvorak + Spanish (Latin American, Dvorak) + + + + + colemak + Spanish (Latin American, Colemak) + + + + + + + ke + + sw + Swahili (Kenya) + + KE + + + swa + + + + + + kik + + ki + Kikuyu + + kik + + + + + + + + tz + + sw + Swahili (Tanzania) + + TZ + + + swa + + + + + + se + + sv + Swedish + + SE + + + swe + + + + + + nodeadkeys + Swedish (no dead keys) + + + + + dvorak + Swedish (Dvorak) + + + + + us_dvorak + Swedish (Dvorak, intl.) + + + + + svdvorak + Swedish (Svdvorak) + + + + + mac + Swedish (Macintosh) + + + + + us + Swedish (US) + + + + + swl + Swedish Sign Language + + swl + + + + + + smi + Northern Saami (Sweden) + + sme + + + + + + rus + + ru + Russian (Sweden, phonetic) + + rus + + + + + + + + tw + + zh + Taiwanese + + TW + + + fox + + + + + + indigenous + Taiwanese (indigenous) + + ami + tay + bnn + ckv + pwn + pyu + pzh + dru + ssf + szy + tao + tsu + trv + xnb + sxr + uon + fos + + + + + + saisiyat + + xsy + Saisiyat (Taiwan) + + xsy + + + + + + + + tj + + tg + Tajik + + TJ + + + tgk + + + + + + legacy + Tajik (legacy) + + + + + + + th + + th + Thai + + TH + + + tha + + + + + + tis + Thai (TIS-820.2538) + + + + + pat + Thai (Pattachote) + + + + + + + bw + + tn + Tswana + + BW + + + tsn + + + + + + tm + + tk + Turkmen + + TM + + + tuk + + + + + + alt + Turkmen (Alt-Q) + + + + + + + tr + + tr + Turkish + + TR + + + tur + + + + + + f + Turkish (F) + + + + + e + Turkish (E) + + + + + alt + Turkish (Alt-Q) + + + + + intl + Turkish (intl., with dead keys) + + + + + ku + + ku + Kurdish (Turkey, Latin Q) + + kur + + + + + + ku_f + + ku + Kurdish (Turkey, F) + + kur + + + + + + ku_alt + + ku + Kurdish (Turkey, Latin Alt-Q) + + kur + + + + + + + + ua + + uk + Ukrainian + + UA + + + ukr + + + + + + phonetic + Ukrainian (phonetic) + + + + + typewriter + Ukrainian (typewriter) + + + + + winkeys + Ukrainian (Windows) + + + + + macOS + Ukrainian (macOS) + + + + + legacy + Ukrainian (legacy) + + + + + homophonic + Ukrainian (homophonic) + + + + + crh + + crh + Crimean Tatar (Turkish Q) + + crh + + + + + + crh_f + + crh + Crimean Tatar (Turkish F) + + crh + + + + + + crh_alt + + crh + Crimean Tatar (Turkish Alt-Q) + + crh + + + + + + + + pk + + ur + Urdu (Pakistan) + + PK + + + urd + + + + + + urd-crulp + Urdu (Pakistan, CRULP) + + + + + urd-nla + Urdu (Pakistan, NLA) + + + + + ara + + ar + Arabic (Pakistan) + + ara + + + + + + snd + + sd + Sindhi + + snd + + + + + + + + uz + + uz + Uzbek + + UZ + + + uzb + + + + + + latin + Uzbek (Latin) + + + + + + + vn + + vi + Vietnamese + + VN + + + vie + + + + + + us + Vietnamese (US) + + US + + + + + + fr + Vietnamese (France) + + FR + + + + + + + + sn + + wo + Wolof + + SN + + + wol + + + + + + + custom + custom + A user-defined custom Layout + + und + + + + + + + + + + + grp + Switching to another layout + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lv2 + Key to choose the 2nd level + + + + + + + lv3 + Key to choose the 3rd level + + + + + + + + + + + + + + + + + + + + + + + ctrl + Ctrl position + + + + + + + + + + + + + + + + + + + + grp_led + Use keyboard LED to show alternative layout + + + + + + + + + mod_led + Use keyboard LED to indicate modifiers + + + + + + + keypad + Layout of numeric keypad + + + + + + + + + + + + + + + kpdl + Numeric keypad Delete behavior + + + + + + + + + + + + + + caps + Caps Lock behavior + + + + + + + + + + + + + + + + + + + + + + + altwin + Alt and Win behavior + + + + + + + + + + + + + + + + + + + + Compose key + Position of Compose key + + + + + + + + + + + + + + + + + + + + + + + + compat + Compatibility options + + + + + + + + + + + + + + + + + + + + + + + + currencysign + Currency signs + + + + + + + + + + + lv5 + Key to choose the 5th level + + + + + + + + + + + + + + + nbsp + Non-breaking space input + + + + + + + + + + + + + + + + + + + japan + Japanese keyboard options + + + + + + + + korean + Korean Hangul/Hanja keys + + + + + + + + + esperanto + Esperanto letters with superscripts + + + + + + + + solaris + Old Solaris keycodes compatibility + + + + + + terminate + Key sequence to kill the X server + + + + + + custom + Miscellaneous options + + + + + + diff --git a/nixos/xkb/rules/evdev b/nixos/xkb/rules/evdev new file mode 100644 index 00000000..cc9522f3 --- /dev/null +++ b/nixos/xkb/rules/evdev @@ -0,0 +1,904 @@ +// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.py FROM rules/*.part +// +// +// Rules for resolving XKB components for use with XFree86 +// Copyright 1996 by Joseph Moss +// +// 2002 Modifier: Ivan Pascal The XFree86 Project +// + +// If you want non-latin layouts to implicitly include the en_US layout, +// then uncomment the following lines: +//! $nonlatin = af am ara bd bg bt by eg et ge gn gr id il in ir \ +// jp jv kg kh kr kz la lk ma me mk mm mn mv my \ +// pk rs ru sy th tj tz ua uz + +// PC models +! $pcmodels = pc86 pc101 pc102 pc104 pc104alt pc105 + +// Jolla devices and keyboards +! $jollamodels = jollasbj + +// Microsoft models (using MS geometry) +! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose microsoftsurface + +// TypeMatrix geometries +! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106 + +// Country files that provide specializations for the OLPC: +! $olpclayouts = af am ara br ca es et fr in it kh kz mn ng np pk ru th tr us + +! $applealu = applealu_ansi applealu_iso applealu_jis + +! $macvendorlayouts = ch de dk fi fr gb is it latam nl no pt se us + +// The countries that predominantly have AZERTY or QWERTZ layouts: +! $azerty = be fr +! $qwertz = al ch cz de hr hu ro si sk + +! $thinkpads = thinkpad thinkpad60 thinkpadz60 + +! $sun = sun_type6_jp sun_type6_usb sun_type6_euro_usb \ + sun_type6_jp_usb sun_type6_unix_usb sun_type7_jp_usb \ + sun_type7_usb sun_type7_euro_usb sun_type7_unix_usb + +! $sun_jp = sun_type6_jp sun_type6_jp_usb sun_type7_jp_usb + +// Sun Type_6_7 keyboards with custom layouts +! $sun_custom = ara be br ca ch cz de dk \ + ee es fi fr gb gr it jp \ + kr lt lv nl no pl pt ro \ + ru se sk tr tw ua us + +! $sun_var = sun_type6 sun_type6_suncompat sun_type6_de sun_type6_fr \ + sun_type7 sun_type7_suncompat suncompat + +! $sun_compat = sun_type6 sun_type6_suncompat sun_type7_suncompat suncompat +// no tweaks needed for evdev + +! model = keycodes + $jollamodels = evdev+jolla(jolla) + olpc = evdev+olpc(olpc) + olpcm = evdev+olpc(olpcm) + * = evdev + +! layout[1] = keycodes + $azerty = +aliases(azerty) + $qwertz = +aliases(qwertz) + * = +aliases(qwerty) + +! layout = keycodes + $azerty = +aliases(azerty) + $qwertz = +aliases(qwertz) + * = +aliases(qwerty) + +! option = keycodes + +! model layout = geometry + thinkpad us = thinkpad(us) + +! model = geometry + microsoftelite = microsoft(elite) + $msmodels = microsoft(natural) + dell101 = dell(dell101) + dellm65 = dell(dellm65) + latitude = dell(latitude) + flexpro = keytronic(FlexPro) + hp6000 = hp(omnibook) + hpmini110 = hp(mini110) + hpdv5 = hp(dv5) + omnikey101 = northgate(omnikey101) + sanwaskbkg3 = sanwa(sanwaskbkg3) + $pcmodels = pc(%m) + everex = everex(STEPnote) + thinkpad = thinkpad(intl) + thinkpad60 = thinkpad(60) + thinkpadz60 = thinkpad(60) + apex300 = steelseries(apex300) + $tmgeometries = typematrix(%m) + winbook = winbook(XP5) + pc98 = nec(pc98) + $applealu = macintosh(%m) + hhk = hhk(basic) + kinesis = kinesis(model100) + sun_type6_jp = sun(type6jp) + sun_type6_usb = sun(type6) + sun_type6_euro_usb = sun(type6tuv) + sun_type6_jp_usb = sun(type6jp) + sun_type6_unix_usb = sun(type6unix) + sun_type7_jp_usb = sun(type6jp) + sun_type7_usb = sun(type7) + sun_type7_euro_usb = sun(type7tuv) + sun_type7_unix_usb = sun(type7unix) + * = pc(pc104) + +! model layout variant = symbols + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * fi basic = pc+fi(classic) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * in urd = pc+in(urd-phonetic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tel basic = pc+in(tel) + * ara uga = pc+ancient(uga) + * ir ave = pc+ancient(ave) + * in eeyek = pc+in(mni) + * in olck = pc+in(sat) + * de lld = pc+it(lldde) + * ara qwerty = pc+ara(basic) + * ara qwerty_digits = pc+ara(digits) + * mao basic = pc+nz(mao) + * gr extended = pc+gr(basic) + * $sun_custom $sun_var = pc+sun_vndr/%l%(v) + +! model layout = symbols + * ben = pc+in(ben) + * dev = pc+in(deva) + * guj = pc+in(guj) + * gur = pc+in(guru) + * kan = pc+in(kan) + * ogham = pc+ie(ogam) + * ori = pc+in(ori) + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * us_intl = pc+us(alt-intl) + * mao(nz(mao)) = pc+//(Delete) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * fi(basic) = pc+fi(classic) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * in(urd) = pc+in(urd-phonetic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tel(basic) = pc+in(tel) + * ara(uga) = pc+ancient(uga) + * ir(ave) = pc+ancient(ave) + * in(eeyek) = pc+in(mni) + * in(olck) = pc+in(sat) + * de(lld) = pc+it(lldde) + * ara(qwerty) = pc+ara(basic) + * ara(qwerty_digits) = pc+ara(digits) + * mao(basic) = pc+nz(mao) + * gr(extended) = pc+gr(basic) + +! model layout = symbols + ataritt $nonlatin = xfree68_vndr/ataritt(us)+%l%(v):2 + ataritt * = xfree68_vndr/ataritt(us)+%l%(v) + amiga $nonlatin = xfree68_vndr/amiga(usa1)+%l%(v):2 + amiga * = xfree68_vndr/amiga(usa1)+%l%(v) + empty * = empty(basic) + * empty = empty(basic) + jollasbj $nonlatin = jolla_vndr/sbj(common)+us+%l%(v):2 + jollasbj * = jolla_vndr/sbj(common)+%l%(v) + $sun $sun_custom = pc+sun_vndr/%l%(v) + pc98 nec_vndr/jp = nec_vndr/jp(pc98) + applealu_jis jp = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)+macintosh_vndr/jp(mac):2 + applealu_jis * = macintosh_vndr/apple(alukbd)+%l%(v)+macintosh_vndr/jp(mac):2 + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l%(v) + $applealu * = macintosh_vndr/apple(alukbd)+%l%(v) + olpc $olpclayouts = olpc+%l%(m) + olpc * = olpc+%l%(v) + olpcm $olpclayouts = olpc+%l%(m) + olpcm * = olpc+%l%(v) + $thinkpads br = pc+br(thinkpad) + sl-c3x00 * = pc+sharp_vndr/sl-c3x00(basic) + ws003sh * = pc+sharp_vndr/ws003sh(basic) + ws007sh * = pc+sharp_vndr/ws007sh(basic) + ws011sh * = pc+sharp_vndr/ws011sh(basic) + ws020sh * = pc+sharp_vndr/ws020sh(basic) + * $nonlatin = pc+us+%l%(v):2 + * * = pc+%l%(v) + +! model layout[1] = symbols + * ben = pc+in(ben) + * dev = pc+in(deva) + * guj = pc+in(guj) + * gur = pc+in(guru) + * kan = pc+in(kan) + * ogham = pc+ie(ogam) + * ori = pc+in(ori) + * syr = pc+sy(syc) + * tel = pc+in(tel) + * tml = pc+in(tam) + * us_intl = pc+us(alt-intl) + * mao(nz(mao)) = pc+//(Delete) + * ben(basic) = pc+in(ben) + * ben(probhat) = pc+in(ben_probhat) + * dev(basic) = pc+in(deva) + * fi(basic) = pc+fi(classic) + * guj(basic) = pc+in(guj) + * gur(basic) = pc+in(guru) + * in(urd) = pc+in(urd-phonetic) + * kan(basic) = pc+in(kan) + * mal(basic) = pc+in(mal) + * ogham(basic) = pc+ie(ogam) + * ogham(is434) = pc+ie(ogam_is434) + * ori(basic) = pc+in(ori) + * ro(de) = pc+ro(winkeys) + * ro(us) = pc+ro(std) + * ro(academic) = pc+ro(std) + * ro(std_comma) = pc+ro(std) + * ro(comma) = pc+ro(basic) + * ru(os) = pc+ru(os_legacy) + * pk(urd) = pc+pk(urd-phonetic) + * syr(basic) = pc+sy(syc) + * syr(phonetic) = pc+sy(syc_phonetic) + * tel(basic) = pc+in(tel) + * ara(uga) = pc+ancient(uga) + * ir(ave) = pc+ancient(ave) + * in(eeyek) = pc+in(mni) + * in(olck) = pc+in(sat) + * de(lld) = pc+it(lldde) + * ara(qwerty) = pc+ara(basic) + * ara(qwerty_digits) = pc+ara(digits) + * mao(basic) = pc+nz(mao) + * gr(extended) = pc+gr(basic) + +! model layout[1] = symbols + ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1]) + amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1]) + jollasbj * = jolla_vndr/sbj(common)+%l[1]%(v[1]) + $sun $sun_custom = pc+sun_vndr/%l[1]%(v[1]) + applealu_jis us = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac) + $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l[1]%(v[1]) + $applealu * = macintosh_vndr/apple(alukbd)+%l[1]%(v[1]) + $thinkpads br = pc+%l[1](thinkpad) + * * = pc+%l[1]%(v[1]) + +! model layout[1] variant[1] = symbols + * ben basic = pc+in(ben) + * ben probhat = pc+in(ben_probhat) + * dev basic = pc+in(deva) + * fi basic = pc+fi(classic) + * guj basic = pc+in(guj) + * gur basic = pc+in(guru) + * in urd = pc+in(urd-phonetic) + * kan basic = pc+in(kan) + * mal basic = pc+in(mal) + * ogham basic = pc+ie(ogam) + * ogham is434 = pc+ie(ogam_is434) + * ori basic = pc+in(ori) + * ro de = pc+ro(winkeys) + * ro us = pc+ro(std) + * ro academic = pc+ro(std) + * ro std_comma = pc+ro(std) + * ro comma = pc+ro(basic) + * ru os = pc+ru(os_legacy) + * pk urd = pc+pk(urd-phonetic) + * syr basic = pc+sy(syc) + * syr phonetic = pc+sy(syc_phonetic) + * tel basic = pc+in(tel) + * ara uga = pc+ancient(uga) + * ir ave = pc+ancient(ave) + * in eeyek = pc+in(mni) + * in olck = pc+in(sat) + * de lld = pc+it(lldde) + * ara qwerty = pc+ara(basic) + * ara qwerty_digits = pc+ara(digits) + * mao basic = pc+nz(mao) + * gr extended = pc+gr(basic) + +! model layout[2] = symbols + * ben = +in(ben):2 + * dev = +in(deva):2 + * guj = +in(guj):2 + * gur = +in(guru):2 + * kan = +in(kan):2 + * ogham = +ie(ogam):2 + * ori = +in(ori):2 + * syr = +sy(syc):2 + * tel = +in(tel):2 + * tml = +in(tam):2 + * us_intl = +us(alt-intl):2 + * mao(nz(mao)) = +//(Delete):2 + * ben(basic) = +in(ben):2 + * ben(probhat) = +in(ben_probhat):2 + * dev(basic) = +in(deva):2 + * fi(basic) = +fi(classic):2 + * guj(basic) = +in(guj):2 + * gur(basic) = +in(guru):2 + * in(urd) = +in(urd-phonetic):2 + * kan(basic) = +in(kan):2 + * mal(basic) = +in(mal):2 + * ogham(basic) = +ie(ogam):2 + * ogham(is434) = +ie(ogam_is434):2 + * ori(basic) = +in(ori):2 + * ro(de) = +ro(winkeys):2 + * ro(us) = +ro(std):2 + * ro(academic) = +ro(std):2 + * ro(std_comma) = +ro(std):2 + * ro(comma) = +ro(basic):2 + * ru(os) = +ru(os_legacy):2 + * pk(urd) = +pk(urd-phonetic):2 + * syr(basic) = +sy(syc):2 + * syr(phonetic) = +sy(syc_phonetic):2 + * tel(basic) = +in(tel):2 + * ara(uga) = +ancient(uga):2 + * ir(ave) = +ancient(ave):2 + * in(eeyek) = +in(mni):2 + * in(olck) = +in(sat):2 + * de(lld) = +it(lldde):2 + * ara(qwerty) = +ara(basic):2 + * ara(qwerty_digits) = +ara(digits):2 + * mao(basic) = +nz(mao):2 + * gr(extended) = +gr(basic):2 + $sun $sun_custom = +sun_vndr/%l[2]%(v[2]):2 + * * = +%l[2]%(v[2]):2 + +! model layout[3] = symbols + * ben = +in(ben):3 + * dev = +in(deva):3 + * guj = +in(guj):3 + * gur = +in(guru):3 + * kan = +in(kan):3 + * ogham = +ie(ogam):3 + * ori = +in(ori):3 + * syr = +sy(syc):3 + * tel = +in(tel):3 + * tml = +in(tam):3 + * us_intl = +us(alt-intl):3 + * mao(nz(mao)) = +//(Delete):3 + * ben(basic) = +in(ben):3 + * ben(probhat) = +in(ben_probhat):3 + * dev(basic) = +in(deva):3 + * fi(basic) = +fi(classic):3 + * guj(basic) = +in(guj):3 + * gur(basic) = +in(guru):3 + * in(urd) = +in(urd-phonetic):3 + * kan(basic) = +in(kan):3 + * mal(basic) = +in(mal):3 + * ogham(basic) = +ie(ogam):3 + * ogham(is434) = +ie(ogam_is434):3 + * ori(basic) = +in(ori):3 + * ro(de) = +ro(winkeys):3 + * ro(us) = +ro(std):3 + * ro(academic) = +ro(std):3 + * ro(std_comma) = +ro(std):3 + * ro(comma) = +ro(basic):3 + * ru(os) = +ru(os_legacy):3 + * pk(urd) = +pk(urd-phonetic):3 + * syr(basic) = +sy(syc):3 + * syr(phonetic) = +sy(syc_phonetic):3 + * tel(basic) = +in(tel):3 + * ara(uga) = +ancient(uga):3 + * ir(ave) = +ancient(ave):3 + * in(eeyek) = +in(mni):3 + * in(olck) = +in(sat):3 + * de(lld) = +it(lldde):3 + * ara(qwerty) = +ara(basic):3 + * ara(qwerty_digits) = +ara(digits):3 + * mao(basic) = +nz(mao):3 + * gr(extended) = +gr(basic):3 + $sun $sun_custom = +sun_vndr/%l[3]%(v[3]):3 + * * = +%l[3]%(v[3]):3 + +! model layout[4] = symbols + * ben = +in(ben):4 + * dev = +in(deva):4 + * guj = +in(guj):4 + * gur = +in(guru):4 + * kan = +in(kan):4 + * ogham = +ie(ogam):4 + * ori = +in(ori):4 + * syr = +sy(syc):4 + * tel = +in(tel):4 + * tml = +in(tam):4 + * us_intl = +us(alt-intl):4 + * mao(nz(mao)) = +//(Delete):4 + * ben(basic) = +in(ben):4 + * ben(probhat) = +in(ben_probhat):4 + * dev(basic) = +in(deva):4 + * fi(basic) = +fi(classic):4 + * guj(basic) = +in(guj):4 + * gur(basic) = +in(guru):4 + * in(urd) = +in(urd-phonetic):4 + * kan(basic) = +in(kan):4 + * mal(basic) = +in(mal):4 + * ogham(basic) = +ie(ogam):4 + * ogham(is434) = +ie(ogam_is434):4 + * ori(basic) = +in(ori):4 + * ro(de) = +ro(winkeys):4 + * ro(us) = +ro(std):4 + * ro(academic) = +ro(std):4 + * ro(std_comma) = +ro(std):4 + * ro(comma) = +ro(basic):4 + * ru(os) = +ru(os_legacy):4 + * pk(urd) = +pk(urd-phonetic):4 + * syr(basic) = +sy(syc):4 + * syr(phonetic) = +sy(syc_phonetic):4 + * tel(basic) = +in(tel):4 + * ara(uga) = +ancient(uga):4 + * ir(ave) = +ancient(ave):4 + * in(eeyek) = +in(mni):4 + * in(olck) = +in(sat):4 + * de(lld) = +it(lldde):4 + * ara(qwerty) = +ara(basic):4 + * ara(qwerty_digits) = +ara(digits):4 + * mao(basic) = +nz(mao):4 + * gr(extended) = +gr(basic):4 + $sun $sun_custom = +sun_vndr/%l[4]%(v[4]):4 + * * = +%l[4]%(v[4]):4 + +! model layout[2] variant[2] = symbols + * ben basic = +in(ben):2 + * ben probhat = +in(ben_probhat):2 + * dev basic = +in(deva):2 + * fi basic = +fi(classic):2 + * guj basic = +in(guj):2 + * gur basic = +in(guru):2 + * in urd = +in(urd-phonetic):2 + * kan basic = +in(kan):2 + * mal basic = +in(mal):2 + * ogham basic = +ie(ogam):2 + * ogham is434 = +ie(ogam_is434):2 + * ori basic = +in(ori):2 + * ro de = +ro(winkeys):2 + * ro us = +ro(std):2 + * ro academic = +ro(std):2 + * ro std_comma = +ro(std):2 + * ro comma = +ro(basic):2 + * ru os = +ru(os_legacy):2 + * pk urd = +pk(urd-phonetic):2 + * syr basic = +sy(syc):2 + * syr phonetic = +sy(syc_phonetic):2 + * tel basic = +in(tel):2 + * ara uga = +ancient(uga):2 + * ir ave = +ancient(ave):2 + * in eeyek = +in(mni):2 + * in olck = +in(sat):2 + * de lld = +it(lldde):2 + * ara qwerty = +ara(basic):2 + * ara qwerty_digits = +ara(digits):2 + * mao basic = +nz(mao):2 + * gr extended = +gr(basic):2 + +! model layout[3] variant[3] = symbols + * ben basic = +in(ben):3 + * ben probhat = +in(ben_probhat):3 + * dev basic = +in(deva):3 + * fi basic = +fi(classic):3 + * guj basic = +in(guj):3 + * gur basic = +in(guru):3 + * in urd = +in(urd-phonetic):3 + * kan basic = +in(kan):3 + * mal basic = +in(mal):3 + * ogham basic = +ie(ogam):3 + * ogham is434 = +ie(ogam_is434):3 + * ori basic = +in(ori):3 + * ro de = +ro(winkeys):3 + * ro us = +ro(std):3 + * ro academic = +ro(std):3 + * ro std_comma = +ro(std):3 + * ro comma = +ro(basic):3 + * ru os = +ru(os_legacy):3 + * pk urd = +pk(urd-phonetic):3 + * syr basic = +sy(syc):3 + * syr phonetic = +sy(syc_phonetic):3 + * tel basic = +in(tel):3 + * ara uga = +ancient(uga):3 + * ir ave = +ancient(ave):3 + * in eeyek = +in(mni):3 + * in olck = +in(sat):3 + * de lld = +it(lldde):3 + * ara qwerty = +ara(basic):3 + * ara qwerty_digits = +ara(digits):3 + * mao basic = +nz(mao):3 + * gr extended = +gr(basic):3 + +! model layout[4] variant[4] = symbols + * ben basic = +in(ben):4 + * ben probhat = +in(ben_probhat):4 + * dev basic = +in(deva):4 + * fi basic = +fi(classic):4 + * guj basic = +in(guj):4 + * gur basic = +in(guru):4 + * in urd = +in(urd-phonetic):4 + * kan basic = +in(kan):4 + * mal basic = +in(mal):4 + * ogham basic = +ie(ogam):4 + * ogham is434 = +ie(ogam_is434):4 + * ori basic = +in(ori):4 + * ro de = +ro(winkeys):4 + * ro us = +ro(std):4 + * ro academic = +ro(std):4 + * ro std_comma = +ro(std):4 + * ro comma = +ro(basic):4 + * ru os = +ru(os_legacy):4 + * pk urd = +pk(urd-phonetic):4 + * syr basic = +sy(syc):4 + * syr phonetic = +sy(syc_phonetic):4 + * tel basic = +in(tel):4 + * ara uga = +ancient(uga):4 + * ir ave = +ancient(ave):4 + * in eeyek = +in(mni):4 + * in olck = +in(sat):4 + * de lld = +it(lldde):4 + * ara qwerty = +ara(basic):4 + * ara qwerty_digits = +ara(digits):4 + * mao basic = +nz(mao):4 + * gr extended = +gr(basic):4 + +! model = symbols + chromebook = +inet(evdev)+inet(chromebook) + ppkb = +inet(evdev)+inet(ppkb) + * = +inet(evdev) + +! model layout = symbols + +! layout variant = compat + de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de koy = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone_eszett_home = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwertz = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwerty = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + jp $sun_compat = complete+japan(kana_lock) + +! layout[1] variant[1] = compat + de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de koy = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone_eszett_home = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwertz = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwerty = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + jp $sun_compat = complete+japan(kana_lock) + +! layout[2] variant[2] = compat + de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de adnw = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de koy = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de bone = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de bone_eszett_home = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de neo_qwertz = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de neo_qwerty = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + jp $sun_compat = +complete+japan(kana_lock):2 + +! layout[3] variant[3] = compat + de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de adnw = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de koy = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de bone = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de bone_eszett_home = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de neo_qwertz = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de neo_qwerty = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + jp $sun_compat = +complete+japan(kana_lock):3 + +! layout[4] variant[4] = compat + de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de adnw = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de koy = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de bone = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de bone_eszett_home = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de neo_qwertz = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de neo_qwerty = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + jp $sun_compat = +complete+japan(kana_lock):4 + +! model layout = compat + pc98 nec_vndr/jp = pc98(basic) + * jp = complete+japan + olpc * = olpc + olpcm * = olpc + * * = complete + +! model layout[1] = compat + * * = complete + +! model = types + $applealu = complete+numpad(mac) + * = complete + +! layout option = symbols + * misc:apl = +apl(level3) + * misc:typo = +typo(base) + * lv3:ralt_alt = +level3(ralt_alt) + * grp:toggle = +group(toggle) + * grp:alts_toggle = +group(alts_toggle) + * grp:alt_altgr_toggle = +group(alt_altgr_toggle) + * grp:alt_space_toggle = +group(alt_space_toggle) + * grp:win_space_toggle = +group(win_space_toggle) + * grp:ctrl_space_toggle = +group(ctrl_space_toggle) + * grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle) + * grp:shifts_toggle = +group(shifts_toggle) + $azerty caps:digits_row = +capslock(digits_row) + +! layout[1] option = symbols + * misc:apl = +apl(level3):1 + * misc:typo = +typo(base):1 + * lv3:ralt_alt = +level3(ralt_alt):1 + * grp:toggle = +group(toggle):1 + * grp:alts_toggle = +group(alts_toggle):1 + * grp:alt_altgr_toggle = +group(alt_altgr_toggle):1 + * grp:alt_space_toggle = +group(alt_space_toggle):1 + * grp:win_space_toggle = +group(win_space_toggle):1 + * grp:ctrl_space_toggle = +group(ctrl_space_toggle):1 + * grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle):1 + * grp:shifts_toggle = +group(shifts_toggle):1 + $azerty caps:digits_row = +capslock(digits_row):1 + +! layout[2] option = symbols + * misc:apl = +apl(level3):2 + * misc:typo = +typo(base):2 + * lv3:ralt_alt = +level3(ralt_alt):2 + * grp:toggle = +group(toggle):2 + * grp:alts_toggle = +group(alts_toggle):2 + * grp:alt_altgr_toggle = +group(alt_altgr_toggle):2 + * grp:alt_space_toggle = +group(alt_space_toggle):2 + * grp:win_space_toggle = +group(win_space_toggle):2 + * grp:ctrl_space_toggle = +group(ctrl_space_toggle):2 + * grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle):2 + * grp:shifts_toggle = +group(shifts_toggle):2 + $azerty caps:digits_row = +capslock(digits_row):2 + +! layout[3] option = symbols + * misc:apl = +apl(level3):3 + * misc:typo = +typo(base):3 + * lv3:ralt_alt = +level3(ralt_alt):3 + * grp:toggle = +group(toggle):3 + * grp:alts_toggle = +group(alts_toggle):3 + * grp:alt_altgr_toggle = +group(alt_altgr_toggle):3 + * grp:alt_space_toggle = +group(alt_space_toggle):3 + * grp:win_space_toggle = +group(win_space_toggle):3 + * grp:ctrl_space_toggle = +group(ctrl_space_toggle):3 + * grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle):3 + * grp:shifts_toggle = +group(shifts_toggle):3 + $azerty caps:digits_row = +capslock(digits_row):3 + +! layout[4] option = symbols + * misc:apl = +apl(level3):4 + * misc:typo = +typo(base):4 + * lv3:ralt_alt = +level3(ralt_alt):4 + * grp:toggle = +group(toggle):4 + * grp:alts_toggle = +group(alts_toggle):4 + * grp:alt_altgr_toggle = +group(alt_altgr_toggle):4 + * grp:alt_space_toggle = +group(alt_space_toggle):4 + * grp:win_space_toggle = +group(win_space_toggle):4 + * grp:ctrl_space_toggle = +group(ctrl_space_toggle):4 + * grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle):4 + * grp:shifts_toggle = +group(shifts_toggle):4 + $azerty caps:digits_row = +capslock(digits_row):4 + +! option = symbols + grp:shift_caps_switch = +group(caps_select) + grp:win_menu_switch = +group(win_menu_select) + grp:lctrl_rctrl_switch = +group(ctrl_select) +// Delete the above three aliases in July 2027. + ctrl:swapcaps_hyper = +ctrl(hyper_capscontrol) + ctrl:swapcaps_and_switch_layout = +ctrl(swapcaps)+group(lctrl_toggle) +// Delete the above two aliases in September 2027. + altwin:alt_super_win = +altwin(alt_super_win) + altwin:alt_win = +altwin(alt_win) + altwin:ctrl_alt_win = +altwin(ctrl_alt_win) + altwin:ctrl_rwin = +altwin(ctrl_rwin) + altwin:ctrl_win = +altwin(ctrl_win) + altwin:hyper_win = +altwin(hyper_win) + altwin:left_meta_win = +altwin(left_meta_win) + altwin:menu = +altwin(menu) + altwin:menu_win = +altwin(menu_win) + altwin:meta_alt = +altwin(meta_alt) + altwin:meta_win = +altwin(meta_win) + altwin:prtsc_rwin = +altwin(prtsc_rwin) + altwin:swap_alt_win = +altwin(swap_alt_win) + altwin:swap_lalt_lwin = +altwin(swap_lalt_lwin) + apple:alupckeys = +macintosh_vndr/apple(alupckeys) + apple:jp_oadg109a = +macintosh_vndr/apple(jp_oadg109a) + apple:jp_pc106 = +macintosh_vndr/apple(jp_pc106) + caps:backspace = +capslock(backspace) + caps:capslock = +capslock(capslock) + caps:ctrl_modifier = +capslock(ctrl_modifier) + caps:escape = +capslock(escape) + caps:escape_shifted_capslock = +capslock(escape_shifted_capslock) + caps:escape_shifted_compose = +capslock(escape_shifted_compose) + caps:hyper = +capslock(hyper) + caps:menu = +capslock(menu) + caps:none = +capslock(none) + caps:numlock = +capslock(numlock) + caps:shiftlock = +capslock(shiftlock) + caps:super = +capslock(super) + caps:swapescape = +capslock(swapescape) + compose:102 = +compose(102) + compose:102-altgr = +compose(102-altgr) + compose:caps = +compose(caps) + compose:caps-altgr = +compose(caps-altgr) + compose:ins = +compose(ins) + compose:lctrl = +compose(lctrl) + compose:lctrl-altgr = +compose(lctrl-altgr) + compose:lwin = +compose(lwin) + compose:lwin-altgr = +compose(lwin-altgr) + compose:menu = +compose(menu) + compose:menu-altgr = +compose(menu-altgr) + compose:paus = +compose(paus) + compose:prsc = +compose(prsc) + compose:ralt = +compose(ralt) + compose:rctrl = +compose(rctrl) + compose:rctrl-altgr = +compose(rctrl-altgr) + compose:rwin = +compose(rwin) + compose:rwin-altgr = +compose(rwin-altgr) + compose:sclk = +compose(sclk) + ctrl:aa_ctrl = +ctrl(aa_ctrl) + ctrl:ac_ctrl = +ctrl(ac_ctrl) + ctrl:grouptoggle_capscontrol = +ctrl(grouptoggle_capscontrol) + ctrl:hyper_capscontrol = +ctrl(hyper_capscontrol) + ctrl:lctrl_meta = +ctrl(lctrl_meta) + ctrl:menu_rctrl = +ctrl(menu_rctrl) + ctrl:nocaps = +ctrl(nocaps) + ctrl:ralt_rctrl = +ctrl(ralt_rctrl) + ctrl:rctrl_ralt = +ctrl(rctrl_ralt) + ctrl:swap_lalt_lctl = +ctrl(swap_lalt_lctl) + ctrl:swap_lalt_lctl_lwin = +ctrl(swap_lalt_lctl_lwin) + ctrl:swap_lwin_lctl = +ctrl(swap_lwin_lctl) + ctrl:swap_ralt_rctl = +ctrl(swap_ralt_rctl) + ctrl:swap_rwin_rctl = +ctrl(swap_rwin_rctl) + ctrl:swapcaps = +ctrl(swapcaps) + esperanto:colemak = +epo(colemak) + esperanto:dvorak = +epo(dvorak) + esperanto:qwerty = +epo(qwerty) + eurosign:2 = +eurosign(2) + eurosign:4 = +eurosign(4) + eurosign:5 = +eurosign(5) + eurosign:E = +eurosign(E) + eurosign:e = +eurosign(e) + grab:debug = +grab(debug) + grp:alt_caps_toggle = +group(alt_caps_toggle) + grp:alt_shift_toggle = +group(alt_shift_toggle) + grp:alt_shift_toggle_bidir = +group(alt_shift_toggle_bidir) + grp:caps_select = +group(caps_select) + grp:caps_switch = +group(caps_switch) + grp:caps_toggle = +group(caps_toggle) + grp:ctrl_alt_toggle = +group(ctrl_alt_toggle) + grp:ctrl_alt_toggle_bidir = +group(ctrl_alt_toggle_bidir) + grp:ctrl_select = +group(ctrl_select) + grp:ctrl_shift_toggle = +group(ctrl_shift_toggle) + grp:ctrl_shift_toggle_bidir = +group(ctrl_shift_toggle_bidir) + grp:ctrls_toggle = +group(ctrls_toggle) + grp:lalt_lshift_toggle = +group(lalt_lshift_toggle) + grp:lalt_toggle = +group(lalt_toggle) + grp:lctrl_lalt_toggle = +group(lctrl_lalt_toggle) + grp:lctrl_lshift_toggle = +group(lctrl_lshift_toggle) + grp:lctrl_lwin_rctrl_menu = +group(lctrl_lwin_rctrl_menu) + grp:lctrl_lwin_toggle = +group(lctrl_lwin_toggle) + grp:lctrl_toggle = +group(lctrl_toggle) + grp:lshift_toggle = +group(lshift_toggle) + grp:lswitch = +group(lswitch) + grp:lwin_switch = +group(lwin_switch) + grp:lwin_toggle = +group(lwin_toggle) + grp:menu_switch = +group(menu_switch) + grp:menu_toggle = +group(menu_toggle) + grp:ralt_rshift_toggle = +group(ralt_rshift_toggle) + grp:rctrl_ralt_toggle = +group(rctrl_ralt_toggle) + grp:rctrl_switch = +group(rctrl_switch) + grp:rctrl_toggle = +group(rctrl_toggle) + grp:rshift_toggle = +group(rshift_toggle) + grp:rwin_switch = +group(rwin_switch) + grp:rwin_toggle = +group(rwin_toggle) + grp:sclk_toggle = +group(sclk_toggle) + grp:shift_caps_toggle = +group(shift_caps_toggle) + grp:switch = +group(switch) + grp:win_menu_select = +group(win_menu_select) + grp:win_switch = +group(win_switch) + japan:hztg_escape = +jp(hztg_escape) + japan:nicola_f_bs = +jp(nicola_f_bs) + keypad:atm = +keypad(atm) + keypad:future = +keypad(future) + keypad:future_wang = +keypad(future_wang) + keypad:hex = +keypad(hex) + keypad:legacy = +keypad(legacy) + keypad:legacy_wang = +keypad(legacy_wang) + keypad:oss = +keypad(oss) + keypad:oss_wang = +keypad(oss_wang) + keypad:pointerkeys = +keypad(pointerkeys) + korean:ralt_hangul = +kr(ralt_hangul) + korean:ralt_hanja = +kr(ralt_hanja) + korean:rctrl_hangul = +kr(rctrl_hangul) + korean:rctrl_hanja = +kr(rctrl_hanja) + kpdl:comma = +kpdl(comma) + kpdl:commaoss = +kpdl(commaoss) + kpdl:dot = +kpdl(dot) + kpdl:dotoss = +kpdl(dotoss) + kpdl:dotoss_latin9 = +kpdl(dotoss_latin9) + kpdl:kposs = +kpdl(kposs) + kpdl:momayyezoss = +kpdl(momayyezoss) + kpdl:semi = +kpdl(semi) + lv2:lsgt_switch = +level2(lsgt_switch) + lv3:4_switch_isolated = +level3(4_switch_isolated) + lv3:9_switch_isolated = +level3(9_switch_isolated) + lv3:alt_switch = +level3(alt_switch) + lv3:bksl_switch = +level3(bksl_switch) + lv3:bksl_switch_latch = +level3(bksl_switch_latch) + lv3:caps_switch = +level3(caps_switch) + lv3:caps_switch_latch = +level3(caps_switch_latch) + lv3:enter_switch = +level3(enter_switch) + lv3:lalt_switch = +level3(lalt_switch) + lv3:lsgt_switch = +level3(lsgt_switch) + lv3:lsgt_switch_latch = +level3(lsgt_switch_latch) + lv3:lwin_switch = +level3(lwin_switch) + lv3:menu_switch = +level3(menu_switch) + lv3:ralt_switch = +level3(ralt_switch) + lv3:ralt_switch_multikey = +level3(ralt_switch_multikey) + lv3:rwin_switch = +level3(rwin_switch) + lv3:switch = +level3(switch) + lv3:win_switch = +level3(win_switch) + lv5:caps_switch = +level5(caps_switch) + lv5:lsgt_switch = +level5(lsgt_switch) + lv5:lsgt_switch_lock = +level5(lsgt_switch_lock) + lv5:lwin_switch_lock = +level5(lwin_switch_lock) + lv5:menu_switch = +level5(menu_switch) + lv5:ralt_switch = +level5(ralt_switch) + lv5:ralt_switch_lock = +level5(ralt_switch_lock) + lv5:rctrl_switch = +level5(rctrl_switch) + lv5:rwin_switch_lock = +level5(rwin_switch_lock) + nbsp:level2 = +nbsp(level2) + nbsp:level3 = +nbsp(level3) + nbsp:level3n = +nbsp(level3n) + nbsp:level4 = +nbsp(level4) + nbsp:level4n = +nbsp(level4n) + nbsp:level4nl = +nbsp(level4nl) + nbsp:none = +nbsp(none) + nbsp:zwnj2 = +nbsp(zwnj2) + nbsp:zwnj2nb3 = +nbsp(zwnj2nb3) + nbsp:zwnj2nb3nnb4 = +nbsp(zwnj2nb3nnb4) + nbsp:zwnj2nb3zwj4 = +nbsp(zwnj2nb3zwj4) + nbsp:zwnj2zwj3 = +nbsp(zwnj2zwj3) + nbsp:zwnj2zwj3nb4 = +nbsp(zwnj2zwj3nb4) + nbsp:zwnj3zwj4 = +nbsp(zwnj3zwj4) + parens:swap_brackets = +parens(swap_brackets) + rupeesign:4 = +rupeesign(4) + scrolllock:mod3 = +scrolllock(mod3) + shift:both_capslock = +shift(both_capslock) + shift:both_capslock_cancel = +shift(both_capslock_cancel) + shift:both_shiftlock = +shift(both_shiftlock) + shift:breaks_caps = +shift(breaks_caps) + solaris:sun_compat = +sun_vndr/solaris(sun_compat) + srvrkeys:none = +srvrkeys(none) + terminate:ctrl_alt_bksp = +terminate(ctrl_alt_bksp) + +! option = compat + caps:shiftlock = +caps(shiftlock) + grab:break_actions = +grab(break_actions) + grp_led:caps = +grp_led(caps) + grp_led:num = +grp_led(num) + grp_led:scroll = +grp_led(scroll) + japan:kana_lock = +japan(kana_lock) + mod_led:compose = +mod_led(compose) + +! option = types + caps:internal = +caps(internal) + caps:internal_nocancel = +caps(internal_nocancel) + caps:shift = +caps(shift) + caps:shift_nocancel = +caps(shift_nocancel) + numpad:mac = +numpad(mac) + numpad:microsoft = +numpad(microsoft) + numpad:pc = +numpad(pc) + numpad:shift3 = +numpad(shift3) + custom:types = +custom diff --git a/nixos/xkb/rules/evdev.extras.xml b/nixos/xkb/rules/evdev.extras.xml new file mode 100644 index 00000000..64da2626 --- /dev/null +++ b/nixos/xkb/rules/evdev.extras.xml @@ -0,0 +1,1863 @@ + + + + + + + + ancient + xx + Ancient + + got + uga + ave + + + + + + got + Gothic + + got + + + + + + uga + Ugaritic + + uga + + + + + + ave + Avestan + + ave + + + + + + + + apl + apl + APL + + eng + + + + + + dyalog + dlg + APL symbols (Dyalog APL) + + + + + sax + sax + APL symbols (SAX, Sharp APL for Unix) + + + + + unified + ufd + APL symbols (unified) + + + + + apl2 + apl2 + APL symbols (IBM APL2) + + + + + aplplusII + aplII + APL symbols (Manugistics APL*PLUS II) + + + + + aplx + aplx + APL symbols (APLX unified) + + + + + + + bqn + bqn + BQN + + eng + + + + + + ca + fr + French (Canada) + + CA + + + fra + + + + + + kut + kut + Kutenai + + + + + shs + shs + Secwepemctsin + + + + + sun_type6 + Multilingual (Canada, Sun Type 6/7) + + + + + + + de + de + German + + DE + + + deu + + + + + + hu + German (with Hungarian letters, no dead keys) + + deu + hun + + + + + + pl + Polish (Germany, no dead keys) + + deu + pol + + + + + + sun_type6 + German (Sun Type 6/7) + + + + + adnw + German (Aus der Neo-Welt) + + + + + koy + German (KOY) + + + + + bone + German (Bone) + + + + + bone_eszett_home + German (Bone, eszett in the home row) + + + + + neo_qwertz + German (Neo, QWERTZ) + + + + + neo_qwerty + German (Neo, QWERTY) + + + + + ru-recom + + ru + Russian (Germany, recommended) + + rus + + + + + + ru-translit + + ru + Russian (Germany, transliteration) + + rus + + + + + + + + eg + ar + Arabic (Egypt) + + EG + + + ara + + + + + + cop + cop + Coptic + + cop + + + + + + + + hu + hu + Hungarian + + HU + + + hun + + + + + + oldhunlig + oldhun(lig) + Old Hungarian (for ligatures) + + + + + oldhun_sk_sh + oldhun(SK,Sh) + Old Hungarian (Carpathian Highlands, S as Sh) + + + + + oldhun_sk_sz + oldhun(SK,Sz) + Old Hungarian (Carpathian Highlands, S as Sz) + + + + + us + us + Hungarian (US) + + + + + + + lt + lt + Lithuanian + + LT + + + lit + + + + + + us_dvorak + Lithuanian (Dvorak) + + + + + sun_type6 + Lithuanian (Sun Type 6/7) + + + + + + + lv + lv + Latvian + + LV + + + lav + + + + + + dvorak + Latvian (Dvorak) + + + + + ykeydvorak + Latvian (Dvorak, with Y) + + + + + minuskeydvorak + Latvian (Dvorak, with minus) + + + + + dvorakprogr + Latvian (programmer Dvorak) + + + + + ykeydvorakprogr + Latvian (programmer Dvorak, with Y) + + + + + minuskeydvorakprogr + Latvian (programmer Dvorak, with minus) + + + + + colemak + Latvian (Colemak) + + + + + apostrophecolemak + Latvian (Colemak, with apostrophe) + + + + + sun_type6 + Latvian (Sun Type 6/7) + + + + + apostrophe-deadquotes + Latvian (apostrophe, dead quotes) + + + + + + + us + en + English (US) + + US + + + eng + + + + + + intl-unicode + English (US, intl., AltGr Unicode combining) + + + + + alt-intl-unicode + English (US, intl., AltGr Unicode combining, alt.) + + + + + ats + Atsina + + + + + + crd + Coeur d'Alene Salish + + crd + + + + + + cz_sk_de + Czech, Slovak and German (US) + + eng + ces + slk + deu + + + + + + cz_sk_pl_de_es_fi_sv + Czech, Slovak, Polish, Spanish, Finnish, Swedish and German (US) + + eng + ces + slk + pol + deu + spa + fin + swe + + + + + + drix + English (Drix) + + + + + de_se_fi + German, Swedish and Finnish (US) + + eng + deu + swe + fin + + + + + + ibm238l + English (US, IBM Arabic 238_L) + + + + + sun_type6 + English (US, Sun Type 6/7) + + + + + carpalx + English (Carpalx) + + + + + carpalx-intl + English (Carpalx, intl., with dead keys) + + + + + carpalx-altgr-intl + English (Carpalx, intl., with AltGr dead keys) + + + + + carpalx-full + English (Carpalx, full optimization) + + + + + carpalx-full-intl + English (Carpalx, full optimization, intl., with dead keys) + + + + + carpalx-full-altgr-intl + English (Carpalx, full optimization, intl., with AltGr dead keys) + + + + + 3l + English (3l) + + + + + 3l-cros + English (3l, Chromebook) + + + + + 3l-emacs + English (3l, emacs) + + + + + workman-p + workman-p + English (Workman-P) + + eng + + + + + + scn + Sicilian (US keyboard) + + eng + ita + scn + + + + + + altgr-weur + English (Western European AltGr dead keys) + + eng + dan + deu + fin + fra + ita + nld + nor + por + spa + swe + + + + + + + + pl + pl + Polish + + PL + + + pol + + + + + + intl + Polish (intl., with dead keys) + + + + + colemak + Polish (Colemak) + + + + + colemak_dh_ansi + Polish (Colemak-DH) + + + + + colemak_dh + Polish (Colemak-DH ISO) + + + + + sun_type6 + Polish (Sun Type 6/7) + + + + + glagolica + Polish (Glagolica) + + + + + lefty + Polish (lefty) + + + + + + + ro + ro + Romanian + + RO + + + ron + + + + + + crh_dobruja + crh + Crimean Tatar (Dobruja Q) + + crh + + + + + + ergonomic + Romanian (ergonomic Touchtype) + + + + + sun_type6 + Romanian (Sun Type 6/7) + + + + + + + rs + sr + Serbian + + RS + + + srp + + + + + + combiningkeys + Serbian (combining accents instead of dead keys) + + + + + + + ru + ru + Russian + + RU + + + rus + + + + + + chu + Church Slavonic + + chu + + + + + + ruu + ru + Russian (plus Ukrainian and Belarusian letters) + + rus + ukr + bel + + + + + + rulemak + Russian (Rulemak, phonetic Colemak) + + + + + phonetic_mac + Russian (phonetic, Macintosh) + + + + + sun_type6 + Russian (Sun Type 6/7) + + + + + unipunct + Russian (with US punctuation) + + + + + gost-6431-75-48 + Russian (GOST 6431-75) + + + + + gost-14289-88 + Russian (GOST 14289-88) + + + + + prxn + ru + Russian (Polyglot and Reactionary) + + RU + RS + BA + ME + MK + BG + MD + UA + BY + KZ + MN + KG + TJ + UZ + TM + AZ + + + rus + ukr + bel + srp + mkd + bul + chu + kaz + kir + uzb + bak + aze + tat + uig + kdr + tyv + kjh + crh + tgk + abk + sah + mon + kal + sjd + chv + oss + krl + ale + wbl + kur + niv + dng + kom + udm + sel + ulc + ude + oac + oaa + gld + eve + evn + kca + itl + yrk + neg + + + + + + winkeys-p + winkeys-p + Russian (Programmer) + + rus + + + + + + typo + ru + Russian (plus typographic symbols) + + RU + + + rus + + + + + + rtu + ru + Russian (plus Tatar letters) + + RU + + + rus + tat + + + + + + + + am + hy + Armenian + + AM + + + hye + + + + + + olpc-phonetic + Armenian (OLPC, phonetic) + + + + + + + il + he + Hebrew + + IL + + + heb + + + + + + biblicalSIL + Hebrew (Biblical, SIL phonetic) + + heb + + + + + + + + ara + ar + Arabic + + AE + BH + DZ + EG + EH + JO + KW + LB + LY + MA + MR + OM + PS + QA + SA + SD + SY + TN + YE + + + ara + + + + + + sun_type6 + Arabic (Sun Type 6/7) + + + + + basic_ext + Arabic (Arabic numerals, extensions in the 4th level) + + + + + basic_ext_digits + Arabic (Eastern Arabic numerals, extensions in the 4th level) + + + + + ergoarabic + Arabic (ErgoArabic) + + + + + + + be + be + Belgian + + BE + + + deu + nld + fra + + + + + + sun_type6 + Belgian (Sun Type 6/7) + + + + + + + br + pt + Portuguese (Brazil) + + BR + + + por + + + + + + sun_type6 + Portuguese (Brazil, Sun Type 6/7) + + + + + + + cz + cs + Czech + + CZ + + + ces + + + + + + sun_type6 + Czech (Sun Type 6/7) + + + + + prog + Czech (programming) + + + + + prog_typo + Czech (programming, typographic) + + + + + coder + Czech (coder) + + + + + colemak-ucw + Czech (US, Colemak, UCW support) + + + + + + + dk + da + Danish + + DK + + + dan + + + + + + sun_type6 + Danish (Sun Type 6/7) + + + + + + + nl + nl + Dutch + + NL + + + nld + + + + + + sun_type6 + Dutch (Sun Type 6/7) + + + + + + + ee + et + Estonian + + EE + + + est + + + + + + sun_type6 + Estonian (Sun Type 6/7) + + + + + + + fi + fi + Finnish + + FI + + + fin + + + + + + sun_type6 + Finnish (Sun Type 6/7) + + + + + das + Finnish (DAS) + + + + + fidvorak + Finnish (Dvorak) + + + + + + + fr + fr + French + + FR + + + fra + + + + + + sun_type6 + French (Sun Type 6/7) + + + + + us-alt + French (US with dead keys, alt.) + + + + + us-azerty + French (US, AZERTY) + + + + + + + gr + gr + Greek + + GR + + + ell + + + + + + sun_type6 + Greek (Sun Type 6/7) + + + + + colemak + Greek (Colemak) + + + + + + + it + it + Italian + + IT + + + ita + + + + + + sun_type6 + Italian (Sun Type 6/7) + + + + + lld + it_lld + Ladin (Italian keyboard) + + ita + lld + + + + + + lldde + de_lld + Ladin (German keyboard) + + deu + lld + + + + + + dvorak + Italian (Dvorak) + + ita + + + + + + + + jp + ja + Japanese + + JP + + + jpn + + + + + + sun_type6 + Japanese (Sun Type 6) + + + + + sun_type7 + Japanese (Sun Type 7, PC-compatible) + + + + + sun_type7_suncompat + Japanese (Sun Type 7, Sun-compatible) + + + + + + + no + no + Norwegian + + NO + + + nor + nob + nno + + + + + + sun_type6 + Norwegian (Sun Type 6/7) + + + + + + + pk + ur + Urdu (Pakistan) + + PK + + + urd + + + + + + urd-navees + Urdu (Pakistan, Navees) + + urd + + + + + + + + pt + pt + Portuguese + + PT + + + por + + + + + + sun_type6 + Portuguese (Sun Type 6/7) + + + + + colemak + Portuguese (Colemak) + + + + + + + sk + sk + Slovak + + SK + + + slk + + + + + + acc + Slovak (ACC layout, only accented letters) + + + + + sun_type6 + Slovak (Sun Type 6/7) + + + + + + + es + es + Spanish + + ES + + + spa + + + + + + sun_type6 + Spanish (Sun Type 6/7) + + + + + + + se + sv + Swedish + + SE + + + swe + + + + + + dvorak_a5 + Swedish (Dvorak A5) + + + + + sun_type6 + Swedish (Sun Type 6/7) + + + + + ovd + Elfdalian (Sweden, with combining ogonek) + + ovd + + + + + + + + ch + de + German (Switzerland) + + CH + + + deu + gsw + + + + + + sun_type6_de + German (Switzerland, Sun Type 6/7) + + + + + sun_type6_fr + French (Switzerland, Sun Type 6/7) + + + + + + + tr + tr + Turkish + + TR + + + tur + + + + + + sun_type6 + Turkish (Sun Type 6/7) + + + + + us + Turkish (i and ı swapped) + + + + + otk + Old Turkic + + + + + otkf + Old Turkic (F) + + + + + ot + Ottoman (Q) + + + + + otf + Ottoman (F) + + + + + + + ua + uk + Ukrainian + + UA + + + ukr + + + + + + sun_type6 + Ukrainian (Sun Type 6/7) + + + + + + + gb + en + English (UK) + + GB + + + eng + + + + + + sun_type6 + English (UK, Sun Type 6/7) + + + + + + + kr + ko + Korean + + KR + + + kor + + + + + + sun_type6 + Korean (Sun Type 6/7) + + + + + + + vn + + vi + Vietnamese + + VN + + + vie + + + + + + aderty + Vietnamese (AÐERTY) + + + + + qderty + Vietnamese (QĐERTY) + + + + + + + eu + + eu + EurKEY (US) + + US + + + cat + dan + eng + est + fao + fin + deu + ell + gsw + ita + lav + lit + nld + nor + por + spa + swe + + + + + + trans + + ipa + International Phonetic Alphabet + + + + + qwerty + International Phonetic Alphabet (QWERTY) + + + + + + + in + + in + Indian + + IN + + + + hin + anp + awa + bap + bfy + bgc + bhb + bhi + bho + bjj + bra + brx + btv + doi + dty + gbm + gom + gvr + hne + hoc + hoj + jml + kfr + kfy + khn + kok + kru + mag + mai + mar + mgp + mrd + mtr + mwr + nep + new + noe + raj + rjs + sck + srx + swv + taj + tdg + tdh + thl + thq + thr + tkt + wbr + wtm + xnr + xsr + + + + + + modi-kagapa + mr + Modi (KaGaPa, phonetic) + + mar + + + + + + san-misc + sas + Sanskrit symbols + + san + + + + + + urd-navees + ur + Urdu (Navees) + + urd + + + + + + + + + + + lv3 + Key to choose the 3rd level + + + + + + + + caps + Caps Lock behavior + + + + + + + parens + Parentheses position + + + + + diff --git a/nixos/xkb/rules/evdev.lst b/nixos/xkb/rules/evdev.lst new file mode 100644 index 00000000..360af245 --- /dev/null +++ b/nixos/xkb/rules/evdev.lst @@ -0,0 +1,1007 @@ +! model + pc86 Generic 86-key PC + pc101 Generic 101-key PC + pc102 Generic 102-key PC + pc104 Generic 104-key PC + pc104alt Generic 104-key PC with L-shaped Enter key + pc105 Generic 105-key PC + a4techKB21 A4Tech KB-21 + a4techKBS8 A4Tech KBS-8 + a4_rfkb23 A4Tech Wireless Desktop RFKB-23 + airkey Acer AirKey V + acer_c300 Acer C300 + acer_ferrari4k Acer Ferrari 4000 + acer_laptop Acer laptop + scorpius Advance Scorpius KI + apple Apple + applealu_ansi Apple Aluminium (ANSI) + applealu_iso Apple Aluminium (ISO) + applealu_jis Apple Aluminium (JIS) + asus_laptop Asus laptop + azonaRF2300 Azona RF2300 Wireless Internet + benqx BenQ X-Touch + benqx730 BenQ X-Touch 730 + benqx800 BenQ X-Touch 800 + brother Brother Internet + btc5090 BTC 5090 + btc5113rf BTC 5113RF Multimedia + btc5126t BTC 5126T + btc6301urf BTC 6301URF + btc9000 BTC 9000 + btc9000a BTC 9000A + btc9001ah BTC 9001AH + btc9019u BTC 9019U + btc9116u BTC 9116U Mini Wireless Internet and Gaming + cherryblue Cherry Blue Line CyBo@rd + cherrybluea Cherry Blue Line CyBo@rd (alt.) + cherrybunlim Cherry B.UNLIMITED + cherrycyboard Cherry CyBo@rd USB-Hub + cherrycmexpert Cherry CyMotion Expert + cymotionlinux Cherry CyMotion Master Linux + cherryblueb Cherry CyMotion Master XPress + chicony Chicony Internet + chicony9885 Chicony KB-9885 + chicony0108 Chicony KU-0108 + chicony0420 Chicony KU-0420 + chromebook Chromebook + compalfl90 Compal FL90 + armada Compaq Armada laptop + compaqeak8 Compaq Easy Access + compaqik7 Compaq Internet (7 keys) + compaqik13 Compaq Internet (13 keys) + compaqik18 Compaq Internet (18 keys) + ipaq Compaq iPaq + presario Compaq Presario laptop + creativedw7000 Creative Desktop Wireless 7000 + dell Dell + dell101 Dell 101-key PC + latitude Dell Latitude laptop + inspiron Dell Inspiron 6000/8000 laptop + precision_m Dell Precision M laptop + dellm65 Dell Precision M65 laptop + dellsk8125 Dell SK-8125 + dellsk8135 Dell SK-8135 + dellusbmm Dell USB Multimedia + dexxa Dexxa Wireless Desktop + diamond Diamond 9801/9802 + dtk2000 DTK2000 + emachines eMachines m6800 laptop + ennyah_dkb1008 Ennyah DKB-1008 + everex Everex STEPnote + fscaa1667g Fujitsu-Siemens Amilo laptop + genius Genius Comfy KB-16M/Multimedia KWD-910 + geniuscomfy Genius Comfy KB-12e + geniuscomfy2 Genius Comfy KB-21e-Scroll + geniuskb19e Genius KB-19e NB + geniuskkb2050hs Genius KKB-2050HS + gyration Gyration + hhk Happy Hacking + hpi6 Hewlett-Packard Internet + hpmini110 Hewlett-Packard Mini 110 laptop + hpnx9020 Hewlett-Packard nx9020 + hp5xx Hewlett-Packard Omnibook 500 + hp500fa Hewlett-Packard Omnibook 500 FA + hp6000 Hewlett-Packard Omnibook 6000/6100 + hpxe3gc Hewlett-Packard Omnibook XE3 GC + hpxe3gf Hewlett-Packard Omnibook XE3 GF + hpxt1000 Hewlett-Packard Omnibook XT1000 + hpdv5 Hewlett-Packard Pavilion dv5 + hpzt11xx Hewlett-Packard Pavilion ZT1100 + hp250x Hewlett-Packard SK-2501 Multimedia + honeywell_euroboard Honeywell Euroboard + rapidaccess IBM Rapid Access + rapidaccess2 IBM Rapid Access II + ibm_spacesaver IBM Space Saver + thinkpad IBM ThinkPad 560Z/600/600E/A22E + thinkpad60 IBM ThinkPad R60/T60/R61/T61 + thinkpadz60 IBM ThinkPad Z60m/Z60t/Z61m/Z61t + flexpro Keytronic FlexPro + kinesis Kinesis + logitech_base Logitech + logiaccess Logitech Access + logicd Logitech Cordless Desktop + logicda Logitech Cordless Desktop (alt.) + logiex110 Logitech Cordless Desktop EX110 + logicd_it Logitech Cordless Desktop iTouch + logiclx300 Logitech Cordless Desktop LX-300 + logicd_nav Logitech Cordless Desktop Navigator + logicd_opt Logitech Cordless Desktop Optical + logidinovo Logitech diNovo + logidinovoedge Logitech diNovo Edge + logitech_g15 Logitech G15 extra keys via G15daemon + logiik Logitech Internet + logii350 Logitech Internet 350 + logimel Logitech Internet 350 + logicink Logitech Internet Navigator + itouch Logitech iTouch + logiitc Logitech iTouch Cordless Y-RB6 + logiinkse Logitech iTouch Internet Navigator SE + logiinkseusb Logitech iTouch Internet Navigator SE USB + logiultrax Logitech Ultra-X + logiultraxc Logitech Ultra-X Cordless Media Desktop + mx1998 Memorex MX1998 + mx2500 Memorex MX2500 EZ-Access + mx2750 Memorex MX2750 + microsoftccurve2k Microsoft Comfort Curve 2000 + microsoftinet Microsoft Internet + microsoftprose Microsoft Internet Pro (Swedish) + microsoft Microsoft Natural + microsoftelite Microsoft Natural Elite + microsoft4000 Microsoft Natural Ergonomic 4000 + microsoft7000 Microsoft Natural Wireless Ergonomic 7000 + microsoftpro Microsoft Natural Pro/Internet Pro + microsoftprousb Microsoft Natural Pro USB/Internet Pro + microsoftprooem Microsoft Natural Pro OEM + microsoftoffice Microsoft Office Keyboard + microsoftsurface Microsoft Surface + microsoftmult Microsoft Wireless Multimedia 1.0A + sk1300 NEC SK-1300 + sk2500 NEC SK-2500 + sk6200 NEC SK-6200 + sk7100 NEC SK-7100 + omnikey101 Northgate OmniKey 101 + olpc OLPC + oretec Ortek Multimedia/Internet MCK-800 + pc98 PC-98 + ppkb PinePhone Keyboard + propeller Propeller Voyager KTEZ-1000 + qtronix QTronix Scorpius 98N+ + samsung4500 Samsung SDM 4500P + samsung4510 Samsung SDM 4510P + sanwaskbkg3 Sanwa Supply SKB-KG3 + silvercrest Silvercrest Multimedia Wireless + apex300 SteelSeries Apex 300 (Apex RAW) + sun_type6_jp Sun Type 6 (Japanese) + sun_type6_jp_usb Sun Type 6 USB (Japanese) + sun_type6_unix_usb Sun Type 6 USB (Unix) + sun_type6_usb Sun Type 6/7 USB + sun_type6_euro_usb Sun Type 6/7 USB (European) + sun_type7_usb Sun Type 7 USB + sun_type7_euro_usb Sun Type 7 USB (European) + sun_type7_jp_usb Sun Type 7 USB (Japanese)/Japanese 106-key + sun_type7_unix_usb Sun Type 7 USB (Unix) + sp_inet Super Power Multimedia + sven SVEN Ergonomic 2500 + sven303 SVEN Slim 303 + symplon Symplon PaceBook tablet + targa_v811 Targa Visionary 811 + toshiba_s3000 Toshiba Satellite S3000 + teck227 Truly Ergonomic 227 + teck229 Truly Ergonomic 229 + trustda Trust Direct Access + trust_slimline Trust Slimline + trust Trust Wireless Classic + tm2020 TypeMatrix EZ-Reach 2020 + tm2030PS2 TypeMatrix EZ-Reach 2030 PS2 + tm2030USB TypeMatrix EZ-Reach 2030 USB + tm2030USB-102 TypeMatrix EZ-Reach 2030 USB (102/105:EU mode) + tm2030USB-106 TypeMatrix EZ-Reach 2030 USB (106:JP mode) + unitekkb1925 Unitek KB-1925 + vsonku306 ViewSonic KU-306 Internet + winbook Winbook Model XP5 + yahoo Yahoo! Internet + +! layout + al Albanian + et Amharic + am Armenian + ara Arabic + eg Arabic (Egypt) + iq Arabic (Iraq) + ma Arabic (Morocco) + sy Arabic (Syria) + az Azerbaijani + ml Bambara + bd Bangla + by Belarusian + be Belgian + dz Berber (Algeria, Latin) + ba Bosnian + brai Braille + bg Bulgarian + mm Burmese + cn Chinese + hr Croatian + cz Czech + dk Danish + af Dari + mv Dhivehi + nl Dutch + bt Dzongkha + au English (Australia) + cm English (Cameroon) + gh English (Ghana) + nz English (New Zealand) + ng English (Nigeria) + za English (South Africa) + gb English (UK) + us English (US) + epo Esperanto + ee Estonian + fo Faroese + ph Filipino + fi Finnish + fr French + ca French (Canada) + cd French (Democratic Republic of the Congo) + tg French (Togo) + ge Georgian + de German + at German (Austria) + ch German (Switzerland) + gr Greek + il Hebrew + hu Hungarian + is Icelandic + in Indian + id Indonesian (Latin) + ie Irish + it Italian + jp Japanese + kz Kazakh + kh Khmer (Cambodia) + kr Korean + kg Kyrgyz + la Lao + lv Latvian + lt Lithuanian + mk Macedonian + my Malay (Jawi, Arabic Keyboard) + mt Maltese + md Moldavian + mn Mongolian + me Montenegrin + np Nepali + gn N'Ko (AZERTY) + no Norwegian + ir Persian + pl Polish + pt Portuguese + br Portuguese (Brazil) + ro Romanian + ru Russian + rs Serbian + lk Sinhala (phonetic) + sk Slovak + si Slovenian + es Spanish + latam Spanish (Latin American) + ke Swahili (Kenya) + tz Swahili (Tanzania) + se Swedish + tw Taiwanese + tj Tajik + th Thai + bw Tswana + tm Turkmen + tr Turkish + ua Ukrainian + pk Urdu (Pakistan) + uz Uzbek + vn Vietnamese + sn Wolof + custom A user-defined custom Layout + +! variant + plisi al: Albanian (Plisi) + veqilharxhi al: Albanian (Veqilharxhi) + phonetic am: Armenian (phonetic) + phonetic-alt am: Armenian (alt. phonetic) + eastern am: Armenian (eastern) + eastern-alt am: Armenian (alt. eastern) + western am: Armenian (western) + digits ara: Arabic (Eastern Arabic numerals) + azerty ara: Arabic (AZERTY) + azerty_digits ara: Arabic (AZERTY, Eastern Arabic numerals) + buckwalter ara: Arabic (Buckwalter) + mac ara: Arabic (Macintosh) + mac-phonetic ara: Arabic (Macintosh, phonetic) + olpc ara: Arabic (OLPC) + ku iq: Kurdish (Iraq, Latin Q) + ku_alt iq: Kurdish (Iraq, Latin Alt-Q) + ku_f iq: Kurdish (Iraq, F) + ku_ara iq: Kurdish (Iraq, Arabic-Latin) + tifinagh ma: Berber (Morocco, Tifinagh) + tifinagh-alt ma: Berber (Morocco, Tifinagh alt.) + tifinagh-alt-phonetic ma: Berber (Morocco, Tifinagh phonetic, alt.) + tifinagh-extended ma: Berber (Morocco, Tifinagh extended) + tifinagh-phonetic ma: Berber (Morocco, Tifinagh phonetic) + tifinagh-extended-phonetic ma: Berber (Morocco, Tifinagh extended phonetic) + french ma: French (Morocco) + rif ma: Tarifit + syc sy: Syriac + syc_phonetic sy: Syriac (phonetic) + ku sy: Kurdish (Syria, Latin Q) + ku_alt sy: Kurdish (Syria, Latin Alt-Q) + ku_f sy: Kurdish (Syria, F) + cyrillic az: Azerbaijani (Cyrillic) + fr-oss ml: French (Mali, alt.) + us-mac ml: English (Mali, US, Macintosh) + us-intl ml: English (Mali, US, intl.) + probhat bd: Bangla (Probhat) + legacy by: Belarusian (legacy) + latin by: Belarusian (Latin) + intl by: Belarusian (intl.) + phonetic by: Belarusian (phonetic) + ru by: Russian (Belarus) + oss be: Belgian (alt.) + oss_latin9 be: Belgian (Latin-9 only, alt.) + iso-alternate be: Belgian (ISO, alt.) + nodeadkeys be: Belgian (no dead keys) + wang be: Belgian (Wang 724 AZERTY) + ber dz: Berber (Algeria, Tifinagh) + azerty-deadkeys dz: Kabyle (AZERTY, with dead keys) + qwerty-gb-deadkeys dz: Kabyle (QWERTY, UK, with dead keys) + qwerty-us-deadkeys dz: Kabyle (QWERTY, US, with dead keys) + ar dz: Arabic (Algeria) + alternatequotes ba: Bosnian (with guillemets) + unicode ba: Bosnian (with Bosnian digraphs) + unicodeus ba: Bosnian (US, with Bosnian digraphs) + us ba: Bosnian (US) + left_hand brai: Braille (left-handed) + left_hand_invert brai: Braille (left-handed inverted thumb) + right_hand brai: Braille (right-handed) + right_hand_invert brai: Braille (right-handed inverted thumb) + phonetic bg: Bulgarian (traditional phonetic) + bas_phonetic bg: Bulgarian (new phonetic) + bekl bg: Bulgarian (enhanced) + zawgyi mm: Burmese (Zawgyi) + mnw mm: Mon + mnw-a1 mm: Mon (A1) + shn mm: Shan + zgt mm: Shan (Zawgyi) + altgr-pinyin cn: Hanyu Pinyin Letters (with AltGr dead keys) + mon_trad cn: Mongolian (Bichig) + mon_trad_todo cn: Mongolian (Todo) + mon_trad_xibe cn: Mongolian (Xibe) + mon_trad_manchu cn: Mongolian (Manchu) + mon_trad_galik cn: Mongolian (Galik) + mon_todo_galik cn: Mongolian (Todo Galik) + mon_manchu_galik cn: Mongolian (Manchu Galik) + tib cn: Tibetan + tib_asciinum cn: Tibetan (with ASCII numerals) + ug cn: Uyghur + alternatequotes hr: Croatian (with guillemets) + unicode hr: Croatian (with Croatian digraphs) + unicodeus hr: Croatian (US, with Croatian digraphs) + us hr: Croatian (US) + bksl cz: Czech (extra backslash) + qwerty cz: Czech (QWERTY) + qwerty_bksl cz: Czech (QWERTY, extra backslash) + winkeys cz: Czech (QWERTZ, Windows) + winkeys-qwerty cz: Czech (QWERTY, Windows) + qwerty-mac cz: Czech (QWERTY, Macintosh) + ucw cz: Czech (UCW, only accented letters) + dvorak-ucw cz: Czech (US, Dvorak, UCW support) + rus cz: Russian (Czechia, phonetic) + nodeadkeys dk: Danish (no dead keys) + winkeys dk: Danish (Windows) + mac dk: Danish (Macintosh) + mac_nodeadkeys dk: Danish (Macintosh, no dead keys) + dvorak dk: Danish (Dvorak) + ps af: Pashto + uz af: Uzbek (Afghanistan) + fa-olpc af: Dari (Afghanistan, OLPC) + ps-olpc af: Pashto (Afghanistan, OLPC) + uz-olpc af: Uzbek (Afghanistan, OLPC) + us nl: Dutch (US) + mac nl: Dutch (Macintosh) + std nl: Dutch (standard) + french cm: French (Cameroon) + qwerty cm: Cameroon Multilingual (QWERTY, intl.) + azerty cm: Cameroon (AZERTY, intl.) + dvorak cm: Cameroon (Dvorak, intl.) + mmuock cm: Mmuock + generic gh: English (Ghana, multilingual) + gillbt gh: English (Ghana, GILLBT) + akan gh: Akan + avn gh: Avatime + ewe gh: Ewe + fula gh: Fula + ga gh: Ga + hausa gh: Hausa (Ghana) + mao nz: Maori + hausa ng: Hausa (Nigeria) + igbo ng: Igbo + yoruba ng: Yoruba + extd gb: English (UK, extended, Windows) + intl gb: English (UK, intl., with dead keys) + dvorak gb: English (UK, Dvorak) + dvorakukp gb: English (UK, Dvorak, with UK punctuation) + mac gb: English (UK, Macintosh) + mac_intl gb: English (UK, Macintosh, intl.) + colemak gb: English (UK, Colemak) + colemak_dh gb: English (UK, Colemak-DH) + gla gb: Scottish Gaelic + pl gb: Polish (British keyboard) + euro us: English (US, euro on 5) + intl us: English (US, intl., with dead keys) + alt-intl us: English (US, alt. intl.) + altgr-intl us: English (intl., with AltGr dead keys) + mac us: English (Macintosh) + colemak us: English (Colemak) + colemak_dh us: English (Colemak-DH) + colemak_dh_wide us: English (Colemak-DH Wide) + colemak_dh_ortho us: English (Colemak-DH Ortholinear) + colemak_dh_iso us: English (Colemak-DH ISO) + colemak_dh_wide_iso us: English (Colemak-DH Wide ISO) + dvorak us: English (Dvorak) + dvorak-intl us: English (Dvorak, intl., with dead keys) + dvorak-alt-intl us: English (Dvorak, alt. intl.) + dvorak-l us: English (Dvorak, left-handed) + dvorak-r us: English (Dvorak, right-handed) + dvorak-classic us: English (classic Dvorak) + dvp us: English (programmer Dvorak) + dvorak-mac us: English (Dvorak, Macintosh) + norman us: English (Norman) + symbolic us: English (US, Symbolic) + workman us: English (Workman) + workman-intl us: English (Workman, intl., with dead keys) + olpc2 us: English (the divide/multiply toggle the layout) + chr us: Cherokee + haw us: Hawaiian + rus us: Russian (US, phonetic) + hbs us: Serbo-Croatian (US) + legacy epo: Esperanto (legacy) + nodeadkeys ee: Estonian (no dead keys) + dvorak ee: Estonian (Dvorak) + us ee: Estonian (US) + nodeadkeys fo: Faroese (no dead keys) + qwerty-bay ph: Filipino (QWERTY, Baybayin) + capewell-dvorak ph: Filipino (Capewell-Dvorak, Latin) + capewell-dvorak-bay ph: Filipino (Capewell-Dvorak, Baybayin) + capewell-qwerf2k6 ph: Filipino (Capewell-QWERF 2006, Latin) + capewell-qwerf2k6-bay ph: Filipino (Capewell-QWERF 2006, Baybayin) + colemak ph: Filipino (Colemak, Latin) + colemak-bay ph: Filipino (Colemak, Baybayin) + dvorak ph: Filipino (Dvorak, Latin) + dvorak-bay ph: Filipino (Dvorak, Baybayin) + winkeys fi: Finnish (Windows) + classic fi: Finnish (classic) + nodeadkeys fi: Finnish (classic, no dead keys) + mac fi: Finnish (Macintosh) + smi fi: Northern Saami (Finland) + nodeadkeys fr: French (no dead keys) + oss fr: French (alt.) + oss_nodeadkeys fr: French (alt., no dead keys) + oss_latin9 fr: French (alt., Latin-9 only) + latin9 fr: French (legacy, alt.) + latin9_nodeadkeys fr: French (legacy, alt., no dead keys) + azerty fr: French (AZERTY) + afnor fr: French (AZERTY, AFNOR) + bepo fr: French (BEPO) + bepo_latin9 fr: French (BEPO, Latin-9 only) + bepo_afnor fr: French (BEPO, AFNOR) + dvorak fr: French (Dvorak) + ergol fr: French (Ergo‑L) + ergol_iso fr: French (Ergo‑L, ISO variant) + mac fr: French (Macintosh) + us fr: French (US) + bre fr: Breton (France) + oci fr: Occitan + geo fr: Georgian (France, AZERTY Tskapo) + fr-dvorak ca: French (Canada, Dvorak) + fr-legacy ca: French (Canada, legacy) + multix ca: Canadian (CSA) + eng ca: English (Canada) + ike ca: Inuktitut + ergonomic ge: Georgian (ergonomic) + mess ge: Georgian (MESS) + os ge: Ossetian (Georgia) + ru ge: Russian (Georgia) + deadacute de: German (dead acute) + deadgraveacute de: German (dead grave acute) + deadtilde de: German (dead tilde) + nodeadkeys de: German (no dead keys) + e1 de: German (E1) + e2 de: German (E2) + T3 de: German (T3) + us de: German (US) + dvorak de: German (Dvorak) + mac de: German (Macintosh) + mac_nodeadkeys de: German (Macintosh, no dead keys) + neo de: German (Neo 2) + qwerty de: German (QWERTY) + dsb de: Lower Sorbian + dsb_qwertz de: Lower Sorbian (QWERTZ) + ro de: Romanian (Germany) + ro_nodeadkeys de: Romanian (Germany, no dead keys) + ru de: Russian (Germany, phonetic) + tr de: Turkish (Germany) + nodeadkeys at: German (Austria, no dead keys) + mac at: German (Austria, Macintosh) + de_nodeadkeys ch: German (Switzerland, no dead keys) + de_mac ch: German (Switzerland, Macintosh) + legacy ch: German (Switzerland, legacy) + fr ch: French (Switzerland) + fr_nodeadkeys ch: French (Switzerland, no dead keys) + fr_mac ch: French (Switzerland, Macintosh) + simple gr: Greek (simple) + nodeadkeys gr: Greek (no dead keys) + polytonic gr: Greek (polytonic) + si2 il: Hebrew (SI-1452-2) + lyx il: Hebrew (lyx) + phonetic il: Hebrew (phonetic) + biblical il: Hebrew (Biblical, Tiro) + standard hu: Hungarian (standard) + nodeadkeys hu: Hungarian (no dead keys) + qwerty hu: Hungarian (QWERTY) + 101_qwertz_comma_dead hu: Hungarian (QWERTZ, 101-key, comma, dead keys) + 101_qwertz_comma_nodead hu: Hungarian (QWERTZ, 101-key, comma, no dead keys) + 101_qwertz_dot_dead hu: Hungarian (QWERTZ, 101-key, dot, dead keys) + 101_qwertz_dot_nodead hu: Hungarian (QWERTZ, 101-key, dot, no dead keys) + 101_qwerty_comma_dead hu: Hungarian (QWERTY, 101-key, comma, dead keys) + 101_qwerty_comma_nodead hu: Hungarian (QWERTY, 101-key, comma, no dead keys) + 101_qwerty_dot_dead hu: Hungarian (QWERTY, 101-key, dot, dead keys) + 101_qwerty_dot_nodead hu: Hungarian (QWERTY, 101-key, dot, no dead keys) + 102_qwertz_comma_dead hu: Hungarian (QWERTZ, 102-key, comma, dead keys) + 102_qwertz_comma_nodead hu: Hungarian (QWERTZ, 102-key, comma, no dead keys) + 102_qwertz_dot_dead hu: Hungarian (QWERTZ, 102-key, dot, dead keys) + 102_qwertz_dot_nodead hu: Hungarian (QWERTZ, 102-key, dot, no dead keys) + 102_qwerty_comma_dead hu: Hungarian (QWERTY, 102-key, comma, dead keys) + 102_qwerty_comma_nodead hu: Hungarian (QWERTY, 102-key, comma, no dead keys) + 102_qwerty_dot_dead hu: Hungarian (QWERTY, 102-key, dot, dead keys) + 102_qwerty_dot_nodead hu: Hungarian (QWERTY, 102-key, dot, no dead keys) + mac_legacy is: Icelandic (Macintosh, legacy) + mac is: Icelandic (Macintosh) + dvorak is: Icelandic (Dvorak) + asm-kagapa in: Assamese (KaGaPa, phonetic) + ben in: Bangla (India) + ben_probhat in: Bangla (India, Probhat) + ben_baishakhi in: Bangla (India, Baishakhi) + ben_bornona in: Bangla (India, Bornona) + ben-kagapa in: Bangla (India, KaGaPa, phonetic) + ben_gitanjali in: Bangla (India, Gitanjali) + ben_inscript in: Bangla (India, Baishakhi InScript) + eng in: English (India, with rupee) + guj in: Gujarati + guj-kagapa in: Gujarati (KaGaPa, phonetic) + bolnagri in: Hindi (Bolnagri) + hin-wx in: Hindi (Wx) + hin-kagapa in: Hindi (KaGaPa, phonetic) + kan in: Kannada + kan-kagapa in: Kannada (KaGaPa, phonetic) + mal in: Malayalam + mal_lalitha in: Malayalam (Lalitha) + mal_enhanced in: Malayalam (enhanced InScript, with rupee) + mal_poorna in: Malayalam (Poorna, extended InScript) + mni in: Manipuri (Meitei) + mar-kagapa in: Marathi (KaGaPa, phonetic) + marathi in: Marathi (enhanced InScript) + ori in: Oriya + ori-bolnagri in: Oriya (Bolnagri) + ori-wx in: Oriya (Wx) + guru in: Punjabi (Gurmukhi) + jhelum in: Punjabi (Gurmukhi Jhelum) + san-kagapa in: Sanskrit (KaGaPa, phonetic) + sat in: Santali (Ol Chiki) + tamilnet in: Tamil (TamilNet '99) + tamilnet_tamilnumbers in: Tamil (TamilNet '99 with Tamil numerals) + tamilnet_TAB in: Tamil (TamilNet '99, TAB encoding) + tamilnet_TSCII in: Tamil (TamilNet '99, TSCII encoding) + tam in: Tamil (InScript, with Arabic numerals) + tam_tamilnumbers in: Tamil (InScript, with Tamil numerals) + tel in: Telugu + tel-kagapa in: Telugu (KaGaPa, phonetic) + tel-sarala in: Telugu (Sarala) + urd-phonetic in: Urdu (phonetic) + urd-phonetic3 in: Urdu (alt. phonetic) + urd-winkeys in: Urdu (Windows) + iipa in: Indic IPA + melayu-phonetic id: Indonesian (Arab Melayu, phonetic) + melayu-phoneticx id: Indonesian (Arab Melayu, extended phonetic) + pegon-phonetic id: Indonesian (Arab Pegon, phonetic) + javanese id: Javanese + UnicodeExpert ie: Irish (UnicodeExpert) + CloGaelach ie: CloGaelach + ogam ie: Ogham + ogam_is434 ie: Ogham (IS434) + nodeadkeys it: Italian (no dead keys) + winkeys it: Italian (Windows) + mac it: Italian (Macintosh) + us it: Italian (US) + ibm it: Italian (IBM 142) + fur it: Friulian (Italy) + scn it: Sicilian + geo it: Georgian (Italy) + kana jp: Japanese (Kana) + kana86 jp: Japanese (Kana 86) + OADG109A jp: Japanese (OADG 109A) + mac jp: Japanese (Macintosh) + dvorak jp: Japanese (Dvorak) + kazrus kz: Kazakh (with Russian) + ext kz: Kazakh (extended) + latin kz: Kazakh (Latin) + ruskaz kz: Russian (Kazakhstan, with Kazakh) + kr104 kr: Korean (101/104-key compatible) + phonetic kg: Kyrgyz (phonetic) + stea la: Lao (STEA) + apostrophe lv: Latvian (apostrophe) + tilde lv: Latvian (tilde) + fkey lv: Latvian (F) + modern lv: Latvian (Modern Latin) + modern-cyr lv: Latvian (Modern Cyrillic) + ergonomic lv: Latvian (ergonomic, ŪGJRMV) + adapted lv: Latvian (adapted) + std lt: Lithuanian (standard) + us lt: Lithuanian (US) + ibm lt: Lithuanian (IBM) + lekp lt: Lithuanian (LEKP) + lekpa lt: Lithuanian (LEKPa) + ratise lt: Lithuanian (Ratise) + sgs lt: Samogitian + nodeadkeys mk: Macedonian (no dead keys) + phonetic my: Malay (Jawi, phonetic) + us mt: Maltese (US) + alt-us mt: Maltese (US, with AltGr overrides) + alt-gb mt: Maltese (UK, with AltGr overrides) + gag md: Gagauz (Moldova) + cyrillic me: Montenegrin (Cyrillic) + cyrillicyz me: Montenegrin (Cyrillic, ZE and ZHE swapped) + cyrillicalternatequotes me: Montenegrin (Cyrillic, with guillemets) + latinunicode me: Montenegrin (Latin, Unicode) + latinyz me: Montenegrin (Latin, QWERTY) + latinunicodeyz me: Montenegrin (Latin, Unicode, QWERTY) + latinalternatequotes me: Montenegrin (Latin, with guillemets) + nodeadkeys no: Norwegian (no dead keys) + winkeys no: Norwegian (Windows) + mac no: Norwegian (Macintosh) + mac_nodeadkeys no: Norwegian (Macintosh, no dead keys) + colemak no: Norwegian (Colemak) + colemak_dh no: Norwegian (Colemak-DH) + colemak_dh_wide no: Norwegian (Colemak-DH Wide) + dvorak no: Norwegian (Dvorak) + smi no: Northern Saami (Norway) + smi_nodeadkeys no: Northern Saami (Norway, no dead keys) + pes_keypad ir: Persian (with Persian keypad) + winkeys ir: Persian (Windows) + azb ir: Azerbaijani (Iran) + ku ir: Kurdish (Iran, Latin Q) + ku_alt ir: Kurdish (Iran, Latin Alt-Q) + ku_f ir: Kurdish (Iran, F) + ku_ara ir: Kurdish (Iran, Arabic-Latin) + legacy pl: Polish (legacy) + qwertz pl: Polish (QWERTZ) + dvorak pl: Polish (Dvorak) + dvorak_quotes pl: Polish (Dvorak, with Polish quotes on quotemark key) + dvorak_altquotes pl: Polish (Dvorak, with Polish quotes on key 1) + dvp pl: Polish (programmer Dvorak) + csb pl: Kashubian + szl pl: Silesian + ru_phonetic_dvorak pl: Russian (Poland, phonetic Dvorak) + nodeadkeys pt: Portuguese (no dead keys) + mac pt: Portuguese (Macintosh) + mac_nodeadkeys pt: Portuguese (Macintosh, no dead keys) + nativo pt: Portuguese (Nativo) + nativo-us pt: Portuguese (Nativo for US keyboards) + nativo-epo pt: Esperanto (Portugal, Nativo) + nodeadkeys br: Portuguese (Brazil, no dead keys) + dvorak br: Portuguese (Brazil, Dvorak) + nativo br: Portuguese (Brazil, Nativo) + nativo-us br: Portuguese (Brazil, Nativo for US keyboards) + thinkpad br: Portuguese (Brazil, IBM/Lenovo ThinkPad) + nativo-epo br: Esperanto (Brazil, Nativo) + rus br: Russian (Brazil, phonetic) + std ro: Romanian (standard) + winkeys ro: Romanian (Windows) + phonetic ru: Russian (phonetic) + phonetic_winkeys ru: Russian (phonetic, Windows) + phonetic_YAZHERTY ru: Russian (phonetic, YAZHERTY) + phonetic_azerty ru: Russian (phonetic, AZERTY) + phonetic_dvorak ru: Russian (phonetic, Dvorak) + typewriter ru: Russian (typewriter) + ruchey_ru ru: Russian (engineering, RU) + ruchey_en ru: Russian (engineering, EN) + legacy ru: Russian (legacy) + typewriter-legacy ru: Russian (typewriter, legacy) + dos ru: Russian (DOS) + mac ru: Russian (Macintosh) + ab ru: Abkhazian (Russia) + bak ru: Bashkirian + cv ru: Chuvash + cv_latin ru: Chuvash (Latin) + xal ru: Kalmyk + kom ru: Komi + chm ru: Mari + os_legacy ru: Ossetian (legacy) + os_winkeys ru: Ossetian (Windows) + srp ru: Serbian (Russia) + tt ru: Tatar + udm ru: Udmurt + sah ru: Yakut + alternatequotes rs: Serbian (Cyrillic, with guillemets) + yz rs: Serbian (Cyrillic, ZE and ZHE swapped) + latin rs: Serbian (Latin) + latinalternatequotes rs: Serbian (Latin, with guillemets) + latinunicode rs: Serbian (Latin, Unicode) + latinyz rs: Serbian (Latin, QWERTY) + latinunicodeyz rs: Serbian (Latin, Unicode, QWERTY) + rue rs: Pannonian Rusyn + us lk: Sinhala (US) + tam_unicode lk: Tamil (Sri Lanka, TamilNet '99) + tam_TAB lk: Tamil (Sri Lanka, TamilNet '99, TAB encoding) + bksl sk: Slovak (extra backslash) + qwerty sk: Slovak (QWERTY) + qwerty_bksl sk: Slovak (QWERTY, extra backslash) + alternatequotes si: Slovenian (with guillemets) + us si: Slovenian (US) + nodeadkeys es: Spanish (no dead keys) + deadtilde es: Spanish (dead tilde) + winkeys es: Spanish (Windows) + dvorak es: Spanish (Dvorak) + ast es: Asturian (Spain, with bottom-dot H and L) + cat es: Catalan (Spain, with middle-dot L) + nodeadkeys latam: Spanish (Latin American, no dead keys) + deadtilde latam: Spanish (Latin American, dead tilde) + dvorak latam: Spanish (Latin American, Dvorak) + colemak latam: Spanish (Latin American, Colemak) + kik ke: Kikuyu + nodeadkeys se: Swedish (no dead keys) + dvorak se: Swedish (Dvorak) + us_dvorak se: Swedish (Dvorak, intl.) + svdvorak se: Swedish (Svdvorak) + mac se: Swedish (Macintosh) + us se: Swedish (US) + swl se: Swedish Sign Language + smi se: Northern Saami (Sweden) + rus se: Russian (Sweden, phonetic) + indigenous tw: Taiwanese (indigenous) + saisiyat tw: Saisiyat (Taiwan) + legacy tj: Tajik (legacy) + tis th: Thai (TIS-820.2538) + pat th: Thai (Pattachote) + alt tm: Turkmen (Alt-Q) + f tr: Turkish (F) + e tr: Turkish (E) + alt tr: Turkish (Alt-Q) + intl tr: Turkish (intl., with dead keys) + ku tr: Kurdish (Turkey, Latin Q) + ku_f tr: Kurdish (Turkey, F) + ku_alt tr: Kurdish (Turkey, Latin Alt-Q) + phonetic ua: Ukrainian (phonetic) + typewriter ua: Ukrainian (typewriter) + winkeys ua: Ukrainian (Windows) + macOS ua: Ukrainian (macOS) + legacy ua: Ukrainian (legacy) + homophonic ua: Ukrainian (homophonic) + crh ua: Crimean Tatar (Turkish Q) + crh_f ua: Crimean Tatar (Turkish F) + crh_alt ua: Crimean Tatar (Turkish Alt-Q) + urd-crulp pk: Urdu (Pakistan, CRULP) + urd-nla pk: Urdu (Pakistan, NLA) + ara pk: Arabic (Pakistan) + snd pk: Sindhi + latin uz: Uzbek (Latin) + us vn: Vietnamese (US) + fr vn: Vietnamese (France) + +! option + grp Switching to another layout + grp:switch Right Alt (while pressed) + grp:lswitch Left Alt (while pressed) + grp:lwin_switch Left Win (while pressed) + grp:rwin_switch Right Win (while pressed) + grp:win_switch Any Win (while pressed) + grp:menu_switch Menu (while pressed), Shift+Menu for Menu + grp:caps_switch Caps Lock (while pressed), Alt+Caps Lock for the original Caps Lock action + grp:rctrl_switch Right Ctrl (while pressed) + grp:toggle Right Alt + grp:lalt_toggle Left Alt + grp:caps_toggle Caps Lock + grp:shift_caps_toggle Shift+Caps Lock + grp:caps_select Caps Lock to first layout; Shift+Caps Lock to second layout + grp:win_menu_select Left Win to first layout; Right Win/Menu to second layout + grp:ctrl_select Left Ctrl to first layout; Right Ctrl to second layout + grp:alt_caps_toggle Alt+Caps Lock + grp:shifts_toggle Both Shifts together + grp:alts_toggle Both Alts together + grp:alt_altgr_toggle Both Alts together; AltGr alone chooses third level + grp:ctrls_toggle Both Ctrls together + grp:ctrl_shift_toggle Ctrl+Shift + grp:lctrl_lshift_toggle Left Ctrl+Left Shift + grp:rctrl_rshift_toggle Right Ctrl+Right Shift + grp:ctrl_shift_toggle_bidir Left Ctrl+Left Shift chooses previous layout, Right Ctrl + Right Shift chooses next layout + grp:ctrl_alt_toggle Alt+Ctrl + grp:lctrl_lalt_toggle Left Alt+Left Ctrl + grp:rctrl_ralt_toggle Right Alt+Right Ctrl + grp:ctrl_alt_toggle_bidir Left Ctrl+Left Alt chooses previous layout, Right Ctrl + Right Alt chooses next layout + grp:alt_shift_toggle Alt+Shift + grp:lalt_lshift_toggle Left Alt+Left Shift + grp:ralt_rshift_toggle Right Alt+Right Shift + grp:alt_shift_toggle_bidir Left Alt+Left Shift chooses previous layout, Right Alt + Right Shift chooses next layout + grp:menu_toggle Menu + grp:lwin_toggle Left Win + grp:alt_space_toggle Alt+Space + grp:win_space_toggle Win+Space + grp:ctrl_space_toggle Ctrl+Space + grp:rwin_toggle Right Win + grp:lshift_toggle Left Shift + grp:rshift_toggle Right Shift + grp:lctrl_toggle Left Ctrl + grp:rctrl_toggle Right Ctrl + grp:sclk_toggle Scroll Lock + grp:lctrl_lwin_rctrl_menu Ctrl+Left Win to first layout; Ctrl+Menu to second layout + grp:lctrl_lwin_toggle Left Ctrl+Left Win + lv2 Key to choose the 2nd level + lv2:lsgt_switch The "< >" key + lv3 Key to choose the 3rd level + lv3:switch Right Ctrl + lv3:menu_switch Menu + lv3:win_switch Any Win + lv3:lwin_switch Left Win + lv3:rwin_switch Right Win + lv3:alt_switch Any Alt + lv3:lalt_switch Left Alt + lv3:ralt_switch Right Alt + lv3:ralt_switch_multikey Right Alt; Shift+Right Alt as Compose + lv3:ralt_alt Right Alt never chooses 3rd level + lv3:enter_switch Enter on keypad + lv3:caps_switch Caps Lock + lv3:bksl_switch Backslash + lv3:lsgt_switch The "< >" key + lv3:caps_switch_latch Caps Lock; acts as onetime lock when pressed together with another 3rd-level chooser + lv3:bksl_switch_latch Backslash; acts as onetime lock when pressed together with another 3rd level chooser + lv3:lsgt_switch_latch The "< >" key; acts as onetime lock when pressed together with another 3rd level chooser + ctrl Ctrl position + ctrl:nocaps Caps Lock as Ctrl + ctrl:lctrl_meta Left Ctrl as Meta + ctrl:swapcaps Swap Ctrl and Caps Lock + ctrl:grouptoggle_capscontrol Caps Lock as Ctrl, Left Control switches to another layout + ctrl:hyper_capscontrol Caps Lock as Ctrl, Ctrl as Hyper + ctrl:ac_ctrl To the left of "A" + ctrl:aa_ctrl At the bottom left + ctrl:rctrl_ralt Right Ctrl as Right Alt + ctrl:ralt_rctrl Right Alt as Right Control + ctrl:menu_rctrl Menu as Right Ctrl + ctrl:swap_lalt_lctl Swap Left Alt with Left Ctrl + ctrl:swap_ralt_rctl Swap Right Alt with Right Ctrl + ctrl:swap_lwin_lctl Swap Left Win with Left Ctrl + ctrl:swap_rwin_rctl Swap Right Win with Right Ctrl + ctrl:swap_lalt_lctl_lwin Left Alt as Ctrl, Left Ctrl as Win, Left Win as Left Alt + grp_led Use keyboard LED to show alternative layout + grp_led:num Num Lock + grp_led:caps Caps Lock + grp_led:scroll Scroll Lock + mod_led Use keyboard LED to indicate modifiers + mod_led:compose Compose + keypad Layout of numeric keypad + keypad:legacy Legacy + keypad:oss Unicode arrows and math operators + keypad:future Unicode arrows and math operators on default level + keypad:legacy_wang Legacy Wang 724 + keypad:oss_wang Wang 724 keypad with Unicode arrows and math operators + keypad:future_wang Wang 724 keypad with Unicode arrows and math operators on default level + keypad:hex Hexadecimal + keypad:atm Phone and ATM style + kpdl Numeric keypad Delete behavior + kpdl:dot Legacy key with dot + kpdl:comma Legacy key with comma + kpdl:dotoss Four-level key with dot + kpdl:dotoss_latin9 Four-level key with dot, Latin-9 only + kpdl:commaoss Four-level key with comma + kpdl:momayyezoss Four-level key with momayyez + kpdl:kposs Four-level key with abstract separators + kpdl:semi Semicolon on third level + caps Caps Lock behavior + caps:internal Caps Lock uses internal capitalization; Shift "pauses" Caps Lock + caps:internal_nocancel Caps Lock uses internal capitalization; Shift does not affect Caps Lock + caps:shift Caps Lock acts as Shift with locking; Shift "pauses" Caps Lock + caps:shift_nocancel Caps Lock acts as Shift with locking; Shift does not affect Caps Lock + caps:capslock Caps Lock toggles normal capitalization of alphabetic characters + caps:shiftlock Caps Lock toggles Shift Lock (affects all keys) + caps:swapescape Swap Esc and Caps Lock + caps:escape Make Caps Lock an additional Esc + caps:escape_shifted_capslock Make Caps Lock an additional Esc, but Shift + Caps Lock is the regular Caps Lock + caps:backspace Make Caps Lock an additional Backspace + caps:super Make Caps Lock an additional Super + caps:hyper Make Caps Lock an additional Hyper + caps:menu Make Caps Lock an additional Menu key + caps:numlock Make Caps Lock an additional Num Lock + caps:ctrl_modifier Make Caps Lock act as an additional Ctrl modifier, but keep identifying as Caps Lock + caps:digits_row Caps Lock gives digits on the digits row (Azerty layouts) + caps:none Caps Lock is disabled + altwin Alt and Win behavior + altwin:menu Add the standard behavior to Menu key + altwin:menu_win Menu is mapped to Win + altwin:meta_alt Alt and Meta are on Alt + altwin:alt_win Alt is mapped to Win and the usual Alt + altwin:ctrl_win Ctrl is mapped to Win and the usual Ctrl + altwin:ctrl_rwin Ctrl is mapped to Right Win and the usual Ctrl + altwin:ctrl_alt_win Ctrl is mapped to Alt, Alt to Win + altwin:meta_win Meta is mapped to Win + altwin:left_meta_win Meta is mapped to Left Win + altwin:hyper_win Hyper is mapped to Win + altwin:alt_super_win Alt is mapped to Right Win, Super to Menu + altwin:swap_lalt_lwin Left Alt is swapped with Left Win + altwin:swap_alt_win Alt is swapped with Win + altwin:prtsc_rwin Win is mapped to PrtSc and the usual Win + Compose key Position of Compose key + compose:ralt Right Alt + compose:lwin Left Win + compose:lwin-altgr 3rd level of Left Win + compose:rwin Right Win + compose:rwin-altgr 3rd level of Right Win + compose:menu Menu + compose:menu-altgr 3rd level of Menu + compose:lctrl Left Ctrl + compose:lctrl-altgr 3rd level of Left Ctrl + compose:rctrl Right Ctrl + compose:rctrl-altgr 3rd level of Right Ctrl + compose:caps Caps Lock + compose:caps-altgr 3rd level of Caps Lock + compose:102 The "< >" key + compose:102-altgr 3rd level of the "< >" key + compose:paus Pause + compose:ins Insert + compose:prsc PrtSc + compose:sclk Scroll Lock + compat Compatibility options + numpad:pc Default numeric keypad keys + numpad:mac Numeric keypad always enters digits (as in macOS) + numpad:microsoft Num Lock on: digits; Shift for arrows. Num Lock off: arrows (as in Windows) + numpad:shift3 Shift does not cancel Num Lock, chooses 3rd level instead + scrolllock:mod3 Map Scroll Lock to Mod3 + srvrkeys:none Special keys (Ctrl+Alt+<key>) handled in a server + apple:alupckeys Apple Aluminium emulates Pause, PrtSc, Scroll Lock + apple:jp_oadg109a Japanese Apple keyboards emulate OADG109A backslash + apple:jp_pc106 Japanese Apple keyboards emulate PC106 backslash + shift:breaks_caps Shift cancels Caps Lock + misc:typo Enable extra typographic characters + misc:apl Enable APL overlay characters + shift:both_capslock Both Shifts together enable Caps Lock + shift:both_capslock_cancel Both Shifts together enable Caps Lock; one Shift key disables it + shift:both_shiftlock Both Shifts together enable Shift Lock + keypad:pointerkeys Shift + Num Lock enables PointerKeys + grab:break_actions Allow breaking grabs with keyboard actions (warning: security risk) + grab:debug Allow grab and window tree logging + currencysign Currency signs + eurosign:e Euro on E, third level + eurosign:E Euro on E, fourth level + eurosign:2 Euro on 2 + eurosign:4 Euro on 4 + eurosign:5 Euro on 5 + rupeesign:4 Rupee on 4 + lv5 Key to choose the 5th level + lv5:caps_switch Caps Lock chooses 5th level + lv5:lsgt_switch The "< >" key chooses 5th level + lv5:ralt_switch Right Alt chooses 5th level + lv5:menu_switch Menu chooses 5th level + lv5:rctrl_switch Right Ctrl chooses 5th level + lv5:lsgt_switch_lock The "< >" key chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser + lv5:ralt_switch_lock Right Alt chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser + lv5:lwin_switch_lock Left Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser + lv5:rwin_switch_lock Right Win chooses 5th level and acts as a one-time lock if pressed with another 5th level chooser + nbsp Non-breaking space input + nbsp:none Usual space at any level + nbsp:level2 Non-breaking space at the 2nd level + nbsp:level3 Non-breaking space at the 3rd level + nbsp:level3n Non-breaking space at the 3rd level, thin non-breaking space at the 4th level + nbsp:level4 Non-breaking space at the 4th level + nbsp:level4n Non-breaking space at the 4th level, thin non-breaking space at the 6th level + nbsp:level4nl Non-breaking space at the 4th level, thin non-breaking space at the 6th level (via Ctrl+Shift) + nbsp:zwnj2 Zero-width non-joiner at the 2nd level + nbsp:zwnj2zwj3 Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level + nbsp:zwnj2zwj3nb4 Zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level, non-breaking space at the 4th level + nbsp:zwnj2nb3 Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level + nbsp:zwnj2nb3zwj4 Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, zero-width joiner at the 4th level + nbsp:zwnj2nb3nnb4 Zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, thin non-breaking space at the 4th level + nbsp:zwnj3zwj4 Zero-width non-joiner at the 3rd level, zero-width joiner at the 4th level + japan Japanese keyboard options + japan:kana_lock Kana Lock key is locking + japan:nicola_f_bs NICOLA-F style Backspace + japan:hztg_escape Make Zenkaku Hankaku an additional Esc + korean Korean Hangul/Hanja keys + korean:ralt_hangul Make right Alt a Hangul key + korean:rctrl_hangul Make right Ctrl a Hangul key + korean:ralt_hanja Make right Alt a Hanja key + korean:rctrl_hanja Make right Ctrl a Hanja key + esperanto Esperanto letters with superscripts + esperanto:qwerty At the corresponding key in a QWERTY layout + esperanto:dvorak At the corresponding key in a Dvorak layout + esperanto:colemak At the corresponding key in a Colemak layout + solaris Old Solaris keycodes compatibility + solaris:sun_compat Sun key compatibility + terminate Key sequence to kill the X server + terminate:ctrl_alt_bksp Ctrl+Alt+Backspace + custom Miscellaneous options + custom:types Use user-defined custom XKB types diff --git a/nixos/xkb/rules/evdev.xml b/nixos/xkb/rules/evdev.xml new file mode 100644 index 00000000..03b80726 --- /dev/null +++ b/nixos/xkb/rules/evdev.xml @@ -0,0 +1,8284 @@ + + + + + + + + pc86 + Generic 86-key PC + Generic + + + + + pc101 + Generic 101-key PC + Generic + + + + + pc102 + Generic 102-key PC + Generic + + + + + pc104 + Generic 104-key PC + Generic + + + + + pc104alt + Generic 104-key PC with L-shaped Enter key + Generic + + + + + pc105 + Generic 105-key PC + Generic + + + + + a4techKB21 + A4Tech KB-21 + A4Tech + + + + + a4techKBS8 + A4Tech KBS-8 + A4Tech + + + + + a4_rfkb23 + A4Tech Wireless Desktop RFKB-23 + A4Tech + + + + + airkey + Acer AirKey V + Acer + + + + + acer_c300 + Acer C300 + Acer + + + + + acer_ferrari4k + Acer Ferrari 4000 + Acer + + + + + acer_laptop + Acer laptop + Acer + + + + + scorpius + Advance Scorpius KI + Scorpius + + + + + apple + Apple + Apple + + + + + applealu_ansi + Apple Aluminium (ANSI) + Apple + + + + + applealu_iso + Apple Aluminium (ISO) + Apple + + + + + applealu_jis + Apple Aluminium (JIS) + Apple + + + + + asus_laptop + Asus laptop + Asus + + + + + azonaRF2300 + Azona RF2300 Wireless Internet + Azona + + + + + benqx + BenQ X-Touch + BenQ + + + + + benqx730 + BenQ X-Touch 730 + BenQ + + + + + benqx800 + BenQ X-Touch 800 + BenQ + + + + + brother + Brother Internet + Brother + + + + + btc5090 + BTC 5090 + BTC + + + + + btc5113rf + BTC 5113RF Multimedia + BTC + + + + + btc5126t + BTC 5126T + BTC + + + + + btc6301urf + BTC 6301URF + BTC + + + + + btc9000 + BTC 9000 + BTC + + + + + btc9000a + BTC 9000A + BTC + + + + + btc9001ah + BTC 9001AH + BTC + + + + + btc9019u + BTC 9019U + BTC + + + + + btc9116u + BTC 9116U Mini Wireless Internet and Gaming + BTC + + + + + cherryblue + Cherry Blue Line CyBo@rd + Cherry + + + + + cherrybluea + Cherry Blue Line CyBo@rd (alt.) + Cherry + + + + + cherrybunlim + Cherry B.UNLIMITED + Cherry + + + + + cherrycyboard + Cherry CyBo@rd USB-Hub + Cherry + + + + + cherrycmexpert + Cherry CyMotion Expert + Cherry + + + + + cymotionlinux + Cherry CyMotion Master Linux + Cherry + + + + + cherryblueb + Cherry CyMotion Master XPress + Cherry + + + + + chicony + Chicony Internet + Chicony + + + + + chicony9885 + Chicony KB-9885 + Chicony + + + + + chicony0108 + Chicony KU-0108 + Chicony + + + + + chicony0420 + Chicony KU-0420 + Chicony + + + + + chromebook + Chromebook + Google + + + + + compalfl90 + Compal FL90 + Compal Electronics + + + + + armada + Compaq Armada laptop + Compaq + + + + + compaqeak8 + Compaq Easy Access + Compaq + + + + + compaqik7 + Compaq Internet (7 keys) + Compaq + + + + + compaqik13 + Compaq Internet (13 keys) + Compaq + + + + + compaqik18 + Compaq Internet (18 keys) + Compaq + + + + + ipaq + Compaq iPaq + Compaq + + + + + presario + Compaq Presario laptop + Compaq + + + + + creativedw7000 + Creative Desktop Wireless 7000 + Creative + + + + + dell + Dell + Dell + + + + + dell101 + Dell 101-key PC + Dell + + + + + latitude + Dell Latitude laptop + Dell + + + + + inspiron + Dell Inspiron 6000/8000 laptop + Dell + + + + + precision_m + Dell Precision M laptop + Dell + + + + + dellm65 + Dell Precision M65 laptop + Dell + + + + + dellsk8125 + Dell SK-8125 + Dell + + + + + dellsk8135 + Dell SK-8135 + Dell + + + + + dellusbmm + Dell USB Multimedia + Dell + + + + + dexxa + Dexxa Wireless Desktop + Dexxa + + + + + diamond + Diamond 9801/9802 + Diamond + + + + + dtk2000 + DTK2000 + DTK + + + + + emachines + eMachines m6800 laptop + eMachines + + + + + ennyah_dkb1008 + Ennyah DKB-1008 + Ennyah + + + + + everex + Everex STEPnote + Everex + + + + + fscaa1667g + Fujitsu-Siemens Amilo laptop + Fujitsu-Siemens + + + + + genius + Genius Comfy KB-16M/Multimedia KWD-910 + Genius + + + + + geniuscomfy + Genius Comfy KB-12e + Genius + + + + + geniuscomfy2 + Genius Comfy KB-21e-Scroll + Genius + + + + + geniuskb19e + Genius KB-19e NB + Genius + + + + + geniuskkb2050hs + Genius KKB-2050HS + Genius + + + + + gyration + Gyration + Gyration + + + + + hhk + Happy Hacking + Fujitsu + + + + + hpi6 + Hewlett-Packard Internet + Hewlett-Packard + + + + + hpmini110 + Hewlett-Packard Mini 110 laptop + Hewlett-Packard + + + + + hpnx9020 + Hewlett-Packard nx9020 + Hewlett-Packard + + + + + hp5xx + Hewlett-Packard Omnibook 500 + Hewlett-Packard + + + + + hp500fa + Hewlett-Packard Omnibook 500 FA + Hewlett-Packard + + + + + hp6000 + Hewlett-Packard Omnibook 6000/6100 + Hewlett-Packard + + + + + hpxe3gc + Hewlett-Packard Omnibook XE3 GC + Hewlett-Packard + + + + + hpxe3gf + Hewlett-Packard Omnibook XE3 GF + Hewlett-Packard + + + + + hpxt1000 + Hewlett-Packard Omnibook XT1000 + Hewlett-Packard + + + + + hpdv5 + Hewlett-Packard Pavilion dv5 + Hewlett-Packard + + + + + hpzt11xx + Hewlett-Packard Pavilion ZT1100 + Hewlett-Packard + + + + + hp250x + Hewlett-Packard SK-2501 Multimedia + Hewlett-Packard + + + + + honeywell_euroboard + Honeywell Euroboard + Hewlett-Packard + + + + + rapidaccess + IBM Rapid Access + Lenovo (previously IBM) + + + + + rapidaccess2 + IBM Rapid Access II + Lenovo (previously IBM) + + + + + ibm_spacesaver + IBM Space Saver + Lenovo (previously IBM) + + + + + thinkpad + IBM ThinkPad 560Z/600/600E/A22E + Lenovo (previously IBM) + + + + + thinkpad60 + IBM ThinkPad R60/T60/R61/T61 + Lenovo (previously IBM) + + + + + thinkpadz60 + IBM ThinkPad Z60m/Z60t/Z61m/Z61t + Lenovo (previously IBM) + + + + + flexpro + Keytronic FlexPro + Keytronic + + + + + kinesis + Kinesis + Kinesis + + + + + logitech_base + Logitech + Logitech + + + + + logiaccess + Logitech Access + Logitech + + + + + logicd + Logitech Cordless Desktop + Logitech + + + + + logicda + Logitech Cordless Desktop (alt.) + Logitech + + + + + logiex110 + Logitech Cordless Desktop EX110 + Logitech + + + + + logicd_it + Logitech Cordless Desktop iTouch + Logitech + + + + + logiclx300 + Logitech Cordless Desktop LX-300 + Logitech + + + + + logicd_nav + Logitech Cordless Desktop Navigator + Logitech + + + + + logicd_opt + Logitech Cordless Desktop Optical + Logitech + + + + + logidinovo + Logitech diNovo + Logitech + + + + + logidinovoedge + Logitech diNovo Edge + Logitech + + + + + logitech_g15 + Logitech G15 extra keys via G15daemon + Logitech + + + + + logiik + Logitech Internet + Logitech + + + + + logii350 + Logitech Internet 350 + Logitech + 046d:c313 + + + + + logimel + Logitech Internet 350 + Logitech + + + + + logicink + Logitech Internet Navigator + Logitech + + + + + itouch + Logitech iTouch + Logitech + + + + + logiitc + Logitech iTouch Cordless Y-RB6 + Logitech + + + + + logiinkse + Logitech iTouch Internet Navigator SE + Logitech + + + + + logiinkseusb + Logitech iTouch Internet Navigator SE USB + Logitech + + + + + logiultrax + Logitech Ultra-X + Logitech + + + + + logiultraxc + Logitech Ultra-X Cordless Media Desktop + Logitech + + + + + mx1998 + Memorex MX1998 + Memorex + + + + + mx2500 + Memorex MX2500 EZ-Access + Memorex + + + + + mx2750 + Memorex MX2750 + Memorex + + + + + microsoftccurve2k + Microsoft Comfort Curve 2000 + Microsoft + + + + + microsoftinet + Microsoft Internet + Microsoft + + + + + microsoftprose + Microsoft Internet Pro (Swedish) + Microsoft + + + + + microsoft + Microsoft Natural + Microsoft + + + + + microsoftelite + Microsoft Natural Elite + Microsoft + + + + + microsoft4000 + Microsoft Natural Ergonomic 4000 + Microsoft + + + + + microsoft7000 + Microsoft Natural Wireless Ergonomic 7000 + Microsoft + + + + + microsoftpro + Microsoft Natural Pro/Internet Pro + Microsoft + + + + + microsoftprousb + Microsoft Natural Pro USB/Internet Pro + Microsoft + + + + + microsoftprooem + Microsoft Natural Pro OEM + Microsoft + + + + + microsoftoffice + Microsoft Office Keyboard + Microsoft + + + + + microsoftsurface + Microsoft Surface + Microsoft + + + + + microsoftmult + Microsoft Wireless Multimedia 1.0A + Microsoft + + + + + sk1300 + NEC SK-1300 + NEC + + + + + sk2500 + NEC SK-2500 + NEC + + + + + sk6200 + NEC SK-6200 + NEC + + + + + sk7100 + NEC SK-7100 + NEC + + + + + omnikey101 + Northgate OmniKey 101 + Northgate + + + + + olpc + OLPC + OLPC + + + + + oretec + Ortek Multimedia/Internet MCK-800 + Ortek + + + + + pc98 + PC-98 + Generic + + + + + ppkb + PinePhone Keyboard + Pine64 + + + + + propeller + Propeller Voyager KTEZ-1000 + KeyTronic + + + + + qtronix + QTronix Scorpius 98N+ + QTronix + + + + + samsung4500 + Samsung SDM 4500P + Samsung + + + + + samsung4510 + Samsung SDM 4510P + Samsung + + + + + sanwaskbkg3 + Sanwa Supply SKB-KG3 + Sanwa Supply Inc. + + + + + silvercrest + Silvercrest Multimedia Wireless + Silvercrest + + + + + apex300 + SteelSeries Apex 300 (Apex RAW) + SteelSeries + + + + + sun_type6_jp + Sun Type 6 (Japanese) + Sun Microsystems + + + + + sun_type6_jp_usb + Sun Type 6 USB (Japanese) + Sun Microsystems + + + + + sun_type6_unix_usb + Sun Type 6 USB (Unix) + Sun Microsystems + + + + + sun_type6_usb + Sun Type 6/7 USB + Sun Microsystems + + + + + sun_type6_euro_usb + Sun Type 6/7 USB (European) + Sun Microsystems + + + + + sun_type7_usb + Sun Type 7 USB + Sun Microsystems + + + + + sun_type7_euro_usb + Sun Type 7 USB (European) + Sun Microsystems + + + + + sun_type7_jp_usb + Sun Type 7 USB (Japanese)/Japanese 106-key + Sun Microsystems + + + + + sun_type7_unix_usb + Sun Type 7 USB (Unix) + Sun Microsystems + + + + + sp_inet + Super Power Multimedia + Generic + + + + + sven + SVEN Ergonomic 2500 + SVEN + + + + + sven303 + SVEN Slim 303 + SVEN + + + + + symplon + Symplon PaceBook tablet + Symplon + + + + + targa_v811 + Targa Visionary 811 + Targa + + + + + toshiba_s3000 + Toshiba Satellite S3000 + Toshiba + + + + + teck227 + Truly Ergonomic 227 + Truly Ergonomic + + + + + teck229 + Truly Ergonomic 229 + Truly Ergonomic + + + + + trustda + Trust Direct Access + Trust + + + + + trust_slimline + Trust Slimline + Trust + + + + + trust + Trust Wireless Classic + Trust + + + + + tm2020 + TypeMatrix EZ-Reach 2020 + TypeMatrix + + + + + tm2030PS2 + TypeMatrix EZ-Reach 2030 PS2 + TypeMatrix + + + + + tm2030USB + TypeMatrix EZ-Reach 2030 USB + TypeMatrix + + + + + tm2030USB-102 + TypeMatrix EZ-Reach 2030 USB (102/105:EU mode) + TypeMatrix + + + + + tm2030USB-106 + TypeMatrix EZ-Reach 2030 USB (106:JP mode) + TypeMatrix + + + + + unitekkb1925 + Unitek KB-1925 + Unitek Group + + + + + vsonku306 + ViewSonic KU-306 Internet + ViewSonic + + + + + winbook + Winbook Model XP5 + Generic + + + + + yahoo + Yahoo! Internet + Yahoo! + + + + + + + + al + + sq + Albanian + + AL + + + sqi + + + + + + plisi + Albanian (Plisi) + + + + + veqilharxhi + Albanian (Veqilharxhi) + + + + + + + et + + am + Amharic + + ET + + + amh + + + + + + + am + + hy + Armenian + + AM + + + hye + + + + + + phonetic + Armenian (phonetic) + + + + + phonetic-alt + Armenian (alt. phonetic) + + + + + eastern + Armenian (eastern) + + + + + eastern-alt + Armenian (alt. eastern) + + + + + western + Armenian (western) + + + + + + + ara + + ar + Arabic + + AE + BH + DZ + EG + EH + JO + KW + LB + LY + MA + MR + OM + PS + QA + SA + SD + SY + TN + YE + + + ara + + + + + + digits + Arabic (Eastern Arabic numerals) + + + + + azerty + Arabic (AZERTY) + + + + + azerty_digits + Arabic (AZERTY, Eastern Arabic numerals) + + + + + buckwalter + Arabic (Buckwalter) + + + + + mac + Arabic (Macintosh) + + + + + mac-phonetic + Arabic (Macintosh, phonetic) + + + + + olpc + Arabic (OLPC) + + + + + + + eg + + ar + Arabic (Egypt) + + EG + + + ara + arz + + + + + + iq + + ar + Arabic (Iraq) + + IQ + + + ara + + + + + + ku + + ku + Kurdish (Iraq, Latin Q) + + kur + + + + + + ku_alt + + ku + Kurdish (Iraq, Latin Alt-Q) + + kur + + + + + + ku_f + + ku + Kurdish (Iraq, F) + + kur + + + + + + ku_ara + + ku + Kurdish (Iraq, Arabic-Latin) + + kur + + + + + + + + ma + + ar + Arabic (Morocco) + + MA + + + ary + + + + + + tifinagh + + ber + Berber (Morocco, Tifinagh) + + ber + + + + + + tifinagh-alt + + ber + Berber (Morocco, Tifinagh alt.) + + ber + + + + + + tifinagh-alt-phonetic + + ber + Berber (Morocco, Tifinagh phonetic, alt.) + + ber + + + + + + tifinagh-extended + + ber + Berber (Morocco, Tifinagh extended) + + ber + + + + + + tifinagh-phonetic + + ber + Berber (Morocco, Tifinagh phonetic) + + ber + + + + + + tifinagh-extended-phonetic + + ber + Berber (Morocco, Tifinagh extended phonetic) + + ber + + + + + + french + + fr + French (Morocco) + + fra + + + + + + rif + + rif + Tarifit + + rif + + + + + + + + sy + + ar + Arabic (Syria) + + SY + + + syr + + + + + + syc + + syc + Syriac + + + + + syc_phonetic + + syc + Syriac (phonetic) + + + + + ku + + ku + Kurdish (Syria, Latin Q) + + kur + + + + + + ku_alt + + ku + Kurdish (Syria, Latin Alt-Q) + + kur + + + + + + ku_f + + ku + Kurdish (Syria, F) + + kur + + + + + + + + az + + az + Azerbaijani + + AZ + + + aze + + + + + + cyrillic + Azerbaijani (Cyrillic) + + + + + + + ml + + bm + Bambara + + ML + + + bam + + + + + + fr-oss + + fr + French (Mali, alt.) + + fra + + + + + + us-mac + + en + English (Mali, US, Macintosh) + + eng + + + + + + us-intl + + en + English (Mali, US, intl.) + + eng + + + + + + + + bd + + bn + Bangla + + BD + + + ben + + sat + + + + + + probhat + Bangla (Probhat) + + + + + + + by + + by + Belarusian + + BY + + + bel + + + + + + legacy + Belarusian (legacy) + + + + + latin + Belarusian (Latin) + + + + + intl + Belarusian (intl.) + + + + + phonetic + Belarusian (phonetic) + + + + + ru + Russian (Belarus) + + rus + + + + + + + + be + + be + Belgian + + BE + + + deu + nld + fra + + + + + + oss + Belgian (alt.) + + + + + oss_latin9 + Belgian (Latin-9 only, alt.) + + + + + iso-alternate + Belgian (ISO, alt.) + + + + + nodeadkeys + Belgian (no dead keys) + + + + + wang + Belgian (Wang 724 AZERTY) + + + + + + + dz + + kab + Berber (Algeria, Latin) + + DZ + + + tzm + fra + kab + + + + + + ber + kab + Berber (Algeria, Tifinagh) + + kab + + + + + + azerty-deadkeys + kab + Kabyle (AZERTY, with dead keys) + + kab + + + + + + qwerty-gb-deadkeys + kab + Kabyle (QWERTY, UK, with dead keys) + + kab + + + + + + qwerty-us-deadkeys + kab + Kabyle (QWERTY, US, with dead keys) + + kab + + + + + + ar + + ar + Arabic (Algeria) + + ara + + + + + + + + ba + + bs + Bosnian + + BA + + + bos + + + + + + alternatequotes + Bosnian (with guillemets) + + + + + unicode + Bosnian (with Bosnian digraphs) + + + + + unicodeus + Bosnian (US, with Bosnian digraphs) + + + + + us + Bosnian (US) + + + + + + + brai + + brl + Braille + + + + + left_hand + Braille (left-handed) + + + + + left_hand_invert + Braille (left-handed inverted thumb) + + + + + right_hand + Braille (right-handed) + + + + + right_hand_invert + Braille (right-handed inverted thumb) + + + + + + + bg + + bg + Bulgarian + + BG + + + bul + + + + + + phonetic + Bulgarian (traditional phonetic) + + + + + bas_phonetic + Bulgarian (new phonetic) + + + + + bekl + Bulgarian (enhanced) + + + + + + + mm + + my + Burmese + + MM + + + mya + + + + + + zawgyi + my-zwg + Burmese (Zawgyi) + + mya + + + + + + mnw + + mnw + Mon + + mnw + eng + + + + + + mnw-a1 + + mnw + Mon (A1) + + mnw + + + + + + shn + + shn + Shan + + shn + eng + + + + + + zgt + shn-zwg + Shan (Zawgyi) + + shn + + + + + + + + cn + + zh + Chinese + + CN + + + zho + + + + + + altgr-pinyin + Hanyu Pinyin Letters (with AltGr dead keys) + + zho + + + + + + mon_trad + Mongolian (Bichig) + + mvf + + + + + + mon_trad_todo + Mongolian (Todo) + + mvf + + + + + + mon_trad_xibe + Mongolian (Xibe) + + sjo + + + + + + mon_trad_manchu + Mongolian (Manchu) + + mnc + + + + + + mon_trad_galik + Mongolian (Galik) + + mvf + + + + + + mon_todo_galik + Mongolian (Todo Galik) + + mvf + + + + + + mon_manchu_galik + Mongolian (Manchu Galik) + + mnc + + + + + + tib + Tibetan + + bod + + + + + + tib_asciinum + Tibetan (with ASCII numerals) + + bod + + + + + + ug + + ug + Uyghur + + uig + + + + + + + + hr + + hr + Croatian + + HR + + + hrv + + + + + + alternatequotes + Croatian (with guillemets) + + + + + unicode + Croatian (with Croatian digraphs) + + + + + unicodeus + Croatian (US, with Croatian digraphs) + + + + + us + Croatian (US) + + + + + + + cz + + cs + Czech + + CZ + + + ces + + + + + + bksl + Czech (extra backslash) + + + + + qwerty + Czech (QWERTY) + + + + + qwerty_bksl + Czech (QWERTY, extra backslash) + + + + + winkeys + Czech (QWERTZ, Windows) + + + + + winkeys-qwerty + Czech (QWERTY, Windows) + + + + + qwerty-mac + Czech (QWERTY, Macintosh) + + + + + ucw + Czech (UCW, only accented letters) + + + + + dvorak-ucw + Czech (US, Dvorak, UCW support) + + + + + rus + + ru + Russian (Czechia, phonetic) + + rus + + + + + + + + dk + + da + Danish + + DK + + + dan + + + + + + nodeadkeys + Danish (no dead keys) + + + + + winkeys + Danish (Windows) + + + + + mac + Danish (Macintosh) + + + + + mac_nodeadkeys + Danish (Macintosh, no dead keys) + + + + + dvorak + Danish (Dvorak) + + + + + + + af + + fa + Dari + + AF + + + prs + + + + + + ps + + ps + Pashto + + pus + + + + + + uz + + uz + Uzbek (Afghanistan) + + uzb + + + + + + fa-olpc + + fa + Dari (Afghanistan, OLPC) + + + + + ps-olpc + + ps + Pashto (Afghanistan, OLPC) + + pus + + + + + + uz-olpc + + uz + Uzbek (Afghanistan, OLPC) + + uzb + + + + + + + + mv + + dv + Dhivehi + + MV + + + div + + + + + + + nl + + nl + Dutch + + NL + + + nld + + + + + + us + Dutch (US) + + + + + mac + Dutch (Macintosh) + + + + + std + Dutch (standard) + + + + + + + bt + + dz + Dzongkha + + BT + + + dzo + + + + + + au + + en + English (Australia) + + AU + + + eng + + + + + + cm + + cm + English (Cameroon) + + CM + + + eng + + + + + + french + + fr + French (Cameroon) + + fra + + + + + + qwerty + Cameroon Multilingual (QWERTY, intl.) + + eng + bas + nmg + fub + ewo + xmd + mfh + bkm + ozm + lns + sox + pny + wes + lem + nyj + mfk + mcp + ass + xed + dua + anv + bum + btb + bfd + azo + ken + yam + yat + yas + + + + + + azerty + Cameroon (AZERTY, intl.) + + fra + bas + nmg + fub + ewo + xmd + mfh + bkm + ozm + lns + sox + pny + wes + lem + nyj + mfk + mcp + ass + xed + dua + anv + bum + btb + bfd + azo + ken + yam + yat + yas + + + + + + dvorak + Cameroon (Dvorak, intl.) + + + + + mmuock + Mmuock + + + + + + + gh + + en + English (Ghana) + + GH + + + eng + + + + + + generic + English (Ghana, multilingual) + + + + + gillbt + English (Ghana, GILLBT) + + + + + akan + + ak + Akan + + aka + + + + + + avn + + avn + Avatime + + avn + + + + + + ewe + + ee + Ewe + + ewe + + + + + + fula + + ff + Fula + + ful + + + + + + ga + + gaa + Ga + + gaa + + + + + + hausa + + ha + Hausa (Ghana) + + hau + + + + + + + + nz + + en + English (New Zealand) + + NZ + + + eng + + + + + + mao + + mi + Maori + + mri + + + + + + + + ng + + en + English (Nigeria) + + NG + + + eng + + + + + + hausa + + ha + Hausa (Nigeria) + + hau + + + + + + igbo + + ig + Igbo + + ibo + + + + + + yoruba + + yo + Yoruba + + yor + + + + + + + + za + + en + English (South Africa) + + ZA + + + eng + + + + + + gb + + en + English (UK) + + GB + + + eng + + + + + + extd + English (UK, extended, Windows) + + + + + intl + English (UK, intl., with dead keys) + + + + + dvorak + English (UK, Dvorak) + + + + + dvorakukp + English (UK, Dvorak, with UK punctuation) + + + + + mac + English (UK, Macintosh) + + + + + mac_intl + English (UK, Macintosh, intl.) + + + + + colemak + English (UK, Colemak) + + + + + colemak_dh + English (UK, Colemak-DH) + + + + + gla + gd + Scottish Gaelic + + GB + CA + + + eng + gla + + + + + + pl + + pl + Polish (British keyboard) + + pol + + + + + + + + us + + en + English (US) + + US + + + eng + + + + + + euro + English (US, euro on 5) + + + + + intl + English (US, intl., with dead keys) + + + + + alt-intl + English (US, alt. intl.) + + + + + altgr-intl + English (intl., with AltGr dead keys) + + eng + fra + deu + + + + + + mac + English (Macintosh) + + + + + colemak + English (Colemak) + + + + + colemak_dh + English (Colemak-DH) + + + + + colemak_dh_wide + English (Colemak-DH Wide) + + + + + colemak_dh_ortho + English (Colemak-DH Ortholinear) + + + + + colemak_dh_iso + English (Colemak-DH ISO) + + + + + colemak_dh_wide_iso + English (Colemak-DH Wide ISO) + + + + + dvorak + English (Dvorak) + + + + + dvorak-intl + English (Dvorak, intl., with dead keys) + + + + + dvorak-alt-intl + English (Dvorak, alt. intl.) + + + + + dvorak-l + English (Dvorak, left-handed) + + + + + dvorak-r + English (Dvorak, right-handed) + + + + + dvorak-classic + English (classic Dvorak) + + + + + dvp + English (programmer Dvorak) + + + + + dvorak-mac + English (Dvorak, Macintosh) + + + + + norman + English (Norman) + + + + + symbolic + English (US, Symbolic) + + + + + workman + English (Workman) + + + + + workman-intl + English (Workman, intl., with dead keys) + + + + + olpc2 + English (the divide/multiply toggle the layout) + + + + + chr + + chr + Cherokee + + chr + + + + + + haw + + haw + Hawaiian + + haw + + + + + + rus + + ru + Russian (US, phonetic) + + rus + + + + + + hbs + Serbo-Croatian (US) + + eng + bos + hbs + hrv + srp + + + + + + + + epo + + eo + Esperanto + + epo + + + + + + legacy + Esperanto (legacy) + + + + + + + ee + + et + Estonian + + EE + + + est + + + + + + nodeadkeys + Estonian (no dead keys) + + + + + dvorak + Estonian (Dvorak) + + + + + us + Estonian (US) + + + + + + + fo + + fo + Faroese + + FO + + + fao + + + + + + nodeadkeys + Faroese (no dead keys) + + + + + + + ph + + ph + Filipino + + PH + + + eng + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + qwerty-bay + Filipino (QWERTY, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + + + + + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + + + + + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + colemak + Filipino (Colemak, Latin) + + + + + colemak-bay + Filipino (Colemak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + dvorak + Filipino (Dvorak, Latin) + + + + + dvorak-bay + Filipino (Dvorak, Baybayin) + + bik + ceb + fil + hil + ilo + pam + pag + phi + tgl + war + + + + + + + + fi + + fi + Finnish + + FI + + + fin + + + + + + winkeys + Finnish (Windows) + + + + + classic + Finnish (classic) + + + + + nodeadkeys + Finnish (classic, no dead keys) + + + + + mac + Finnish (Macintosh) + + + + + smi + Northern Saami (Finland) + + sme + + + + + + + + fr + + fr + French + + FR + + + fra + + + + + + nodeadkeys + French (no dead keys) + + + + + oss + French (alt.) + + + + + oss_nodeadkeys + French (alt., no dead keys) + + + + + oss_latin9 + French (alt., Latin-9 only) + + + + + latin9 + French (legacy, alt.) + + + + + latin9_nodeadkeys + French (legacy, alt., no dead keys) + + + + + azerty + French (AZERTY) + + + + + afnor + French (AZERTY, AFNOR) + + + + + bepo + French (BEPO) + + + + + bepo_latin9 + French (BEPO, Latin-9 only) + + + + + bepo_afnor + French (BEPO, AFNOR) + + + + + dvorak + French (Dvorak) + + + + + ergol + French (Ergo‑L) + + + + + ergol_iso + French (Ergo‑L, ISO variant) + + + + + mac + French (Macintosh) + + + + + us + French (US) + + + + + bre + Breton (France) + + bre + + + + + + oci + Occitan + + oci + + + + + + geo + Georgian (France, AZERTY Tskapo) + + kat + + + + + + + + ca + + fr + French (Canada) + + CA + + + fra + + + + + + fr-dvorak + + fr + French (Canada, Dvorak) + + + + + fr-legacy + + fr + French (Canada, legacy) + + + + + multix + Canadian (CSA) + + + + + eng + + en + English (Canada) + + eng + + + + + + ike + + ike + Inuktitut + + iku + + + + + + + + cd + + fr + French (Democratic Republic of the Congo) + + CD + + + fra + + + + + + + tg + + fr + French (Togo) + + TG + + + fra + ajg + blo + kpo + ewe + fon + fue + gej + ife + kbp + las + dop + mfg + nmz + bud + gng + kdh + soy + + + + + + ge + + ka + Georgian + + GE + + + kat + + + + + + ergonomic + Georgian (ergonomic) + + + + + mess + Georgian (MESS) + + + + + os + Ossetian (Georgia) + + oss + + + + + + ru + + ru + Russian (Georgia) + + rus + + + + + + + + de + + de + German + + DE + + + deu + + + + + + deadacute + German (dead acute) + + + + + deadgraveacute + German (dead grave acute) + + + + + deadtilde + German (dead tilde) + + + + + nodeadkeys + German (no dead keys) + + + + + e1 + German (E1) + + + + + e2 + German (E2) + + + + + T3 + German (T3) + + + + + us + German (US) + + + + + dvorak + German (Dvorak) + + + + + mac + German (Macintosh) + + + + + mac_nodeadkeys + German (Macintosh, no dead keys) + + + + + neo + German (Neo 2) + + + + + qwerty + German (QWERTY) + + + + + dsb + Lower Sorbian + + dsb + + + + + + dsb_qwertz + Lower Sorbian (QWERTZ) + + dsb + + + + + + ro + Romanian (Germany) + + ron + + + + + + ro_nodeadkeys + Romanian (Germany, no dead keys) + + ron + + + + + + ru + + ru + Russian (Germany, phonetic) + + rus + + + + + + tr + Turkish (Germany) + + tur + + + + + + + + at + + de + German (Austria) + + AT + + + deu + + + + + + nodeadkeys + German (Austria, no dead keys) + + + + + mac + German (Austria, Macintosh) + + + + + + + ch + + de + German (Switzerland) + + CH + + + deu + gsw + + + + + + de_nodeadkeys + + de + German (Switzerland, no dead keys) + + + + + de_mac + + de + German (Switzerland, Macintosh) + + + + + legacy + German (Switzerland, legacy) + + + + + fr + + fr + French (Switzerland) + + fra + + + + + + fr_nodeadkeys + + fr + French (Switzerland, no dead keys) + + fra + + + + + + fr_mac + + fr + French (Switzerland, Macintosh) + + fra + + + + + + + + gr + + gr + Greek + + GR + + + ell + + + + + + simple + Greek (simple) + + + + + nodeadkeys + Greek (no dead keys) + + + + + polytonic + Greek (polytonic) + + + + + + + il + + he + Hebrew + + IL + + + heb + + + + + + si2 + Hebrew (SI-1452-2) + + + + + lyx + Hebrew (lyx) + + + + + phonetic + Hebrew (phonetic) + + + + + biblical + Hebrew (Biblical, Tiro) + + + + + + + hu + + hu + Hungarian + + HU + + + hun + + + + + + standard + Hungarian (standard) + + + + + nodeadkeys + Hungarian (no dead keys) + + + + + qwerty + Hungarian (QWERTY) + + + + + 101_qwertz_comma_dead + Hungarian (QWERTZ, 101-key, comma, dead keys) + + + + + 101_qwertz_comma_nodead + Hungarian (QWERTZ, 101-key, comma, no dead keys) + + + + + 101_qwertz_dot_dead + Hungarian (QWERTZ, 101-key, dot, dead keys) + + + + + 101_qwertz_dot_nodead + Hungarian (QWERTZ, 101-key, dot, no dead keys) + + + + + 101_qwerty_comma_dead + Hungarian (QWERTY, 101-key, comma, dead keys) + + + + + 101_qwerty_comma_nodead + Hungarian (QWERTY, 101-key, comma, no dead keys) + + + + + 101_qwerty_dot_dead + Hungarian (QWERTY, 101-key, dot, dead keys) + + + + + 101_qwerty_dot_nodead + Hungarian (QWERTY, 101-key, dot, no dead keys) + + + + + 102_qwertz_comma_dead + Hungarian (QWERTZ, 102-key, comma, dead keys) + + + + + 102_qwertz_comma_nodead + Hungarian (QWERTZ, 102-key, comma, no dead keys) + + + + + 102_qwertz_dot_dead + Hungarian (QWERTZ, 102-key, dot, dead keys) + + + + + 102_qwertz_dot_nodead + Hungarian (QWERTZ, 102-key, dot, no dead keys) + + + + + 102_qwerty_comma_dead + Hungarian (QWERTY, 102-key, comma, dead keys) + + + + + 102_qwerty_comma_nodead + Hungarian (QWERTY, 102-key, comma, no dead keys) + + + + + 102_qwerty_dot_dead + Hungarian (QWERTY, 102-key, dot, dead keys) + + + + + 102_qwerty_dot_nodead + Hungarian (QWERTY, 102-key, dot, no dead keys) + + + + + + + is + + is + Icelandic + + IS + + + isl + + + + + + mac_legacy + Icelandic (Macintosh, legacy) + + + + + mac + Icelandic (Macintosh) + + + + + dvorak + Icelandic (Dvorak) + + + + + + + in + + in + Indian + + IN + + + + hin + anp + awa + bap + bfy + bgc + bhb + bhi + bho + bjj + bra + brx + btv + doi + dty + gbm + gom + gvr + hne + hoc + hoj + jml + kfr + kfy + khn + kok + kru + mag + mai + mar + mgp + mrd + mtr + mwr + nep + new + noe + raj + rjs + sck + srx + swv + taj + tdg + tdh + thl + thq + thr + tkt + wbr + wtm + xnr + xsr + + + + + + asm-kagapa + + as + Assamese (KaGaPa, phonetic) + + asm + + + + + + ben + + bn + Bangla (India) + + ben + + sat + + + + + + ben_probhat + + bn + Bangla (India, Probhat) + + ben + + sat + + + + + + ben_baishakhi + Bangla (India, Baishakhi) + + ben + + sat + + + + + + ben_bornona + Bangla (India, Bornona) + + ben + + sat + + + + + + ben-kagapa + Bangla (India, KaGaPa, phonetic) + + ben + sat + + + + + + ben_gitanjali + Bangla (India, Gitanjali) + + ben + + sat + + + + + + ben_inscript + Bangla (India, Baishakhi InScript) + + ben + + sat + + + + + + eng + + en + English (India, with rupee) + + eng + + + + + + guj + + gu + Gujarati + + guj + + + + + + guj-kagapa + + gu + Gujarati (KaGaPa, phonetic) + + guj + + + + + + bolnagri + + hi + Hindi (Bolnagri) + + hin + + + + + + hin-wx + + hi + Hindi (Wx) + + hin + + + + + + hin-kagapa + + hi + Hindi (KaGaPa, phonetic) + + hin + + + + + + kan + + kn + Kannada + + kan + + + + + + kan-kagapa + + kn + Kannada (KaGaPa, phonetic) + + kan + + + + + + mal + + ml + Malayalam + + mal + + + + + + mal_lalitha + + ml + Malayalam (Lalitha) + + mal + + + + + + mal_enhanced + + ml + Malayalam (enhanced InScript, with rupee) + + mal + + + + + + mal_poorna + + ml + Malayalam (Poorna, extended InScript) + + mal + + + + + + mni + Manipuri (Meitei) + + mni + + + + + + mar-kagapa + + mr + Marathi (KaGaPa, phonetic) + + mar + + + + + + marathi + Marathi (enhanced InScript) + + mar + + + + + + ori + + or + Oriya + + ori + + sat + + + + + + ori-bolnagri + + or + Oriya (Bolnagri) + + ori + + sat + + + + + + ori-wx + + or + Oriya (Wx) + + ori + + sat + + + + + + guru + + pa + Punjabi (Gurmukhi) + + pan + + + + + + jhelum + + pa + Punjabi (Gurmukhi Jhelum) + + pan + + + + + + san-kagapa + + sa + Sanskrit (KaGaPa, phonetic) + + san + + + + + + sat + + sat + Santali (Ol Chiki) + + + sat + + + + + + tamilnet + + ta + Tamil (TamilNet '99) + + tam + + + + + + tamilnet_tamilnumbers + + ta + Tamil (TamilNet '99 with Tamil numerals) + + tam + + + + + + tamilnet_TAB + + ta + Tamil (TamilNet '99, TAB encoding) + + tam + + + + + + tamilnet_TSCII + + ta + Tamil (TamilNet '99, TSCII encoding) + + tam + + + + + + tam + + ta + Tamil (InScript, with Arabic numerals) + + tam + + + + + + tam_tamilnumbers + + ta + Tamil (InScript, with Tamil numerals) + + tam + + + + + + tel + + te + Telugu + + tel + + + + + + tel-kagapa + + te + Telugu (KaGaPa, phonetic) + + tel + + + + + + tel-sarala + + te + Telugu (Sarala) + + tel + + + + + + urd-phonetic + + ur + Urdu (phonetic) + + urd + + + + + + urd-phonetic3 + + ur + Urdu (alt. phonetic) + + urd + + + + + + urd-winkeys + + ur + Urdu (Windows) + + urd + + + + + + iipa + Indic IPA + + eng + + + + + + + + id + + id + Indonesian (Latin) + + ID + + + ind + ace + ban + bbc + bew + bjn + btm + bts + bug + gor + jav + jax + mad + mak + min + mui + sas + sun + + + + + + melayu-phonetic + Indonesian (Arab Melayu, phonetic) + + + + + melayu-phoneticx + Indonesian (Arab Melayu, extended phonetic) + + + + + pegon-phonetic + Indonesian (Arab Pegon, phonetic) + + + + + javanese + Javanese + + + + + + + ie + + ie + Irish + + IE + + + eng + + + + + + UnicodeExpert + Irish (UnicodeExpert) + + + + + CloGaelach + CloGaelach + + gle + + + + + + ogam + Ogham + + sga + + + + + + ogam_is434 + Ogham (IS434) + + sga + + + + + + + + it + + it + Italian + + IT + + + ita + + + + + + nodeadkeys + Italian (no dead keys) + + + + + winkeys + Italian (Windows) + + + + + mac + Italian (Macintosh) + + + + + us + Italian (US) + + + + + ibm + Italian (IBM 142) + + + + + fur + Friulian (Italy) + + fur + + + + + + scn + Sicilian + + ita + scn + + + + + + geo + Georgian (Italy) + + kat + + + + + + + + jp + + ja + Japanese + + JP + + + jpn + + + + + + kana + Japanese (Kana) + + + + + kana86 + Japanese (Kana 86) + + + + + OADG109A + Japanese (OADG 109A) + + + + + mac + Japanese (Macintosh) + + + + + dvorak + Japanese (Dvorak) + + + + + + + kz + + kk + Kazakh + + KZ + + + kaz + + + + + + kazrus + Kazakh (with Russian) + + kaz + rus + + + + + + ext + Kazakh (extended) + + kaz + + + + + + latin + Kazakh (Latin) + + kaz + + + + + + ruskaz + + ru + Russian (Kazakhstan, with Kazakh) + + kaz + rus + + + + + + + + kh + + km + Khmer (Cambodia) + + KH + + + khm + + + + + + + kr + + ko + Korean + + KR + + + kor + + + + + + kr104 + Korean (101/104-key compatible) + + + + + + + kg + + ki + Kyrgyz + + KG + + + kir + + + + + + phonetic + Kyrgyz (phonetic) + + + + + + + la + + lo + Lao + + LA + + + lao + + + + + + stea + Lao (STEA) + + lao + + + + + + + + lv + + lv + Latvian + + LV + + + lav + + + + + + apostrophe + Latvian (apostrophe) + + + + + tilde + Latvian (tilde) + + + + + fkey + Latvian (F) + + + + + modern + Latvian (Modern Latin) + + + + + modern-cyr + Latvian (Modern Cyrillic) + + + + + ergonomic + Latvian (ergonomic, ŪGJRMV) + + + + + adapted + Latvian (adapted) + + + + + + + lt + + lt + Lithuanian + + LT + + + lit + + + + + + std + Lithuanian (standard) + + + + + us + Lithuanian (US) + + + + + ibm + Lithuanian (IBM) + + + + + lekp + Lithuanian (LEKP) + + + + + lekpa + Lithuanian (LEKPa) + + + + + ratise + Lithuanian (Ratise) + + + + + sgs + Samogitian + + sgs + + + + + + + + mk + + mk + Macedonian + + MK + + + mkd + + + + + + nodeadkeys + Macedonian (no dead keys) + + + + + + + my + + ms + Malay (Jawi, Arabic Keyboard) + + MY + + + ind + msa + min + ace + bjn + tsg + mfa + + + + + + phonetic + Malay (Jawi, phonetic) + + + + + + + mt + + mt + Maltese + + MT + + + mlt + + + + + + us + Maltese (US) + + + + + alt-us + Maltese (US, with AltGr overrides) + + + + + alt-gb + Maltese (UK, with AltGr overrides) + + + + + + + md + + ro + Moldavian + + MD + + + ron + + + + + + gag + + gag + Gagauz (Moldova) + + gag + + + + + + + + mn + + mn + Mongolian + + MN + + + mon + + + + + + + me + + sr + Montenegrin + + ME + + + srp + + + + + + cyrillic + Montenegrin (Cyrillic) + + + + + cyrillicyz + Montenegrin (Cyrillic, ZE and ZHE swapped) + + + + + cyrillicalternatequotes + Montenegrin (Cyrillic, with guillemets) + + + + + latinunicode + Montenegrin (Latin, Unicode) + + + + + latinyz + Montenegrin (Latin, QWERTY) + + + + + latinunicodeyz + Montenegrin (Latin, Unicode, QWERTY) + + + + + latinalternatequotes + Montenegrin (Latin, with guillemets) + + + + + + + np + + ne + Nepali + + NP + + + nep + + sat + + + + + + gn + + nqo + N'Ko (AZERTY) + + GN + + + nqo + + + + + + + no + + no + Norwegian + + NO + + + nor + nob + nno + + + + + + nodeadkeys + Norwegian (no dead keys) + + + + + winkeys + Norwegian (Windows) + + + + + mac + Norwegian (Macintosh) + + + + + mac_nodeadkeys + Norwegian (Macintosh, no dead keys) + + + + + colemak + Norwegian (Colemak) + + + + + colemak_dh + Norwegian (Colemak-DH) + + + + + colemak_dh_wide + Norwegian (Colemak-DH Wide) + + + + + dvorak + Norwegian (Dvorak) + + + + + smi + Northern Saami (Norway) + + sme + + + + + + smi_nodeadkeys + Northern Saami (Norway, no dead keys) + + sme + + + + + + + + ir + + fa + Persian + + IR + + + fas + + + + + + pes_keypad + Persian (with Persian keypad) + + + + + winkeys + Persian (Windows) + + + + + azb + + azb + Azerbaijani (Iran) + + azb + + + + + + ku + + ku + Kurdish (Iran, Latin Q) + + kur + + + + + + ku_alt + + ku + Kurdish (Iran, Latin Alt-Q) + + kur + + + + + + ku_f + + ku + Kurdish (Iran, F) + + kur + + + + + + ku_ara + + ku + Kurdish (Iran, Arabic-Latin) + + kur + + + + + + + + pl + + pl + Polish + + PL + + + pol + + + + + + legacy + Polish (legacy) + + + + + qwertz + Polish (QWERTZ) + + + + + dvorak + Polish (Dvorak) + + + + + dvorak_quotes + Polish (Dvorak, with Polish quotes on quotemark key) + + + + + dvorak_altquotes + Polish (Dvorak, with Polish quotes on key 1) + + + + + dvp + Polish (programmer Dvorak) + + + + + csb + Kashubian + + csb + + + + + + szl + Silesian + + szl + + + + + + ru_phonetic_dvorak + + ru + Russian (Poland, phonetic Dvorak) + + rus + + + + + + + + pt + + pt + Portuguese + + PT + + + por + + + + + + nodeadkeys + Portuguese (no dead keys) + + + + + mac + Portuguese (Macintosh) + + + + + mac_nodeadkeys + Portuguese (Macintosh, no dead keys) + + + + + nativo + Portuguese (Nativo) + + + + + nativo-us + Portuguese (Nativo for US keyboards) + + + + + nativo-epo + Esperanto (Portugal, Nativo) + + epo + + + + + + + + br + + pt + Portuguese (Brazil) + + BR + + + por + + + + + + nodeadkeys + Portuguese (Brazil, no dead keys) + + + + + dvorak + Portuguese (Brazil, Dvorak) + + + + + nativo + Portuguese (Brazil, Nativo) + + + + + nativo-us + Portuguese (Brazil, Nativo for US keyboards) + + + + + thinkpad + Portuguese (Brazil, IBM/Lenovo ThinkPad) + + + + + nativo-epo + Esperanto (Brazil, Nativo) + + epo + + + + + + rus + + ru + Russian (Brazil, phonetic) + + rus + + + + + + + + ro + + ro + Romanian + + RO + + + ron + + + + + + std + Romanian (standard) + + + + + winkeys + Romanian (Windows) + + + + + + + ru + + ru + Russian + + RU + + + rus + + + + + + phonetic + Russian (phonetic) + + + + + phonetic_winkeys + Russian (phonetic, Windows) + + + + + phonetic_YAZHERTY + Russian (phonetic, YAZHERTY) + + + + + phonetic_azerty + Russian (phonetic, AZERTY) + + + + + phonetic_dvorak + Russian (phonetic, Dvorak) + + + + + typewriter + Russian (typewriter) + + + + + ruchey_ru + Russian (engineering, RU) + + + + + ruchey_en + en + Russian (engineering, EN) + + + + + legacy + Russian (legacy) + + + + + typewriter-legacy + Russian (typewriter, legacy) + + + + + dos + Russian (DOS) + + + + + mac + Russian (Macintosh) + + + + + ab + Abkhazian (Russia) + + abk + + + + + + bak + Bashkirian + + bak + + + + + + cv + Chuvash + + chv + + + + + + cv_latin + Chuvash (Latin) + + chv + + + + + + xal + Kalmyk + + xal + + + + + + kom + Komi + + kom + + + + + + chm + Mari + + chm + + + + + + os_legacy + Ossetian (legacy) + + oss + + + + + + os_winkeys + Ossetian (Windows) + + oss + + + + + + srp + Serbian (Russia) + + rus + srp + + + + + + tt + Tatar + + tat + + + + + + udm + Udmurt + + udm + + + + + + sah + Yakut + + sah + + + + + + + + rs + + sr + Serbian + + RS + + + srp + + + + + + alternatequotes + Serbian (Cyrillic, with guillemets) + + + + + yz + Serbian (Cyrillic, ZE and ZHE swapped) + + + + + latin + Serbian (Latin) + + + + + latinalternatequotes + Serbian (Latin, with guillemets) + + + + + latinunicode + Serbian (Latin, Unicode) + + + + + latinyz + Serbian (Latin, QWERTY) + + + + + latinunicodeyz + Serbian (Latin, Unicode, QWERTY) + + + + + rue + Pannonian Rusyn + + rue + + + + + + + + lk + + si + Sinhala (phonetic) + + LK + + + sin + + + + + + us + + si + Sinhala (US) + + + + + tam_unicode + + ta + Tamil (Sri Lanka, TamilNet '99) + + tam + + + + + + tam_TAB + Tamil (Sri Lanka, TamilNet '99, TAB encoding) + + tam + + + + + + + + sk + + sk + Slovak + + SK + + + slk + + + + + + bksl + Slovak (extra backslash) + + + + + qwerty + Slovak (QWERTY) + + + + + qwerty_bksl + Slovak (QWERTY, extra backslash) + + + + + + + si + + sl + Slovenian + + SI + + + slv + + + + + + alternatequotes + Slovenian (with guillemets) + + + + + us + Slovenian (US) + + + + + + + es + + es + Spanish + + ES + + + spa + + + + + + nodeadkeys + Spanish (no dead keys) + + + + + deadtilde + Spanish (dead tilde) + + + + + winkeys + Spanish (Windows) + + + + + dvorak + Spanish (Dvorak) + + + + + ast + ast + Asturian (Spain, with bottom-dot H and L) + + ast + + + + + + cat + ca + Catalan (Spain, with middle-dot L) + + cat + + + + + + + + latam + + es + Spanish (Latin American) + + AR + BO + CL + CO + CR + CU + DO + EC + GT + HN + HT + MX + NI + PA + PE + PR + PY + SV + US + UY + VE + + + spa + + + + + + nodeadkeys + Spanish (Latin American, no dead keys) + + + + + deadtilde + Spanish (Latin American, dead tilde) + + + + + dvorak + Spanish (Latin American, Dvorak) + + + + + colemak + Spanish (Latin American, Colemak) + + + + + + + ke + + sw + Swahili (Kenya) + + KE + + + swa + + + + + + kik + + ki + Kikuyu + + kik + + + + + + + + tz + + sw + Swahili (Tanzania) + + TZ + + + swa + + + + + + se + + sv + Swedish + + SE + + + swe + + + + + + nodeadkeys + Swedish (no dead keys) + + + + + dvorak + Swedish (Dvorak) + + + + + us_dvorak + Swedish (Dvorak, intl.) + + + + + svdvorak + Swedish (Svdvorak) + + + + + mac + Swedish (Macintosh) + + + + + us + Swedish (US) + + + + + swl + Swedish Sign Language + + swl + + + + + + smi + Northern Saami (Sweden) + + sme + + + + + + rus + + ru + Russian (Sweden, phonetic) + + rus + + + + + + + + tw + + zh + Taiwanese + + TW + + + fox + + + + + + indigenous + Taiwanese (indigenous) + + ami + tay + bnn + ckv + pwn + pyu + pzh + dru + ssf + szy + tao + tsu + trv + xnb + sxr + uon + fos + + + + + + saisiyat + + xsy + Saisiyat (Taiwan) + + xsy + + + + + + + + tj + + tg + Tajik + + TJ + + + tgk + + + + + + legacy + Tajik (legacy) + + + + + + + th + + th + Thai + + TH + + + tha + + + + + + tis + Thai (TIS-820.2538) + + + + + pat + Thai (Pattachote) + + + + + + + bw + + tn + Tswana + + BW + + + tsn + + + + + + tm + + tk + Turkmen + + TM + + + tuk + + + + + + alt + Turkmen (Alt-Q) + + + + + + + tr + + tr + Turkish + + TR + + + tur + + + + + + f + Turkish (F) + + + + + e + Turkish (E) + + + + + alt + Turkish (Alt-Q) + + + + + intl + Turkish (intl., with dead keys) + + + + + ku + + ku + Kurdish (Turkey, Latin Q) + + kur + + + + + + ku_f + + ku + Kurdish (Turkey, F) + + kur + + + + + + ku_alt + + ku + Kurdish (Turkey, Latin Alt-Q) + + kur + + + + + + + + ua + + uk + Ukrainian + + UA + + + ukr + + + + + + phonetic + Ukrainian (phonetic) + + + + + typewriter + Ukrainian (typewriter) + + + + + winkeys + Ukrainian (Windows) + + + + + macOS + Ukrainian (macOS) + + + + + legacy + Ukrainian (legacy) + + + + + homophonic + Ukrainian (homophonic) + + + + + crh + + crh + Crimean Tatar (Turkish Q) + + crh + + + + + + crh_f + + crh + Crimean Tatar (Turkish F) + + crh + + + + + + crh_alt + + crh + Crimean Tatar (Turkish Alt-Q) + + crh + + + + + + + + pk + + ur + Urdu (Pakistan) + + PK + + + urd + + + + + + urd-crulp + Urdu (Pakistan, CRULP) + + + + + urd-nla + Urdu (Pakistan, NLA) + + + + + ara + + ar + Arabic (Pakistan) + + ara + + + + + + snd + + sd + Sindhi + + snd + + + + + + + + uz + + uz + Uzbek + + UZ + + + uzb + + + + + + latin + Uzbek (Latin) + + + + + + + vn + + vi + Vietnamese + + VN + + + vie + + + + + + us + Vietnamese (US) + + US + + + + + + fr + Vietnamese (France) + + FR + + + + + + + + sn + + wo + Wolof + + SN + + + wol + + + + + + + custom + custom + A user-defined custom Layout + + und + + + + + + + + + + + grp + Switching to another layout + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lv2 + Key to choose the 2nd level + + + + + + + lv3 + Key to choose the 3rd level + + + + + + + + + + + + + + + + + + + + + + + ctrl + Ctrl position + + + + + + + + + + + + + + + + + + + + grp_led + Use keyboard LED to show alternative layout + + + + + + + + + mod_led + Use keyboard LED to indicate modifiers + + + + + + + keypad + Layout of numeric keypad + + + + + + + + + + + + + + + kpdl + Numeric keypad Delete behavior + + + + + + + + + + + + + + caps + Caps Lock behavior + + + + + + + + + + + + + + + + + + + + + + + altwin + Alt and Win behavior + + + + + + + + + + + + + + + + + + + + Compose key + Position of Compose key + + + + + + + + + + + + + + + + + + + + + + + + compat + Compatibility options + + + + + + + + + + + + + + + + + + + + + + + + currencysign + Currency signs + + + + + + + + + + + lv5 + Key to choose the 5th level + + + + + + + + + + + + + + + nbsp + Non-breaking space input + + + + + + + + + + + + + + + + + + + japan + Japanese keyboard options + + + + + + + + korean + Korean Hangul/Hanja keys + + + + + + + + + esperanto + Esperanto letters with superscripts + + + + + + + + solaris + Old Solaris keycodes compatibility + + + + + + terminate + Key sequence to kill the X server + + + + + + custom + Miscellaneous options + + + + + + diff --git a/nixos/xkb/rules/xfree98 b/nixos/xkb/rules/xfree98 new file mode 100644 index 00000000..856ae9ca --- /dev/null +++ b/nixos/xkb/rules/xfree98 @@ -0,0 +1,29 @@ +// +// Rules for resolving XKB components for use with XFree86 +// Copyright 1996 by Joseph Moss +// + +! model = keycodes geometry + pc98 = xfree98(pc98) nec(pc98) + jp106 = xfree98(jp106) pc(jp106) + +! model layout = symbols + pc98 nec_vndr/jp = nec_vndr/jp(pc98) + jp106 jp = jp + +! model layout = compat types + * * = complete complete + +! option = symbols + grp:switch = +group(switch) + grp:toggle = +group(toggle) + grp:shift_toggle = +group(shifts_toggle) + grp:ctrl_shift_toggle = +group(ctrl_shift_toggle) + grp:ctrl_alt_toggle = +group(ctrl_alt_toggle) + ctrl:nocaps = +ctrl(nocaps) + ctrl:lctrl_meta = +ctrl(lctrl_meta) + ctrl:swapcaps = +ctrl(swapcaps) + ctrl:hyper_capscontrol = +ctrl(hyper_capscontrol) + ctrl:grouptoggle_capscontrol = +ctrl(swapcaps)+group(lctrl_toggle) + ctrl:ac_ctrl = +ctrl(ac_ctrl) + ctrl:aa_ctrl = +ctrl(aa_ctrl) diff --git a/nixos/xkb/rules/xkb.dtd b/nixos/xkb/rules/xkb.dtd new file mode 100644 index 00000000..ab710e9b --- /dev/null +++ b/nixos/xkb/rules/xkb.dtd @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nixos/xkb/rules/xorg b/nixos/xkb/rules/xorg new file mode 120000 index 00000000..8681f8b8 --- /dev/null +++ b/nixos/xkb/rules/xorg @@ -0,0 +1 @@ +base \ No newline at end of file diff --git a/nixos/xkb/rules/xorg.lst b/nixos/xkb/rules/xorg.lst new file mode 120000 index 00000000..e9cc8c3d --- /dev/null +++ b/nixos/xkb/rules/xorg.lst @@ -0,0 +1 @@ +base.lst \ No newline at end of file diff --git a/nixos/xkb/rules/xorg.xml b/nixos/xkb/rules/xorg.xml new file mode 120000 index 00000000..6ed88788 --- /dev/null +++ b/nixos/xkb/rules/xorg.xml @@ -0,0 +1 @@ +base.xml \ No newline at end of file diff --git a/nixos/xkb/symbols/af b/nixos/xkb/symbols/af new file mode 100644 index 00000000..ff1ec69d --- /dev/null +++ b/nixos/xkb/symbols/af @@ -0,0 +1,372 @@ +// Keyboard layouts for Afghanistan. + +// Layouts for Dari, Pashto, and Southern Uzbek. +// Original author: M. Emal Alekozai , 2006. +// +// Based on the "Computer Locale Requirements for Afghanistan" [1] +// from the "United Nations Development Programme for Afghanistan" and the +// "Afghan Transitional Islamic Administration Ministry of Communications". +// [1] https://www.evertype.com/standards/af/ + +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Dari"; + + key { [ 0x100200d, 0x10000f7, dead_tilde ] }; + key { [ 0x10006f1, exclam, 0x1000060 ] }; + key { [ 0x10006f2, 0x100066c, 0x1000040 ] }; + key { [ 0x10006f3, 0x100066b, numbersign ] }; + key { [ 0x10006f4, 0x100e60b, 0x1000024] }; + key { [ 0x10006f5, 0x100066a, 0x1000025 ] }; + key { [ 0x10006f6, multiply, 0x100005e ] }; + key { [ 0x10006f7, Arabic_comma, 0x1000026 ] }; + key { [ 0x10006f8, asterisk, 0x1002022 ] }; + key { [ 0x10006f9, 0x1000029, 0x100200e ] }; + key { [ 0x10006f0, 0x1000028, 0x100200f ] }; + key { [ minus, Arabic_tatweel, 0x100005f ] }; + key { [ equal, plus ] }; + + key { [ Arabic_dad, Arabic_sukun, 0x10000b0 ] }; + key { [ Arabic_sad, Arabic_dammatan ] }; + key { [ Arabic_theh, Arabic_kasratan, 0x10020ac ] }; + key { [ Arabic_qaf, Arabic_fathatan, 0x100fd3e ] }; + key { [ Arabic_feh, Arabic_damma, 0x100fd3f ] }; + key { [ Arabic_ghain, Arabic_kasra, 0x100e656] }; + key { [ Arabic_ain, Arabic_fatha, 0x100e659] }; + key { [ Arabic_heh, Arabic_shadda, 0x1000655] }; + key { [ Arabic_khah, bracketright, 0x1000027] }; + key { [ Arabic_hah, bracketleft, 0x1000022] }; + key { [ Arabic_jeem, braceright, 0x1000681 ] }; + key { [ 0x1000686, braceleft, 0x1000685 ] }; + + key { [ Arabic_sheen, Arabic_hamzaonwaw, 0x100069a ] }; + key { [ Arabic_seen, Arabic_hamzaonyeh, 0x10006cd ] }; + key { [ 0x10006cc, Arabic_yeh, 0x1000649 ] }; + key { [ Arabic_beh, Arabic_hamzaunderalef, 0x10006d0 ] }; + key { [ Arabic_lam, Arabic_hamzaonalef, 0x10006b7 ] }; + key { [ Arabic_alef, Arabic_maddaonalef, 0x1000671 ] }; + key { [ Arabic_teh, Arabic_tehmarbuta, 0x100067c ] }; + key { [ Arabic_noon, 0x10000bb, 0x10006bc ] }; + key { [ Arabic_meem, 0x10000ab, 0x10006ba ] }; + key { [ 0x10006a9, colon, 0x100003b ] }; + key { [ 0x10006af, Arabic_semicolon, 0x10006ab ] }; + + key { [ backslash, bar, 0x100003f ] }; + + key { [ Arabic_zah, Arabic_kaf, 0x10006d2] }; + key { [ Arabic_tah, 0x1000653 , 0x1000691 ] }; + key { [ Arabic_zain, 0x1000698, 0x1000696 ] }; + key { [ Arabic_ra, 0x1000670 , 0x1000693 ] }; + key { [ Arabic_thal, 0x100200c, 0x1000688 ] }; + key { [ Arabic_dal, 0x1000654, 0x1000689 ] }; + key { [ 0x100067e, Arabic_hamza, 0x1000679 ] }; + key { [ Arabic_waw, greater, 0x100002c ] }; + key { [ period, less, 0x10006c7 ] }; + key { [ slash, Arabic_question_mark, 0x10006c9 ] }; + + include "nbsp(zwnj2nb3)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "ps" { + name[Group1]= "Pashto"; + + key { [ 0x100200d, 0x10000f7, dead_tilde ] }; + key { [ 0x10006f1, exclam, 0x1000060 ] }; + key { [ 0x10006f2, 0x100066c, 0x1000040 ] }; + key { [ 0x10006f3, 0x100066b, numbersign ] }; + key { [ 0x10006f4, 0x100e60b, 0x1000024] }; + key { [ 0x10006f5, 0x100066a, 0x1000025 ] }; + key { [ 0x10006f6, multiply, 0x100005e ] }; + key { [ 0x10006f7, 0x10000bb, 0x1000026 ] }; + key { [ 0x10006f8, 0x10000ab, 0x1002022 ] }; + key { [ 0x10006f9, 0x1000029, 0x100200e ] }; + key { [ 0x10006f0, 0x1000028, 0x100200f ] }; + key { [ minus, Arabic_tatweel, 0x100005f ] }; + key { [ equal, plus ] }; + + key { [ Arabic_dad, Arabic_sukun, 0x10000b0 ] }; + key { [ Arabic_sad, Arabic_dammatan, 0x1000653 ] }; + key { [ Arabic_theh, Arabic_kasratan, 0x10020ac ] }; + key { [ Arabic_qaf, Arabic_fathatan, 0x100fd3e ] }; + key { [ Arabic_feh, Arabic_damma, 0x100fd3f ] }; + key { [ Arabic_ghain, Arabic_kasra, 0x100e656] }; + key { [ Arabic_ain, Arabic_fatha, 0x100e659] }; + key { [ Arabic_heh, Arabic_shadda, 0x1000670] }; + key { [ Arabic_khah, 0x1000681, 0x1000027] }; + key { [ Arabic_hah, 0x1000685, 0x1000022] }; + key { [ Arabic_jeem, 0x100005d, 0x100007d ] }; + key { [ 0x1000686, 0x100005b, 0x100007b ] }; + + key { [ Arabic_sheen, 0x100069a ] }; + key { [ Arabic_seen, Arabic_hamzaonyeh, 0x10006d2 ] }; + key { [ 0x10006cc, Arabic_yeh, 0x1000649 ] }; + key { [ Arabic_beh, 0x100067e, 0x10006ba ] }; + key { [ Arabic_lam, Arabic_hamzaonalef, 0x10006b7 ] }; + key { [ Arabic_alef, Arabic_maddaonalef, 0x1000671 ] }; + key { [ Arabic_teh, 0x100067c, 0x1000679 ] }; + key { [ Arabic_noon, 0x10006bc, 0x100003e ] }; + key { [ Arabic_meem, 0x1000629, 0x100003c ] }; + key { [ 0x10006a9, colon, 0x1000643 ] }; + key { [ 0x10006ab, Arabic_semicolon, 0x10006af ] }; + + key { [ backslash, 0x100002a, 0x100007c ] }; + + key { [ 0x10006cd, 0x1000638, 0x100003f] }; + key { [ 0x10006d0, 0x1000637, 0x100003b ] }; + key { [ Arabic_zain, 0x1000698, 0x1000655 ] }; + key { [ Arabic_ra, 0x1000621, 0x1000654 ] }; + key { [ Arabic_thal, 0x100200c, 0x1000625 ] }; + key { [ Arabic_dal, 0x1000689, 0x1000688 ] }; + key { [ 0x1000693, 0x1000624, 0x1000691 ] }; + key { [ Arabic_waw, 0x100060c, 0x100002c ] }; + key { [ 0x1000696, 0x100002e, 0x10006c7 ] }; + key { [ slash, Arabic_question_mark, 0x10006c9 ] }; + + include "nbsp(zwnj2nb3)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "uz" { + name[Group1]= "Uzbek (Afghanistan)"; + + key { [ 0x100200d, 0x10000f7, dead_tilde ] }; + key { [ 0x10006f1, exclam, 0x1000060 ] }; + key { [ 0x10006f2, 0x100066c, 0x1000040 ] }; + key { [ 0x10006f3, 0x100066b, numbersign ] }; + key { [ 0x10006f4, 0x100e60b, 0x1000024] }; + key { [ 0x10006f5, 0x100066a, 0x1000025 ] }; + key { [ 0x10006f6, multiply, 0x100005e ] }; + key { [ 0x10006f7, Arabic_comma, 0x1000026 ] }; + key { [ 0x10006f8, asterisk, 0x1002022 ] }; + key { [ 0x10006f9, 0x1000029, 0x100200e ] }; + key { [ 0x10006f0, 0x1000028, 0x100200f ] }; + key { [ minus, Arabic_tatweel, 0x100005f ] }; + key { [ equal, plus ] }; + + key { [ Arabic_dad, Arabic_sukun, 0x10000b0 ] }; + key { [ Arabic_sad, Arabic_dammatan, 0x1000653 ] }; + key { [ Arabic_theh, Arabic_kasratan, 0x10020ac ] }; + key { [ Arabic_qaf, Arabic_fathatan, 0x100fd3e ] }; + key { [ Arabic_feh, Arabic_damma, 0x100fd3f ] }; + key { [ Arabic_ghain, Arabic_kasra, 0x100e656] }; + key { [ Arabic_ain, Arabic_fatha, 0x100e659] }; + key { [ Arabic_heh, Arabic_shadda, 0x1000670] }; + key { [ Arabic_khah, bracketright, 0x1000027] }; + key { [ Arabic_hah, bracketleft, 0x1000022] }; + key { [ Arabic_jeem, braceright, 0x1000681 ] }; + key { [ 0x1000686, braceleft, 0x1000685 ] }; + + key { [ Arabic_sheen, Arabic_hamzaonwaw, 0x100069a ] }; + key { [ Arabic_seen, Arabic_hamzaonyeh, 0x10006cd ] }; + key { [ 0x10006cc, Arabic_yeh, 0x1000649 ] }; + key { [ Arabic_beh, 0x10006d0, 0x1000643 ] }; + key { [ Arabic_lam, Arabic_hamzaonalef, 0x10006b7 ] }; + key { [ Arabic_alef, Arabic_maddaonalef, 0x1000671 ] }; + key { [ Arabic_teh, Arabic_tehmarbuta, 0x100067c ] }; + key { [ Arabic_noon, 0x10000bb, 0x10006bc ] }; + key { [ Arabic_meem, 0x10000ab, 0x10006ba ] }; + key { [ 0x10006a9, colon, 0x100003b ] }; + key { [ 0x10006af, Arabic_semicolon, 0x10006ab ] }; + + key { [ backslash, bar, 0x100003f ] }; + + key { [ Arabic_zah, 0x10006c9, 0x10006d2] }; + key { [ Arabic_tah, 0x10006c7, 0x1000691 ] }; + key { [ Arabic_zain, 0x1000698, 0x1000696 ] }; + key { [ Arabic_ra, 0x1000625, 0x1000693 ] }; + key { [ Arabic_thal, 0x100200c, 0x1000688 ] }; + key { [ Arabic_dal, 0x1000654, 0x1000689 ] }; + key { [ 0x100067e, Arabic_hamza, 0x1000679 ] }; + key { [ Arabic_waw, greater, 0x100002c ] }; + key { [ period, less ] }; + key { [ slash, Arabic_question_mark, 0x1000655 ] }; + + include "nbsp(zwnj2nb3)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "ps-olpc" { + + name[Group1]= "Pashto (Afghanistan, OLPC)"; + + key { [ 0x100200D, 0x1000654, grave ] }; // zero width joiner, Arabic hamza above + key { [ 0x10006F1, exclam, asciitilde ] }; // Arabic one + key { [ 0x10006F2, 0x100066C, at ] }; // Arabic two, Arabic thousands separator + key { [ 0x10006F3, 0x100066B, numbersign ] }; // Arabic three, Arabic decimal separator + key { [ 0x10006F4, 0x100060B, dollar ] }; // Arabic four, Afghani sign + key { [ 0x10006F5, 0x100066A, percent ] }; // Arabic five, Arabic percent sign + key { [ 0x10006F6, multiply, asciicircum ] }; // Arabic six + key { [ 0x10006F7, guillemotright, ampersand ] }; // Arabic seven + key { [ 0x10006F8, guillemotleft, 0x100066D ] }; // Arabic eight, Arabic five-pointed star + key { [ 0x10006F9, parenright, enfilledcircbullet ] }; // Arabic nine + key { [ 0x10006F0, parenleft, degree ] }; // Arabic zero + key { [ minus, 0x1000640, underscore ] }; // Arabic tatweel + key { [ equal, plus, division ] }; + + key { [ 0x1000636, 0x1000652, EuroSign ] }; // Arabic dad, Arabic sukun + key { [ 0x1000635, 0x100064C, 0x1000671 ] }; // Arabic sad, Arabic dammatan, Arabic alef walsa + key { [ 0x100062B, 0x100064D, 0x1000649 ] }; // Arabic theh, Arabic kasratan, Arabic alef maksura initial form + key { [ 0x1000642, 0x100064B, 0x100200E ] }; // Arabic qaf, Arabic fathatan, left-to-right mark + key { [ 0x1000641, 0x100064F, 0x100200F ] }; // Arabic feh, Arabic damma, right-to-left mark + key { [ 0x100063A, 0x1000650, 0x100e653 ] }; // Arabic ghain, Arabic kasra, Arabic alef with madda above + key { [ 0x1000639, 0x100064E, 0x100e659 ] }; // Arabic ain, Arabic fatha, Arabic zwarakay + key { [ 0x1000647, 0x1000651, 0x1000670 ] }; // Arabic heh, Arabic shadda, Arabic superscript alef + key { [ 0x100062E, 0x1000681, apostrophe ] }; // Arabic khah, Arabic hah with hamza above + key { [ 0x100062D, 0x1000685, quotedbl ] }; // Arabic hah, Arabic hah with three dots above + key { [ 0x100062C, bracketright, braceleft ] }; // Arabic jeem + key { [ 0x1000686, bracketleft, braceright ] }; // Arabic tcheh + + key { [ 0x1000634, 0x100069A ] }; // Arabic sheen, Arabic seen with dot below and dot above + key { [ 0x1000633, 0x10006CD ] }; // Arabic seen, Arabic yeh with tail + key { [ 0x10006CC, 0x100064A, 0x10006D2 ] }; // Farsi yeh, Arabic yeh, Arabic yeh barree + key { [ 0x1000628, 0x100067E, 0x10006BA ] }; // Arabic beh, Arabic peh, Arabic noon ghunna + key { [ 0x1000644, 0x1000623, 0x10006B7 ] }; // Arabic lam, Arabic hamza on alef, Arabic alef with hamza above + key { [ 0x1000627, 0x1000622, 0x1000625 ] }; // Arabic alef, Arabic madda on alef, Arabic alef with hamza below + key { [ 0x100062A, 0x100067C, 0x1000679 ] }; // Arabic teh, Arabic teh with ring, Arabic tteh + key { [ 0x1000646, 0x10006BC, greater ] }; // Arabic noon, Arabic noon with ring + key { [ 0x1000645, 0x1000629, less ] }; // Arabic meem, Arabic teh marbuta + key { [ 0x10006A9, colon, 0x1000643 ] }; // Arabic keheh, Arabic kaf + key { [ 0x10006AB, 0x100061B, 0x10006AF ] }; // Arabic kaf with ring, Arabic semicolon, Arabic gaf + + key { [ backslash, asterisk, bar ] }; + + key { [ 0x1000638, 0x1000626, question] }; // Arabic zah, Arabic yeh with hamza above + key { [ 0x10006D0, 0x1000637, semicolon ] }; // Arabic tah, Arabic E + key { [ 0x1000632, 0x1000698 ] }; // Arabic zain, Arabic jeh + key { [ 0x1000631, 0x1000621 ] }; // Arabic reh, Arabic hamza + key { [ 0x1000630, 0x100200C ] }; // Arabic thal, zero width non-joiner + key { [ 0x100062F, 0x1000689, 0x1000688 ] }; // Arabic dal, Arabic dal with ring, Arabic ddal + key { [ 0x1000693, 0x1000624, 0x1000691 ] }; // Arabic reh with ring, Arabic waw with hamza above, Arabic rreh + key { [ 0x1000648, period, comma ] }; // Arabic waw, Arabic comma + key { [ 0x1000696, 0x100002E, 0x10006C7 ] }; // Arabic reh with dot below and dot above, full stop, Arabic letter U + key { [ slash, 0x100061F, 0x10006C9 ] }; // Arabic question mark, Arabic kirghiz yu + + include "nbsp(zwnj2nb3)" + include "group(olpc)" +}; + +partial alphanumeric_keys +xkb_symbols "fa-olpc" { + + name[Group1]= "Dari (Afghanistan, OLPC)"; + + key { [ 0x100200D, division, asciitilde ] }; // zero width joiner + key { [ 0x10006F1, exclam, grave ] }; // Arabic one + key { [ 0x10006F2, 0x100066C, at ] }; // Arabic two, Arabic thousands separator + key { [ 0x10006F3, 0x100066B, numbersign ] }; // Arabic three, Arabic decimal separator + key { [ 0x10006F4, 0x100060B, dollar ] }; // Arabic four, Afghani sign + key { [ 0x10006F5, 0x100066A, percent ] }; // Arabic five, Arabic percent sign + key { [ 0x10006F6, multiply, asciicircum ] }; // Arabic six + key { [ 0x10006F7, 0x100060C, ampersand ] }; // Arabic seven, Arabic comma + key { [ 0x10006F8, asterisk, enfilledcircbullet ] }; // Arabic eight + key { [ 0x10006F9, parenright, 0x100200E ] }; // Arabic nine, left-to-right mark + key { [ 0x10006F0, parenleft, 0x100200F ] }; // Arabic zero, right-to-left mark + key { [ minus, 0x1000640, underscore ] }; // Arabic tatweel + key { [ equal, plus ] }; + + key { [ 0x1000636, 0x1000652, degree ] }; // Arabic dad, Arabic sukun + key { [ 0x1000635, 0x100064C ] }; // Arabic sad, Arabic dammatan + key { [ 0x100062B, 0x100064D, EuroSign ] }; // Arabic theh, Arabic kasratan + key { [ 0x1000642, 0x100064B, 0x100FD3E ] }; // Arabic qaf, Arabic fathatan, ornate left paren + key { [ 0x1000641, 0x100064F, 0x100FD3F ] }; // Arabic feh, Arabic damma, ornate right paren + key { [ 0x100063A, 0x1000650, 0x1000656 ] }; // Arabic ghain, Arabic kasra, Arabic subscript alef + key { [ 0x1000639, 0x100064E, 0x100e659 ] }; // Arabic ain, Arabic fatha, Arabic zwarakay + key { [ 0x1000647, 0x1000651, 0x1000655 ] }; // Arabic heh, Arabic shadda, Arabic hamza below + key { [ 0x100062E, bracketright, apostrophe ] }; // Arabic khah + key { [ 0x100062D, bracketleft, quotedbl ] }; // Arabic hah + key { [ 0x100062C, braceright, 0x1000681 ] }; // Arabic jeem, Arabic hah with hamza above + key { [ 0x1000686, braceleft, 0x1000685 ] }; // Arabic tcheh, Arabic hah with three dots above + + key { [ 0x1000634, 0x1000624, 0x100069A ] }; // Arabic sheen, Arabic waw with hamza above, Arabic seen with dot below and dot above + key { [ 0x1000633, 0x1000626, 0x10006CD ] }; // Arabic seen, Arabic yeh with hamza above, Arabic yeh with tail + key { [ 0x10006CC, 0x100064A, 0x1000649 ] }; // Farsi yeh, Arabic yeh, Arabic alef maksura + key { [ 0x1000628, 0x1000625, 0x10006D0 ] }; // Arabic beh, Arabic alef with hamza below, Arabic e + key { [ 0x1000644, 0x1000623, 0x10006B7 ] }; // Arabic lam, Arabic hamza on alef, Arabic alef with hamza above + key { [ 0x1000627, 0x1000622, 0x1000671 ] }; // Arabic alef, Arabic madda on alef, Arabic alef wasla + key { [ 0x100062A, 0x1000629, 0x100067C ] }; // Arabic teh, Arabic teh marbuta, Arabic tteh + key { [ 0x1000646, guillemotright, 0x10006BC ] }; // Arabic noon, Arabic noon with ring + key { [ 0x1000645, guillemotleft, 0x10006BA ] }; // Arabic meem, Arabic noon ghunna + key { [ 0x10006A9, colon, semicolon ] }; // Arabic keheh + key { [ 0x10006AF, 0x100061B, 0x10006AB ] }; // Arabic gaf, Arabic semicolon, Arabic kaf with ring + + key { [ backslash, bar, question ] }; + + key { [ 0x1000638, 0x1000643, 0x10006D2 ] }; // Arabic zah, Arabic kaf, Arabic yeh barree + key { [ 0x1000637, 0x1000653, 0x1000691 ] }; // Arabic tah, Arabic maddah above, Arabic rreh + key { [ 0x1000632, 0x1000698, 0x1000696 ] }; // Arabic zain, Arabic jeh, Arabic reh with dot below and dot above + key { [ 0x1000631, 0x1000670, 0x1000693 ] }; // Arabic reh, Arabic superscript alef, Arabic reh with ring + key { [ 0x1000630, 0x100200C, 0x1000688 ] }; // Arabic thal, zero width non-joiner, Arabic ddal + key { [ 0x100062F, 0x1000654, 0x1000689 ] }; // Arabic dal, Arabic hamza above, Arabic dal with ring + key { [ 0x100067E, 0x1000621, 0x1000679 ] }; // Arabic peh, Arabic hamza, Arabic tteh + key { [ 0x1000648, greater, comma ] }; // Arabic waw + key { [ period, less, 0x10006C7 ] }; // Arabic u + key { [ slash, 0x100061F, 0x10006C9 ] }; // Arabic question mark, Arabic kirghiz yu + + include "nbsp(zwnj2nb3)" + include "group(olpc)" +}; + +partial alphanumeric_keys +xkb_symbols "uz-olpc" { + + name[Group1]= "Uzbek (Afghanistan, OLPC)"; + + key { [ 0x100200D, division, asciitilde ] }; // zero width joiner + key { [ 0x10006F1, exclam, grave ] }; // Arabic one + key { [ 0x10006F2, 0x100066C, at ] }; // Arabic two, Arabic thousands separator + key { [ 0x10006F3, 0x100066B, numbersign ] }; // Arabic three, Arabic decimal separator + key { [ 0x10006F4, 0x100060B, dollar ] }; // Arabic four, Afghani sign + key { [ 0x10006F5, 0x100066A, percent ] }; // Arabic five, Arabic percent sign + key { [ 0x10006F6, multiply, asciicircum ] }; // Arabic six + key { [ 0x10006F7, 0x100060C, ampersand ] }; // Arabic seven, Arabic comma + key { [ 0x10006F8, asterisk, enfilledcircbullet ] }; // Arabic eight + key { [ 0x10006F9, parenright, 0x100200E ] }; // Arabic nine, left-to-right mark + key { [ 0x10006F0, parenleft, 0x100200F ] }; // Arabic zero, right-to-left mark + key { [ minus, 0x1000640, underscore ] }; // Arabic tatweel + key { [ equal, plus ] }; + + key { [ 0x1000636, 0x1000652, degree ] }; // Arabic dad, Arabic sukun + key { [ 0x1000635, 0x100064C, 0x1000653 ] }; // Arabic sad, Arabic dammatan, Arabic maddah above + key { [ 0x100062B, 0x100064D, EuroSign ] }; // Arabic theh, Arabic kasratan + key { [ 0x1000642, 0x100064B, 0x100FD3E ] }; // Arabic qaf, Arabic fathatan, ornate left paren + key { [ 0x1000641, 0x100064F, 0x100FD3F ] }; // Arabic feh, Arabic damma, ornate right paren + key { [ 0x100063A, 0x1000650, 0x1000656 ] }; // Arabic ghain, Arabic kasra, Arabic subscript alef + key { [ 0x1000639, 0x100064E, 0x100e659 ] }; // Arabic ain, Arabic fatha, Arabic zwarakay + key { [ 0x1000647, 0x1000651, 0x1000670 ] }; // Arabic heh, Arabic shadda, Arabic superscript alef + key { [ 0x100062E, bracketright, apostrophe ] }; // Arabic khah + key { [ 0x100062D, bracketleft, quotedbl ] }; // Arabic hah + key { [ 0x100062C, braceright, 0x1000681 ] }; // Arabic jeem, Arabic hah with hamza above + key { [ 0x1000686, braceleft, 0x1000685 ] }; // Arabic tcheh, Arabic hah with three dots above + + key { [ 0x1000634, 0x1000624, 0x100069A ] }; // Arabic sheen, Arabic waw with hamza above, Arabic seen with dot below and dot above + key { [ 0x1000633, 0x1000626, 0x10006CD ] }; // Arabic seen, Arabic yeh with hamza above, Arabic yeh with tail + key { [ 0x10006CC, 0x100064A, 0x1000649 ] }; // Farsi yeh, Arabic yeh, Arabic alef maksura + key { [ 0x1000628, 0x10006D0, 0x1000643 ] }; // Arabic beh, Arabic e, Arabic kaf + key { [ 0x1000644, 0x1000623, 0x10006B7 ] }; // Arabic lam, Arabic hamza on alef, Arabic alef with hamza above + key { [ 0x1000627, 0x1000622, 0x1000671 ] }; // Arabic alef, Arabic madda on alef, Arabic alef wasla + key { [ 0x100062A, 0x1000629, 0x100067C ] }; // Arabic teh, Arabic teh marbuta, Arabic tteh + key { [ 0x1000646, guillemotright, 0x10006BC ] }; // Arabic noon, Arabic noon with ring + key { [ 0x1000645, guillemotleft, 0x10006BA ] }; // Arabic meem, Arabic noon ghunna + key { [ 0x10006A9, colon, semicolon ] }; // Arabic keheh + key { [ 0x10006AF, 0x100061B, 0x10006AB ] }; // Arabic gaf, Arabic semicolon, Arabic kaf with ring + + key { [ backslash, bar, question ] }; + + key { [ 0x1000638, 0x10006C9, 0x10006D2 ] }; // Arabic zah, Arabic kirghiz yu, Arabic yeh barree + key { [ 0x1000637, 0x10006C7, 0x1000691 ] }; // Arabic tah, Arabic u, Arabic rreh + key { [ 0x1000632, 0x1000698, 0x1000696 ] }; // Arabic zain, Arabic jeh, Arabic reh with dot below and dot above + key { [ 0x1000631, 0x1000625, 0x1000693 ] }; // Arabic reh, Arabic alef with hamza below, Arabic reh with ring + key { [ 0x1000630, 0x100200C, 0x1000688 ] }; // Arabic thal, zero width non-joiner, Arabic ddal + key { [ 0x100062F, 0x1000654, 0x1000689 ] }; // Arabic dal, Arabic hamza above, Arabic dal with ring + key { [ 0x100067E, 0x1000621, 0x1000679 ] }; // Arabic peh, Arabic hamza, Arabic tteh + key { [ 0x1000648, greater, comma ] }; // Arabic waw + key { [ period, less ] }; + key { [ slash, 0x100061F, 0x1000655 ] }; // Arabic question mark, Arabic hamza below + + include "nbsp(zwnj2nb3)" + include "group(olpc)" +}; diff --git a/nixos/xkb/symbols/al b/nixos/xkb/symbols/al new file mode 100644 index 00000000..636c29c6 --- /dev/null +++ b/nixos/xkb/symbols/al @@ -0,0 +1,150 @@ +// Keyboard layouts for Albania. + +// Basic Albanian layout, by Pablo Saratxaga . +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin(type3)" + + name[Group1]="Albanian"; + + key {[ backslash, bar, notsign, notsign ]}; + key {[ 1, exclam, asciitilde, dead_tilde ]}; + key {[ 2, quotedbl, dead_caron, oneeighth ]}; + key {[ 3, numbersign, dead_circumflex, sterling ]}; + key {[ 4, dollar, dead_breve, dollar ]}; + key {[ 5, percent, dead_abovering, threeeighths]}; + key {[ 6, asciicircum, dead_ogonek, fiveeighths ]}; + key {[ 7, ampersand, grave, dead_grave ]}; + key {[ 8, asterisk, dead_abovedot, trademark ]}; + key {[ 9, parenleft, dead_acute, plusminus ]}; + key {[ 0, parenright, dead_doubleacute, degree ]}; + key {[ minus, underscore, dead_diaeresis, questiondown]}; + + key {[ w, W, bar, Greek_SIGMA ]}; + key {[ e, E, EuroSign, EuroSign ]}; + key {[ ccedilla, Ccedilla, division, dead_abovering]}; + key {[ at, apostrophe, multiply, dead_macron ]}; + + key {[ s, S, dstroke, section ]}; + key {[ d, D, Dstroke, ETH ]}; + key {[ediaeresis, Ediaeresis, dollar, dead_doubleacute ]}; + key {[bracketleft, braceleft, ssharp, dead_caron ]}; + key {[bracketright, braceright, currency, dead_breve ]}; + + key {[ comma, semicolon, less, multiply ]}; + key {[ period, colon, greater, division ]}; + key {[ slash, question, dead_belowdot, dead_abovedot]}; + + include "level3(ralt_switch)" +}; + + +// Tastiera Plisi (plisi.org) +// by Getoar Mjeku +partial alphanumeric_keys +xkb_symbols "plisi" { + + include "us" + + name[Group1]= "Albanian (Plisi)"; + + key {[ grave, asciitilde ]}; + key {[ 1, exclam, rightsinglequotemark ]}; + key {[ 2, at, twosuperior ]}; + key {[ 3, numbersign, threesuperior ]}; + key {[ 4, dollar, EuroSign ]}; + key {[ 5, percent, exclamdown ]}; + key {[ 6, asciicircum, questiondown ]}; + key {[ 7, ampersand, braceleft ]}; + key {[ 8, asterisk, braceright ]}; + key {[ 9, parenleft, bracketleft ]}; + key {[ 0, parenright, bracketright ]}; + key {[ minus, underscore, hyphen ]}; + key {[ equal, plus, registered ]}; + + key {[ q, Q, dead_grave ]}; + key {[ w, W, dead_caron ]}; + key {[ e, E, dead_circumflex ]}; + key {[ r, R, dead_diaeresis ]}; + key {[ t, T, dead_macron ]}; + key {[ y, Y, dead_doubleacute ]}; + key {[ u, U, dead_breve ]}; + key {[ i, I, dead_tilde, idotless ]}; + key {[ o, O, dead_abovering ]}; + key {[ p, P, dead_abovedot ]}; + key {[ ccedilla, Ccedilla, dead_acute ]}; + key {[ greater, less, U031C ]}; + + key {[ a, A, U2264 ]}; + key {[ s, S, U2265 ]}; + key {[ d, D, U2300 ]}; + key {[ f, F, U2032 ]}; + key {[ g, G, U2033 ]}; + key {[ h, H, section ]}; + key {[ j, J, dead_cedilla ]}; + key {[ k, K, dead_belowcomma ]}; + key {[ l, L, dead_ogonek ]}; + key {[ ediaeresis, Ediaeresis, dead_belowdot ]}; + key {[ apostrophe, quotedbl ]}; + + key {[ z, Z, guillemotleft ]}; + key {[ x, X, guillemotright ]}; + key {[ c, C, copyright ]}; + key {[ v, V, U2039 ]}; + key {[ b, B, U203A ]}; + key {[ n, N, endash ]}; + key {[ m, M, emdash, mu ]}; + key {[ comma, semicolon, U02BB ]}; + key {[ period, colon, U200C ]}; + key {[ slash, question, U2011 ]}; + + key {[ backslash, bar, U031B ]}; + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +// Veqilharxhi layout, by Arbër Boriçi (illyriensis@protonmail.com), September 2019. +partial alphanumeric_keys +xkb_symbols "veqilharxhi" { + + include "us" + + name[Group1]="Albanian (Veqilharxhi)"; + + // QWERTYUIOP + key {[ U105B0, U10589 ]}; // 𐖰, 𐖉 + key {[ U1059F, U10578, w, W ]}; // 𐖟, 𐕸, w, W + key {[ U1059E, U10577 ]}; // 𐖞, 𐕷 + key {[ U105B1, U1058A, U105B2, U1058B ]}; // 𐖱, 𐖊, 𐖲, 𐖋 + key {[ U105B5, U1058E, U105B6, U1058F ]}; // 𐖵, 𐖎, 𐖶, 𐖏 + key {[ U105BB, U10594 ]}; // 𐖻, 𐖔 + key {[ U105B7, U10590 ]}; // 𐖷, 𐖐 + key {[ U105A5, U1057E ]}; // 𐖥, 𐕾 + key {[ U105AE, U10587 ]}; // 𐖮, 𐖇 + key {[ U105AF, U10588 ]}; // 𐖯, 𐖈 + + // ASDFGHJKL + key {[ U10597, U10570 ]}; // 𐖗, 𐕰 + key {[ U105B3, U1058C, U105B4, U1058D ]}; // 𐖳, 𐖌, 𐖴, 𐖍 + key {[ U1059C, U10575, U1059D, U10576 ]}; // 𐖜, 𐕵, 𐖝, 𐕶 + key {[ U105A0, U10579 ]}; // 𐖠, 𐕹 + key {[ U105A1, U1057A, U105A2, U1057B ]}; // 𐖡, 𐕺, 𐖢, 𐕻 + key {[ U105A3, U1057C ]}; // 𐖣, 𐕼 + key {[ U105A7, U10580 ]}; // 𐖧, 𐖀 + key {[ U105A8, U10581 ]}; // 𐖨, 𐖁 + key {[ U105A9, U10582, U105AA, U10583 ]}; // 𐖩, 𐖂, 𐖪, 𐖃 + + // ZXCVBNM + key {[ U105BC, U10595, U105BD, U10596 ]}; // 𐖼, 𐖕, 𐖽, 𐖖 + key {[ U105B9, U10592, U105BA, U10593 ]}; // 𐖹, 𐖒, 𐖺, 𐖓 + key {[ U1059A, U10573, U1059B, U10574 ]}; // 𐖚, 𐕳, 𐖛, 𐕴 + key {[ U105B8, U10591 ]}; // 𐖸, 𐖑 + key {[ U10598, U10571 ]}; // 𐖘, 𐕱 + key {[ U105AC, U10585, U105AD, U10586 ]}; // 𐖬, 𐖅, 𐖭, 𐖆 + key {[ U105AB, U10584 ]}; // 𐖫, 𐖄 + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/altwin b/nixos/xkb/symbols/altwin new file mode 100644 index 00000000..0b646414 --- /dev/null +++ b/nixos/xkb/symbols/altwin @@ -0,0 +1,129 @@ +// Meta is mapped to second level of Alt. +partial modifier_keys +xkb_symbols "meta_alt" { + key {[ Alt_L, Meta_L ]}; + key {[ Alt_R, Meta_R ], type[group1] = "TWO_LEVEL" }; + modifier_map Mod1 { , }; +}; + +// Alt is mapped to the Super and the usual Alt. +partial modifier_keys +xkb_symbols "alt_win" { + key {[ Alt_L ]}; + key {[ Alt_R ]}; + modifier_map Mod1 { , }; +}; + +// Ctrl is mapped to the Super and the usual Ctrl keys. +partial modifier_keys +xkb_symbols "ctrl_win" { + key {[ Control_L ]}; + key {[ Control_R ]}; + modifier_map Control { , }; +}; + +// Ctrl is mapped to the Right Super and the usual Ctrl key. +partial modifier_keys +xkb_symbols "ctrl_rwin" { + key {[ Control_R ]}; + modifier_map Control { }; +}; + +// Ctrl is mapped to the Alt, Alt to the Super, and Win to the Ctrl keys. +partial modifier_keys +xkb_symbols "ctrl_alt_win" { + key {[ Control_L, Control_L ]}; + key {[ Control_R, Control_R ], type[group1] = "TWO_LEVEL" }; + key {[ Alt_L, Meta_L ]}; + key {[ Alt_R, Meta_R ]}; + key {[ Super_L ]}; + key {[ Super_R ]}; + modifier_map Control { , }; + modifier_map Mod1 { , }; + modifier_map Mod4 { , }; +}; + +// Meta is mapped to the Super keys. +partial modifier_keys +xkb_symbols "meta_win" { + key {[ Alt_L, Alt_L ]}; + key {[ Alt_R, Alt_R ], type[group1] = "TWO_LEVEL" }; + key {[ Meta_L ]}; + key {[ Meta_R ]}; + modifier_map Mod1 { , }; + modifier_map Mod4 { , Meta_L, Meta_R }; +}; + +// Meta is mapped to the left Super key. +partial modifier_keys +xkb_symbols "left_meta_win" { + key {[ Alt_L, Alt_L ]}; + key {[ Meta_L ]}; + modifier_map Mod1 { }; + modifier_map Mod4 { , Meta_L }; +}; + +// Hyper is mapped to the Super keys. +partial modifier_keys +xkb_symbols "hyper_win" { + key {[ Hyper_L ]}; + key {[ Hyper_R ]}; + modifier_map Mod4 { Hyper_L, Hyper_R }; +}; + +// Menu is mapped to the Menu key. +partial modifier_keys +xkb_symbols "menu" { + key {[ Menu ]}; +}; + +// Super is mapped to the Menu key. +partial modifier_keys +xkb_symbols "menu_win" { + key {[ Super_R ]}; + modifier_map Mod4 { }; +}; + +// Make the right Super key an additional Alt, +// and the Menu key an additional Super. +partial modifier_keys +xkb_symbols "alt_super_win" { + key {[ Alt_L, Meta_L ]}; + key {[ Alt_R, Meta_R ]}; + key {[ Super_L ]}; + key {[ Super_R ]}; + modifier_map Mod1 { , }; + modifier_map Mod4 { , }; +}; + +// Swap the left Alt and Super. +partial modifier_keys +xkb_symbols "swap_lalt_lwin" { + key {[ Super_L ], type[group1] = "ONE_LEVEL" }; + key {[ Alt_L, Meta_L ]}; + modifier_map Mod4 { }; + modifier_map Mod1 { }; +}; + +// Swap the right Alt and Super. +hidden partial modifier_keys +xkb_symbols "swap_ralt_rwin" { + key {[ Super_R ], type[group1] = "ONE_LEVEL" }; + key {[ Alt_R, Meta_R ]}; + modifier_map Mod4 { }; + modifier_map Mod1 { }; +}; + +// Swap Alt and Super. +partial modifier_keys +xkb_symbols "swap_alt_win" { + include "altwin(swap_lalt_lwin)" + include "altwin(swap_ralt_rwin)" +}; + +// Super is mapped to the PrtSc key (and the usual Win key). +partial modifier_keys +xkb_symbols "prtsc_rwin" { + replace key {[ Super_R, Super_R ]}; + modifier_map Mod4 { , }; +}; diff --git a/nixos/xkb/symbols/am b/nixos/xkb/symbols/am new file mode 100644 index 00000000..a81fb4e1 --- /dev/null +++ b/nixos/xkb/symbols/am @@ -0,0 +1,247 @@ +// Keyboard layouts for Armenia. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Armenian"; + + key {[ Armenian_separation_mark, Armenian_exclam ]}; + key {[ Armenian_fe, Armenian_FE ]}; + key {[ Armenian_dza, Armenian_DZA ]}; + key {[ Armenian_hyphen, U2014 ]}; // emdash + key {[ comma, dollar ]}; + key {[ Armenian_full_stop, U2026 ]}; // ellipsis + key {[ Armenian_question, percent ]}; + key {[ U2024, Armenian_ligature_ew ]}; // Armenian semicolon (mijaket) + key {[ Armenian_accent, Armenian_apostrophe ]}; + key {[ parenright, parenleft ]}; + key {[ Armenian_o, Armenian_O ]}; + key {[ Armenian_e, Armenian_E ]}; + key {[ Armenian_ghat, Armenian_GHAT ]}; + + key {[ Armenian_tche, Armenian_TCHE ]}; + key {[ Armenian_pyur, Armenian_PYUR ]}; + key {[ Armenian_ben, Armenian_BEN ]}; + key {[ Armenian_se, Armenian_SE ]}; + key {[ Armenian_men, Armenian_MEN ]}; + key {[ Armenian_vo, Armenian_VO ]}; + key {[ Armenian_vyun, Armenian_VYUN ]}; + key {[ Armenian_ken, Armenian_KEN ]}; + key {[ Armenian_at, Armenian_AT ]}; + key {[ Armenian_to, Armenian_TO ]}; + key {[ Armenian_tsa, Armenian_TSA ]}; + key {[ Armenian_tso, Armenian_TSO ]}; + + key {[ Armenian_je, Armenian_JE ]}; + key {[ Armenian_vev, Armenian_VEV ]}; + key {[ Armenian_gim, Armenian_GIM ]}; + key {[ Armenian_yech, Armenian_YECH ]}; + key {[ Armenian_ayb, Armenian_AYB ]}; + key {[ Armenian_nu, Armenian_NU ]}; + key {[ Armenian_ini, Armenian_INI ]}; + key {[ Armenian_tyun, Armenian_TYUN ]}; + key {[ Armenian_ho, Armenian_HO ]}; + key {[ Armenian_pe, Armenian_PE ]}; + key {[ Armenian_re, Armenian_RE ]}; + key {[ guillemotright, guillemotleft ]}; + + key {[ question, Armenian_hyphen ]}; + key {[ Armenian_zhe, Armenian_ZHE ]}; + key {[ Armenian_da, Armenian_DA ]}; + key {[ Armenian_cha, Armenian_CHA ]}; + key {[ Armenian_hi, Armenian_HI ]}; + key {[ Armenian_za, Armenian_ZA ]}; + key {[ Armenian_lyun, Armenian_LYUN ]}; + key {[ Armenian_ke, Armenian_KE ]}; + key {[ Armenian_khe, Armenian_KHE ]}; + key {[ Armenian_sha, Armenian_SHA ]}; + key {[ Armenian_ra, Armenian_RA ]}; +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + include "am(basic)" + include "group(olpc)" +}; + +xkb_symbols "phonetic" { + + include "am(basic)" + + name[Group1]= "Armenian (phonetic)"; + + key {[ Armenian_e, Armenian_E ]}; + key {[ Armenian_to, Armenian_TO ]}; + key {[ Armenian_pyur, Armenian_PYUR ]}; + key {[ Armenian_dza, Armenian_DZA ]}; + key {[ Armenian_je, Armenian_JE ]}; + key {[ Armenian_vyun, Armenian_VYUN ]}; + key {[ Armenian_ligature_ew, U058F ]}; // Armenian Dram sign + key {[ Armenian_ra, Armenian_RA ]}; + key {[ Armenian_cha, Armenian_CHA ]}; + key {[ Armenian_tche, Armenian_TCHE ]}; + key {[ Armenian_hyphen, U2015 ]}; // quotation dash + key {[ Armenian_zhe, Armenian_ZHE ]}; + + key {[ Armenian_ke, Armenian_KE ]}; + key {[ Armenian_vo, Armenian_VO ]}; + key {[ Armenian_yech, Armenian_YECH ]}; + key {[ Armenian_re, Armenian_RE ]}; + key {[ Armenian_tyun, Armenian_TYUN ]}; + key {[ Armenian_at, Armenian_AT ]}; + key {[ Armenian_vyun, Armenian_VYUN ]}; + key {[ Armenian_ini, Armenian_INI ]}; + key {[ Armenian_o, Armenian_O ]}; + key {[ Armenian_pe, Armenian_PE ]}; + key {[ Armenian_khe, Armenian_KHE ]}; + key {[ Armenian_tsa, Armenian_TSA ]}; + + key {[ Armenian_ayb, Armenian_AYB ]}; + key {[ Armenian_se, Armenian_SE ]}; + key {[ Armenian_da, Armenian_DA ]}; + key {[ Armenian_fe, Armenian_FE ]}; + key {[ Armenian_gim, Armenian_GIM ]}; + key {[ Armenian_ho, Armenian_HO ]}; + key {[ Armenian_hi, Armenian_HI ]}; + key {[ Armenian_ken, Armenian_KEN ]}; + key {[ Armenian_lyun, Armenian_LYUN ]}; + key {[ semicolon, Armenian_full_stop ]}; + key {[ Armenian_accent, quotedbl ]}; + key {[ Armenian_sha, Armenian_SHA ]}; + + key {[ Armenian_za, Armenian_ZA ]}; + key {[ Armenian_ghat, Armenian_GHAT ]}; + key {[ Armenian_tso, Armenian_TSO ]}; + key {[ Armenian_vev, Armenian_VEV ]}; + key {[ Armenian_ben, Armenian_BEN ]}; + key {[ Armenian_nu, Armenian_NU ]}; + key {[ Armenian_men, Armenian_MEN ]}; + key {[ comma, guillemotleft ]}; + key {[ U2024, guillemotright ]}; // Armenian semicolon (mijaket) + key {[ slash, Armenian_question ]}; +}; + +partial alphanumeric_keys +xkb_symbols "phonetic-alt" { + + include "am(phonetic)" + + name[Group1]= "Armenian (alt. phonetic)"; + + key {[ Armenian_re, Armenian_RE ]}; + key {[ Armenian_ra, Armenian_RA ]}; +}; + +partial alphanumeric_keys +xkb_symbols "olpc-phonetic" { + + include "am(phonetic-alt)" + + name[Group1]= "Armenian (OLPC, phonetic)"; + + include "group(olpc)" +}; + +partial alphanumeric_keys +xkb_symbols "eastern" { + + name[Group1]="Armenian (eastern)"; + + // This is the closer phonetic transliteration for Eastern Armenian + // than the Windows XP layout for Eastern Armenian, which seems + // to have contained a bug, with the reversal of 'g' for keh and 'c' for gim. + // Also, AE01 (the colon) has been replaced with the Armenian_full_stop, + // and capital AE07 (ken) with the Armenian ligature ew. + + key {[ Armenian_separation_mark, Armenian_exclam ]}; + key {[ Armenian_full_stop, KP_1 ]}; + key {[ Armenian_dza, Armenian_DZA ]}; + key {[ Armenian_hi, Armenian_HI ]}; + key {[ Armenian_accent, KP_3 ]}; + key {[ comma, KP_4 ]}; + key {[ minus, KP_9 ]}; + key {[ period, Armenian_ligature_ew ]}; + key {[ guillemotleft, parenleft ]}; + key {[ guillemotright, parenright ]}; + key {[ Armenian_o, Armenian_O ]}; + key {[ Armenian_ra, Armenian_RA ]}; + key {[ Armenian_zhe, Armenian_ZHE ]}; + + key {[ Armenian_khe, Armenian_KHE ]}; + key {[ Armenian_vyun, Armenian_VYUN ]}; + key {[ Armenian_e, Armenian_E ]}; + key {[ Armenian_re, Armenian_RE ]}; + key {[ Armenian_tyun, Armenian_TYUN ]}; + key {[ Armenian_yech, Armenian_YECH ]}; + key {[ Armenian_at, Armenian_AT ]}; + key {[ Armenian_ini, Armenian_INI ]}; + key {[ Armenian_vo, Armenian_VO ]}; + key {[ Armenian_pe, Armenian_PE ]}; + key {[ Armenian_cha, Armenian_CHA ]}; + key {[ Armenian_je, Armenian_JE ]}; + + key {[ Armenian_ayb, Armenian_AYB ]}; + key {[ Armenian_se, Armenian_SE ]}; + key {[ Armenian_da, Armenian_DA ]}; + key {[ Armenian_fe, Armenian_FE ]}; + key {[ Armenian_gim, Armenian_GIM ]}; + key {[ Armenian_ho, Armenian_HO ]}; + key {[ Armenian_tche, Armenian_TCHE ]}; + key {[ Armenian_ken, Armenian_KEN ]}; + key {[ Armenian_lyun, Armenian_LYUN ]}; + key {[ Armenian_to, Armenian_TO ]}; + key {[ Armenian_pyur, Armenian_PYUR ]}; + key {[ apostrophe, Armenian_question ]}; + + key {[ Armenian_za, Armenian_ZA ]}; + key {[ Armenian_tso, Armenian_TSO ]}; + key {[ Armenian_ke, Armenian_KE ]}; + key {[ Armenian_vev, Armenian_VEV ]}; + key {[ Armenian_ben, Armenian_BEN ]}; + key {[ Armenian_nu, Armenian_NU ]}; + key {[ Armenian_men, Armenian_MEN ]}; + key {[ Armenian_sha, Armenian_SHA ]}; + key {[ Armenian_ghat, Armenian_GHAT ]}; + key {[ Armenian_tsa, Armenian_TSA ]}; +}; + +partial alphanumeric_keys +xkb_symbols "western" { + + include "am(eastern)" + + name[Group1]="Armenian (western)"; + + // This is exactly the same layout for Western Armenian + // as in Windows XP, except: + // AE01 (the colon) has been replaced with the Armenian_full_stop and + // capital AE07 (ken) with the Armenian ligature ew + + key {[ Armenian_vev, Armenian_VEV ]}; + key {[ Armenian_da, Armenian_DA ]}; + key {[ Armenian_ben, Armenian_BEN ]}; + + key {[ Armenian_tyun, Armenian_TYUN ]}; + key {[ Armenian_ken, Armenian_KEN ]}; + key {[ Armenian_ke, Armenian_KE ]}; + + key {[ Armenian_gim, Armenian_GIM ]}; + key {[ Armenian_vyun, Armenian_VYUN ]}; + key {[ Armenian_pe, Armenian_PE ]}; +}; + +partial alphanumeric_keys +xkb_symbols "eastern-alt" { + + include "am(eastern)" + + name[Group1]="Armenian (alt. eastern)"; + + // This replicates the Windows XP keyboard layout for Eastern + // Armenian exactly (including the bug), except: + // AE01 (the colon) has been replaced with the Armenian_full_stop and + // capital AE07 (ken) with the Armenian ligature ew + + key {[ Armenian_ke, Armenian_KE ]}; + key {[ Armenian_gim, Armenian_GIM ]}; +}; diff --git a/nixos/xkb/symbols/ancient b/nixos/xkb/symbols/ancient new file mode 100644 index 00000000..0c8f70df --- /dev/null +++ b/nixos/xkb/symbols/ancient @@ -0,0 +1,198 @@ +// Keyboard layouts for languages from antiquity. + + +default partial alphanumeric_keys +xkb_symbols "dummy" { + include "ancient(uga)" + name[group1]= "Ancient"; +}; + + +// EXTRAS: + +// Gothic layout, created by Tim Nelson , 2016. +// (Reference: http://www.alanwood.net/unicode/gothic.html.) +// +// Priorities in selecting keys for letters: +// 1. Make the layout like QWERTY (with Jer = Y) +// 2. Borrow a thing from Greek layout (Iggws = X) +// 3. Fit remaining things in (Hwair = V, Thiuth = J) +// 4. Put the numbers in; use Shift for ×10 (10, 20, 30...); +// unshifted AE10 = 900, since Gothic didn't have a zero +// +partial alphanumeric_keys +xkb_symbols "got" { + + name[group1]= "Gothic"; + + key {[ grave, asciitilde ]}; + key {[ U10330, U10339 ]}; // AHSA / EIS + key {[ U10331, U1033A ]}; // BAIRKAN / KUSMA + key {[ U10332, U1033B ]}; // GIBA / LAGUS + key {[ U10333, U1033C ]}; // DAGS / MANNA + key {[ U10334, U1033D ]}; // AIHVUS / NAUTHS + key {[ U10335, U1033E ]}; // QAIRTHRA / JER + key {[ U10336, U1033F ]}; // IUJA / URUS + key {[ U10337, U10340 ]}; // HAGL / PAIRTHRA + key {[ U10338, U10341 ]}; // THIUTH / NINETY + key {[ U1034A, U10342 ]}; // NINE HUNDRED / RAIDA + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ U10335 ]}; // Qairthra + key {[ U10345 ]}; // Winja + key {[ U10334 ]}; // Aihvus + key {[ U10342 ]}; // Raida + key {[ U10344 ]}; // Teiws + key {[ U1033E ]}; // Jer + key {[ U1033F ]}; // Urus + key {[ U10339 ]}; // Eis + key {[ U10349 ]}; // Othal + key {[ U10340 ]}; // Pairthra + key {[ bracketleft, braceleft ]}; + key {[bracketright, braceright ]}; + + key {[ U10330 ]}; // Ahsa + key {[ U10343 ]}; // Sauil + key {[ U10333 ]}; // Dags + key {[ U10346 ]}; // Faihu + key {[ U10332 ]}; // Giba + key {[ U10337 ]}; // Hagl + key {[ U10338 ]}; // Thiuth + key {[ U1033A ]}; // Kusma + key {[ U1033B ]}; // Lagus + key {[ semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + key {[ backslash, bar ]}; + + key {[ U10336 ]}; // Iuja + key {[ U10347 ]}; // Iggws + key {[ c, C ]}; + key {[ U10348 ]}; // Hwair + key {[ U10331 ]}; // Bairkan + key {[ U1033D ]}; // Nauths + key {[ U1033C ]}; // Manna + key {[ comma, less ]}; + key {[ period, greater ]}; + key {[ slash, question ]}; +}; + + +// In this layout the Ugaritic characters get the places of +// the Arabic characters with the matching sound values. +partial alphanumeric_keys +xkb_symbols "uga" { + + name[Group1]= "Ugaritic"; + + key.type[Group1]="TWO_LEVEL"; + + key {[ U1038F, none ]}; // 𐎏 + key {[ 1, exclam ]}; // 1 ! + key {[ 2, at ]}; // 2 @ + key {[ 3, numbersign ]}; // 3 # + key {[ 4, dollar ]}; // 4 $ + key {[ 5, percent ]}; // 5 % + key {[ 6, asciicircum ]}; // 6 ^ + key {[ 7, ampersand ]}; // 7 & + key {[ 8, asterisk ]}; // 8 * + key {[ 9, parenleft ]}; // 9 ( + key {[ 0, parenright ]}; // 0 ) + key {[ minus, underscore ]}; // - _ + key {[ equal, plus ]}; // = + + + key {[ U1039D, none ]}; // 𐎝 + key {[ U10395, none ]}; // 𐎕 + key {[ U10398, none ]}; // 𐎘 + key {[ U10396, none ]}; // 𐎖 + key {[ U10394, none ]}; // 𐎔 + key {[ U10399, none ]}; // 𐎙 + key {[ U10393, grave ]}; // 𐎓 ` + key {[ U10385, division ]}; // 𐎅 ÷ + key {[ U10383, multiply ]}; // 𐎃 × + key {[ U10388, semicolon ]}; // 𐎈 ; + key {[ U10382, greater ]}; // 𐎂 > + key {[ U10384, less ]}; // 𐎄 < + + key {[ U1038C, U27E8 ]}; // 𐎌 ⟨ + key {[ U10392, U27E9 ]}; // 𐎒 ⟩ + key {[ U1038A, bracketleft ]}; // 𐎊 [ + key {[ U10381, bracketright ]}; // 𐎁 ] + key {[ U1038D, none ]}; // 𐎍 + key {[ U10380, none ]}; // 𐎀 + key {[ U1039A, none ]}; // 𐎚 + key {[ U10390, none ]}; // 𐎐 + key {[ U1038E, slash ]}; // 𐎎 / + key {[ U1038B, colon ]}; // 𐎋: + key {[ U10389, quotedbl ]}; // 𐎉 " + key {[backslash, bar ]}; // \ | + + key {[ bar, endash ]}; // | – + key {[ U1039B, guillemotleft ]}; // 𐎛 « + key {[ none, guillemotright ]}; // » + key {[ U1039C, braceleft ]}; // 𐎜 { + key {[ U10397, braceright ]}; // 𐎗 } + key {[ U1039F, U2039 ]}; // 𐎟 ‹ + key {[ question, U203A ]}; // ? › + key {[ U02BC, apostrophe ]}; // ʼ ' + key {[ U10386, comma ]}; // 𐎆 , + key {[ U10387, period ]}; // 𐎇 . + key {[ U10391, periodcentered ]}; // 𐎑 · +}; + + +// Layout for Avestan, by Ernst Tremel, coded by Simos Xenitellis. +// Reference: https://blog.simos.info/avestan-keyboard-layout/. +// Generated with https://github.com/simos/keyboardlayouteditor. +partial alphanumeric_keys +xkb_symbols "ave" +{ + name[Group1] = "Avestan"; + + key {[ U10B78 ]}; // 𐭸 + key {[ U10B79 ]}; // 𐭹 + key {[ U10B7A ]}; // 𐭺 + key {[ U10B7B ]}; // 𐭻 + key {[ U10B7C ]}; // 𐭼 + key {[ U10B7D ]}; // 𐭽 + key {[ U10B7E ]}; // 𐭾 + key {[ U10B7F ]}; // 𐭿 + + key {[ U10B22, U10B23 ]}; // 𐬢 𐬣 + key {[ U10B33, U10B34 ]}; // 𐬳 𐬴 + key {[ U10B08, U10B09 ]}; // 𐬈 𐬉 + key {[ U10B2D, U10B26 ]}; // 𐬭 𐬦 + key {[ U10B19, U10B1A ]}; // 𐬙 𐬚 + key {[ U10B2B, U10B2A ]}; // 𐬫 𐬪 + key {[ U10B0E, U10B0F ]}; // 𐬎 𐬏 + key {[ U10B0C, U10B0D ]}; // 𐬌 𐬍 + key {[ U10B0A, U10B0B ]}; // 𐬊 𐬋 + key {[ U10B1E ]}; // 𐬞 + key {[ U10B06, U10B07 ]}; // 𐬆 𐬇 + key {[ U10B02, U10B03 ]}; // 𐬂 𐬃 + + key {[ U10B00, U10B01 ]}; // 𐬀 𐬁 + key {[ U10B2F, U10B31 ]}; // 𐬯 𐬱 + key {[ U10B1B, U10B1C ]}; // 𐬛 𐬜 + key {[ U10B1F, U10B16 ]}; // 𐬟 𐬖 + key {[ U10B14, U10B15 ]}; // 𐬔 𐬕 + key {[ U10B35, UE100 ]}; // 𐬵  + key {[ U10B18, U10B24 ]}; // 𐬘 𐬤 + key {[ U10B10, UE101 ]}; // 𐬐  + key {[ U10B2E, UE103 ]}; // 𐬮  + key {[ U10B3B, U10B3A ]}; // 𐬻 𐬺 + key {[ U10B1D ]}; // 𐬝 + key {[ U10B04, U10B05 ]}; // 𐬄 𐬅 + + key {[ U10B04, U10B05 ]}; // 𐬄 𐬅 + key {[ U10B30, U10B32 ]}; // 𐬰 𐬲 + key {[ U10B11, U10B12 ]}; // 𐬑 𐬒 + key {[ U10B17, UE102 ]}; // 𐬗  + key {[ U10B2C, U10B13 ]}; // 𐬬 𐬓 + key {[ U10B20, U10B21 ]}; // 𐬠 𐬡 + key {[ U10B25, U10B27 ]}; // 𐬥 𐬧 + key {[ U10B28, U10B29 ]}; // 𐬨 𐬩 + key {[ U10B3C, U10B39 ]}; // 𐬼 𐬹 + key {[ U10B3E, U10B3D ]}; // 𐬾 𐬽 + key {[ U10B3F, periodcentered ]}; // 𐬿 · +}; diff --git a/nixos/xkb/symbols/apl b/nixos/xkb/symbols/apl new file mode 100644 index 00000000..9a32163f --- /dev/null +++ b/nixos/xkb/symbols/apl @@ -0,0 +1,687 @@ +// EXTRAS: +// +// APL Keyboard Layouts + +// This file supports: +// - The Sharp APL for Unix (SAX) layout +// - The IBM APL2 layout +// - The Manugistics APL*PLUS II (Version 5.1, 1993) keyboard layout +// - The Dyalog APL layout - with additions for box drawing and commands + +// Unicode APL table: http://aplwiki.com/UnicodeAplTable +// ...and another: http://publibfp.boulder.ibm.com/epubs/pdf/h2110611.pdf (appendix A) +// Generic Unicode stuff: http://www.fileformat.info/info/unicode/category/index.htm + +// Tim Nelson (this file's creator) says: + +// This file doesn't deal with all the combining stuff -- I'm not an APL programmer, +// and am not quite sure what's needed here. However, it may be possible to get this +// working with dead keys and the like. Patches gratefully accepted. +// [Geoff Streeter: What has been done to is to support all of the APL overstrikes in the compose table] + +// Some of the shift-key assignments may differ from the APL tradition. If +// that's not considered acceptable, it should be possible to remap the +// shift keys. I have striven, however, to ensure that the use of shift keys +// in these maps is at least self-consistent. + +// I'm assuming that this will be used with another keyboard layout (ie. for +// your language), with a special shift key to use these maps. + +// 2018-07-02 added some codes to the Unicode Private Use page. +// 2017-02-27 changed ¤ to ⌺, added ⊆ +// 2012-09-26 changed "overbar" to macron which fixed some strangeness in xterm + +// 2011-12-22 Geoff Streeter: geoff@dyalog.com +// Added the Dyalog support. +// Corrected (what he thinks) are some errors. +// Resolving the confusion between APL's and Unicode's concept of Left and Right tacks. +// Unsure about some of the inheritance from APL2 into APLPLUS. Patches welcome. +// Complied with freedesktop.org requirement that the keycodes be in sorted order. Which +// leads to the bottom to top (roughly) definitions. + +// default layout seems to have to be the first one. Choosing the basic Dyalog layout is definitely +// better than using the "common" one. Choosing the complete Dyalog layout is not useful to non-Dyalog +// users. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "apl(dyalog_base)" // forward reference to a good APL keyboard without Dyalogs extras + + name[Group1]="APL"; +}; + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// │ │ ¨ │ ¯ │ < │ ≤ │ = │ ≥ │ > │ ≠ │ ∨ │ ∧ │ │ ┃ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ ┃ ? │ ⍵ │ ∊ │ ⍴ │ ~ │ ↑ │ ↓ │ ⍳ │ ○ │ * │ ← │ ┃ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ ┃ ⍺ │ ⌈ │ ⌊ │ _ │ ∇ │ ∆ │ ∘ │ ' │ ⎕ │ │ │ ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ ┃ │ ⊂ │ ⊃ │ ∩ │ ∪ │ ⊥ │ ⊤ │ | │ │ │ ┃ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +hidden partial alphanumeric_keys +xkb_symbols "common" { + + key { [ U2282 ] }; // Z: ⊂ -- Subset Of + key { [ U2283 ] }; // X: ⊃ -- Superset Of + key { [ U2229 ] }; // C: ∩ -- Intersection + key { [ U222A ] }; // V: ∪ -- Union + key { [ U22A5 ] }; // B: ⊥ -- Up Tack + key { [ U22A4 ] }; // N: ⊤ -- Down Tack + key { [ U007C ] }; // M: | -- Vertical Line + + key { [ U237A ] }; // A: ⍺ -- APL Functional Symbol Alpha + key { [ U2308 ] }; // S: ⌈ -- Left Ceiling + key { [ U230A ] }; // D: ⌊ -- Left Floor + key { [ underscore ] }; // F: + key { [ U2207 ] }; // G: ∇ -- Nabla + key { [ U2206 ] }; // H: ∆ -- Increment + key { [ U2218 ] }; // J: ∘ -- Ring Operator + key { [ apostrophe ] }; // K: + key { [ U2395 ] }; // L: ⎕ -- APL Functional Symbol Quad + + key { [ question ] }; // Q: + key { [ U2375 ] }; // W: ⍵ -- APL Functional Symbol Omega + key { [ U220A ] }; // E: ∊ -- Small Element Of + key { [ U2374 ] }; // R: ⍴ -- APL Functional Symbol Rho + key { [ asciitilde ] }; // T: + key { [ U2191 ] }; // Y: ↑ -- Upwards Arrow + key { [ U2193 ] }; // U: ↓ -- Downwards Arrow + key { [ U2373 ] }; // I: ⍳ -- APL Functional Symbol Iota + key { [ U25CB ] }; // O: ○ -- White Circle + key { [ asterisk ] }; // P: * -- asterisk + key { [ U2190 ] }; // [: ← -- Leftwards Arrow + + key { [ diaeresis ] }; + key { [ macron ] }; // ¯ -- Macron + key { [ less ] }; + key { [ U2264 ] }; // ≤ -- Less-than Or Equal To + key { [ equal ] }; + key { [ U2265 ] }; // ≥ -- Greater-than Or Equal To + key { [ greater ] }; + key { [ U2260 ] }; // ≠ -- Not Equal To + key { [ U2228 ] }; // ∨ -- Logical Or + key { [ U2227 ] }; // ∧ -- Logical And +}; + +// Keys common to a number of keyboards that allow normal language usage alongside APL + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ │ │ │ │ │ │ │ │ │ ⍱ │ ⍲ │ │ ⌹ ┃ ┃ +// │ ⋄ │ ¨ │ ¯ │ < │ ≤ │ = │ ≥ │ > │ ≠ │ ∨ │ ∧ │ × │ ÷ ┃ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ ┃ ? │ ⍵ │ ∊ │ ⍴ │ ~ │ ↑ │ ↓ │ ⍳ │ ○ │ * │ ← │ → ┃ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ ┃ ⍺ │ ⌈ │ ⌊ │ _ │ ∇ │ ∆ │ ∘ │ ' │ ⎕ │ │ │ ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ ┃ │ ⊂ │ ⊃ │ ∩ │ ∪ │ ⊥ │ ⊤ │ | │ │ │ ┃ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial alphanumeric_keys +xkb_symbols "unified" { + + include "apl(common)" + + name[Group1]= "APL symbols (unified)"; + + key { [ U2192 ] }; // ]: → -- Rightwards Arrow + key { [ NoSymbol, U2371 ] }; // 9: ⍱ -- APL Functional Symbol Down Caret Tilde + key { [ NoSymbol, U2372 ] }; // 0: ⍲ -- APL Functional Symbol Up Caret Tilde + key { [ U00D7 ] }; // -: × -- Multiplication Sign + key { [ U00F7, U2339 ] }; // =: ÷ ⌹ -- Division Sign / APL Functional Symbol Quad Divide + key { [ U22C4 ] }; // `: ⋄ -- Diamond Operator +}; + +// Layout: http://www.wickensonline.co.uk/apl-unicomp.html + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ │ ¡ │ │ │ ¢ │ │ │ │ ⍂ │ ⍱ │ ⍲ │ ≡ │ ⌹ ┃ ┃ +// │ ⋄ │ ¨ │ ¯ │ < │ ≤ │ = │ ≥ │ > │ ≠ │ ∨ │ ∧ │ × │ ÷ ┃ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ ¿ │ ⌽ │ ⍷ │ │ ⍉ │ │ │ ⍸ │ ⍥ │ ⍣ │ │ ┃ ┃ +// ┃ ┃ ? │ ⍵ │ ∊ │ ⍴ │ ~ │ ↑ │ ↓ │ ⍳ │ ○ │ * │ ← │ → ┃ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ ⊖ │ │ │ ⍫ │ ⍒ │ ⍋ │ ⍤ │ ⌻ │ ⍞ │ │ │ ⍀ ┃ ┃ +// ┃ ┃ ⍺ │ ⌈ │ ⌊ │ _ │ ∇ │ ∆ │ ∘ │ ' │ ⎕ │ ⊢ │ ⊣ │ ⍝ ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ │ │ │ ⍝ │ │ ⍎ │ ⍕ │ ⌶ │ ⍪ │ ⍙ │ ⌿ ┃ ┃ +// ┃ ┃ │ ⊂ │ ⊃ │ ∩ │ ∪ │ ⊥ │ ⊤ │ | │ ⍞ │ ⍎ │ ⍕ ┃ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial alphanumeric_keys +xkb_symbols "sax" { + + include "apl(unified)" + + name[Group1]= "APL symbols (SAX, Sharp APL for Unix)"; + + key { [ NoSymbol, U235D ] }; // C: ⍝ -- APL Functional Symbol Up Shoe Jot + key { [ NoSymbol, U234E ] }; // B: ⍎ -- APL Functional Symbol Down Tack Jot (Unicode got the name wrong; it should have been "Up Tack") + key { [ NoSymbol, U2355 ] }; // N: ⍕ -- APL Functional Symbol Up Tack Jot (Unicode got the name wrong; it should have been "Down Tack") + key { [ NoSymbol, U2336 ] }; // M: ⌶ -- APL Functional Symbol I-Beam + key { [ U235E, U236A ] }; // ,: ⍞ ⍪ -- APL Functional Symbol Quote Quad / APL Functional Symbol Comma Bar + key { [ U234E, U2359 ] }; // .: ⍎ ⍙ -- [See B key] / APL Functional Symbol Delta Underbar + key { [ U2355, U233F ] }; // /: ⍕ ⌿ -- [See N key] / APL Functional Symbol Slash Bar + + key { [ NoSymbol, U2296 ] }; // A: ⊖ -- Circled Minus + key { [ NoSymbol, U236B ] }; // F: ⍫ -- APL Functional Symbol Del Tilde + key { [ NoSymbol, U2352 ] }; // G: ∇ ⍒ -- APL Functional Symbol Del Stile + key { [ NoSymbol, U234B ] }; // H: ∆ ⍋ -- APL Functional Symbol Delta Stile + key { [ NoSymbol, U2364 ] }; // J: ⍤ -- APL Functional Symbol Jot Diaeresis + key { [ NoSymbol, U233B ] }; // K: ⌻ + key { [ NoSymbol, U235E ] }; // L: ⍞ -- APL Functional Symbol Quote Quad + key { [ U22A2 ] }; // ;: ⊢ -- Right Tack + key { [ U22A3 ] }; // ': ⊣ -- Left Tack + + key { [ NoSymbol, U00BF ] }; // Q: ¿ -- Inverted Question Mark + key { [ NoSymbol, U233D ] }; // W: ⌽ -- APL Functional Symbol Circle Stile + key { [ NoSymbol, U2377 ] }; // E: ⍷ -- APL Functional Symbol Epsilon Underbar + key { [ NoSymbol, U2349 ] }; // T: ⍉ -- APL Functional Symbol Circle Backslash + key { [ NoSymbol, U2378 ] }; // I: ⍸ -- APL Functional Symbol Iota Underbar + key { [ NoSymbol, U2365 ] }; // O: ⍥ -- APL Functional Symbol Circle Diaeresis + key { [ NoSymbol, U235F ] }; // P: ⍟ -- APL Functional Symbol Circle Star + key { [ NoSymbol, U00A1 ] }; // 1: ¡ -- Inverted Exclamation Mark + key { [ NoSymbol, cent ] }; // 4: + key { [ NoSymbol, U2342 ] }; // 8: ⍂ -- APL Functional Symbol Quad Backslash + key { [ NoSymbol, U2261 ] }; // -: ≡ -- Identical To + + key { [ U235D, U2340 ] }; // \: ⍝ ⍀ -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Backslash Bar +}; + +// Layout: http://www.wickensonline.co.uk/apl-unicomp.html + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ⍂ │ ⌶ │ ⍫ │ ⍒ │ ⍋ │ ⌽ │ ⍉ │ ⊖ │ ⍟ │ ⍱ │ ⍲ │ ! │ ⌹ ┃ ┃ +// │ ⌻ │ │ │ │ │ │ │ │ │ │ │ - │ ÷ ┃ ┃ +// │ │ ¨ │ ¯ │ < │ ≤ │ = │ ≥ │ > │ ≠ │ ∨ │ ∧ │ + │ × ┃ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ⍞ │ ⍙ ┃ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ → │ ⍸ ┃ ┃ +// ┃ ┃ ? │ ⍵ │ ∊ │ ⍴ │ ~ │ ↑ │ ↓ │ ⍳ │ ○ │ * │ ← │ ⌷ ┃ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ ⍎ │ ⍕ │ ⍤ ┃ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ ( │ ) │ ⍷ ┃ ┃ +// ┃ ┃ ⍺ │ ⌈ │ ⌊ │ _ │ ∇ │ ∆ │ ∘ │ ' │ ⎕ │ [ │ ] │ ≡ ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ ⍝ │ ⍀ │ ⌿ ┃ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ ; │ : │ \ ┃ ┃ +// ┃ ┃ │ ⊂ │ ⊃ │ ∩ │ ∪ │ ⊥ │ ⊤ │ | │ , │ . │ / ┃ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial alphanumeric_keys +xkb_symbols "apl2" { + + include "apl(common)" + + name[Group1]= "APL symbols (IBM APL2)"; + + // The first column is NoSymbol because it inherits. The second is NoSymbol because those keys don't do anything + // AFS - short for APL Functional Symbol + + key { [ comma, semicolon, U235D ] }; // ,: ⍝ -- AFS Up Shoe Jot + key { [ period, colon, U2340 ] }; // .: ⍀ -- AFS Backslash Bar + key { [ slash, backslash, U233F ] }; // /: ⌿ -- AFS Slash Bar + + key { [ bracketleft, parenleft, U234E ] }; // ;: ⍎ -- [See B key in SAX layout] + key { [ bracketright, parenright, U2355 ] }; // ': ⍕ -- [See N key in SAX layout] + + key { [ NoSymbol, U2192, U235E ] }; // [: (←) → ⍞ -- Rightwards Arrow / AFS Quote Quad + key { [ U2337, U2378, U2359 ] }; // ]: ⌷ ⍸ ⍙ -- AFS Squish Quad / AFS Iota Underbar / AFS Delta Underbar + + key { [ NoSymbol, NoSymbol, U2336 ] }; // 1: ⌶ -- AFS I-Beam + key { [ NoSymbol, NoSymbol, U236B ] }; // 2: ⍫ -- AFS Del Tilde + key { [ NoSymbol, NoSymbol, U2353 ] }; // 3: ⍒ -- AFS Del Stile + key { [ NoSymbol, NoSymbol, U234B ] }; // 4: ⍋ -- AFS Delta Stile + key { [ NoSymbol, NoSymbol, U233D ] }; // 5: ⌽ -- AFS Circle Stile + key { [ NoSymbol, NoSymbol, U2349 ] }; // 6: ⍉ -- AFS Circle Backslash + key { [ NoSymbol, NoSymbol, U2296 ] }; // 7: ⊖ -- Circled Minus + key { [ NoSymbol, NoSymbol, U235F ] }; // 8: ⍟ -- AFS Circle Star + key { [ NoSymbol, NoSymbol, U2371 ] }; // 9: ⍱ -- AFS Down Caret Tilde + key { [ NoSymbol, NoSymbol, U2372 ] }; // 0: ⍲ -- AFS Up Caret Tilde + key { [ plus, minus, exclam ] }; // -: + key { [ U00D7, U00F7, U2339 ] }; // =: × ÷ ⌹ -- Multiplication Sign / Division Sign / AFS Quad Divide + + key { [ U2261, U2377, U2364 ] }; // \: ≡ ⍷ ⍤ -- Identical To / AFS Epsilon Underbar / AFS Jot Diaeresis + + key { [ NoSymbol, U233B, U2342 ] }; // `: ⌻ ⍂ -- + + include "level3(ralt_switch)" +}; + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ⍪ │ ≡ │ ⍫ │ ⍒ │ ⍋ │ ⌽ │ ⍉ │ ⊖ │ ⍟ │ ⍱ │ ⍲ │ ! │ ⌹ ┃ ┃ +// │ ⋄ │ │ │ │ │ │ │ │ │ │ │ - │ ÷ ┃ ┃ +// │ $ │ ¨ │ ¯ │ < │ ≤ │ = │ ≥ │ > │ ≠ │ ∨ │ ∧ │ + │ × ┃ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ⍞ │ ⍬ ┃ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ → │ ⍸ ┃ ┃ +// ┃ ┃ ? │ ⍵ │ ∊ │ ⍴ │ ~ │ ↑ │ ↓ │ ⍳ │ ○ │ * │ ← │ → ┃ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ ⍎ │ ⍕ │ ⍙ ┃ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ ( │ ) │ ⊣ ┃ ┃ +// ┃ ┃ ⍺ │ ⌈ │ ⌊ │ _ │ ∇ │ ∆ │ ∘ │ ' │ ⎕ │ [ │ ] │ ⊢ ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ ⍝ │ ⍀ │ ⌿ ┃ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ ; │ : │ \ ┃ ┃ +// ┃ ┃ │ ⊂ │ ⊃ │ ∩ │ ∪ │ ⊥ │ ⊤ │ | │ , │ . │ / ┃ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial alphanumeric_keys +xkb_symbols "aplplusII" { + + include "apl(apl2)" + + name[Group1]= "APL symbols (Manugistics APL*PLUS II)"; + + // AFS is short for APL Functional Symbol + key { [ bracketleft, parenleft, U234E ] }; // ;: ⍎ -- [See B key in SAX layout] + key { [ bracketright, parenright, U2355 ] }; // ': ⍕ -- [See N key in SAX layout] + key { [ U2190, NoSymbol, U235E ] }; // [: ← ⍞ -- Leftwards Arrow / AFS Quote Quad + key { [ U2192, NoSymbol, U236C ] }; // ]: → ⍬ -- Rightwards Arrow / AFS Zilde + key { [ NoSymbol, NoSymbol, U2261 ] }; // 1: ≡ -- Identical To + key { [ U22A2, U22A3, U2359 ] }; // \: ⊢ ⊣ ⍙ -- Left Tack / Right Tack / AFS Delta Underbar + key { [ dollar, U22C4, U236A ] }; // `: ⋄ ⍪ -- Diamond Operator / AFS Comma Bar +}; + + +// MicroAPL layout: http://aplwiki.com/APLXKeyboardLayouts +// I didn't do the old-style MicroAPL layout; patches gratefully accepted + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ⍞ │ ⌶ │ ⍫ │ ⍒ │ ⍋ │ ⌽ │ ⍉ │ ⊖ │ ⍟ │ ⍱ │ ⍲ │ ! │ ⌹ ┃ ┃ +// │ ⋄ │ ¨ │ ¯ │ < │ ≤ │ = │ ≥ │ > │ ≠ │ ∨ │ ∧ │ × │ ÷ ┃ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ⍇ │ ⍈ ┃ ┃ +// ┃ ┃ ? │ ⍵ │ ∊ │ ⍴ │ ~ │ ↑ │ ↓ │ ⍳ │ ○ │ * │ ← │ → ┃ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ ≡ │ ≢ │ ⊣ ┃ ┃ +// ┃ ┃ ⍺ │ ⌈ │ ⌊ │ _ │ ∇ │ ∆ │ ∘ │ ' │ ⎕ │ ⍎ │ ⍕ │ ⊢ ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ ⍪ │ ⍤ │ ┃ ┃ +// ┃ ┃ │ ⊂ │ ⊃ │ ∩ │ ∪ │ ⊥ │ ⊤ │ | │ ⍝ │ ⍀ │ ⌿ ┃ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial alphanumeric_keys +xkb_symbols "aplx" { + + include "apl(unified)" + + name[Group1]= "APL symbols (APLX unified)"; + + key { [ U235D, U236A ] }; // ,: ⍝ ⍪ -- APL Functional Symbol Up Shoe Jot / APL Functional Symbol Comma Bar + key { [ U2340, U2364 ] }; // .: ⍀ ⍤ -- APL Functional Symbol Backslash Bar / APL Functional Symbol Jot Diaeresis + key { [ U233F ] }; // /: ⌿ -- APL Functional Symbol Slash Bar + + key { [ U234E, U2261 ] }; // ;: ⍎ ≡ -- [See B key in SAX layout] / Identical To + key { [ U2355, U2262 ] }; // ': ⍕ ≢ -- [See N key in SAX layout] / Not Identical To + + key { [ NoSymbol, U2347 ] }; // [: ⍇ -- Box With Left Arrow + key { [ NoSymbol, U2348 ] }; // ]: ⍈ -- Box With Right Arrow + + key { [ NoSymbol, U2336 ] }; // 1: ⌶ -- APL Functional Symbol I-Beam + key { [ NoSymbol, U236B ] }; // 2: ⍫ -- APL Functional Symbol Del Tilde + key { [ NoSymbol, U2353 ] }; // 3: ⍒ -- APL Functional Symbol Del Stile + key { [ NoSymbol, U234B ] }; // 4: ⍋ -- APL Functional Symbol Delta Stile + key { [ NoSymbol, U233D ] }; // 5: ⌽ -- APL Functional Symbol Circle Stile + key { [ NoSymbol, U2349 ] }; // 6: ⍉ -- APL Functional Symbol Circle Backslash + key { [ NoSymbol, U2296 ] }; // 7: ⊖ -- Circled Minus + key { [ NoSymbol, U235F ] }; // 8: ⍟ -- APL Functional Symbol Circle Star + key { [ NoSymbol, exclam ] }; // -: + + key { [ U22A2, U22A3 ] }; // \: ⊢ ⊣ -- Right Tack / Left Tack + + key { [ NoSymbol, U235E ] }; // `: ⍞ -- APL Functional Symbol Quote Quad +}; + +// APL language support for the Dyalog keyboard. +// Dyalog Ltd sell this keyboard with APL engravings. The current model is +// engraved on a Cherry G80. Base languages for US, UK and DK are availible. + +// Geoff Streeter, Dyalog Ltd. 2007-09-03 +// geoff@dyalog.com +// extended for APL special actions 2008-09-09 +// add variant 2010-11-26 +// made BKSL and LTGT keys the same to remove a compatibility issue with the UK physical keyboard +// add key (quad equals) 2013-03-12 +// add currency 2014-05-23 +// add parallel 2014-05-23 +// add circle jot 2014-05-23 +// add t diaeresis 2014-05-23 +// add del diaerisis 2014-05-23 +// add quad query 2014-05-23 +// add dagger 2014-05-23 +// correct spelling of key name LTGT→LSGT 2016-05-26 +// add enclose underbar 2017-02-27 +// add alpha underbar 2019-03-22 +// add omega underbar 2019-03-22 +// change all "partial hidden" to "hidden partial" - seems to be a compiler change + +// The intention is that this keyboard layout overlays a base keyboard that provides +// the alphabet and similar. If this keyboard is placed as the 2nd layout then it can +// be reached with a latching shift to increase group by one. + +hidden partial alphanumeric_keys +xkb_symbols "dyalog_base" { + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ⌺ │ ⌶ │ ⍫ │ ⍒ │ ⍋ │ ⌽ │ ⍉ │ ⊖ │ ⍟ │ ⍱ │ ⍲ │ ! │ ⌹ ┃ ┃ +// │ ⋄ │ ¨ │ ¯ │ < │ ≤ │ = │ ≥ │ > │ ≠ │ ∨ │ ∧ │ × │ ÷ ┃ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ ⍰ │ ⍹ │ ⍷ │ ⌾ │ ⍨ │ │ │ ⍸ │ ⍥ │ ⍣ │ ⍞ │ ⍬ ┃ ┃ +// ┃ ┃ ? │ ⍵ │ ∊ │ ⍴ │ ~ │ ↑ │ ↓ │ ⍳ │ ○ │ * │ ← │ → ┃ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ ⍶ │ │ │ │ ⍢ │ │ ⍤ │ ⌸ │ ⌷ │ ≡ │ ≢ │ ⊣ ┃ ┃ +// ┃ ┃ ⍺ │ ⌈ │ ⌊ │ _ │ ∇ │ ∆ │ ∘ │ ' │ ⎕ │ ⍎ │ ⍕ │ ⊢ ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ ⊣ │ ⊆ │ │ │ │ ⍭ │ ⍡ │ ∥ │ ⍪ │ ⍙ │ ⍠ ┃ ┃ +// ┃ ┃ ⊢ │ ⊂ │ ⊃ │ ∩ │ ∪ │ ⊥ │ ⊤ │ | │ ⍝ │ ⍀ │ ⌿ ┃ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + + + key { [ U2282, U2286 ] }; // subset of, enclose if simple + key { [ U2283 ] }; // superset of + key { [ U2229 ] }; // intersection + key { [ U222A ] }; // union + key { [ U22a5, U236d ] }; // up tack, stile tide + key { [ U22a4, U2361 ] }; // down tack, down tack diaeresis + key { [ bar, U2225 ] }; // vertical line, parallel to + key { [ U235d, U236a ] }; // up shoe jot, comma bar + key { [ U2340, U2359 ] }; // backslash bar, delta underbar + key { [ U233f, U2360 ] }; // slash bar, quad colon + key { [ U237a, U2376 ] }; // alpha, alpha underbar + key { [ U2308 ] }; // left ceiling + key { [ U230a ] }; // left floor + key { [ underscore ] }; // low line + key { [ U2207, U2362 ] }; // nabla, del diaerisis + key { [ U2206 ] }; // increment + key { [ U2218, U2364 ] }; // ring operator, jot diaeresis + key { [ apostrophe, U2338 ] }; // quote, key + key { [ U2395, U2337 ] }; // quad, squish quad + key { [ U234e, U2261 ] }; // up tack jot, identical to + key { [ U2355, U2262 ] }; // down tack jot, not identical to + key { [ question, U2370 ] }; // ?, quad question + key { [ U2375, U2379 ] }; // omega, omega underbar + key { [ U220a, U2377 ] }; // small element of, epsilon underbar + key { [ U2374, U233E ] }; // rho, circle jot + key { [ asciitilde, U2368 ] }; // tilde, tilde diaeresis + key { [ U2191 ] }; // upwards arrow + key { [ U2193 ] }; // downwards arrow + key { [ U2373, U2378 ] }; // iota, iota underbar + key { [ U25cb, U2365 ] }; // circle, circle diaeresis + key { [ asterisk, U2363 ] }; // asterisk, star diaeresis + key { [ U2190, U235e ] }; // left arrow, quote quad + key { [ U2192, U236c ] }; // right arrow, zilde + key { [ diaeresis, U2336 ] }; // i-beam + key { [ macron, U236B ] }; // deltilde + key { [ less, U2352 ] }; // downgrade + key { [ U2264, U234b ] }; // lesseq upgrade + key { [ equal, U233d ] }; // circlestile + key { [ U2265, U2349 ] }; // greatereq circleslope + key { [ greater, U2296 ] }; // circlebar + key { [ U2260, U235f ] }; // notequal, circlestar + key { [ U2228, U2371 ] }; // logical or, down caret tilde + key { [ U2227, U2372 ] }; // logical and, up caret tilde + key { [ multiply, exclam ] }; + key { [ division, U2339 ] }; // quad divide + key { [ U22a2, U22a3 ] }; // right tack, left tack + key { [ U22a2, U22a3 ] }; // right tack, left tack + key { [ U22c4, U233a ] }; // diamond, quad diamond +}; + +hidden partial keypad_keys +xkb_symbols "dyalog_box" { + +// ┌───┬───┬───┬───┐ +// │ │ │ │ │ +// ├───┼───┼───┼───┤ +// │ ┌ │ ┬ │ ┐ │ │ +// ├───┼───┼───┤ │ +// │ ├ │ ┼ │ ┤ │ │ +// ├───┼───┼───┼───┤ +// │ └ │ ┴ │ ┘ │ │ +// ├───┴───┼───┤ │ +// │ ─ │ │ │ │ +// └───────┴───┴───┘ + + key { [ U2500 ] }; // box drawing light horizontal + key { [ U2514 ] }; // box drawing light up and right + key { [ U2534 ] }; // box drawing light up and horizontal + key { [ U2518 ] }; // box drawing light up and left + key { [ U251c ] }; // box drawing light vertical and right + key { [ U253c ] }; // box drawing light vertical and horizontal + key { [ U2524 ] }; // box drawing light vertical and left + key { [ U250c ] }; // box drawing light down and right + key { [ U252c ] }; // box drawing light down and horizontal + key { [ U2510 ] }; // box drawing light down and left + key { [ U2502 ] }; // box drawing light vertical +}; + +hidden partial +xkb_symbols "dyalog_codes" { + +// Layout of private use area for this. In the style of the Unicode book +// +// APL special actions F800-F88F +// +// │F800 F810 F820 F830 F840 F850 F860 F870 F880 +// ├────┬────┬────┬────┬────┬────┬────┬────┬────┐ +// 0│QT │LL │BK │FX │Rc │BP │PA │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// 1│ER │HO │ZM │LN │LW │AB │SA │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// 2│TB │CT │SC │MC │RW │HT │RZ │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// 3│BT │PT │RP │MR │Lw │TH │AC │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// 4│EP │IN │NX │JP │Rw │RM │MA │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// 5│UC │II │PV │D1 │Uc │CB │OF │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// 6│DC │DI │RT │D2 │Dc │PR │FS │ │TO │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// 7│RC │DP │RA │D3 │Ll │SR │FA │ │MO │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// 8│LC │DB │ED │D4 │Rl │IS │TT │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// 9│US │RD │TC │D5 │Ul │TL │FT │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// A│DS │TG │NB │U1 │Dl │UA │PL │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// B│RS │DK │NS │U2 │Us │AO │CA │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// C│LS │OP │ST │U3 │Ds │DO │ │ │ │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// D│UL │CP │EN │U4 │DD │GL │ │ │S1 │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// E│DL │MV │IF │U5 │DH │CH │ │ │S2 │ +// ├────┼────┼────┼────┼────┼────┼────┼────┼────┤ +// F│RL │FD │HK │Lc │BH │PU │ │ │OS │ +// └────┴────┴────┴────┴────┴────┴────┴────┴────┘ +// +// APL Function Keys F700-F7FF +// +// │F700 ... ... F7F0 +// ├────┬────┬────┬────┬....┬────┬────┬────┬────┐ +// 0│F0 │F16 │F32 │F48 │ │F192│F208│F224│F240│ +// . +// . +// . +// F│F15 │F31 │F47 │F63 │ │F207│F223│F239│F255│ +// └────┴────┴────┴────┴....┴────┴────┴────┴────┘ +// +// whilst these locations are defined. Dyalog's "aplkeys/xterm" file copes with +// normal function keys from the base keyboard rather than this overlay + +// ┌─────┐ ┌───┐ +// │ CA │ │ZM │ +// │ QT │ │ZM │ +// └─────┘ └───┘ + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ CB ┃ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ BP ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ BT ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ TB ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ TC ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ED ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ MO ┃ ┃ ┃ ┃ +// ┃ ┃ ┃ ┃ TO ┃ ┃ ┃ ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + + + key { [ Uf850, Uf855 ] }; // BP CB + key { [ Uf800, Uf86b ] }; // QT CA + key { [ Uf821, Uf821 ] }; // ZM, ZM put this on both, the unshifted one sometimes gets lost + key { [ Uf828, Uf829 ] }; // ED, TC + key { [ Uf886, Uf887 ] }; // TO, MO + key { [ Uf802, Uf803 ] }; // TB, BT + +// ┌─────┐ +// │ │ +// │ BK │ +// ┌────┼─────┼────┐ +// │ BH │ │ RM │ +// │ PV │ FD │ NX │ +// └────┴─────┴────┘ + + key { [ Uf81f ] }; // FD + key { [ Uf825, Uf84f ] }; // PV, BH + key { [ Uf824, Uf854 ] }; // NX, RM + key { [ Uf820 ] }; // BK + + +// ┌───┬───┬───┐ +// │PT │LL │UL │ +// │CP │LS │US │ +// ├───┼───┼───┤ +// │CT │RL │DL │ +// │DK │RS │DS │ +// └───┴───┴───┘ + + key { [ Uf81b, Uf812 ] }; // DK, CT + key { [ Uf80b, Uf80f ] }; // RS, RL + key { [ Uf80c, Uf810 ] }; // LS, LL + key { [ Uf81d, Uf813 ] }; // CP, PT + key { [ Uf80a, Uf80e ] }; // DS, DL + key { [ Uf809, Uf80d ] }; // US, UL + +// ┌───┬───┬───┬───┐ +// │ │RD │TG │LN │ +// ├───┼───┼───┼───┤ +// │ │ │ │ │ +// ├───┼───┼───┤TL │ +// │ │ │ │ │ +// ├───┼───┼───┼───┤ +// │ │ │ │ │ +// ├───┴───┼───┤ │ +// │ │ │ │ +// └───────┴───┴───┘ + + + key { [ Uf859 ] }; // TL + key { [ Uf819 ] }; // RD + key { [ Uf81a ] }; // TG + key { [ Uf831 ] }; // LN +}; + +xkb_symbols "dyalog" { + + include "apl(dyalog_base)" + include "apl(dyalog_box)" + include "apl(dyalog_codes)" + + name[Group1] = "APL symbols (Dyalog APL)"; +}; + +partial +xkb_symbols "level3" { + // #UNREGISTERED + name[Group1] = "APL on Level3"; + + //from apl(dyalog_base) -- any way to just include it shifted to level3? + + key { [ NoSymbol, NoSymbol, U2282, U2286 ] }; // subset of, enclose if simple + key { [ NoSymbol, NoSymbol, U2283 ] }; // superset of + key { [ NoSymbol, NoSymbol, U2229 ] }; // intersection + key { [ NoSymbol, NoSymbol, U222A ] }; // union + key { [ NoSymbol, NoSymbol, U22a5, U236d ] }; // up tack, stile tide + key { [ NoSymbol, NoSymbol, U22a4, U2361 ] }; // down tack, down tack diaeresis + key { [ NoSymbol, NoSymbol, bar, U2225 ] }; // vertical line, parallel to + key { [ NoSymbol, NoSymbol, U235d, U236a ] }; // up shoe jot, comma bar + key { [ NoSymbol, NoSymbol, U2340, U2359 ] }; // backslash bar, delta underbar + key { [ NoSymbol, NoSymbol, U233f, U2360 ] }; // slash bar, quad colon + key { [ NoSymbol, NoSymbol, U237a, U2376 ] }; // alpha, alpha underbar + key { [ NoSymbol, NoSymbol, U2308 ] }; // left ceiling + key { [ NoSymbol, NoSymbol, U230a ] }; // left floor + key { [ NoSymbol, NoSymbol, underscore ] }; // low line + key { [ NoSymbol, NoSymbol, U2207, U2362 ] }; // nabla, del diaerisis + key { [ NoSymbol, NoSymbol, U2206 ] }; // increment + key { [ NoSymbol, NoSymbol, U2218, U2364 ] }; // ring operator, jot diaeresis + key { [ NoSymbol, NoSymbol, apostrophe, U2338 ] }; // quote, key + key { [ NoSymbol, NoSymbol, U2395, U2337 ] }; // quad, squish quad + key { [ NoSymbol, NoSymbol, U234e, U2261 ] }; // up tack jot, identical to + key { [ NoSymbol, NoSymbol, U2355, U2262 ] }; // down tack jot, not identical to + key { [ NoSymbol, NoSymbol, question, U2370 ] }; // ?, quad question + key { [ NoSymbol, NoSymbol, U2375, U2379 ] }; // omega, omega underbar + key { [ NoSymbol, NoSymbol, U220a, U2377 ] }; // small element of, epsilon underbar + key { [ NoSymbol, NoSymbol, U2374, U233E ] }; // rho, circle jot + key { [ NoSymbol, NoSymbol, asciitilde, U2368 ] }; // tilde, tilde diaeresis + key { [ NoSymbol, NoSymbol, U2191 ] }; // upwards arrow + key { [ NoSymbol, NoSymbol, U2193 ] }; // downwards arrow + key { [ NoSymbol, NoSymbol, U2373, U2378 ] }; // iota, iota underbar + key { [ NoSymbol, NoSymbol, U25cb, U2365 ] }; // circle, circle diaeresis + key { [ NoSymbol, NoSymbol, asterisk, U2363 ] }; // asterisk, star diaeresis + key { [ NoSymbol, NoSymbol, U2190, U235e ] }; // left arrow, quote quad + key { [ NoSymbol, NoSymbol, U2192, U236c ] }; // right arrow, zilde + key { [ NoSymbol, NoSymbol, diaeresis, U2336 ] }; // i-beam + key { [ NoSymbol, NoSymbol, macron, U236B ] }; // deltilde + key { [ NoSymbol, NoSymbol, less, U2352 ] }; // downgrade + key { [ NoSymbol, NoSymbol, U2264, U234b ] }; // lesseq upgrade + key { [ NoSymbol, NoSymbol, equal, U233d ] }; // circlestile + key { [ NoSymbol, NoSymbol, U2265, U2349 ] }; // greatereq circleslope + key { [ NoSymbol, NoSymbol, greater, U2296 ] }; // circlebar + key { [ NoSymbol, NoSymbol, U2260, U235f ] }; // notequal, circlestar + key { [ NoSymbol, NoSymbol, U2228, U2371 ] }; // logical or, down caret tilde + key { [ NoSymbol, NoSymbol, U2227, U2372 ] }; // logical and, up caret tilde + key { [ NoSymbol, NoSymbol, multiply, exclam ] }; + key { [ NoSymbol, NoSymbol, division, U2339 ] }; // quad divide + key { [ NoSymbol, NoSymbol, U22a2, U22a3 ] }; // right tack, left tack + key { [ NoSymbol, NoSymbol, U22a2, U22a3 ] }; // right tack, left tack + key { [ NoSymbol, NoSymbol, U22c4, U233a ] }; // diamond, quad diamond +}; diff --git a/nixos/xkb/symbols/ara b/nixos/xkb/symbols/ara new file mode 100644 index 00000000..a3e5fcda --- /dev/null +++ b/nixos/xkb/symbols/ara @@ -0,0 +1,521 @@ +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Arabic"; + + key.type[Group1]="FOUR_LEVEL"; + + key {[ Arabic_thal, Arabic_shadda, Arabic_percent, U0609 ]}; // ‎ذ‎ ‎◌ّ‎ ‎٪‎ ‎؉‎ + key {[ 1, exclam, Arabic_1, any ]}; // 1 ! ١ + key {[ 2, at, Arabic_2, any ]}; // 2 @ ٢ + key {[ 3, numbersign, Arabic_3, any ]}; // 3 # ٣ + key {[ 4, dollar, Arabic_4, any ]}; // 4 $ ٤ + key {[ 5, percent, Arabic_5, U2030 ]}; // 5 % ٥ ‰ + key {[ 6, asciicircum, Arabic_6, any ]}; // 6 ^ ٦ + key {[ 7, ampersand, Arabic_7, any ]}; // 7 & ٧ + key {[ 8, asterisk, Arabic_8, any ]}; // 8 * ٨ + key {[ 9, parenright, Arabic_9, any ]}; // 9 ) ٩ + key {[ 0, parenleft, Arabic_0, any ]}; // 0 ( ٠ + key {[ minus, underscore, endash, U2011 ]}; // - _ – Non-Breaking-Hyphen + key {[ equal, plus, notequal, U2248 ]}; // = + ≠ ≈ + + key {[ Arabic_dad, Arabic_fatha, any, U2066 ]}; // ‎ض‎ ‎◌َ LEFT‑TO‑RIGHT ISOLATE + key {[ Arabic_sad, Arabic_fathatan, any, U2067 ]}; // ‎ص‎ ‎◌ً RIGHT‑TO‑LEFT ISOLATE + key {[ Arabic_theh, Arabic_damma, any, U2068 ]}; // ‎ث‎ ‎◌ُ FIRST STRONG ISOLATE + key {[ Arabic_qaf, Arabic_dammatan, any, U2069 ]}; // ‎ق‎ ‎◌ٌ POP DIRECTIONAL ISOLATE + key {[ Arabic_feh, UFEF9, Arabic_veh, any ]}; // ‎ف‎ ‎ﻹ ‎ڤ + key {[ Arabic_ghain,Arabic_hamzaunderalef, any, U202A ]}; // ‎غ‎ ‎إ‎ LEFT-TO-RIGHT-EMBEDDING + key {[ Arabic_ain, grave, any, U202B ]}; // ‎ع‎ ` RIGHT-TO-LEFT EMBEDDING + key {[ Arabic_ha, division, any, U202C ]}; // ‎ه‎ ÷ POP DIRECTIONAL FORMATTING + key {[ Arabic_khah, multiply, any, any ]}; // ‎خ‎ × + key {[ Arabic_hah, Arabic_semicolon, any, U200E ]}; // ‎ح‎ ؛ LEFT-TO-RIGHT MARK + key {[ Arabic_jeem, less, Arabic_tcheh, U200F ]}; // ‎ج‎ < ‎چ‎ RIGHT-TO-LEFT MARK + key {[ Arabic_dal, greater, any, U061C ]}; // ‎د‎ > ARABIC LETTER MARK + + key {[ Arabic_sheen, Arabic_kasra, any, any ]}; // ‎ش‎ ‎◌ِ‎ + key {[ Arabic_seen, Arabic_kasratan, any, any ]}; // ‎س‎ ‎◌ٍ‎ + key {[ Arabic_yeh, bracketright, any, any ]}; // ‎ي‎ ] + key {[ Arabic_beh, bracketleft, Arabic_peh, any ]}; // ‎ب‎ [ ‎پ‎ + key {[ Arabic_lam, UFEF7, any, any ]}; // ‎ل‎ ‎ﻷ‎ + key {[ Arabic_alef, Arabic_hamzaonalef, U0671, any ]}; // ‎ا‎ ‎أ ‎ٱ‎ + key {[ Arabic_teh, Arabic_tatweel, any, any ]}; // ‎ت‎ ‎ـ‎ + key {[ Arabic_noon, Arabic_comma, U066B, any ]}; // ‎ن‎ ‎،‎ ‎٫‎ + key {[ Arabic_meem, slash, any, any ]}; // ‎م‎ / + key {[ Arabic_kaf, colon, Arabic_gaf, any ]}; // ‎ك‎ : ‎گ‎ + key {[ Arabic_tah, quotedbl, U27E9, U200D ]}; // ‎ط‎ " ⟩ ZWJ + key {[ backslash, bar, U27E8, U202F ]}; // \ | ⟨ NNBSP + + key {[ bar, ellipsis, brokenbar, any ]}; // | … ¦ + key {[Arabic_hamzaonyeh, asciitilde, guillemotright, U203A ]}; // ‎ئ‎ ~ » › + key {[ Arabic_hamza, Arabic_sukun, guillemotleft, U2039 ]}; // ‎ء‎ ◌ْ « ‹ + key {[Arabic_hamzaonwaw, braceright, any, any ]}; // ‎ؤ } + key {[ Arabic_ra, braceleft, any, any ]}; // ‎ر‎ { + key {[ UFEFB, UFEF5, any, any ]}; // ‎ﻻ‎ ‎ﻵ‎ + key {[Arabic_alefmaksura, Arabic_maddaonalef, Arabic_superscript_alef, any ]}; // ‎ى‎ ‎آ‎ ‎◌ٰ‎ + key {[Arabic_tehmarbuta, apostrophe, any, any ]}; // ‎ة‎ ' + key {[ Arabic_waw, comma, U066C, any ]}; // ‎و‎ , ‎٬ + key {[ Arabic_zain, period, Arabic_jeh, any ]}; // ‎ز‎ . ‎ژ‎ + key {[ Arabic_zah, Arabic_question_mark, U066D, U200C ]}; // ‎ظ‎ ‎؟‎ ‎٭‎ ZWNJ + + include "level3(ralt_switch)" +}; + + +// Replaces the Western numeral signs with Arabic-script digits on the keypad, +// pushing the Western digits to the third level accessible by the right Alt key. +// Additionally, the fourth level gives the Persian digits. +hidden partial keypad_keys +xkb_symbols "digits_KP" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD"; + + key {[ KP_Home, Arabic_7, 7, Farsi_7 ]}; + key {[ KP_Up, Arabic_8, 8, Farsi_8 ]}; + key {[ KP_Prior, Arabic_9, 9, Farsi_9 ]}; + + key {[ KP_Left, Arabic_4, 4, Farsi_4 ]}; + key {[ KP_Begin, Arabic_5, 5, Farsi_5 ]}; + key {[ KP_Right, Arabic_6, 6, Farsi_6 ]}; + + key {[ KP_End, Arabic_1, 1, Farsi_1 ]}; + key {[ KP_Down, Arabic_2, 2, Farsi_2 ]}; + key {[ KP_Next, Arabic_3, 3, Farsi_3 ]}; + + key {[ KP_Insert, Arabic_0, 0, Farsi_0 ]}; + + include "kpdl(momayyezoss)" +}; + +// Replaces the Western numeral signs with Arabic-script digits on the numeric row, +// pushing the Western digits to the third level accessible by the right Alt key. +partial alphanumeric_keys +xkb_symbols "digits" { + + include "ara(basic)" + + name[Group1]= "Arabic (Eastern Arabic numerals)"; + + key {[Arabic_thal, Arabic_shadda, percent, U2030 ]}; + key {[ Arabic_1, exclam, 1, any ]}; + key {[ Arabic_2, at, 2, any ]}; + key {[ Arabic_3, numbersign, 3, any ]}; + key {[ Arabic_4, dollar, 4, any ]}; + key {[ Arabic_5, Arabic_percent, 5, U0609 ]}; + key {[ Arabic_6, asciicircum, 6, any ]}; + key {[ Arabic_7, ampersand, 7, any ]}; + key {[ Arabic_8, asterisk, 8, any ]}; + key {[ Arabic_9, parenright, 9, any ]}; + key {[ Arabic_0, parenleft, 0, any ]}; + + include "ara(digits_KP)" +}; + + +partial alphanumeric_keys +xkb_symbols "azerty" { + include "ara(basic)" + name[Group1]= "Arabic (AZERTY)"; + + // The North African Arabic keyboard differs from the Middle East one + // by the numeric row; it follows French keyboard style. + // + // PROBLEM: some characters are inaccessible: ! @ # $ % ^ * + // Should they go elsewhere? Replacing " ' that are now doubled? + // Also, dead_circumflex and dead_diaeresis from French keyboard + // as well as ugrave are missing, which questions the utility of the + // other accentuated Latin letters. Maybe this is useful only with + // a French keyboard in Group1? Then, shouldn't Group1 be filled? + + key {[ ampersand, 1 ]}; + key {[ eacute, 2 ]}; + key {[ quotedbl, 3 ]}; + key {[ apostrophe, 4 ]}; + key {[ parenleft, 5 ]}; + key {[ minus, 6 ]}; + key {[ egrave, 7 ]}; + key {[ underscore, 8 ]}; + key {[ ccedilla, 9 ]}; + key {[ agrave, 0 ]}; + key {[ parenright, degree ]}; +}; + +partial alphanumeric_keys +xkb_symbols "azerty_digits" { + include "ara(azerty)" + name[Group1]= "Arabic (AZERTY, Eastern Arabic numerals)"; + + key {[ ampersand, Arabic_1, 1, any ]}; + key {[ eacute, Arabic_2, 2, any ]}; + key {[ quotedbl, Arabic_3, 3, any ]}; + key {[ apostrophe, Arabic_4, 4, any ]}; + key {[ parenleft, Arabic_5, 5, any ]}; + key {[ minus, Arabic_6, 6, any ]}; + key {[ egrave, Arabic_7, 7, any ]}; + key {[ underscore, Arabic_8, 8, any ]}; + key {[ ccedilla, Arabic_9, 9, any ]}; + key {[ agrave, Arabic_0, 0, any ]}; +}; + + +// Arabic layout for the Buckwalter transliteration scheme, +// adding I, O, and W as aliases for <, >, and &. +// See http://www.qamus.org/transliteration.htm. +// Originally by Martin Vidner, 2006. +partial alphanumeric_keys +xkb_symbols "buckwalter" { + + name[Group1]= "Arabic (Buckwalter)"; + + key {[ Arabic_superscript_alef, Arabic_shadda ]}; + key {[ Arabic_1, none ]}; + key {[ Arabic_2, none ]}; + key {[ Arabic_3, none ]}; + key {[ Arabic_4, Arabic_sheen ]}; + key {[ Arabic_5, Arabic_percent ]}; + key {[ Arabic_6, none ]}; + key {[ Arabic_7, Arabic_hamzaonwaw ]}; + key {[ Arabic_8, Arabic_thal ]}; + key {[ Arabic_9, UFD3E ]}; // ﴾ (ornate left parenthesis) + key {[ Arabic_0, UFD3F ]}; // ﴿ (ornate right parenthesis) + key {[ minus, Arabic_tatweel ]}; + key {[ equal, plus ]}; + + key {[ Arabic_qaf, none ]}; + key {[ Arabic_waw, Arabic_hamzaonwaw ]}; + key {[ none, Arabic_ain ]}; + key {[ Arabic_ra, none ]}; + key {[ Arabic_teh, Arabic_tah ]}; + key {[ Arabic_yeh, Arabic_alefmaksura ]}; + key {[ Arabic_damma, none ]}; + key {[ Arabic_kasra, Arabic_hamzaunderalef ]}; + key {[ Arabic_sukun, Arabic_hamzaonalef ]}; + key {[ Arabic_tehmarbuta,none ]}; + key {[ none, U0671 ]}; // ٱ (Alef wasla) + key {[ none, Arabic_hamzaonyeh ]}; + + key {[ Arabic_fatha, Arabic_alef ]}; + key {[ Arabic_seen, Arabic_sad ]}; + key {[ Arabic_dal, Arabic_dad ]}; + key {[ Arabic_feh, Arabic_fathatan ]}; + key {[ Arabic_ghain, none ]}; + key {[ Arabic_ha, Arabic_hah ]}; + key {[ Arabic_jeem, none ]}; + key {[ Arabic_kaf, Arabic_kasratan ]}; + key {[ Arabic_lam, none ]}; + key {[ Arabic_semicolon, none ]}; + key {[ Arabic_hamza, none ]}; + key {[ none, Arabic_maddaonalef ]}; + + key {[ Arabic_zain, Arabic_zah ]}; + key {[ Arabic_khah, none ]}; + key {[ none, none ]}; + key {[ Arabic_theh, none ]}; + key {[ Arabic_beh, none ]}; + key {[ Arabic_noon, Arabic_dammatan ]}; + key {[ Arabic_meem, none ]}; + key {[ Arabic_comma, Arabic_hamzaunderalef ]}; + key {[ Arabic_fullstop, Arabic_hamzaonalef ]}; + key {[ none, Arabic_question_mark ]}; +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + + include "ara(basic)" + + name[Group1]= "Arabic (OLPC)"; + + // This OLPC layout comprises the following changes in comparison to the default Arabic one: + // ‣ Arabic and European digits are swapped (which entails swapping of the percent and permille signs). + // ‣ Lām-ʾalif is eliminated. People type as they pronounce, and lam-alef is just a visual formatting of the + // sequence and thus arguably not used on the keyboard. This frees four slots which are used for the following three changes. + // ‣ The characters move: + // • Thal from to + // • Shadda from to + // ‣ £ and € obtain the and keys, the ^ and & signs previously occupying them take seat at and . + // ‣ The key gets grave ` and asciitilde ~ as on English keyboards. + // ‣ In sum the grave and asciitilde are present twice, as their erstwhile places are not removed. + // ‣ The braces }{ take the place of the less-than and greater-than >< signs, + // but these the place of kasra and kasratan which establish themselves in the braces’ former steads. + // ‣ The … character on is replaced by |, because OLPC laptops have no key installed where the bar is else placed. + + key {[ grave, asciitilde, percent, permille ]}; + + key {[ Arabic_1, exclam, 1 ]}; + key {[ Arabic_2, at, 2 ]}; + key {[ Arabic_3, numbersign, 3 ]}; + key {[ Arabic_4, dollar, 4 ]}; + key {[ Arabic_5, Arabic_percent, 5, U0609 ]}; + key {[ Arabic_6, sterling, 6 ]}; + key {[ Arabic_7, EuroSign, 7 ]}; + key {[ Arabic_8, asterisk, 8 ]}; + key {[ Arabic_9, parenright, 9 ]}; + key {[ Arabic_0, parenleft, 0 ]}; + + key {[ Arabic_feh, Arabic_shadda ]}; + + key {[ Arabic_jeem, braceright ]}; + key {[ Arabic_dal, braceleft ]}; + + key {[ Arabic_sheen, greater ]}; + key {[ Arabic_seen, less ]}; + key {[ Arabic_lam, ampersand ]}; + key {[ backslash, bar ]}; + + key {[ Arabic_hamzaonwaw, Arabic_kasra ]}; + key {[ Arabic_ra, Arabic_kasratan ]}; + key {[ Arabic_thal, asciicircum ]}; + + include "group(olpc)" +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + // This layout is compatible with macbooks. + + include "ara(digits)" + + name[Group1]= "Arabic (Macintosh)"; + + key {[ Arabic_tatweel, none ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ Arabic_theh, Arabic_kasra ]}; + key {[ Arabic_qaf, Arabic_kasratan ]}; + key {[ Arabic_feh, Arabic_damma ]}; + key {[ Arabic_ghain, Arabic_dammatan ]}; + key {[ Arabic_ain, Arabic_sukun ]}; + key {[ Arabic_ha, Arabic_shadda ]}; + key {[ Arabic_khah, bracketright ]}; + key {[ Arabic_hah, bracketleft ]}; + key {[ Arabic_jeem, braceright ]}; + key {[Arabic_tehmarbuta, braceleft ]}; + + key {[ Arabic_sheen, guillemotright ]}; + key {[ Arabic_seen, guillemotleft ]}; + key {[ Arabic_yeh, Arabic_alefmaksura ]}; + key {[ Arabic_beh, 0x1000670 ]}; + key {[ Arabic_lam, none ]}; + key {[ Arabic_alef, Arabic_maddaonalef ]}; + key {[ Arabic_teh, 0x1000671 ]}; + key {[ Arabic_noon, none ]}; + key {[ Arabic_meem, none ]}; + key {[ Arabic_kaf, colon ]}; + key {[ Arabic_semicolon, quotedbl ]}; + key {[ backslash, bar ]}; + + key {[ Arabic_tatweel, none ]}; + key {[ Arabic_zah, none ]}; + key {[ Arabic_tah, none ]}; + key {[ Arabic_thal, Arabic_hamzaonyeh ]}; + key {[ Arabic_dal, Arabic_hamza ]}; + key {[ Arabic_zain, Arabic_hamzaonalef ]}; + key {[ Arabic_ra, Arabic_hamzaunderalef ]}; + key {[ Arabic_waw, Arabic_hamzaonwaw ]}; + key {[ Arabic_comma, greater ]}; + key {[ period, less ]}; + key {[ slash, Arabic_question_mark ]}; +}; + +// Macintosh Arabic QWERTY layout +// https://github.com/unicode-org/cldr/blob/release-43/keyboards/osx/ar-t-k0-osx-qwerty.xml +// LSGT is modified to match TLDE rather than having ^C on all levels + +partial alphanumeric_keys +xkb_symbols "mac-phonetic" { + name[Group1]= "Arabic (Macintosh, phonetic)"; + + key {[ Arabic_tatweel, Arabic_tatweel, greater, less ]}; + key {[ Arabic_1, exclam, Arabic_hamzaunderalef, exclam, 1 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ Arabic_2, Arabic_hamza, U274A, U274A, 2 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ Arabic_3, Arabic_hamzaonalef, numbersign, numbersign, 3 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ Arabic_4, Arabic_maddaonalef, dollar, EuroSign, 4 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ Arabic_5, Arabic_hamzaunderalef, Arabic_percent, Arabic_percent, 5 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ Arabic_6, Arabic_hamzaonyeh, ampersand, ampersand, 6 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ Arabic_7, Arabic_hamzaonwaw, asciicircum, asciicircum, 7 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ Arabic_8, Arabic_alefmaksura, asterisk, asterisk, 8 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ Arabic_9, parenright, parenright, parenright, 9 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ Arabic_0, parenleft, parenleft, parenleft, 0 ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ minus, underscore, underscore, underscore ]}; + key {[ equal, plus, plus, plus ]}; + + key {[ Arabic_qaf, Arabic_veh, Arabic_veh, Arabic_gaf ]}; + key {[ Arabic_sheen, Arabic_shadda, Arabic_shadda, Arabic_shadda ]}; + key {[ Arabic_ain, Arabic_ghain, Arabic_farsi_yeh, none ]}; + key {[ Arabic_ra, Arabic_zain, Arabic_ghain, Arabic_rreh ]}; + key {[ Arabic_teh, Arabic_theh, Arabic_tah, Arabic_tehmarbuta ]}; + key {[ Arabic_tah, Arabic_zah, Arabic_theh, Arabic_alefmaksura ]}; + key {[ Arabic_waw, Arabic_yeh_baree, Arabic_damma, Arabic_dammatan ]}; + key {[ Arabic_yeh, Arabic_alefmaksura, Arabic_kasra, Arabic_kasratan ]}; + key {[ Arabic_ha, Arabic_tehmarbuta, Arabic_sukun, U06D5 ]}; + key {[ Arabic_tehmarbuta, Arabic_teh, Arabic_shadda, Arabic_peh ]}; + key {[ Arabic_theh, braceright, bracketright, braceright ]}; + key {[ Arabic_zah, braceleft, bracketleft, braceleft ]}; + key {[ dead_hamza, Arabic_hamzaunderalef, Arabic_hamzaonalef, Arabic_maddaonalef ]}; + + key {[ Arabic_alef, Arabic_maddaonalef, Arabic_fatha, Arabic_fathatan ]}; + key {[ Arabic_seen, Arabic_sheen, Arabic_sad, Arabic_shadda ]}; + key {[ Arabic_dal, Arabic_thal, Arabic_dad, Arabic_ddal ]}; + key {[ Arabic_feh, Arabic_qaf, Arabic_veh, Arabic_veh ]}; + key {[ Arabic_ghain, Arabic_ain, Arabic_ain, Arabic_gaf ]}; + key {[ Arabic_hah, Arabic_khah, Arabic_ha, Arabic_tcheh ]}; + key {[ Arabic_jeem, Arabic_tcheh, Arabic_khah, Arabic_jeh ]}; + key {[ Arabic_kaf, Arabic_gaf, Arabic_khah, Arabic_keheh ]}; + key {[ Arabic_lam, U274A, none, none ]}; + key {[ Arabic_semicolon, colon, none, none ]}; + key {[ apostrophe, quotedbl, U0671, none ]}; + + key {[ Arabic_tatweel, Arabic_tatweel, greater, less ]}; + key {[ Arabic_zain, Arabic_jeh, Arabic_zah, Arabic_jeh ]}; + key {[ Arabic_khah, Arabic_hah, Arabic_hah, none ]}; + key {[ Arabic_sad, Arabic_dad, Arabic_theh, Arabic_tcheh ]}; + key {[ Arabic_thal, Arabic_dal, Arabic_zah, Arabic_veh ]}; + key {[ Arabic_beh, Arabic_peh, Arabic_peh, Arabic_tteh ]}; + key {[ Arabic_noon, Arabic_theh, none, Arabic_noon_ghunna ]}; + key {[ Arabic_meem, Arabic_maddaonalef, Arabic_maddaonalef, Arabic_maddaonalef ]}; + key {[ Arabic_comma, greater, guillemotright, U274A ]}; + key {[ period, less, guillemotleft, none ]}; + key {[ backslash, Arabic_question_mark, slash, backslash ]}; + + key {[ space, space, nobreakspace, nobreakspace ]}; + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/ara(sun_type6)" +}; + +partial alphanumeric_keys +xkb_symbols "basic_ext" { + + name[Group1]= "Arabic (Arabic numerals, extensions in the 4th level)"; + + key.type[Group1]="FOUR_LEVEL"; + + key {[ Arabic_thal, Arabic_shadda, Arabic_percent, Arabic_ddal ]}; // ‎ذ‎ ‎◌ّ‎ ‎٪‎ ‎ڈ‎ + key {[ 1, exclam, Arabic_1, Farsi_1 ]}; // 1 ! ١ ۱ + key {[ 2, at, Arabic_2, Farsi_2 ]}; // 2 @ ٢ ۲ + key {[ 3, numbersign, Arabic_3, Farsi_3 ]}; // 3 # ٣ ۳ + key {[ 4, dollar, Arabic_4, Farsi_4 ]}; // 4 $ ٤ ۴ + key {[ 5, percent, Arabic_5, Farsi_5 ]}; // 5 % ٥ ۵ + key {[ 6, Farsi_yeh, Arabic_6, Farsi_6 ]}; // 6 ‎ی‎ ٦ ۶ + key {[ 7, ampersand, Arabic_7, Farsi_7 ]}; // 7 & ٧ ۷ + key {[ 8, asterisk, Arabic_8, Farsi_8 ]}; // 8 * ٨ ۸ + key {[ 9, parenright, Arabic_9, Farsi_9 ]}; // 9 ) ٩ ۹ + key {[ 0, parenleft, Arabic_0, Farsi_0 ]}; // 0 ( ٠ ۰ + key {[ minus, underscore, endash, U2011 ]}; // - _ – Non-Breaking-Hyphen + key {[ equal, plus, notequal, U2248 ]}; // = + ≠ ≈ + + key {[ Arabic_dad, Arabic_fatha, U0689, U2066 ]}; // ‎ض‎ ‎◌َ ډ LEFT‑TO‑RIGHT ISOLATE + key {[ Arabic_sad, Arabic_fathatan, U06D5, U2067 ]}; // ‎ص‎ ‎◌ً ە RIGHT‑TO‑LEFT ISOLATE + key {[ Arabic_theh, Arabic_damma, U067F, U2068 ]}; // ‎ث‎ ‎◌ُ ٿ FIRST STRONG ISOLATE + key {[ Arabic_qaf, Arabic_dammatan, U06A6, U2069 ]}; // ‎ق‎ ‎◌ٌ ڦ POP DIRECTIONAL ISOLATE + key {[ Arabic_feh, UFEF9, Arabic_veh, U068D ]}; // ‎ف‎ ‎ﻹ ‎ڤ ‎ڍ‎ + key {[ Arabic_ghain,Arabic_hamzaunderalef, U0685, U202A ]}; // ‎غ‎ ‎إ‎ ‎څ‎ LEFT-TO-RIGHT-EMBEDDING + key {[ Arabic_ain, Arabic_rreh, Arabic_heh_goal, U202B ]}; // ‎ع‎ ‎ڑ‎ ‎ہ‎ RIGHT-TO-LEFT EMBEDDING + key {[ Arabic_ha, division, Arabic_heh_doachashmee, U202C ]}; // ‎ه‎ ÷ ‎ھ‎ POP DIRECTIONAL FORMATTING + key {[ Arabic_khah, multiply, U0681, U0687 ]}; // ‎خ‎ × ‎ځ‎ ‎ڇ‎ + key {[ Arabic_hah, Arabic_semicolon, U0683, U200E ]}; // ‎ح‎ ؛ ‎ڃ‎ LEFT-TO-RIGHT MARK + key {[ Arabic_jeem, less, Arabic_tcheh, U200F ]}; // ‎ج‎ < ‎چ‎ RIGHT-TO-LEFT MARK + key {[ Arabic_dal, greater, U0684, U061C ]}; // ‎د‎ > ‎ڄ‎ ARABIC LETTER MARK + + key {[ Arabic_sheen, Arabic_kasra, U06C6, U06C9 ]}; // ‎ش‎ ‎◌ِ‎ ‎ۆ‎ ‎ۉ‎ + key {[ Arabic_seen, Arabic_kasratan, U067C, U0680 ]}; // ‎س‎ ‎◌ٍ‎ ‎ټ‎ ‎ڀ‎ + key {[ Arabic_yeh, bracketright, U06D0, U06CD ]}; // ‎ي‎ ] ‎ې‎ ‎ۍ‎ + key {[ Arabic_beh, bracketleft, Arabic_peh, U067B ]}; // ‎ب‎ [ ‎پ‎ ‎ٻ‎ + key {[ Arabic_lam, UFEF7, U076A, U0658 ]}; // ‎ل‎ ‎ﻷ‎ ‎ݪ‎ ٘‎◌‎ + key {[ Arabic_alef, Arabic_hamzaonalef, U0671, Arabic_noon_ghunna ]}; // ‎ا‎ ‎أ ‎ٱ‎ ‎ں‎ + key {[ Arabic_teh, Arabic_tatweel, U067D, U067A ]}; // ‎ت‎ ‎ـ‎ ‎ٽ‎ ٺ‎ + key {[ Arabic_noon, Arabic_comma, U066B, U06BB ]}; // ‎ن‎ ‎،‎ ‎٫‎ ڻ‎ + key {[ Arabic_meem, slash, U06B3, U06B1 ]}; // ‎م‎ / ‎ڳ‎ ‎ڱ‎ + key {[ Arabic_kaf, colon, Arabic_gaf, Arabic_keheh ]}; // ‎ك‎ : ‎گ‎ ‎ک‎ + key {[ Arabic_tah, quotedbl, U27E9, U200D ]}; // ‎ط‎ " ⟩ ZWJ + key {[ backslash, bar, U27E8, U202F ]}; // \ | ⟨ NNBSP + + key {[ bar, ellipsis, U06C0, U0620 ]}; // | … ‎ۀ‎ ‎ؠ‎ + key {[Arabic_hamzaonyeh, asciitilde, guillemotright, U203A ]}; // ‎ئ‎ ~ » › + key {[ Arabic_hamza, Arabic_sukun, guillemotleft, U2039 ]}; // ‎ء‎ ◌ْ « ‹ + key {[Arabic_hamzaonwaw, braceright, U06C7, U0677 ]}; // ‎ؤ } ‎ۇ‎ ‎ٷ‎ + key {[ Arabic_ra, braceleft, U0693, U0699 ]}; // ‎ر‎ { ‎ړ ‎ڙ‎ + key {[ UFEFB, UFEF5, U06AB, U06AD ]}; // ‎ﻻ‎ ‎ﻵ‎ ‎ګ‎ ‎ڭ‎ + key {[Arabic_alefmaksura, Arabic_maddaonalef, Arabic_superscript_alef, Arabic_yeh_baree ]}; // ‎ى‎ ‎آ‎ ‎◌ٰ‎ ‎ے‎ + key {[Arabic_tehmarbuta, apostrophe, Arabic_fullstop, U06AA ]}; // ‎ة‎ ' ۔ ‎ڪ‎ + key {[ Arabic_waw, comma, U066C, U06CB ]}; // ‎و‎ , ‎٬‎ ‎ۋ‎ + key {[ Arabic_zain, period, Arabic_jeh, U0696 ]}; // ‎ز‎ . ‎ژ‎ ‎ږ‎ + key {[ Arabic_zah, Arabic_question_mark, Arabic_tteh, U200C ]}; // ‎ظ‎ ‎؟‎ ‎ٹ‎ ZWNJ + + include "level3(ralt_switch)" +}; + + +// Replaces the Western numeral signs with Arabic-script digits on the numeric row, +// pushing the Western digits to the third level accessible by the right alt key. +// The alternative numeral glyphs used in some languages that employ the Arabic script +// are featured in the fourth layer. +partial alphanumeric_keys +xkb_symbols "basic_ext_digits" { + + include "ara(basic_ext)" + + name[Group1]= "Arabic (Eastern Arabic numerals, extensions in the 4th level)"; + + key {[Arabic_thal, Arabic_shadda, percent, Arabic_ddal ]}; + key {[ Arabic_1, exclam, 1, Farsi_1 ]}; + key {[ Arabic_2, at, 2, Farsi_2 ]}; + key {[ Arabic_3, numbersign, 3, Farsi_3 ]}; + key {[ Arabic_4, dollar, 4, Farsi_4 ]}; + key {[ Arabic_5, Arabic_percent, 5, Farsi_5 ]}; + key {[ Arabic_6, Farsi_yeh, 6, Farsi_6 ]}; + key {[ Arabic_7, ampersand, 7, Farsi_7 ]}; + key {[ Arabic_8, asterisk, 8, Farsi_8 ]}; + key {[ Arabic_9, parenright, 9, Farsi_9 ]}; + key {[ Arabic_0, parenleft, 0, Farsi_0 ]}; + + include "ara(digits_KP)" +}; + +// An Ergonomic implementation of the basic Arabic keyboard (PC). Brings all letters to the middle 30 keys. +xkb_symbols "ergoarabic" { + include "ara(basic)" + name[Group1]= "Arabic (ErgoArabic)"; + + key {[ grave, asciitilde, any, any ]}; + + key {[ Arabic_dal, Arabic_thal, any, U2066 ]}; + key {[ Arabic_sad, Arabic_dad, any, U2067 ]}; + key {[ Arabic_feh, Arabic_shadda, Arabic_veh, any ]}; + key {[ Arabic_hamza, Arabic_hamzaunderalef, any, U202A ]}; + key {[ Arabic_ain, Arabic_ghain, any, U202B ]}; + key {[ Arabic_ha, division, any, U202C ]}; + key {[ Arabic_waw, Arabic_hamzaonwaw, any, any ]}; + key {[ Arabic_tehmarbuta, Arabic_semicolon, any, U200E ]}; + key {[ bracketright, braceright, any, U200F ]}; + key {[ bracketleft, braceleft, any, U061C ]}; + + key {[ Arabic_yeh, Arabic_fatha, any, any ]}; + key {[ Arabic_beh, Arabic_fathatan, Arabic_peh, any ]}; + key {[ Arabic_lam, Arabic_maddaonalef,Arabic_superscript_alef, any ]}; + key {[ Arabic_teh, Arabic_tatweel, any, any ]}; + key {[ Arabic_noon, multiply, U066B, any ]}; + key {[ Arabic_meem, comma, any, any ]}; + key {[ Arabic_kaf, colon, Arabic_gaf, any ]}; + key {[ apostrophe, quotedbl, U27E9, U200D ]}; + key {[ backslash, bar, U27E8, U202F ]}; + + key {[ Arabic_hamzaonyeh, any, U203A, any ]}; + key {[Arabic_alefmaksura, Arabic_sukun, U2039, any ]}; + key {[ Arabic_tah, Arabic_zah, any, any ]}; + key {[ Arabic_ra, Arabic_zain, Arabic_jeh, any ]}; + key {[ Arabic_khah, ellipsis, any, any ]}; + key {[ Arabic_hah, guillemotright, any, any ]}; + key {[ Arabic_jeem, guillemotleft, Arabic_tcheh, any ]}; + key {[ Arabic_comma, greater, any, any ]}; + key {[ period, less, any, any ]}; + key {[ slash, Arabic_question_mark, U066D, U200C ]}; +}; diff --git a/nixos/xkb/symbols/at b/nixos/xkb/symbols/at new file mode 100644 index 00000000..b82959e3 --- /dev/null +++ b/nixos/xkb/symbols/at @@ -0,0 +1,25 @@ +// Keyboard layouts for Austria. + +default +xkb_symbols "basic" { + + include "de(basic)" + + name[Group1]="German (Austria)"; +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "de(nodeadkeys)" + + name[Group1]="German (Austria, no dead keys)"; +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + include "de(mac)" + + name[Group1]= "German (Austria, Macintosh)"; +}; diff --git a/nixos/xkb/symbols/au b/nixos/xkb/symbols/au new file mode 100644 index 00000000..00ff0871 --- /dev/null +++ b/nixos/xkb/symbols/au @@ -0,0 +1,9 @@ +// Keyboard layout for Australia. + +// The default Australian layout is the same as the American. +default partial alphanumeric_keys +xkb_symbols "basic" { + include "us(basic)" + + name[Group1]= "English (Australia)"; +}; diff --git a/nixos/xkb/symbols/az b/nixos/xkb/symbols/az new file mode 100644 index 00000000..4233b365 --- /dev/null +++ b/nixos/xkb/symbols/az @@ -0,0 +1,91 @@ +// Keyboard layouts for Azerbaijan. + +// Azerbaijani layout, based on the AZS 495-2010 standard. +// 2001 - Pablo Saratxaga +// 2015 - Adil Aliyev +default partial alphanumeric_keys +xkb_symbols "latin" { + + include "us" + + name[Group1]= "Azerbaijani"; + + key {[ 2, quotedbl, at ]}; + key {[ 3, numerosign ]}; + key {[ 4, semicolon, U20BC ]}; // ₼ (manat sign) + key {[ 6, colon ]}; + key {[ 7, question ]}; + + key {[ udiaeresis, Udiaeresis ]}; + key {[ i, Iabovedot ]}; + key {[ odiaeresis, Odiaeresis ]}; + key {[ gbreve, Gbreve ]}; + key {[ backslash, slash ]}; + + key {[ idotless, I ]}; + key {[ schwa, SCHWA ]}; + + key {[ ccedilla, Ccedilla ]}; + key {[ scedilla, Scedilla ]}; + key {[ period, comma ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "cyrillic" { + + name[Group1]= "Azerbaijani (Cyrillic)"; + + key {[ grave, asciitilde ]}; + key {[ 1, exclam ]}; + key {[ 2, quotedbl, at ]}; // @ + key {[ 3, numbersign ]}; + key {[ 4, semicolon, U20BC ]}; // ₼ + key {[ 5, percent ]}; + key {[ 6, colon ]}; + key {[ 7, question ]}; + key {[ 8, asterisk, braceleft ]}; + key {[ 9, parenleft, bracketleft ]}; + key {[ 0, parenright, bracketright ]}; + key {[ minus, underscore, braceright ]}; + key {[ equal, plus ]}; + + key {[ Cyrillic_je, Cyrillic_JE ]}; + key {[Cyrillic_u_straight,Cyrillic_U_straight]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shha, Cyrillic_SHHA ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_che_vertstroke, Cyrillic_CHE_vertstroke ]}; + + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_ka_vertstroke, Cyrillic_KA_vertstroke ]}; + + key {[ Cyrillic_schwa, Cyrillic_SCHWA ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_ghe_bar, Cyrillic_GHE_bar ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_o_bar, Cyrillic_O_bar ]}; + key {[ period, comma ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/ba b/nixos/xkb/symbols/ba new file mode 100644 index 00000000..f5f7f0a6 --- /dev/null +++ b/nixos/xkb/symbols/ba @@ -0,0 +1,36 @@ +// Keyboard layouts for Bosnia. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "rs(latin)" + name[Group1]="Bosnian"; +}; + +partial alphanumeric_keys +xkb_symbols "us" { + + include "rs(latinyz)" + name[Group1]= "Bosnian (US)"; +}; + +partial alphanumeric_keys +xkb_symbols "alternatequotes" { + + include "rs(latinalternatequotes)" + name[Group1]= "Bosnian (with guillemets)"; +}; + +partial alphanumeric_keys +xkb_symbols "unicode" { + + include "rs(latinunicode)" + name[Group1]= "Bosnian (with Bosnian digraphs)"; +}; + +partial alphanumeric_keys +xkb_symbols "unicodeus" { + + include "rs(latinunicodeyz)" + name[Group1]= "Bosnian (US, with Bosnian digraphs)"; +}; diff --git a/nixos/xkb/symbols/bd b/nixos/xkb/symbols/bd new file mode 100644 index 00000000..0ec0b999 --- /dev/null +++ b/nixos/xkb/symbols/bd @@ -0,0 +1,81 @@ +// Keyboard layouts for Bangladesh. + +// National Bangla/Bengali Standard keyboard layout, +// developed by the Bangladesh Computer Council (BCC). +// http://www.bcc.net.bd/keyboard/bsti_kb_specification.pdf +// +// Original author: Jamil Ahmed , 2006. +// +// Issues: +// has U+09B3 even though it is not allocated in Unicode; +// has U+09BB even though it is not allocated in Unicode; +// has U+09CE (Khanda-Ta), but BCC had the unallocated U+09BA there. +// +// Three double characters (conjuncts), on the third level of and the +// third and fourth levels of , are not included as XKB cannot do this. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Bangla"; + + key {[ grave, asciitilde, none, none ]}; + key {[ U09E7, exclam, U09F4, none ]}; + key {[ U09E8, at, U09F5, none ]}; + key {[ U09E9, numbersign, U09F6, none ]}; + key {[ U09EA, dollar, U09F3, U09F2 ]}; + key {[ U09EB, percent, U09F7, none ]}; + key {[ U09EC, asciicircum, U09F8, U09B3 ]}; + key {[ U09ED, ampersand, U0902, none ]}; + key {[ U09EE, asterisk, none, none ]}; + key {[ U09EF, parenleft, none, none ]}; + key {[ U09E6, parenright, U09F9, none ]}; + key {[ minus, underscore, U200C, none ]}; + key {[ equal, plus, U200D, none ]}; + + key {[ U0999, U0982, U09E2, U09E3 ]}; + key {[ U09AF, U09DF, none, none ]}; + key {[ U09A1, U09A2, U09C4, none ]}; + key {[ U09AA, U09AB, none, none ]}; + key {[ U099F, U09A0, none, none ]}; + key {[ U099A, U099B, none, none ]}; + key {[ U099C, U099D, none, none ]}; + key {[ U09B9, U099E, U09BD, none ]}; + key {[ U0997, U0998, none, none ]}; + key {[ U09DC, U09DD, none, none ]}; + key {[ bracketleft, braceleft, none, none ]}; + key {[ bracketright, braceright, none, none ]}; + + key {[ U09C3, U09D7, U098B, U09E0 ]}; + key {[ U09C1, U09C2, U0989, U098A ]}; + key {[ U09BF, U09C0, U0987, U0988 ]}; + key {[ U09AC, U09AD, U09F0, U09F1 ]}; + key {[ U09CD, U0964, U0965, none ]}; + key {[ U09BE, U0985, U0986, none ]}; + key {[ U0995, U0996, U09BB, none ]}; + key {[ U09A4, U09A5, U09CE, none ]}; + key {[ U09A6, U09A7, U098C, U09E1 ]}; + key {[ semicolon, colon, none, none ]}; + key {[ apostrophe, quotedbl, none, none ]}; + key {[ backslash, bar, none, none ]}; + + key {[ U0981, U0983, U09FA, none ]}; + key {[ U09CB, U09CC, U0993, U0994 ]}; + key {[ U09C7, U09C8, U098F, U0990 ]}; + key {[ U09B0, U09B2, none, none ]}; + key {[ U09A8, U09A3, none, none ]}; + key {[ U09B8, U09B7, none, none ]}; + key {[ U09AE, U09B6, none, none ]}; + key {[ comma, less, none, none ]}; + key {[ period, greater, U09BC, none ]}; + key {[ slash, question, none, none ]}; + + include "level3(ralt_switch)" +}; + + +// Probhat keyboard layout for Bangla/Bengali. +xkb_symbols "probhat" { + include "in(ben_probhat)" + name[Group1]= "Bangla (Probhat)"; +}; diff --git a/nixos/xkb/symbols/be b/nixos/xkb/symbols/be new file mode 100644 index 00000000..2bb5d1e7 --- /dev/null +++ b/nixos/xkb/symbols/be @@ -0,0 +1,184 @@ +// Keyboard layouts for Belgium. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin" + + name[Group1]="Belgian"; + + key {[twosuperior, threesuperior, notsign, notsign ]}; + key {[ ampersand, 1, bar, exclamdown ]}; + key {[ eacute, 2, at, oneeighth ]}; + key {[ quotedbl, 3, numbersign, sterling ]}; + key {[ apostrophe, 4, onequarter, dollar ]}; + key {[ parenleft, 5, onehalf, threeeighths ]}; + key {[ section, 6, asciicircum, fiveeighths ]}; + key {[ egrave, 7, braceleft, seveneighths ]}; + key {[ exclam, 8, bracketleft, trademark ]}; + key {[ ccedilla, 9, braceleft, plusminus ]}; + key {[ agrave, 0, braceright, degree ]}; + key {[ parenright, degree, backslash, questiondown ]}; + key {[ minus, underscore, dead_cedilla, dead_ogonek ]}; + + key {[ a, A, at, Greek_OMEGA ]}; + key {[ z, Z, U017F, section ]}; + key {[ e, E, EuroSign, cent ]}; + key {[ o, O, oe, OE ]}; + key {[dead_circumflex, dead_diaeresis, bracketleft, dead_abovering]}; + key {[ dollar, asterisk, bracketright, dead_macron ]}; + + key {[ q, Q, ae, AE ]}; + key {[ m, M, dead_acute, dead_doubleacute]}; + key {[ ugrave, percent, dead_acute, dead_caron ]}; + key {[ mu, sterling, dead_grave, dead_breve ]}; + + key {[ less, greater, backslash, backslash ]}; + key {[ w, W, guillemotleft, less ]}; + key {[ comma, question, dead_cedilla, masculine ]}; + key {[ semicolon, period, U2022, multiply ]}; // bullet + key {[ colon, slash, periodcentered, division ]}; + key {[ equal, plus, dead_tilde, dead_abovedot]}; + + include "level3(ralt_switch)" +}; + + +// Variant of the fr(oss) layout for Belgium +// Copyright © 2006 Nicolas Mailhot +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ³ ≤ │ 1 ≥ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ™ │ 7 È │ 8 ¡ │ 9 Ç │ 0 À │ ° Ø │ _ ± ┃ ⌫ Retour┃ +// │ ² ¹ │ & | │ é @ │ " # │ ' ¸ │ ( ˇ │ § ^ │ è ` │ ! ~ │ ç { │ à } │ ) ø │ - ‑ ┃ arrière┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ A Æ │ Z  │ E ¢ │ R Ê │ T Þ │ Y Ÿ │ U Û │ I Î │ O Œ │ P Ô │ ¨ ˚ │ * ̨ ┃Entrée ┃ +// ┃Tab ↹ ┃ a æ │ z â │ e € │ r ê │ t þ │ y ÿ │ u û │ i î │ o œ │ p ô │ ^ [ │ $ ] ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ Q Ä │ S „ │ D Ë │ F ‚ │ G ¥ │ H Ð │ J Ü │ K Ï │ L │ M Ö │ % Ù │ £ ̄ ┃ ┃ +// ┃Maj ⇬ ┃ q ä │ s ß │ d ë │ f ‘ │ g ’ │ h ð │ j ü │ k ï │ l / │ m ö │ ù ' │ µ ` ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ > ≠ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N → │ ? … │ . . │ / ∕ │ + − ┃ ┃ +// ┃Shift ⇧┃ < \ │ w « │ x » │ c © │ v ⍽ │ b ↓ │ n ¬ │ , ¿ │ ; × │ : ÷ │ = ~ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ␣ Espace insécable ⍽ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Espace ␣ ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ +partial alphanumeric_keys +xkb_symbols "oss" { + + include "fr(oss)" + include "be(oss_frbe)" + + name[Group1]="Belgian (alt.)"; +}; + +partial alphanumeric_keys +xkb_symbols "oss_frbe" { + + key {[ twosuperior, threesuperior, onesuperior, lessthanequal ]}; // ² ³ ¹ ≤ + key {[ ampersand, 1, bar, greaterthanequal ]}; // & 1 | ≥ + key {[ eacute, 2, at, Eacute ]}; // é 2 @ É + key {[ apostrophe, 4, dead_cedilla, U2014 ]}; // ' 4 ¸ — (tiret cadratin) + key {[ parenleft, 5, dead_caron, U2013 ]}; // ( 5 ˇ – (tiret demi-cadratin) + key {[ section, 6, asciicircum, trademark ]}; // § 6 ^ ™ + key {[ exclam, 8, asciitilde, exclamdown ]}; // ! 8 ~ ¡ + key {[ ccedilla, 9, braceleft, Ccedilla ]}; // ç 9 { Ç + key {[ agrave, 0, braceright, Agrave ]}; // à 0 } À + key {[ parenright, degree, oslash, Oslash ]}; // ) ° ø Ø + key {[ minus, underscore, U2011, plusminus ]}; // - _ - ± (tiret insécable) + + key {[ dead_circumflex, dead_diaeresis, bracketleft, dead_abovering ]}; // ^ ̈ [ ˚ + key {[ dollar, asterisk, bracketright, dead_ogonek ]}; // $ * ] ̨ + + key {[ l, L, dead_stroke ]}; + key {[ mu, sterling, dead_grave, dead_macron ]}; // µ £ ` ̄ + + key {[ less, greater, backslash, notequal ]}; // < > \ ≠ + key {[ equal, plus, dead_tilde, U2212 ]}; // = + ~ − +}; + + +partial alphanumeric_keys +xkb_symbols "oss_latin9" { + + // Restricts the be(oss) layout to latin9 symbols + + include "fr(oss_latin9)" + include "be(oss_frbe)" + include "keypad(oss_latin9)" + + name[Group1]="Belgian (Latin-9 only, alt.)"; + + key {[ twosuperior, threesuperior, onesuperior, less ]}; // ² ³ ¹ < + key {[ ampersand, 1, bar, greater ]}; // & 1 | > + key {[ apostrophe, 4, dead_cedilla, minus ]}; // ' 4 ¸ - + key {[ parenleft, 5, dead_caron, minus ]}; // ( 5 ˇ - + key {[ section, 6, asciicircum, asciicircum ]}; // § 6 ^ ^ + key {[ minus, underscore, minus, plusminus ]}; // - _ - ± + + key {[ dollar, asterisk, bracketright, dead_cedilla ]}; // $ * ] ¸ + + key {[ l, L, l, L ]}; // l L l L + key {[ mu, sterling, dead_grave, dead_circumflex ]}; // µ £ ` ^ + + key {[ less, greater, backslash, equal ]}; // < > \ = + key {[ equal, plus, dead_tilde, minus ]}; // = + ~ - +}; + + +partial alphanumeric_keys +xkb_symbols "iso-alternate" { + + include "be(basic)" + + name[Group1]="Belgian (ISO, alt.)"; + + key {[ a, A, ae, AE ]}; + key {[ z, Z, guillemotleft, less ]}; + key {[ q, Q, at, Greek_OMEGA ]}; + key {[ m, M, mu, masculine ]}; + key {[ w, W, lstroke, Lstroke ]}; + key {[ comma, question, dead_cedilla, dead_doubleacute ]}; +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + // Eliminates dead keys from the basic Belgian layout + + include "be(basic)" + + name[Group1]="Belgian (no dead keys)"; + + key {[ minus, underscore, cedilla, ogonek ]}; + key {[asciicircum, diaeresis, bracketleft, bracketleft ]}; + key {[ dollar, asterisk, bracketright, macron ]}; + key {[ j, J, ezh, EZH ]}; + key {[ m, M, acute, doubleacute ]}; + key {[ ugrave, percent, apostrophe, apostrophe ]}; + key {[ mu, sterling, grave, grave ]}; + key {[ comma, question, cedilla, masculine ]}; + key {[ equal, plus, asciitilde, asciitilde ]}; +}; + +// Wang model 724 Belgian azerty keyboard. +partial alphanumeric_keys +xkb_symbols "wang" { + + include "be(basic)" + include "keypad(legacy_wang)" + + name[Group1]="Belgian (Wang 724 AZERTY)"; + + // Engravings on Wang 725-3771-AE: + key {[ twosuperior, threesuperior, notsign, asciitilde ]}; + key {[ less, greater, backslash, brokenbar ]}; +}; + + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/be(sun_type6)" +}; diff --git a/nixos/xkb/symbols/bg b/nixos/xkb/symbols/bg new file mode 100644 index 00000000..9daeff23 --- /dev/null +++ b/nixos/xkb/symbols/bg @@ -0,0 +1,271 @@ +// Keyboard layouts for Bulgaria. + +////////////////////////////////////////////////////////////////////////// +// Copyright (C) 1999, 2000, 2007, 2009 by Anton Zinoviev +// +// This software may be used, modified, copied, distributed, and sold, +// both in source and binary form provided that the above copyright +// notice and these terms are retained. The name of the author may not +// be used to endorse or promote products derived from this software +// without prior permission. THIS SOFTWARE IS PROVIDED "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES ARE DISCLAIMED. IN NO EVENT +// SHALL THE AUTHOR BE LIABLE FOR ANY DAMAGES ARISING IN ANY WAY OUT +// OF THE USE OF THIS SOFTWARE. +// +////////////////////////////////////////////////////////////////////////// +// Version 2.0 + +// The following variants are defined in this file: + +// "bds" - the BDS keyboard layout compliant with the proposed +// Bulgarian state standard BDS 5237:2006 + +// "bekl" - the „enhanced“ variant of the Bulgarian BDS keyboard, +// proposed in May 2020. + +// "phonetic" - the phonetic Bulgarian layout with the traditional position +// of the letters + +// "bas_phonetic" - the phonetic keyboard layout compliant with the +// proposed Bulgarian state standard BDS 5237:2006 + +// "latin" - an extended variant of the QWERTY layout with symbols that +// Bulgarian users will type while the keyboard is in Latin mode + +// The reasons behind the layout of the symbols in levels 3 and 4 are +// explained in http://arxiv.org/abs/0905.0484 (in Bulgarian). + +// Two notes for the maintainers of xkeyboard-config: + +// 1. Please do not use key names such as for the Bulgarian +// phonetic layouts. The placement of the symbols must stay always +// the same regardless of which one of the alias sets in +// xkb/keycodes/aliases is used. + +// 2. The layouts should not include level3(ralt_switch). + +////////////////////////////////////////////////////////////////////////// + +// Describes Bulgarian keyboard "BDS" according to the new state standard +// BDS 5237:2006 and extended with symbols in levels 3 and 4. +default partial alphanumeric_keys +xkb_symbols "bds" { + + name[Group1]= "Bulgarian"; + + key {[ parenleft, parenright, bracketleft, bracketright ]}; + key {[ 1, exclam ]}; + key {[ 2, question ]}; + key {[ 3, plus, dagger, dagger ]}; + key {[ 4, quotedbl ]}; + key {[ 5, percent, U2329, U232A ]}; + key {[ 6, equal, emdash, emdash ]}; + key {[ 7, colon, ellipsis, ellipsis ]}; + key {[ 8, slash, U0300, U0301 ]}; + key {[ 9, endash ]}; + key {[ 0, numerosign ]}; + key {[ minus, dollar, U2011, EuroSign ]}; + key {[ period, EuroSign ]}; + + key {[ comma, Cyrillic_yeru, rightsinglequotemark, leftsinglequotemark ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E ]}; + key {[ Cyrillic_i, Cyrillic_I, U045D, U040D ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ Cyrillic_ka, Cyrillic_KA, copyright, copyright ]}; + key {[ Cyrillic_es, Cyrillic_ES, copyright, copyright ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ semicolon, section ]}; + + key {[ Cyrillic_softsign, U045D, Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_ya, Cyrillic_YA, U0463, U0462 ]}; + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_te, Cyrillic_TE, trademark, trademark ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ doublelowquotemark, leftdoublequotemark, guillemotleft, guillemotright ]}; + + key {[ U045D, U040D ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI, U046D, U046C ]}; + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN, U046B, U046A ]}; + key {[ Cyrillic_e, Cyrillic_E ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_er, Cyrillic_ER, registered, registered ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + + key {[ space, space, nobreakspace, nobreakspace ]}; + + key { type[Group1] = "KEYPAD", [ KP_Delete, KP_Separator ]}; +}; + +// This is a slightly enhanced variant of the Bulgarian BDS keyboard, +// proposed in May 2020 by a group of more than 500 linguists, teachers, +// writers, translators, IT specialists, professors and many more. +partial alphanumeric_keys +xkb_symbols "bekl" { + + include "bg(bds)" + + name[Group1]= "Bulgarian (enhanced)"; + + key {[ 2, question, at, at ]}; + key {[ comma, U02BC, rightsinglequotemark, leftsinglequotemark ]}; + key {[ U0463, U0462 ]}; +}; + + +// This is an improved variant of the traditional Bulgarian phonetic +// keyboard. Some unnecessary symbols in levels 1 and 2 are replaced +// by more useful ones (similar as in "bas_phonetic") and additional +// symbols are added in levels 3 and 4. +partial alphanumeric_keys +xkb_symbols "phonetic" { + name[Group1]= "Bulgarian (traditional phonetic)"; + + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ 1, exclam ]}; + key {[ 2, at ]}; + key {[ 3, numerosign ]}; + key {[ 4, dollar, EuroSign, EuroSign ]}; + key {[ 5, percent ]}; + key {[ 6, EuroSign ]}; + key {[ 7, section ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft, bracketleft, U2329 ]}; + key {[ 0, parenright, bracketright, U232A ]}; + key {[ minus, endash, U2011, U2011 ]}; + key {[ equal, plus, emdash, dagger ]}; + + key {[ Cyrillic_ya, Cyrillic_YA, U0463, U0462 ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E ]}; + key {[ Cyrillic_er, Cyrillic_ER, registered, registered ]}; + key {[ Cyrillic_te, Cyrillic_TE, trademark, trademark ]}; + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN, U046B, U046A ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_i, Cyrillic_I, U045D, U040D ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_es, Cyrillic_ES, copyright, copyright ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI, U046D, U046C ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ semicolon, colon, ellipsis, ellipsis ]}; + key {[ apostrophe, quotedbl, rightsinglequotemark, leftsinglequotemark ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + + key {[ U045D, U040D ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_softsign, U045D, Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_tse, Cyrillic_TSE, copyright, copyright ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ comma, doublelowquotemark, guillemotleft, guillemotleft ]}; + key {[ period, leftdoublequotemark, guillemotright, guillemotright ]}; + key {[ slash, question, U0300, U0301 ]}; + + key {[ space, space, nobreakspace, nobreakspace ]}; + + key { type[Group1] = "KEYPAD", [ KP_Delete, KP_Separator ]}; +}; + +// This is the Bulgarian phonetic keyboard according to the proposed +// state standard BDS 5237:2006 with additional symbols in levels 3 and 4. +partial alphanumeric_keys +xkb_symbols "bas_phonetic" { + include "bg(phonetic)" + name[Group1]= "Bulgarian (new phonetic)"; + + key {[ Cyrillic_yu, Cyrillic_YU ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_ya, Cyrillic_YA, U0463, U0462 ]}; + key {[ Cyrillic_softsign, U045D, Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; +}; + + +// This is an extended variant of the standard Latin QWERTY layout with +// additional symbols in levels 3 and 4. +hidden partial alphanumeric_keys +xkb_symbols "latin" { + + key {[ grave, asciitilde, U2248, U2245 ]}; + key {[ 1, exclam, notsign, notsign ]}; + key {[ 2, at, twosuperior, enfilledcircbullet ]}; + key {[ 3, numbersign, threesuperior, notequal ]}; + key {[ 4, dollar, EuroSign, sterling ]}; + key {[ 5, percent, permille, permille ]}; + key {[ 6, asciicircum, logicaland, logicalor ]}; + key {[ 7, ampersand, section, section ]}; + key {[ 8, asterisk, infinity, multiply ]}; + key {[ 9, parenleft, U2202, nabla ]}; + key {[ 0, parenright, U2300, U2300 ]}; + key {[ minus, underscore, U2011, endash ]}; + key {[ equal, plus, emdash, plusminus ]}; + + key {[ q, Q, Greek_THETA, Greek_theta ]}; + key {[ w, W, Greek_OMEGA, Greek_omega ]}; + key {[ e, E, U2203, Greek_epsilon ]}; + key {[ r, R, registered, Greek_rho ]}; + key {[ t, T, trademark, Greek_tau ]}; + key {[ y, Y, yen, Greek_upsilon ]}; + key {[ u, U, intersection, union ]}; + key {[ i, I, integral, Greek_iota ]}; + key {[ o, O, degree, U222E ]}; + key {[ p, P, Greek_PI, Greek_pi ]}; + key {[ bracketleft, braceleft, U2286, includedin ]}; + key {[ bracketright, braceright, U2208, U2209 ]}; + + key {[ a, A, U2200, Greek_alpha ]}; + key {[ s, S, Greek_SIGMA, Greek_sigma ]}; + key {[ d, D, Greek_DELTA, Greek_delta ]}; + key {[ f, F, Greek_PHI, Greek_phi ]}; + key {[ g, G, Greek_GAMMA, Greek_gamma ]}; + key {[ h, H, U2225, Greek_eta ]}; + key {[ j, J ]}; + key {[ k, K, U03F0, Greek_kappa ]}; + key {[ l, L, Greek_LAMBDA, Greek_lambda ]}; + key {[ semicolon, colon, division, division ]}; + key {[ apostrophe, quotedbl, leftdoublequotemark, rightdoublequotemark]}; + key {[ backslash, bar, identical, downtack ]}; + + key {[ less, greater, U2266, U2267 ]}; + key {[ z, Z, U2220, Greek_zeta ]}; + key {[ x, X, Greek_XI, Greek_xi ]}; + key {[ c, C, copyright, Greek_chi ]}; + key {[ v, V, Greek_PSI, Greek_psi ]}; + key {[ b, B, U03D1, Greek_beta ]}; + key {[ n, N, U207F, Greek_nu ]}; + key {[ m, M, Greek_mu, Greek_mu ]}; + key {[ comma, less, U2266, U21D4 ]}; + key {[ period, greater, U2267, U21D2 ]}; + key {[ slash, question, leftsinglequotemark, rightsinglequotemark]}; + + key {[ space, space, nobreakspace, nobreakspace ]}; + + key { type[Group1] = "KEYPAD", [ KP_Delete, KP_Decimal ]}; +}; diff --git a/nixos/xkb/symbols/bqn b/nixos/xkb/symbols/bqn new file mode 100644 index 00000000..c718839a --- /dev/null +++ b/nixos/xkb/symbols/bqn @@ -0,0 +1,84 @@ +// EXTRAS: +// +// BQN Keyboard Layouts +// +// Authors: Marshall Lochbaum +// dzaima +// Editors: B. Wilson +// Symbols: https://mlochbaum.github.io/BQN/help/index.html + +// ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬─────────┐ +// │ ¬ │ ⎉ │ ⚇ │ ⍟ │ ◶ │ ⊘ │ ⎊ │ ⍎ │ ⍕ │ ⟨ │ ⟩ │ √ │ ⋆ │ │ +// │ ˜ │ ˘ │ ¨ │ ⁼ │ ⌜ │ ´ │ ˝ │ │ ∞ │ ¯ │ • │ ÷ │ × │ │ +// ├────┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬──────┤ +// │ │ ↙ │ 𝕎 │ ⍷ │ 𝕣 │ ⍋ │ │ │ ⊑ │ ⊒ │ ⍳ │ ⊣ │ ⊢ │ │ +// │ │ ⌽ │ 𝕨 │ ∊ │ ↑ │ ∧ │ │ ⊔ │ ⊏ │ ⊐ │ π │ ← │ → │ │ +// ├───────┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴──────┤ +// │ │ ↖ │ 𝕊 │ │ 𝔽 │ 𝔾 │ « │ │ ⌾ │ » │ · │ ˙ │ │ +// │ │ ⍉ │ 𝕤 │ ↕ │ 𝕗 │ 𝕘 │ ⊸ │ ∘ │ ○ │ ⟜ │ ⋄ │ ↩ │ │ +// ├────────┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──────────┤ +// │ │ ⋈ │ 𝕏 │ │ ⍒ │ ⌈ │ │ ≢ │ ≤ │ ≥ │ ⇐ │ │ +// │ │ ⥊ │ 𝕩 │ ↓ │ ∨ │ ⌊ │ │ ≡ │ ∾ │ ≍ │ ≠ │ │ +// ├───────────┼────┼────┼────┼────┴────┴────┴────┼────┼────┼────┼────────────┤ +// │ │ │ │ │ │ │ │ │ │ +// │ │ │ │ │ ‿ │ │ │ │ │ +// └───────────┴────┴────┴────┴───────────────────┴────┴────┴────┴────────────┘ +// +// This layout is intended to be used as an overlay on top of a base layout. + +default partial alphanumeric_keys +xkb_symbols "bqn" { + name[Group1]= "BQN"; + + key { [ U0203F ] }; // space ‿ + key { [ U002DC, U000AC ] }; // `˜¬ + key { [ U002D8, U02389 ] }; // 1˘⎉ + key { [ U000A8, U02687 ] }; // 2¨⚇ + key { [ U0207C, U0235F ] }; // 3⁼⍟ + key { [ U0231C, U025F6 ] }; // 4⌜ + key { [ U000B4, U02298 ] }; // 5´⊘ + key { [ U002DD, U0238A ] }; // 6˝⎊ + key { [ U000AF, U0234E ] }; // 7 ⍎ + key { [ U0221E, U02355 ] }; // 8∞⍕ + key { [ U000AF, U027E8 ] }; // 9¯⟨ + key { [ U02022, U027E9 ] }; // 0•⟩ + key { [ U000F7, U0221A ] }; // -÷√ + key { [ U000D7, U022C6 ] }; // =×⋆ + + key { [ U0233D, U02199 ] }; // Q⌽↙ + key { [ U1D568, U1D54E ] }; // W𝕨𝕎 + key { [ U0220A, U02377 ] }; // E∊⍷ + key { [ U02191, U1D563 ] }; // R↑𝕣 + key { [ U02227, U0234B ] }; // T∧⍋ + key { [ ] }; // Y + key { [ U02294 ] }; // U⊔ + key { [ U0228F, U02291 ] }; // I⊏⊑ + key { [ U02290, U02292 ] }; // O⊐⊒ + key { [ U003C0, U02373 ] }; // Pπ⍳ + key { [ U02190, U022A3 ] }; // [←⊣ + key { [ U02192, U022A2 ] }; // ]→⊢ + + key { [ U02349, U02196 ] }; // A⍉↖ + key { [ U1D564, U1D54A ] }; // S𝕤𝕊 + key { [ U02195 ] }; // D↕ + key { [ U1D557, U1D53D ] }; // F𝕗𝔽 + key { [ U1D558, U1D53E ] }; // G𝕘𝔾 + key { [ U022B8, U000AB ] }; // H⊸« + key { [ U02218 ] }; // J∘ + key { [ U025CB, U0233E ] }; // K○⌾ + key { [ U027DC, U000BB ] }; // L⟜» + key { [ U022C4, U000B7 ] }; // ;⋄· + key { [ U021A9, U002D9 ] }; // '↩˙ + key { [ ] }; // / + + key { [ U0294A, U022C8 ] }; // Z⥊⋈ + key { [ U1D569, U1D54F ] }; // X𝕩𝕏 + key { [ U02193 ] }; // C↓ + key { [ U02228, U02352 ] }; // V∨⍒ + key { [ U0230A, U02308 ] }; // B⌊⌈ + key { [ ] }; // N + key { [ U02261, U02262 ] }; // M≡≢ + key { [ U0223E, U02264 ] }; // ,∾≤ + key { [ U0224D, U02265 ] }; // .≍≥ + key { [ U02260, U021D0 ] }; // /≠⇐ +}; diff --git a/nixos/xkb/symbols/br b/nixos/xkb/symbols/br new file mode 100644 index 00000000..bca42626 --- /dev/null +++ b/nixos/xkb/symbols/br @@ -0,0 +1,355 @@ +// Keyboard layouts for Brazil. + +default +xkb_symbols "abnt2" { + + // Based on a very simple Brazilian ABNT2 keyboard, + // by Ricardo Y. Igarashi (iga@that.com.br). + // With added support for dead keys in I18N applications, + // by Conectiva (http://www.conectiva.com.br). + + include "latin" + name[Group1]="Portuguese (Brazil)"; + + key { [ apostrophe, quotedbl, notsign, notsign ] }; + key { [ 2, at, twosuperior, onehalf ] }; + key { [ 3, numbersign, threesuperior, threequarters ] }; + key { [ 4, dollar, sterling, onequarter ] }; + key { [ 5, percent, cent, threeeighths ] }; + key { [ 6, dead_diaeresis, notsign, diaeresis ] }; + key { [ equal, plus, section, dead_ogonek ] }; + + key { [ q, Q, slash, slash ] }; + key { [ w, W, question, question ] }; + key { [ e, E, degree, degree ] }; + key { [ r, R, registered, registered ] }; + key { [ dead_acute, dead_grave, acute, grave ] }; + key { [ bracketleft, braceleft, ordfeminine, dead_macron ] }; + key { [ bracketright, braceright, masculine, masculine ] }; + + key { [ ccedilla, Ccedilla, dead_acute,dead_doubleacute ] }; + key { [ dead_tilde,dead_circumflex, asciitilde, asciicircum ] }; + + key { [ backslash, bar, dead_caron, dead_breve ] }; + key { [ c, C, copyright, copyright ] }; + key { [ m, M, mu, mu ] }; + key { [ semicolon, colon, dead_belowdot, dead_abovedot ] }; + + // The ABNT-2 keyboard has this special key: + key { [ slash, question, degree, questiondown ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "br(abnt2)" + name[Group1]="Portuguese (Brazil, no dead keys)"; + + key { [ 6, diaeresis, notsign, notsign ] }; + key { [ equal, plus, section, radical ] }; + key { [ apostrophe, grave ] }; + key { [ bracketleft, braceleft, ordfeminine, dagger ] }; + key { [ j, J, ezh, EZH ] }; + key { [ ccedilla, Ccedilla, acute, doubleacute ] }; + key { [ asciitilde, asciicircum ] }; + key { [ backslash, bar, endash, emdash ] }; + key { [ semicolon, colon, ellipsis, abovedot ] }; +}; + + +// The ABNT2 keyboard on IBM/Lenovo Thinkpads, +// by Piter PUNK . +// +partial alphanumeric_keys +xkb_symbols "thinkpad" { + + include "br(abnt2)" + name[Group1]="Portuguese (Brazil, IBM/Lenovo ThinkPad)"; + + key { [ slash, question, degree, questiondown ] }; +}; + + +partial alphanumeric_keys +xkb_symbols "olpc" { + // #HW-SPECIFIC + include "us(basic)" + name[Group1]="Portuguese (Brazil)"; + + key { [ apostrophe, quotedbl ] }; + key { [ 1, exclam, onesuperior ] }; + key { [ 2, at, twosuperior ] }; + key { [ 3, numbersign, threesuperior ] }; + key { [ 4, dollar, sterling ] }; + key { [ 5, percent, cent ] }; + key { [ 6, dead_diaeresis, notsign ] }; + key { [ equal, plus, section ] }; + + key { [ e, E, EuroSign ] }; + key { [ dead_acute, dead_grave, acute, grave ] }; + key { [ bracketleft, braceleft, ordfeminine ] }; + key { [ bracketright, braceright, masculine ] }; + + key { [ ccedilla, Ccedilla ] }; + key { [ dead_tilde, dead_circumflex ] }; + + key { [ z, Z, bar ] }; + key { [ c, C, 0x10020A2 ] }; + key { [ period, greater, backslash ] }; + key { [ semicolon, colon ] }; + + key { [ slash, question, degree, ISO_Next_Group ] }; + + include "level3(ralt_switch)" +}; + + +// A phonetic layout for typing Russian on a ABNT2 keyboard. +// Originally by: Evandro Bernardes , February 2023. +partial alphanumeric_keys +xkb_symbols "rus" { + + include "br(abnt2)" + + name[Group1]= "Russian (Brazil, phonetic)"; + + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_u, Cyrillic_U, Cyrillic_yu, Cyrillic_YU ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + + key {[ Cyrillic_a, Cyrillic_A, Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA, Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; +}; + + +// +// Brazilian Dvorak layout 2005-04-18 +// "Teclado Simplificado Brasileiro" ou "Dvorak Brasileiro" +// +// Heitor Moraes heitor.moraes@gmail.com +// Luiz Portella lfpor@lujz.org +// Nando Florestan nando2003@mandic.com.br +// Ari Caldeira ari@tecladobrasileiro.com.br +// +partial alphanumeric_keys +xkb_symbols "dvorak" { + + name[Group1]="Portuguese (Brazil, Dvorak)"; + +// Numeric row + key { [ apostrophe, quotedbl, dead_caron, dead_doubleacute ] }; + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ 2, at, twosuperior, onehalf ] }; + key { [ 3, numbersign, threesuperior, threequarters ] }; + key { [ 4, dollar, sterling, onequarter ] }; + key { [ 5, percent, cent, permille ] }; + key { [ 6, dead_diaeresis, notsign, diaeresis ] }; + key { [ 7, ampersand, dead_belowdot, dead_abovedot ] }; + key { [ 8, asterisk, dead_ogonek, dead_horn ] }; + key { [ 9, parenleft, dead_cedilla, dead_hook ] }; + key { [ 0, parenright, dead_macron, dead_breve ] }; + key { [ bracketleft, braceleft, ordfeminine, 0x01000326 ] }; + key { [ bracketright, braceright, masculine, dead_abovering ] }; + + +// Upper row + key { [ slash, question, degree, questiondown ] }; + key { [ comma, less, 0x01000329, 0x01000313 ] }; + key { [ period, greater, 0x01002022, periodcentered ] }; + key { [ p, P, thorn, THORN ] }; + key { [ y, Y, yen, yen ] }; + key { [ f, F, leftdoublequotemark, leftsinglequotemark ] }; + key { [ g, G, rightdoublequotemark, rightsinglequotemark ] }; + key { [ c, C, uparrow, copyright ] }; + key { [ r, R, registered, registered ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ dead_acute, dead_grave, acute, grave ] }; + key { [ equal, plus, section, plusminus ] }; + +// Central row + key { [ a, A, ae, AE ] }; + key { [ o, O, oe, OE ] }; + key { [ e, E, EuroSign, EuroSign ] }; + key { [ u, U, oslash, Oslash ] }; + key { [ i, I, idotless, Iabovedot ] }; + key { [ d, D, eth, ETH ] }; + key { [ h, H, leftarrow, paragraph ] }; + key { [ t, T, rightarrow, trademark ] }; + key { [ n, N, eng, ENG ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ dead_tilde, dead_circumflex, asciitilde, asciicircum ] }; + key { [ minus, underscore, 0x01002015, 0x01000336 ] }; + +// Lower row + key { [ ccedilla, Ccedilla, backslash, bar ] }; + key { [ semicolon, colon, 0x01000331, 0x0100032D ] }; + key { [ q, Q, schwa, SCHWA ] }; + key { [ j, J, ezh, EZH ] }; + key { [ k, K, guillemotleft, 0x01002039 ] }; + key { [ x, X, multiply, division ] }; + key { [ b, B, guillemotright, 0x0100203A ] }; + key { [ m, M, downarrow, mu ] }; + key { [ w, W, ubreve, Ubreve ] }; + key { [ v, V, doublelowquotemark, singlelowquotemark ] }; + key { [ z, Z, 0x0100201F, 0x0100201B ] }; + key { [ backslash, bar, currency, brokenbar ] }; + + key { [ space, space, nobreakspace, nobreakspace ] }; + +// Configures the "," for the numeric keypad + include "kpdl(comma)" + +// Configures the use of the AltGr key + include "level3(ralt_switch)" +}; + + +// +// Brazilian Nativo layout. +// This is a Dvorak-based layout, designed for the Portuguese language. +// +// Ari Caldeira 2005-07-19 +// +partial alphanumeric_keys +xkb_symbols "nativo" { + + name[Group1]="Portuguese (Brazil, Nativo)"; + +// Numeric row + key { [ equal, plus, section, plusminus ] }; + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ 2, at, twosuperior, onehalf ] }; + key { [ 3, numbersign, threesuperior, threequarters ] }; + key { [ 4, dollar, sterling, onequarter ] }; + key { [ 5, percent, cent, permille ] }; + key { [ 6, dead_diaeresis, notsign, diaeresis ] }; + key { [ 7, ampersand, dead_belowdot, dead_abovedot ] }; + key { [ 8, asterisk, dead_ogonek, dead_horn ] }; + key { [ 9, parenleft, dead_cedilla, dead_hook ] }; + key { [ 0, parenright, dead_macron, dead_breve ] }; + key { [ bracketleft, braceleft, ordfeminine, 0x01000326 ] }; + key { [ bracketright, braceright, masculine, dead_abovering ] }; + +// Upper row + key { [ slash, question, degree, questiondown ] }; + key { [ comma, less, 0x01000329, 0x01000313 ] }; + key { [ period, greater, 0x01002022, periodcentered ] }; + key { [ h, H, paragraph, paragraph ] }; + key { [ x, X, multiply, division ] }; + key { [ w, W, ubreve, Ubreve ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ t, T, trademark, trademark ] }; + key { [ c, C, copyright, copyright ] }; + key { [ p, P, thorn, THORN ] }; + key { [ dead_tilde, dead_circumflex, asciitilde, asciicircum ] }; + key { [ minus, underscore, 0x01002015, 0x01000336 ] }; + +// Central row + key { [ i, I, idotless, Iabovedot ] }; + key { [ e, E, EuroSign, EuroSign ] }; + key { [ a, A, ae, AE ] }; + key { [ o, O, oe, OE ] }; + key { [ u, U, oslash, Oslash ] }; + key { [ m, M, mu, mu ] }; + key { [ d, D, eth, ETH ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ r, R, registered, registered ] }; + key { [ n, N, eng, ENG ] }; + key { [ dead_acute, dead_grave, acute, grave ] }; + key { [ apostrophe, quotedbl, dead_caron, dead_doubleacute ] }; + +// Lower row + key { [ semicolon, colon, 0x01000331, 0x0100032D ] }; + key { [ y, Y, yen, yen ] }; + key { [ ccedilla, Ccedilla, backslash, bar ] }; + key { [ j, J, ezh, EZH ] }; + key { [ b, B, guillemotleft, 0x01002039 ] }; + key { [ k, K, guillemotright, 0x0100203A ] }; + key { [ q, Q, schwa, SCHWA ] }; + key { [ v, V, doublelowquotemark, singlelowquotemark ] }; + key { [ g, G, leftdoublequotemark, leftsinglequotemark ] }; + key { [ f, F, rightdoublequotemark, rightsinglequotemark ] }; + key { [ z, Z, 0x0100201F, 0x0100201B ] }; + key { [ backslash, bar, currency, brokenbar ] }; + + key { [ space, space, nobreakspace, nobreakspace ] }; + +// Configures the "," for the numeric keypad + include "kpdl(comma)" + +// Configures the use of the AltGr key + include "level3(ralt_switch)" +}; + + +// +// Brazilian Nativo layout for US keyboards. +// +// Ari Caldeira 2005-07-19 +// +partial alphanumeric_keys +xkb_symbols "nativo-us" { + + include "br(nativo)" + + name[Group1]="Portuguese (Brazil, Nativo for US keyboards)"; + + key { [ y, Y, ccedilla, Ccedilla ] }; + key { [ semicolon, colon, backslash, bar ] }; +}; + + +// +// Brazilian Nativo layout for typing Esperanto. +// +// Ari Caldeira 2005-07-19 +// +partial alphanumeric_keys +xkb_symbols "nativo-epo" { + + include "br(nativo)" + + name[Group1]="Esperanto (Brazil, Nativo)"; + + key { [ h, H, hcircumflex, Hcircumflex ] }; + key { [ ccircumflex, Ccircumflex, x, X ] }; + key { [ ubreve, Ubreve, w, W ] }; + + key { [ jcircumflex, Jcircumflex, y, Y ] }; + key { [ scircumflex, Scircumflex, ccedilla, Ccedilla ] }; + key { [ gcircumflex, Gcircumflex, q, Q ] }; +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/br(sun_type6)" +}; diff --git a/nixos/xkb/symbols/brai b/nixos/xkb/symbols/brai new file mode 100644 index 00000000..b18c8117 --- /dev/null +++ b/nixos/xkb/symbols/brai @@ -0,0 +1,92 @@ +// 10-dot patterns on the home row + v and n +default partial alphanumeric_keys +xkb_symbols "home_row" { + include "brai(keypad)" + + name[Group1]="Braille"; + + key { [ braille_dot_1 ] }; + key { [ braille_dot_2 ] }; + key { [ braille_dot_3 ] }; + key { [ braille_dot_4 ] }; + key { [ braille_dot_5 ] }; + key { [ braille_dot_6 ] }; + key { [ braille_dot_7 ] }; + key { [ braille_dot_8 ] }; + key { [ braille_dot_9 ] }; + key { [ braille_dot_10 ] }; +}; + +// 6-dot patterns for the left hand +partial alphanumeric_keys +xkb_symbols "left_hand" { + include "brai(keypad_left)" + + name[Group1]="Braille (left-handed)"; + + key { [ braille_dot_1 ] }; + key { [ braille_dot_2 ] }; + key { [ braille_dot_3 ] }; + key { [ braille_dot_4 ] }; + key { [ braille_dot_5 ] }; + key { [ braille_dot_6 ] }; +}; + +// 6-dot patterns for the left hand +partial alphanumeric_keys +xkb_symbols "left_hand_invert" { + include "brai(left_hand)" + + name[Group1]="Braille (left-handed inverted thumb)"; + + key { [ braille_dot_5 ] }; + key { [ braille_dot_6 ] }; +}; + +// 6-dot patterns for the right hand +partial alphanumeric_keys +xkb_symbols "right_hand" { + include "brai(keypad)" + + name[Group1]="Braille (right-handed)"; + + key { [ braille_dot_1 ] }; + key { [ braille_dot_2 ] }; + key { [ braille_dot_3 ] }; + key { [ braille_dot_4 ] }; + key { [ braille_dot_5 ] }; + key { [ braille_dot_6 ] }; +}; + +// 6-dot patterns for the right hand +partial alphanumeric_keys +xkb_symbols "right_hand_invert" { + include "brai(right_hand)" + + name[Group1]="Braille (right-handed inverted thumb)"; + + key { [ braille_dot_2 ] }; + key { [ braille_dot_3 ] }; +}; + +// 6-dot patterns on the keypad +hidden partial keypad_keys +xkb_symbols "keypad" { + key { [ braille_dot_1 ] }; + key { [ braille_dot_2 ] }; + key { [ braille_dot_3 ] }; + key { [ braille_dot_4 ] }; + key { [ braille_dot_5 ] }; + key { [ braille_dot_6 ] }; +}; + +// 6-dot patterns on the keypad with left hand +hidden partial keypad_keys +xkb_symbols "keypad_left" { + key { [ braille_dot_1 ] }; + key { [ braille_dot_2 ] }; + key { [ braille_dot_3 ] }; + key { [ braille_dot_4 ] }; + key { [ braille_dot_5 ] }; + key { [ braille_dot_6 ] }; +}; diff --git a/nixos/xkb/symbols/bt b/nixos/xkb/symbols/bt new file mode 100644 index 00000000..04cdaa78 --- /dev/null +++ b/nixos/xkb/symbols/bt @@ -0,0 +1,83 @@ +// Keyboard layout for Bhutan. + +// Based on the official layout for Dzongkha that was +// approved by the Department of Information Technology and +// the Dzongkha Development Commission of the Government of Bhutan. +// +// Copyright (C) 2004, Gregory Mokhin +// January 2004 -- layout map provided by Chris Fynn +// July 2004 -- some corrections by Pema Geyleg +// May 2022 -- updated to the revised standard of October 2009 + +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Dzongkha"; + + key {[ U0F09, U0F0A, U0FD1, U0FD0 ]}; + + // Mainly digits: + key {[ U0F21, U0F04, 1, U0FD3 ]}; + key {[ U0F22, U0F05, 2, U0FD4 ]}; + key {[ U0F23, U0F06, 3, U0F3A ]}; + key {[ U0F24, U0F48, 4, U0F3B ]}; // U+0F48 is an unassigned code point + key {[ U0F25, U0F0E, 5, U0F85 ]}; + key {[ U0F26, U0F08, 6, U0F01 ]}; + key {[ U0F27, U0F38, 7, U0F8A ]}; + key {[ U0F28, U0F34, 8, asterisk ]}; + key {[ U0F29, U0F3C, 9, parenleft ]}; + key {[ U0F20, U0F3D, 0, parenright ]}; + key {[ U0F14, U0F7F, minus, U0FD2 ]}; + key {[ U0F0D, U0F11, equal, plus ]}; + key {[ U0F5D, U0FAD, backslash, U0FBA ]}; + + // Consonants ( ka kha ga nga ): + key {[ U0F40, U0F90, U0F88, U0F8D ]}; + key {[ U0F41, U0F91, U0F89, U0F8E ]}; + key {[ U0F42, U0F92, U0F8C, U0F8F ]}; + key {[ U0F44, U0F94, U0F83, U0F82 ]}; + + // Vowels ( i u e o ): + key {[ U0F72, U0F80, U0F1A, U0F8B ]}; // fourth level needs double code point + key {[ U0F74, U0F84, U0F1B, none ]}; + key {[ U0F7A, U0F7B, U0F1C, none ]}; + key {[ U0F7C, U0F7D, U0F1D, U0F17 ]}; + + // Consonants ( ca cha ja nya ): + key {[ U0F45, U0F95, U0F1E, U0F18 ]}; + key {[ U0F46, U0F96, U0F1F, U0F19 ]}; + key {[ U0F47, U0F97, parenleft, U0F3F ]}; + key {[ U0F49, U0F99, parenright, U0F3E ]}; + + // Consonants ( ta tha da na pa pha ba ma tsa tsha dza wa ): + key {[ U0F4F, U0F9F, U0F4A, U0F9A ]}; + key {[ U0F50, U0FA0, U0F4B, U0F9B ]}; + key {[ U0F51, U0FA1, U0F4C, U0F9C ]}; + key {[ U0F53, U0FA3, U0F4E, U0F9E ]}; + key {[ U0F54, U0FA4, U2039, guillemotleft ]}; + key {[ U0F55, U0FA5, U203A, guillemotright ]}; + key {[ U0F56, U0FA6, U0F37, U0F35 ]}; + key {[ U0F58, U0FA8, U0F7E, U0F87 ]}; + key {[ U0F59, U0FA9, U0F39, U0F86 ]}; + key {[ U0F5A, U0FAA, semicolon, colon ]}; + key {[ U0F5B, U0FAB, apostrophe, quotedbl ]}; + + key {[ U0F0D, U0F11, U0F10, U0F0F ]}; + + // Consonants ( zha za 'a ya ra la sha sa ha a ): + key {[ U0F5E, U0FAE, U0F13, U0F36 ]}; + key {[ U0F5F, U0FAF, U0FBE, U0FBF ]}; + key {[ U0F60, U0F71, U0F03, U0FB0 ]}; + key {[ U0F61, U0FB1, U0F0F, U0FBB ]}; + key {[ U0F62, U0FB2, U0F6A, U0FBC ]}; + key {[ U0F63, U0FB3, U0F12, none ]}; + key {[ U0F64, U0FB4, U0F65, U0FB5 ]}; + key {[ U0F66, U0FB6, comma, U0FD9 ]}; + key {[ U0F67, U0FB7, period, U0FDA ]}; + key {[ U0F68, U0FB8, slash, question]}; + + // Tshegs and spaces: + key {[ U0F0B, space, U0F0C, nobreakspace ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/bw b/nixos/xkb/symbols/bw new file mode 100644 index 00000000..a588142e --- /dev/null +++ b/nixos/xkb/symbols/bw @@ -0,0 +1,21 @@ +// Keyboard layout for Botswana. + +default partial alphanumeric_keys +xkb_symbols "tswana" { + + include "us" + + name[Group1]= "Tswana"; + + key {[ grave, asciitilde, U0300, U0303 ]}; // COMBINING GRAVE ACCENT, COMBINING TILDE + key {[ 6, asciicircum, U0302 ]}; // COMBINING CIRCUMFLEX ACCENT + key {[ 8, asterisk, U0307, U0323 ]}; // COMBINING DOT ABOVE, COMBINING DOT BELOW + key {[ 9, parenleft, U0306 ]}; // COMBINING BREVE + key {[ 0, parenright, U030c ]}; // COMBINING CARON + key {[ minus, underscore, U0304, U0331 ]}; // COMBINING MACRON, COMBINING MACRON BELOW + + key {[ semicolon, colon, U0324, U0324 ]}; // COMBINING DIAERESIS BELOW + key {[apostrophe, quotedbl, U0301, U0308 ]}; // COMBINING ACUTE ACCENT, COMBINING DIAERESIS + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/by b/nixos/xkb/symbols/by new file mode 100644 index 00000000..8fb23a25 --- /dev/null +++ b/nixos/xkb/symbols/by @@ -0,0 +1,113 @@ +// Keyboard layouts for Belarus. + +// Belarusian standard keyboard, by Alexander Mikhailian . +// Reworked to use Russian keymap as base and winkeys by default, +// by Paul Lubetsky , see https://bugs.freedesktop.org/23604. + +// Added Belarusian-Russian and Russian-Belarusian variants, +// by Pavel Senchanka + +default partial alphanumeric_keys +xkb_symbols "basic" { + include "ru(winkeys)" + name[Group1]= "Belarusian"; + + key {[ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ]}; + key {[ Byelorussian_shortu, Byelorussian_SHORTU ]}; + key {[ apostrophe, apostrophe ]}; + key {[ Ukrainian_i, Ukrainian_I ]}; +}; + +partial alphanumeric_keys +xkb_symbols "legacy" { + include "by(basic)" + name[Group1]= "Belarusian (legacy)"; + + key {[ 3, numbersign ]}; + key {[ 4, asterisk ]}; + key {[ 5, colon ]}; + key {[ 6, comma ]}; + key {[ 7, period ]}; + key {[ 8, semicolon ]}; + key {[ slash, question ]}; + key {[ backslash, bar ]}; +}; + +partial alphanumeric_keys +xkb_symbols "latin" { + include "latin" + name[Group1]= "Belarusian (Latin)"; + + key {[ w, W, scaron, Scaron ]}; + key {[ u, U, ubreve, Ubreve ]}; + key {[ s, S, sacute, Sacute ]}; + key {[ k, K, lacute, Lacute ]}; + key {[ l, L, lstroke, Lstroke ]}; + key {[ z, Z, zacute, Zacute ]}; + key {[ x, X, zcaron, Zcaron ]}; + key {[ c, C, cacute, Cacute ]}; + key {[ v, V, ccaron, Ccaron ]}; + key {[ n, N, nacute, Nacute ]}; + + // Poland + key {[ e, E, eogonek, Eogonek ]}; + key {[ o, O, oacute, Oacute ]}; + key {[ a, A, aogonek, Aogonek ]}; + key {[ j, J, zabovedot, Zabovedot ]}; + + include "level3(ralt_switch)" +}; + +// Russian layout with Belarusian symbols on third level. +partial alphanumeric_keys +xkb_symbols "ru" { + include "ru(winkeys)" + name[Group1]= "Russian (Belarus)"; + + key {[ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA, Byelorussian_shortu, Byelorussian_SHORTU ]}; + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN, U2019, apostrophe ]}; + + include "level3(ralt_switch)" +}; + +// Belarusian layout extended with other East Slavic symbols (Russian, Ukrainian). +partial alphanumeric_keys +xkb_symbols "intl" { + include "by(basic)" + name[Group1]= "Belarusian (intl.)"; + + // Russian + key {[ Ukrainian_i, Ukrainian_I, Cyrillic_i, Cyrillic_I ]}; + key {[ Byelorussian_shortu, Byelorussian_SHORTU, Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ U2019, apostrophe, Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; + + // Ukrainian (Yi is usually on , but it is already taken in our case). + key {[ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ]}; + key {[ Cyrillic_ha, Cyrillic_HA, Ukrainian_yi, Ukrainian_YI ]}; + key {[ backslash, bar, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "phonetic" { + include "ru(phonetic)" + name[Group1]= "Belarusian (phonetic)"; + + // Mostly same as good old YAWERTY layout, but with correct + // Belarusian i and ў (u-short) instead of щ (shcha). We also + // keep originals on level3 just in case. + key {[ Byelorussian_shortu, Byelorussian_SHORTU, Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ Ukrainian_i, Ukrainian_I, Cyrillic_i, Cyrillic_I ]}; + + // Lets also add level3+u to enable another way to input u-short + key {[ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ]}; + + // Since we already enable level3 lets also do alternative + // means for io and hardsign. + key {[ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/ca b/nixos/xkb/symbols/ca new file mode 100644 index 00000000..6ac11b61 --- /dev/null +++ b/nixos/xkb/symbols/ca @@ -0,0 +1,379 @@ +// Keyboard layouts for Canada. + +default partial +xkb_symbols "fr" { + name[Group1] = "French (Canada)"; + + key {[ numbersign, bar, backslash ]}; + key {[ 1, exclam, plusminus ]}; + key {[ 2, quotedbl, at ]}; + key {[ 3, slash, sterling ]}; + key {[ 4, dollar, cent ]}; + key {[ 5, percent, currency ]}; + key {[ 6, question, notsign ]}; + key {[ 7, ampersand, brokenbar ]}; + key {[ 8, asterisk, twosuperior ]}; + key {[ 9, parenleft, threesuperior ]}; + key {[ 0, parenright, onequarter ]}; + key {[ minus, underscore, onehalf ]}; + key {[ equal, plus, threequarters ]}; + + key {[ q, Q ]}; + key {[ w, W ]}; + key {[ e, E, EuroSign ]}; + key {[ r, R ]}; + key {[ t, T ]}; + key {[ y, Y, yen ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ o, O, section ]}; + key {[ p, P, paragraph ]}; + key {[dead_circumflex, dead_circumflex, bracketleft ]}; + key {[ dead_cedilla, dead_diaeresis, bracketright ]}; + + key {[ a, A ]}; + key {[ s, S ]}; + key {[ d, D ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ h, H ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ l, L ]}; + key {[ semicolon, colon, asciitilde ]}; + key {[dead_grave, dead_grave, braceleft ]}; + key {[ less, greater, braceright ]}; + + key {[guillemotleft, guillemotright, degree]}; + key {[ z, Z ]}; + key {[ x, X ]}; + key {[ c, C ]}; + key {[ v, V ]}; + key {[ b, B ]}; + key {[ n, N ]}; + key {[ m, M, mu ]}; + key {[ comma, apostrophe, macron ]}; + key {[ period, period, hyphen ]}; + key {[ eacute, Eacute, dead_acute ]}; + + key {[ space, space, nobreakspace ]}; + + include "level3(ralt_switch)" +}; + +xkb_symbols "fr-dvorak" { + name[Group1] = "French (Canada, Dvorak)"; + + key {[ numbersign, bar, backslash ]}; + key {[ 1, exclam, plusminus ]}; + key {[ 2, quotedbl, at ]}; + key {[ 3, slash, sterling ]}; + key {[ 4, dollar, cent ]}; + key {[ 5, percent, currency ]}; + key {[ 6, question, notsign ]}; + key {[ 7, ampersand, brokenbar ]}; + key {[ 8, asterisk, twosuperior ]}; + key {[ 9, parenleft, threesuperior ]}; + key {[ 0, parenright, onequarter ]}; + key {[dead_circumflex, dead_circumflex, bracketleft ]}; + key {[ dead_cedilla, dead_diaeresis, bracketright ]}; + + key {[dead_grave, dead_grave, braceleft ]}; + key {[ comma, apostrophe, macron ]}; + key {[ period, period, hyphen ]}; + key {[ p, P, paragraph ]}; + key {[ y, Y ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ c, C ]}; + key {[ r, R ]}; + key {[ l, L ]}; + key {[ eacute, Eacute, dead_acute ]}; + key {[ equal, plus, threequarters ]}; + + key {[ a, A ]}; + key {[ o, O, section ]}; + key {[ e, E ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ d, D ]}; + key {[ h, H ]}; + key {[ t, T ]}; + key {[ n, N ]}; + key {[ s, S ]}; + key {[ minus, underscore, onehalf ]}; + key {[ less, greater, braceright ]}; + + key {[guillemotleft, guillemotright, degree]}; + key {[ semicolon, colon, asciitilde ]}; + key {[ q, Q ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ x, X ]}; + key {[ b, B ]}; + key {[ m, M, mu ]}; + key {[ w, W ]}; + key {[ v, V ]}; + key {[ z, Z ]}; + + key {[ space, space, nobreakspace ]}; + + include "level3(ralt_switch)" +}; + +partial +xkb_symbols "fr-legacy" { + + include "ca(fr)" + + name[Group1] = "French (Canada, legacy)"; + + key {[ degree, degree, notsign ]}; + key {[ 1, exclam, onesuperior ]}; + + key {[ 3, numbersign, threesuperior ]}; + key {[ 4, dollar, onequarter ]}; + key {[ 5, percent, onehalf ]}; + key {[ 6, question, threequarters ]}; + key {[ 7, ampersand, braceleft ]}; + key {[ 8, asterisk, bracketleft ]}; + key {[ 9, parenleft, bracketright, plusminus ]}; + key {[ 0, parenright, braceright ]}; + key {[ minus, underscore, bar, questiondown]}; + key {[ equal, plus, dead_cedilla ]}; + + key {[ r, R, paragraph, registered ]}; + key {[ y, Y, yen ]}; + key {[ o, O, oslash, Oslash ]}; + key {[ p, P, thorn, THORN ]}; + key {[dead_circumflex, dead_circumflex, degree ]}; + key {[ ccedilla, Ccedilla, dead_tilde, dead_diaeresis ]}; + + key {[ a, A, ae, AE ]}; + key {[ s, S, ssharp, section ]}; + key {[ d, D, eth, ETH ]}; + key {[ f, F, ordfeminine ]}; + key {[ semicolon, colon, dead_acute, dead_acute ]}; + key {[ egrave, Egrave ]}; + key {[ agrave, Agrave, dead_grave ]}; + + key {[ ugrave, Ugrave, backslash, bar ]}; + key {[ z, Z, guillemotleft ]}; + key {[ x, X, guillemotright]}; + key {[ c, C, cent, copyright ]}; + key {[ m, M, mu, masculine ]}; + key {[ comma, apostrophe, less ]}; + key {[ period, period, greater ]}; + key {[ eacute, Eacute, slash ]}; +}; + +// Inuktitut keyboard layout, by Pablo Saratxaga . +alphanumeric_keys +xkb_symbols "ike" { + + name[Group1]= "Inuktitut"; + + key {[ U157b, U1575 ]}; + key {[ U1595, 1 ]}; + key {[ U1449, 2 ]}; + key {[ U1550, 3 ]}; + key {[ U1483, 4 ]}; + key {[ U1466, 5 ]}; + key {[ U1585, 6 ]}; + key {[ U14bb, 7 ]}; + key {[ U14d0, 8 ]}; + key {[ U14ea, 9 ]}; + key {[ U153e, 0 ]}; + key {[ minus, underscore]}; + key {[ U155d, equal ]}; + + key {[ U158f, U148b ]}; + key {[ U1403, U1431 ]}; + key {[ U157f, U1546 ]}; + key {[ U146d, U1596 ]}; + key {[ U144e, U1671 ]}; + key {[ U14ef, U1673 ]}; + key {[ U14a5, U1675 ]}; + key {[ U14c2, U15a4 ]}; + key {[ U14d5, U15a0 ]}; + key {[ U1528, U15a6 ]}; + key {[ U14a1, U1505 ]}; + key {[dead_abovedot,U141e]}; + + key {[ U1591, U148d ]}; + key {[ U1405, U1433 ]}; + key {[ U1581, U1548 ]}; + key {[ U146f, U1555 ]}; + key {[ U1450, parenleft]}; + key {[ U14f1, parenright]}; + key {[ U14a7, U152a ]}; + key {[ U14c4, U1557 ]}; + key {[ U14d7, U15a2 ]}; + key {[ semicolon, colon ]}; + key {[apostrophe,quotedbl]}; + key {[ backslash, bar ]}; + + key {[ U1579, U1577 ]}; + key {[ U1593, U1490 ]}; + key {[ U140a, U1438 ]}; + key {[ U1583, U154b ]}; + key {[ U1472, question ]}; + key {[ U1455, U157c ]}; + key {[ U14f4, U14c7 ]}; + key {[ U14aa, U14da ]}; + key {[ comma, less ]}; + key {[ period, greater ]}; + key {[ U152d, U1559 ]}; +}; + +partial +xkb_symbols "multix" { + + name[Group1] = "Canadian (CSA)"; + + key.type[group1]="EIGHT_LEVEL"; + key {[ slash, backslash, bar, NoSymbol, NoSymbol, hyphen ]}; + key {[ 1, exclam, plusminus, NoSymbol, onesuperior, exclamdown ]}; + key {[ 2, at, at, NoSymbol, twosuperior, NoSymbol ]}; + key {[ 3, numbersign, sterling, NoSymbol, threesuperior, sterling ]}; + key {[ 4, dollar, currency, NoSymbol, onequarter, EuroSign ]}; + key {[ 5, percent, NoSymbol, NoSymbol, onehalf, threeeighths ]}; + key {[ 6, question, NoSymbol, NoSymbol, threequarters, fiveeighths ]}; + key {[ 7, ampersand, braceleft, NoSymbol, NoSymbol, seveneighths ]}; + key {[ 8, asterisk, braceright, NoSymbol, NoSymbol, trademark ]}; + key {[ 9, parenleft, bracketleft, NoSymbol, NoSymbol, plusminus ]}; + key {[ 0, parenright, bracketright, NoSymbol ]}; + key {[ minus, underscore, onehalf, NoSymbol, NoSymbol, questiondown ]}; + key {[ equal, plus, notsign, NoSymbol, dead_cedilla, dead_ogonek ]}; + + key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC"; + key {[ q, Q, NoSymbol, NoSymbol, NoSymbol, Greek_OMEGA ]}; + key {[ w, W, NoSymbol, NoSymbol, lstroke, Lstroke ]}; + key {[ e, E, EuroSign, NoSymbol, oe, OE ]}; + key {[ r, R, NoSymbol, NoSymbol, paragraph, registered ]}; + key {[ t, T, NoSymbol, NoSymbol, tslash, Tslash ]}; + key {[ y, Y, NoSymbol, NoSymbol, leftarrow, yen ]}; + key {[ u, U, NoSymbol, NoSymbol, downarrow, uparrow ]}; + key {[ i, I, NoSymbol, NoSymbol, rightarrow, idotless ]}; + key {[ o, O, section, NoSymbol, oslash, Oslash ]}; + key {[ p, P, paragraph, NoSymbol, thorn, THORN ]}; + + key.type[group1]="EIGHT_LEVEL"; + key {[dead_circumflex, dead_diaeresis, dead_grave, NoSymbol, NoSymbol, dead_abovering ]}; + + key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC"; + key {[ ccedilla, Ccedilla, asciitilde, NoSymbol, dead_tilde, dead_macron ]}; + + key {[ a, A, NoSymbol, NoSymbol, ae, AE ]}; + key {[ s, S, NoSymbol, NoSymbol, ssharp, section ]}; + key {[ d, D, NoSymbol, NoSymbol, eth, ETH ]}; + key {[ f, F, NoSymbol, NoSymbol, NoSymbol, ordfeminine ]}; + key {[ g, G, NoSymbol, NoSymbol, eng, ENG ]}; + key {[ h, H, NoSymbol, NoSymbol, hstroke, Hstroke ]}; + key {[ j, J, NoSymbol, NoSymbol, U0133, U0132 ]}; // ij IJ + key {[ k, K, NoSymbol, NoSymbol, kra, NoSymbol ]}; + key {[ l, L, NoSymbol, NoSymbol, U0140, U013F ]}; // ŀ Ŀ + + key.type[group1]="EIGHT_LEVEL"; + key {[ semicolon, colon, degree, NoSymbol, dead_acute, dead_doubleacute ]}; + + key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC"; + key {[ egrave, Egrave, braceleft, NoSymbol, NoSymbol, dead_caron ]}; + key {[ agrave, Agrave, braceright, NoSymbol, NoSymbol, dead_breve ]}; + + key {[ ugrave, Ugrave, degree, NoSymbol, NoSymbol, brokenbar ]}; + key {[ z, Z, guillemotleft, NoSymbol ]}; + key {[ x, X, guillemotright, NoSymbol ]}; + key {[ c, C, NoSymbol, NoSymbol, cent, copyright ]}; + key {[ v, V, NoSymbol, NoSymbol, leftdoublequotemark, leftsinglequotemark ]}; + key {[ b, B, NoSymbol, NoSymbol, rightdoublequotemark, rightsinglequotemark ]}; + key {[ n, N, NoSymbol, NoSymbol, U0149, U266A ]}; // ʼn ♪ + key {[ m, M, mu, NoSymbol, mu, masculine ]}; + + key.type[group1]="EIGHT_LEVEL"; + key {[ comma, apostrophe, less, NoSymbol, Greek_horizbar, multiply ]}; + key {[ period, quotedbl, greater, NoSymbol, periodcentered, division ]}; + + key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC"; + key {[ eacute, Eacute, dead_acute, NoSymbol, NoSymbol, dead_abovedot ]}; + + include "nbsp(level3)" + + include "level3(ralt_switch)" + include "level5(rctrl_switch)" +}; + +// OLPC Section +xkb_symbols "olpc" { + + include "ca(fr)" + + key {[ 2, quotedbl, ograve, Ograve ]}; + key {[ 3, slash, at, none ]}; + + key {[ e, E, EuroSign, none ]}; + + key {[ period, period, U2010, none ]}; // HYPHEN + + key {[ guillemotleft, guillemotright, degree, none ]}; +}; + +partial alphanumeric_keys +xkb_symbols "eng" { + include "us(basic)" + name[Group1] = "English (Canada)"; + + key {[ backslash, bar, none, none ]}; +}; + + +// EXTRAS: + +partial alphanumeric_keys +xkb_symbols "kut" { + + // Ejective U+0313 and acute accents are taken from shs layout. + + include "ca(shs)" + + name[Group1]= "Kutenai"; + + key {[ t, T, U01C2, U01C2 ]}; // alveolar click + + key {[ c, C, cent, cent ]}; + key {[ period, greater, periodcentered ]}; + key {[ slash, question, U0294 ]}; // glottal stop + + key {[ semicolon, colon, U02BE, U02BE ]}; // MODIFIER LETTER RIGHT HALF RING + key {[ apostrophe, quotedbl, U0315, U0315 ]}; // COMBINING COMMA ABOVE RIGHT +}; + +// Secwepemctsin keyboard for X11 +// written by Neskie Manuel +partial alphanumeric_keys +xkb_symbols "shs" { + + include "us" + + name[Group1]= "Secwepemctsin"; + + // Using a "dead key" to get a COMBINING COMMA ABOVE + // for ejectives on q, l, t, s, m, g, k, p, w, y, r. + // The Compose key is used for the other acutes and grave. + + key {[ comma, less, U0313 ]}; + key {[ a, A, aacute, Aacute ]}; + key {[ e, E, eacute, Eacute ]}; + key {[ u, U, uacute, Uacute ]}; + key {[ i, I, iacute, Iacute ]}; + key {[ o, O, oacute, Oacute ]}; + + include "level3(ralt_switch)" + include "compose(rctrl)" +}; + + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/ca(sun_type6)" +}; diff --git a/nixos/xkb/symbols/capslock b/nixos/xkb/symbols/capslock new file mode 100644 index 00000000..98ea29c2 --- /dev/null +++ b/nixos/xkb/symbols/capslock @@ -0,0 +1,108 @@ +default hidden partial modifier_keys +xkb_symbols "capslock" { + replace key { [ Caps_Lock ], type[group1] = "ONE_LEVEL" }; + modifier_map Lock { Caps_Lock }; +}; + +hidden partial modifier_keys +xkb_symbols "shiftlock" { + replace key { [ Shift_Lock ], type[group1] = "ONE_LEVEL" }; + modifier_map Shift { Shift_Lock }; +}; + +hidden partial modifier_keys +xkb_symbols "swapescape" { + key { [ Escape ], type[group1] = "ONE_LEVEL" }; + key { [ Caps_Lock ] }; +}; + +hidden partial modifier_keys +xkb_symbols "escape" { + key { [ Escape ], type[group1] = "ONE_LEVEL" }; +}; + +hidden partial modifier_keys +xkb_symbols "escape_shifted_capslock" { + key { + type[Group1] = "TWO_LEVEL", + symbols[Group1] = [ Escape, Caps_Lock ], + actions[Group1] = [ NoAction(), LockMods(modifiers = Lock) ] + }; +}; + +hidden partial modifier_keys +xkb_symbols "escape_shifted_compose" { + key { + type[Group1] = "TWO_LEVEL", + symbols[Group1] = [ Escape, Multi_key ], + actions[Group1] = [ NoAction(), NoAction() ] + }; +}; + +hidden partial modifier_keys +xkb_symbols "backspace" { + key { [ BackSpace ], type[group1] = "ONE_LEVEL" }; +}; + +hidden partial modifier_keys +xkb_symbols "super" { + key { [ Super_L ], type[group1] = "ONE_LEVEL" }; + modifier_map Mod4 { }; +}; + +hidden partial modifier_keys +xkb_symbols "hyper" { + key { [ Hyper_L ], type[group1] = "ONE_LEVEL" }; + modifier_map Mod4 { }; +}; + +hidden partial modifier_keys +xkb_symbols "menu" { + key { [ Menu ], type[group1] = "ONE_LEVEL" }; +}; + +hidden partial modifier_keys +xkb_symbols "numlock" { + key { [ Num_Lock ], type[group1] = "ONE_LEVEL" }; +}; + +// This changes the key to become a Control modifier, +// but it will still produce the Caps_Lock keysym; this is +// useful for apps that need to distinguish it from usual +// Control_L and Control_R. +hidden partial modifier_keys +xkb_symbols "ctrl_modifier" { + replace key { + type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ Caps_Lock ], + actions[Group1] = [ SetMods(modifiers=Control) ] + }; + modifier_map Control { }; +}; + +hidden partial modifier_keys +xkb_symbols "none" { + key { [ VoidSymbol ], type[group1] = "ONE_LEVEL" }; +}; + +// For layouts having digits on the 2nd level on the digits row and key type +// FOUR_LEVEL (e.g. fr(basic) and be(basic)), this makes CapsLock give the digits +// by changing their key type to FOUR_LEVEL_SEMIALPHABETIC. Note that this has the +// drawback that the uppercases À, È, É and Ç are no longer available, as those +// layouts rely on internal capitalization rules for those letters. +hidden partial alphanumeric_keys +xkb_symbols "digits_row" { + key.type[group1] = "FOUR_LEVEL_SEMIALPHABETIC"; + + // No symbol defined: we just want to change the key type + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; +}; diff --git a/nixos/xkb/symbols/cd b/nixos/xkb/symbols/cd new file mode 100644 index 00000000..d3cf185d --- /dev/null +++ b/nixos/xkb/symbols/cd @@ -0,0 +1,65 @@ +// Keyboard layout for Congo. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "French (Democratic Republic of the Congo)"; + + key.type[Group1] = "FOUR_LEVEL"; + + key {[ grave, asciitilde, U0303 ]}; // combining tilde + key {[ ampersand, 1, numbersign ]}; + key {[ U0301, 2, at ]}; // combining acute + key {[ U0300, 3, guillemotleft ]}; // combining grave + key {[ parenleft, 4, bracketleft ]}; + key {[ braceleft, 5, less ]}; + key {[braceright, 6, greater ]}; + key {[parenright, 7, bracketright ]}; + key {[ U0302, 8, guillemotright ]}; // combining circumflex + key {[ U030C, 9, U030D ]}; // combining caron, combining verical line above + key {[ U0308, 0, at ]}; // combining diaeresis + key {[ minus, underscore, percent, degree ]}; + key {[ equal, plus, multiply, division ]}; + + key {[ a, A, ae, AE ]}; + key {[ z, Z ]}; + key {[ e, E, oe, OE ]}; + key {[ r, R ]}; + key {[ t, T ]}; + key {[ y, Y ]}; + key {[ u, U, U0289, U0244 ]}; // ʉ Ʉ + key {[ i, I, U0268, U0197 ]}; // ɨ Ɨ + key {[ o, O, oslash, Oslash ]}; + key {[ p, P ]}; + key {[ U025B, U0190, asciicircum ]}; // ɛ Ɛ + key {[ asterisk, asciicircum, dollar ]}; + + key {[ q, Q ]}; + key {[ s, S ]}; + key {[ d, D ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ h, H ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ l, L ]}; + key {[ m, M ]}; + key {[ U0254, U0186 ]}; // ɔ Ɔ + key {[ quotedbl, backslash, bar ]}; + + key {[ backslash, bar ]}; + key {[ w, W ]}; + key {[ x, X ]}; + key {[ c, C ]}; + key {[ v, V ]}; + key {[ b, B ]}; + key {[ n, N, eng, ENG ]}; + key {[ comma, question, U0327 ]}; // combining cedilla + key {[ semicolon, period ]}; + key {[ colon, slash ]}; + key {[ exclam, apostrophe, U2019 ]}; // single comma quotation mark + + key {[ space, space, nobreakspace, U202F ]}; // narrow no-break space + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/ch b/nixos/xkb/symbols/ch new file mode 100644 index 00000000..1f0f830b --- /dev/null +++ b/nixos/xkb/symbols/ch @@ -0,0 +1,184 @@ +// Keyboard layouts for Switzerland. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin" + + name[Group1]= "German (Switzerland)"; + + key {[ section, degree ]}; + key {[ 1, plus, bar, exclamdown ]}; + key {[ 2, quotedbl, at, oneeighth ]}; + key {[ 3, asterisk, numbersign ]}; + key {[ 4, ccedilla ]}; + key {[ 5, percent ]}; + key {[ 6, ampersand, notsign ]}; + key {[ 7, slash, bar ]}; + key {[ 8, parenleft, cent ]}; + key {[ 9, parenright ]}; + key {[ 0, equal ]}; + key {[ apostrophe, question, dead_acute ]}; + key {[ dead_circumflex, dead_grave, dead_tilde ]}; + + key {[ e, E, EuroSign ]}; + key {[ z, Z ]}; + key {[ o, O, oe, OE ]}; + key {[ udiaeresis, egrave, bracketleft ]}; + key {[ dead_diaeresis, exclam, bracketright ]}; + + key {[ odiaeresis, eacute ]}; + key {[ adiaeresis, agrave, braceleft ]}; + key {[ dollar, sterling, braceright ]}; + + key {[ less, greater, backslash, brokenbar ]}; + key {[ y, Y ]}; + key {[ comma, semicolon ]}; + key {[ period, colon ]}; + key {[ minus, underscore ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "legacy" { + + include "ch(basic)" + + name[Group1]= "German (Switzerland, legacy)"; + + key {[ 7, slash, brokenbar ]}; +}; + +partial alphanumeric_keys +xkb_symbols "de" { + include "ch(basic)" +}; + +partial alphanumeric_keys +xkb_symbols "de_nodeadkeys" { + + include "ch(basic)" + + name[Group1]= "German (Switzerland, no dead keys)"; + + key {[ apostrophe, question, acute ]}; + key {[ asciicircum, grave, asciitilde ]}; + key {[ diaeresis, exclam, bracketright ]}; +}; + +partial alphanumeric_keys +xkb_symbols "fr" { + + include "ch(basic)" + + name[Group1]= "French (Switzerland)"; + + override key {[ egrave, udiaeresis, bracketleft ]}; + override key {[ eacute, odiaeresis ]}; + override key {[ agrave, adiaeresis, braceleft ]}; +}; + +partial alphanumeric_keys +xkb_symbols "fr_nodeadkeys" { + + include "ch(fr)" + + name[Group1]= "French (Switzerland, no dead keys)"; + + key {[ apostrophe, question, acute ]}; + key {[ asciicircum, grave, asciitilde ]}; + key {[ diaeresis, exclam, bracketright ]}; +}; + +// Layout for a Swiss German Apple Extended Keyboard II. +// Original author: Andreas Tobler , 2000, 2003. +partial alphanumeric_keys +xkb_symbols "de_mac" { + + name[Group1]= "German (Switzerland, Macintosh)"; + + key {[section, degree, UFB01, permille ]}; // fi + key {[ 1, plus, plusminus, infinity ]}; + key {[ 2, quotedbl, leftdoublequotemark, rightdoublequotemark ]}; + key {[ 3, asterisk, numbersign, less ]}; + key {[ 4, ccedilla, Ccedilla, slash ]}; + key {[ 5, percent, bracketleft ]}; + key {[ 6, ampersand, bracketright ]}; + key {[ 7, slash, bar, backslash ]}; + key {[ 8, parenleft, braceleft, Ograve ]}; + key {[ 9, parenright, braceright, Ocircumflex ]}; + key {[ 0, equal, notequal, Uacute ]}; + key {[ apostrophe, question, questiondown ]}; + key {[ dead_circumflex, dead_grave, dead_acute, asciicircum ]}; + + key {[ q, Q, oe, OE ]}; + key {[ w, W, Greek_SIGMA, Aacute ]}; + key {[ e, E, EuroSign, Ediaeresis ]}; + key {[ r, R, registered, Egrave ]}; + key {[ t, T, dagger, Icircumflex ]}; + key {[ z, Z, Greek_OMEGA, Iacute ]}; + key {[ u, U, degree, Ugrave ]}; + key {[ i, I, exclamdown, idotless ]}; + key {[ o, O, oslash, Oslash ]}; + key {[ p, P, Greek_pi, Greek_PI ]}; + key {[ udiaeresis, egrave, section, ydiaeresis ]}; + key {[ dead_diaeresis, exclam, grave, apostrophe ]}; + + key {[ a, A, aring, Aring ]}; + key {[ s, S, ssharp, U1E9E ]}; // ẞ -- ought to be: ligature fl -- tobler + key {[ d, D, Greek_sigma, partialderivative ]}; + key {[ f, F, function, doubledagger ]}; + key {[ g, G, at, comma ]}; + key {[ h, H, ordfeminine, periodcentered ]}; + key {[ j, J, masculine, eth ]}; + key {[ k, K, Greek_DELTA, macron ]}; + key {[ l, L, notsign, caret ]}; + key {[ odiaeresis, eacute, cent, breve ]}; + key {[ adiaeresis, agrave, ae, AE ]}; + key {[ dollar, sterling, paragraph, enfilledcircbullet ]}; + + key {[ less, greater, lessthanequal, greaterthanequal ]}; + key {[ y, Y, yen, Ydiaeresis ]}; + key {[ x, X, similarequal, trademark ]}; + key {[ c, C, copyright ]}; + key {[ v, V, radical, diamond ]}; + key {[ b, B, integral ]}; + key {[ n, N, dead_tilde, enopencircbullet ]}; + // to be fixed -- tobler + key {[ m, M, mu, dead_abovering ]}; + // not sure -- tobler + key {[ comma, semicolon, guillemotleft, guillemotright ]}; + key {[ period, colon, ellipsis, division ]}; + key {[ minus, underscore, hyphen, emdash ]}; + + key {[ space, nobreakspace, nobreakspace ]}; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "fr_mac" { + + include "ch(de_mac)" + + name[Group1]= "French (Switzerland, Macintosh)"; + + override key {[ egrave, udiaeresis, bracketleft ]}; + override key {[ eacute, odiaeresis ]}; + override key {[ agrave, adiaeresis, braceleft ]}; +}; + + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6_de" { + include "sun_vndr/ch(sun_type6_de)" +}; + +partial alphanumeric_keys + xkb_symbols "sun_type6_fr" { + include "sun_vndr/ch(sun_type6_fr)" +}; diff --git a/nixos/xkb/symbols/cm b/nixos/xkb/symbols/cm new file mode 100644 index 00000000..31282a0e --- /dev/null +++ b/nixos/xkb/symbols/cm @@ -0,0 +1,364 @@ +// Keyboard layouts for Cameroon. + +// Cameroon is officially a bilingual country, using French and English, but there are over 270 minority languages. +// The XKB versions of the French and English keyboards were developed by Matthew Lee, Jenni Beadle, and Bruce Cox +// of SIL Cameroon in association with Going Komputya, Uwe Yung of the Goethe Institute, Yaoundé, and Centre ANACLAC. + +// Cameroon QWERTY and Cameroon AZERTY are based largely on SIL Cameroon's Keyman and Microsoft keyboards of the +// same style already in wide use. These keyboards are designed to allow the user to type any of Cameroon's 270+ +// languages and dialects that use the approved orthography. This Approved Orthography was adopted in 1979 by the +// National Committee for the Unification and Harmonisation of Alphabets of Camerooninan Languages. + +default partial alphanumeric_keys +xkb_symbols "basic" +{ + include "us(basic)" + name[Group1]="English (Cameroon)"; +}; + +partial alphanumeric_keys +xkb_symbols "french" +{ + include "fr(basic)" + name[Group1]="French (Cameroon)"; +}; + +// == Cameroon AZERTY == +// Cameroon AZERTY uses the French AZERTY layout, as French keyboards are widely used here. While this keyboard is designed for +// Cameroonian orthography, it still is possible (but not recommended) to type French with minimal discomfort using this keyboard. +// Cameroon AZERTY uses the "!" (exclamation) key as the "Cameroon" key. Pressing this key before another key allows you to access +// the special letters and diacritics needed in Cameroonian orthography. +// For example, press "!" then "a" and get "ɛ" (small epsilon). "!" then "Shift" + "a" (A) will get an "Ɛ" (capital epsilon). +// Press the "!" key twice to get a "!". +// If you prefer, you can hold the AltGr key to access the same letters, but we have found this to be much more awkward in practice. +// If you really don't like our Cameroon key, simply comment out "include "cm(exclamation_switch)"" and the exclamation key will +// return to normal. +// All Diacritics (with the exception of French Trema and Circumflex) must be typed (in order of stacking) after the letter. + +partial alphanumeric_keys +xkb_symbols "azerty" +{ + include "cm(basic)" + name[Group1] = "Cameroon (AZERTY, intl.)"; + key { [ w, W, U1E85, U1E84 ] }; // SMALL LETTER W, CAPITAL LETTER W, SMALL LETTER W WITH DIAERESIS, CAPITAL LETTER W WITH DIAERESIS + key { [ x, X, U2039, U203A ] }; // SMALL LETTER X, CAPITAL LETTER X, SINGLE LEFT-POINTING ANGLE QUOTATION MARK, SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + key { [ c, C, U0327, copyright ] }; // SMALL LETTER C, CAPITAL LETTER C, COMBINING CEDILLA, COPYRIGHT SIGN + key { [ v, V, UA78C, UA78B ] }; // SMALL LETTER V, CAPITAL LETTER V, SMALL LETTER GLOTTAL (SALTILLO), CAPITAL LETTER GLOTTAL (SALTILLO) + key { [ b, B, U0253, U0181 ] }; // SMALL LETTER B, CAPITAL LETTER B, SMALL LETTER B WITH HOOK, CAPITAL LETTER B WITH HOOK + key { [ n, N, U014B, U014A ] }; // SMALL LETTER N, CAPITAL LETTER N, SMALL LETTER ENG, CAPITAL LETTER ENG + key { [ U002C, U003F, NoSymbol, U00D7 ] }; // COMMA, QUESTION MARK, , MULTIPLY + key { [ semicolon, period, dead_acute, dead_grave ] }; // SEMICOLON, PERIOD + key { [ colon, slash, U0323 ] }; // COLON, SLASH, COMBINING DOT BELOW + key { [ exclam, U00A7 ] }; // EXCLAMATION MARK, SECTION SIGN + key { [ q, Q, U2014, U2013 ] }; // SMALL LETTER Q, CAPITAL LETTER Q, EM DASH, EN DASH + key { [ s, S, U201C, U201D ] }; // SMALL LETTER S, CAPITAL LETTER S, LEFT DOUBLE QUOTES, RIGHT DOUBLE QUOTES + key { [ d, D, U0257, U018A ] }; // SMALL LETTER D, CAPITAL LETTER D, SMALL LETTER D WITH HOOK, CAPITAL LETTER D WITH HOOK + key { [ f, F, U00E6, U00C6 ] }; // SMALL LETTER F, CAPITAL LETTER F, SMALL LIGATURE AE, CAPITAL LIGATURE AE + key { [ g, G, U02BC, UA78B ] }; // SMALL LETTER G, CAPITAL LETTER G, CURVED GLOTTAL, CAPITAL LETTER GLOTTAL (SALTILLO) + key { [ h, H, U0251, U2C6D ] }; // SMALL LETTER H, CAPITAL LETTER H, SMALL LETTER ALPHA, CAPITAL LETTER ALPHA + key { [ j, J, leftarrow, U2122 ] }; //SMALL LETTER J, CAPITAL LETTER J, LEFT ARROW, TRADE MARK SIGN + key { [ k, K, downarrow, uparrow ] }; // SMALL LETTER K, CAPITAL LETTER K, DOWN ARROW, UP ARROW + key { [ l, L, rightarrow, U00A3 ] }; // SMALL LETTER L, CAPITAL LETTER L, RIGHT ARROW, POUND STERLING + key { [ m, M, U00F9, U00B5 ] }; // SMALL LETTER M, CAPITAL LETTER M, SMALL LETTER U WITH GRAVE, MICRO SYMBOL + key { [ U0300, U0302, U1DC5, U1DC4 ] }; // COMBINING LOW TONE, COMBINING FALLING TONE, COMBINING LOW-MID TONE, COMBINING MID-HIGH TONE + key { [ a, A, U025B, U0190 ] }; // SMALL LETTER A, CAPITAL LETTER A, SMALL LETTER OPEN E, CAPITAL LETTER OPEN E + key { [ z, Z, U2026, U2020 ] }; // SMALL LETTER Z, CAPITAL LETTER Z, ELLIPSIS, DAGGER + key { [ e, E, schwa, SCHWA ] }; + key { [ r, R, U25CC, U00AE ] }; // SMALL LETTER R, CAPITAL LETTER R, PLACEHOLDER SYMBOL, REGISTERED SIGN + key { [ t, T, U0153, U0152 ] }; // SMALL LETTER T, CAPITAL LETTER T, SMALL LIGATURE OE, CAPITAL LIGATURE OE + key { [ y, Y, U01B4, U01B3 ] }; // SMALL LETTER Y, CAPITAL LETTER Y, SMALL LETTER Y WITH HOOK, CAPITAL LETTER Y WITH HOOK + key { [ u, U, U0289, U0244 ] }; // SMALL LETTER U, CAPITAL LETTER U, SMALL LETTER U BAR, CAPITAL LETTER U BAR + key { [ i, I, U0268, U0197 ] }; // SMALL LETTER I, CAPITAL LETTER I, SMALL LETTER I BAR, CAPITAL LETTER I BAR + key { [ o, O, U0254, U0186 ] }; // SMALL LETTER O, CAPITAL LETTER O, SMALL LETTER OPEN O, CAPITAL LETTER OPEN O + key { [ p, P, U00F8, U00D8 ] }; // SMALL LETTER P, CAPITAL LETTER P, SMALL LETTER O BAR, CAPITAL LETTER O BAR + key { [ U0301, U030C, dead_circumflex, dead_diaeresis ] }; // COMBINING HIGH TONE, COMBINING RISING TONE, DEAD CIRCUMFLEX, DEAD DIAERESIS + key { [ U0330, U0303, U0304, U030D ] }; // COMBINING TILDE (NASAL) BELOW, COMBINING TILDE (NASAL), COMBINING MID TONE, COMBINING VERTICAL LINE ABOVE + key { [ U0026, KP_1, U00B9, U2018 ] }; // AMPERSAND, 1, SUPERSCRIPT 1, LEFT SINGLE QUOTE + key { [ eacute, KP_2, asciitilde, U2019 ] }; // SMALL LETTER E WITH ACUTE, 2, TILDE, RIGHT SINGLE QUOTE + key { [ U0022, KP_3, U0025 ] }; // QUOTATION MARK, 3, PERCENT SIGN + key { [ U0027, KP_4, U007B ] }; // APOSTROPHE, 4, LEFT CURLY BRACKET + key { [ U0028, KP_5, U005B, numbersign ] }; // LEFT PARENTHESIS, 5, LEFT SQUARE BRACKET, NUMBER SIGN + key { [ U002D, KP_6, U007C ] }; // HYPHEN/MINUS, 6, BAR + key { [ U00E8, KP_7, U0300 ] }; // SMALL LETTER E WITH GRAVE, 7, COMBINING GRAVE + key { [ underscore, KP_8, backslash, U20D6 ] }; // UNDERSCORE, 8, BACKSLASH, COMBINING LEFT ARROW ABOVE + key { [ ccedilla, KP_9, U005E] }; // SMALL LETTER C WITH CEDILLA, 9, CIRCUMFLEX + key { [ U00E0, KP_0, at, U20D7 ] }; // SMALL LETTER A WITH GRAVE, 0, @, COMBINING RIGHT ARROW ABOVE + key { [ U0029, U00B0, U005D ] }; // RIGHT PARENTHESIS, DEGREE, RIGHT SQUARE BRACKET + key { [ U003D, U002B, U007D, U00B1 ] }; // EQUAL SIGN, PLUS SIGN, RIGHT CURLY BRACKET, PLUS-MINUS SIGN + key { [ U1DC6, U1DC7, asterisk, U00A4 ] }; // COMBINING MID-LOW, COMBINING HIGH-MID, MULTIPLY, CURRENCY SIGN + key { [ U003C, U003E, U00AB, U00BB ] }; // LESS THAN, GREATER THAN, LEFT GUILLEMET, RIGHT GUILLEMET + key { [ U0024, U20AC, U00B2, U00B3 ] }; // DOLLAR, EURO, SUPERSCRIPT 2, SUPERSCRIPT 3 + include "cm(exclamation_switch)" + include "level3(ralt_switch)" +}; + +// == Cameroon QWERTY == +// Cameroon QWERTY uses the US QWERTY layout, as US keyboards are also widely used here. While this keyboard is designed for +// Cameroonian orthography, it is possible (but not recommended) to type English with minimal discomfort using this keyboard. +// Cameroon QWERTY uses the ";" (semicolon) key as the "Cameroon" key. Pressing this key before another key allows you to access +// the special letters and diacritics needed in Cameroonian orthography. +// For example, press ";" then "a" and get "ɛ" (small epsilon). ";" then "Shift" + "a" (A) will get an "Ɛ" (capital epsilon). +// Press ";" twice to get a ";", or press Shift + ; (:) twice to get a ":" (colon). +// If you prefer, you can hold the AltGr key to access the same letters, but we have found this to be much more awkward in practice. +// If you really don't like our Cameroon key, simply comment out "include "cm(semicolon_switch)"" and the semicolon key will return +// to normal. +// All Diacritics must be typed (in order of stacking) after the letter. + +partial alphanumeric_keys +xkb_symbols "qwerty" +{ + include "cm(basic)" + name[Group1] = "Cameroon Multilingual (QWERTY, intl.)"; + key { [ z, Z, U2026, U2020 ] }; // SMALL LETTER Z, CAPITAL LETTER Z, ELLIPSIS, DAGGER + key { [ x, X ] }; // SMALL LETTER X, CAPITAL LETTER X + key { [ c, C, U0327, U00A9 ] }; // SMALL LETTER C, CAPITAL LETTER C, CEDILLA, COPYRIGHT + key { [ v, V, UA78C, UA78B ] }; // SMALL LETTER V, CAPITAL LETTER V, SMALL LETTER GLOTTAL (SALTILLO), CAPITAL LETTER GLOTTAL (SALTILLO) + key { [ b, B, U0253, U0181 ] }; // SMALL LETTER B, CAPITAL LETTER B, SMALL LETTER B WITH HOOK, CAPITAL LETTER B WITH HOOK + key { [ n, N, U014B, U014A ] }; // SMALL LETTER N, CAPITAL LETTER N, SMALL LETTER ENG, CAPITAL LETTER ENG + key { [ m, M, NoSymbol, U2122 ] }; // SMALL LETTER M, CAPITAL LETTER M, , TRADEMARK SIGN + key { [ U002C, U003C, U2039, U00AB ] }; // COMMA, LESS THAN SIGN, LEFT SINGLE GUILLEMET, LEFT DOUBLE GUILLEMET + key { [ U002E, U003E, U203A, U00BB ] }; // PERIOD, GREATER THAN SIGN, RIGHT SINGLE GUILLEMET, RIGHT DOUBLE GUILLEMET + key { [ U002F, U003F, U00F7 ] }; // SLASH, QUESTION MARK, DIVISION SIGN + key { [ a, A, U025B, U0190 ] }; // SMALL LETTER A, CAPITAL LETTER A, SMALL LETTER OPEN E, CAPITAL LETTER OPEN E + key { [ s, S ] }; // SMALL LETTER S, CAPITAL LETTER S + key { [ d, D, U0257, U018A ] }; // SMALL LETTER D, CAPITAL LETTER D, SMALL LETTER D WITH HOOK, CAPITAL LETTER D WITH HOOK + key { [ f, F, U00E6, U00C6 ] }; // SMALL LETTER F, CAPITAL LETTER F, SMALL LIGATURE AE, CAPITAL LIGATURE AE + key { [ g, G, U02BC, UA78B ] }; // SMALL LETTER G, CAPITAL LETTER G, CURVED GLOTTAL, CAPITAL LETTER GLOTTAL (SALTILLO) + key { [ h, H, U0251, U2C6D ] }; // SMALL LETTER H, CAPITAL LETTER H, SMALL LETTER ALPHA, CAPITAL LETTER ALPHA + key { [ j, J, U0330, U0323 ] }; // SMALL LETTER J, CAPITAL LETTER J, COMBINING TILDE (NASAL) BELOW, COMBINING DOT BELOW + key { [ k, K, U1DC5, U1DC7 ] }; // SMALL LETTER K, CAPITAL LETTER K, COMBINING LOW-MID TONE, COMBINING HIGH-MID + key { [ l, L, U1DC6, U1DC4 ] }; // SMALL LETTER L, CAPITAL LETTER L, COMBINING MID-LOW, COMBINING MID-HIGH TONE + key { [ U003B, U003A ] }; // SEMICOLON, COLON + key { [ U0300, U0302, U0027, U0022 ] }; // COMBINING LOW TONE, COMBINING FALLING TONE, APOSTROPHE, QUOTATION MARK + key { [ q, Q, U2014, U2013 ] }; // SMALL LETTER Q, CAPITAL LETTER Q, EM DASH, EN DASH + key { [ w, W, U1E85, U1E84 ] }; // SMALL LETTER W, CAPITAL LETTER W, SMALL LETTER W WITH DIAERESIS, CAPITAL LETTER W WITH DIAERESIS + key { [ e, E, schwa, SCHWA ] }; + key { [ r, R, U25CC, U00AE ] }; // SMALL LETTER R, CAPITAL LETTER R, PLACEHOLDER SYMBOL, REGISTERED SIGN + key { [ t, T, U0153, U0152 ] }; // SMALL LETTER T, CAPITAL LETTER T, SMALL LIGATURE OE, CAPITAL LIGATURE OE + key { [ y, Y, U01B4, U01B3 ] }; // SMALL LETTER Y, CAPITAL LETTER Y, SMALL LETTER Y WITH HOOK, CAPITAL LETTER Y WITH HOOK + key { [ u, U, U0289, U0244 ] }; // SMALL LETTER U, CAPITAL LETTER U, SMALL LETTER U BAR, CAPITAL LETTER U BAR + key { [ i, I, U0268, U0197 ] }; // SMALL LETTER I, CAPITAL LETTER I, SMALL LETTER I BAR, CAPITAL LETTER I BAR + key { [ o, O, U0254, U0186 ] }; // SMALL LETTER O, CAPITAL LETTER O, SMALL LETTER OPEN O, CAPITAL LETTER OPEN O + key { [ p, P, U00F8, U00D8 ] }; // SMALL LETTER P, CAPITAL LETTER P, SMALL LETTER O BAR, CAPITAL LETTER O BAR + key { [ U0301, U030C, U005B, U007B ] }; // COMBINING HIGH TONE, COMBINING RISING TONE, LEFT SQUARE BRACKET, LEFT CURLY BRACKET + key { [ U0327, U0308, U005D, U007D ] }; // COMBINING CEDILLA, COMBINING DIAERESIS, RIGHT SQUARE BRACKET, RIGHT CURLY BRACKET + key { [ U0031, U0021, U00BC ] }; // 1, EXCLAMATION POINT, ONE QUARTER + key { [ U0032, U0040, U00BD ] }; //2, AT SYMBOL, ONE HALF + key { [ U0033, U0023, U00BE ] }; // 3, NUMBER SIGN, THREE QUARTERS + key { [ U0034, U0024, NoSymbol, U20AC ] }; // 4, DOLLAR, , EURO SIGN + key { [ U0038, U002A, NoSymbol, U00D7 ] }; // 8, ASTERISK, , MATH MULTIPLY + key { [ U0039, U0028, U2018, U201C ] }; // 9, LEFT PARENTHESIS, LEFT SINGLE QUOTE MARK, LEFT DOUBLE QUOTE MARK + key { [ U0030, U0029, U2019, U201D ] }; // 0, RIGHT PARENTHESIS, RIGHT SINGLE QUOTE MARK, LEFT DOUBLE QUOTE MARK + key { [ U002D, U005F, U0304 ] }; // MINUS, UNDERSCORE, COMBINING MID TONE, COMBINING MID TONE + key { [ U003D, U002B, NoSymbol, U00B1 ] }; // EQUAL, PLUS, , PLUS-MINUS + key { [ U005C, U007C ] }; // BACKSLASH, BAR + key { [ U030D, U0303, U0060, U007E ] }; // COMBINING VERTICAL LINE ABOVE, COMBINING TILDE ABOVE, GRAVE ACCENT, TILDE + include "cm(semicolon_switch)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "dvorak" +{ + name[Group1] = "Cameroon (Dvorak, intl.)"; + key { [ semicolon, colon ] }; // SEMICOLON, COLON + key { [ q, Q, U2014, U2013 ] }; // SMALL LETTER Q, CAPITAL LETTER Q, EM DASH, EN DASH + key { [ j, J, U0330, U0323 ] }; // SMALL LETTER J, CAPITAL LETTER J, COMBINING TILDE (NASAL) BELOW, COMBINING DOT BELOW + key { [ k, K, U1DC5, U1DC7 ] }; // SMALL LETTER K, CAPITAL LETTER K, COMBINING LOW-MID TONE, COMBINING HIGH-MID + key { [ x, X ] }; // SMALL LETTER X, CAPITAL LETTER X + key { [ b, B, U0253, U0181 ] }; // SMALL LETTER B, CAPITAL LETTER B, SMALL LETTER B WITH HOOK, CAPITAL LETTER B WITH HOOK + key { [ m, M, NoSymbol, U2122 ] }; // SMALL LETTER M, CAPITAL LETTER M, , TRADEMARK SIGN + key { [ w, W, U1E85, U1E84 ] }; // SMALL LETTER W, CAPITAL LETTER W, SMALL LETTER W WITH DIAERESIS, CAPITAL LETTER W WITH DIAERESIS + key { [ v, V, UA78C, UA78B ] }; // SMALL LETTER V, CAPITAL LETTER V, SMALL LETTER GLOTTAL (SALTILLO), CAPITAL LETTER GLOTTAL (SALTILLO) + key { [ z, Z, U2026, U2020 ] }; // SMALL LETTER Z, CAPITAL LETTER Z, ELLIPSIS, DAGGER + key { [ a, A, U025B, U0190 ] }; // SMALL LETTER A, CAPITAL LETTER A, SMALL LETTER OPEN E, CAPITAL LETTER OPEN E + key { [ o, O, U0254, U0186 ] }; // SMALL LETTER O, CAPITAL LETTER O, SMALL LETTER OPEN O, CAPITAL LETTER OPEN O + key { [ e, E, schwa, SCHWA ] }; + key { [ u, U, U0289, U0244 ] }; // SMALL LETTER U, CAPITAL LETTER U, SMALL LETTER U BAR, CAPITAL LETTER U BAR + key { [ i, I, U0268, U0197 ] }; // SMALL LETTER I, CAPITAL LETTER I, SMALL LETTER I BAR, CAPITAL LETTER I BAR + key { [ d, D, U0257, U018A ] }; // SMALL LETTER D, CAPITAL LETTER D, SMALL LETTER D WITH HOOK, CAPITAL LETTER D WITH HOOK + key { [ h, H, U0251, U2C6D ] }; // SMALL LETTER H, CAPITAL LETTER H, SMALL LETTER ALPHA, CAPITAL LETTER ALPHA + key { [ t, T, U0153, U0152 ] }; // SMALL LETTER T, CAPITAL LETTER T, SMALL LIGATURE OE, CAPITAL LIGATURE OE + key { [ n, N, U014B, U014A ] }; // SMALL LETTER N, CAPITAL LETTER N, SMALL LETTER ENG, CAPITAL LETTER ENG + key { [ s, S ] }; // SMALL LETTER S, CAPITAL LETTER S + key { [ minus, underscore, U0304 ] }; // MINUS, UNDERSCORE, COMBINING MID TONE + key { [ U0300, U0302, U0027, U0022 ] }; // COMBINING LOW TONE, COMBINING FALLING TONE, APOSTROPHE, QUOTATION MARK + key { [ comma, less, U2039, U00AB ] }; // COMMA, LESS THAN SIGN, LEFT SINGLE GUILLEMET, LEFT DOUBLE GUILLEMET + key { [ period, greater, U203A, U00BB ] }; // PERIOD, GREATER THAN SIGN, RIGHT SINGLE GUILLEMET, RIGHT DOUBLE GUILLEMET + key { [ p, P, U00F8, U00D8 ] }; // SMALL LETTER P, CAPITAL LETTER P, SMALL LETTER O BAR, CAPITAL LETTER O BAR + key { [ y, Y, U01B4, U01B3 ] }; // SMALL LETTER Y, CAPITAL LETTER Y, SMALL LETTER Y WITH HOOK, CAPITAL LETTER Y WITH HOOK + key { [ f, F, U00E6, U00C6 ] }; // SMALL LETTER F, CAPITAL LETTER F, SMALL LIGATURE AE, CAPITAL LIGATURE AE + key { [ g, G, U02BC, UA78B ] }; // SMALL LETTER G, CAPITAL LETTER G, CURVED GLOTTAL, CAPITAL LETTER GLOTTAL (SALTILLO) + key { [ c, C, U0327, U00A9 ] }; // SMALL LETTER C, CAPITAL LETTER C, CEDILLA, COPYRIGHT + key { [ r, R, U25CC, U00AE ] }; // SMALL LETTER R, CAPITAL LETTER R, PLACEHOLDER SYMBOL, REGISTERED SIGN + key { [ l, L, U1DC6, U1DC4 ] }; // SMALL LETTER L, CAPITAL LETTER L, COMBINING MID-LOW, COMBINING MID-HIGH TONE + key { [ slash, U003F, U00F7, U0294 ] }; // SLASH, QUESTION MARK, DIVISION SIGN, GLOTTAL STOP + key { [ equal, plus, NoSymbol, plusminus ] }; // EQUAL, PLUS, , PLUS-MINUS + key { [ 1, exclam, U00BC ] }; // 1, EXCLAMATION POINT, ONE QUARTER + key { [ 2, at, U00BD ] }; // 2, AT SYMBOL, ONE HALF + key { [ 3, numbersign, U00BE ] }; // 3, NUMBER SIGN, THREE QUARTERS + key { [ 4, dollar, NoSymbol, U20AC ] }; // 4, DOLLAR, , EURO SIGN + key { [ 5, percent ] }; // 5, PERCENT + key { [ 6, asciicircum, dead_circumflex, dead_circumflex ] }; // 6, CARET, DEAD CIRCUMFLEX, DEAD CIRCUMFLEX + key { [ 7, ampersand ] }; // 7, AMPERSAND + key { [ 8, asterisk, NoSymbol, multiply ] }; // 8, ASTERISK, , MULTIPLY + key { [ 9, parenleft, leftsinglequotemark, leftdoublequotemark ] }; // 9, LEFT PARENTHESIS, LEFT SINGLE QUOTE MARK, LEFT DOUBLE QUOTE MARK + key { [ 0, parenright, rightsinglequotemark, rightdoublequotemark ] }; // 0, RIGHT PARENTHESIS, RIGHT SINGLE QUOTE MARK, LEFT DOUBLE QUOTE MARK + key { [ U0301, U030C, U005B, U007B ] }; // COMBINING HIGH TONE, COMBINING RISING TONE, LEFT SQUARE BRACKET, LEFT CURLY BRACKET + key { [ U0327, dead_diaeresis, U005D, braceright ] }; // COMBINING CEDILLA, DEAD DIAERESIS, RIGHT SQUARE BRACKET, RIGHT CURLY BRACKET + key { [ backslash, bar ] }; // BACKSLASH, BAR + key { [ U030D, U0303, U0060, U007E ] }; // COMBINING VERTICAL LINE ABOVE, COMBINING TILDE ABOVE, GRAVE ACCENT, TILDE + include "cm(semicolon_switch_dvorak)" + include "level3(ralt_switch)" +}; + +// The following code creates the "Cameroon key" phenomenon. + +partial modifier_keys +xkb_symbols "semicolon_switch" { + key {[ ISO_Level3_Latch, colon, semicolon, colon ]}; + modifier_map Mod5 { ISO_Level3_Latch }; +}; + +partial modifier_keys +xkb_symbols "exclamation_switch" { + key {[ ISO_Level3_Latch, U00A7, exclam, U00A7 ]}; + modifier_map Mod5 { ISO_Level3_Latch }; +}; + +partial modifier_keys +xkb_symbols "semicolon_switch_dvorak" { + key {[ ISO_Level3_Latch, colon, semicolon, colon ]}; + modifier_map Mod5 { ISO_Level3_Latch }; +}; + + +// The layout below is for the Mmuock alphabet as described in the book +// "The Sound of Mmuock: Orthography (2. ed.)" [ISBN: 978-9956-645-28-1]. +// Mmuock is the language of the Mmuock (local: Muòk) people of Western Cameroon. +// +// Author: Tano Fotang +// Created: 2014-06-24 +// Version: 1.2 +// +// NOTES: +// +// 1. We use combining diacritical marks to create tone markings. There are 13 +// tones that need to be indicated, although the first 5 are usually enough +// to represent the rest in simplified orthography. +// +// 2. When composing Mmuock text, about every fourth symbol is for tone. To +// facilitate easy and fast input, the combining diacritics are placed on +// the home row (AC). To reduce the number of key strokes required, the +// unshifted third level is used. Only 5 of the combining diacritics are +// not on the AC row; they are in the top number row, AE. +// +// 3. Symbols that are used infrequently (`r', `h', `ɛ', `ǝ', etc.) are placed +// in level3. Additionally, the letter eng (`ŋ'), although commonly used, +// is found in level3 because it can alternatively be represented by . +// (Indeed, the keyman version of keyboard actually replaces with `ŋ'.) +// +// 4. The unshifted AB10 key (normally assigned to the slash `/') is used as +// level 3 switch/latch since the slash is not used in the ordinary course +// of typing Mmuock text. +// +// 5. The 'Cameroon Multilingual' keyboards that are defined elsewhere, do not +// fit our needs because: (a) they are based on a different alphabet, (b) the +// vast majority of their symbols are not used in Mmuock, and (c) for the few +// symbols that are used in Mmuock, their placings are not egonomic for +// typing Mmuock as the _PRIMARY_ language. The aim of this keyboard is to +// give priority to symbols that are actually used in the Mmuock alphabet. +// +// 6. The following fonts have been found to produce the best results with this +// keyboard: +// Family Accuracy +// DejaVu (except Sans Mono) 9/10 +// Linux Libertine 8/10 +// Ubuntu (except light) 8/10 +// Droid (except sans mono) 7/10 +// Gentium, Gentium Alt 6.5/10 +// In the terminal emulator, the following font variants have been tested: +// Ubuntu Mono 9/10 +// Unifont (Medium) 9/10 +// DejaVu Sans Mono 7.5/10 +// Droid Sans Mono 6.5/10 +// These fonts are all freely available. +// +// ------the layout----------- +// +// ┌─────┐ +// │ 2 4 │ 2 = Shift, 4 = Level3 + Shift +// │ 1 3 │ 1 = Normal, 3 = Level3 +// └─────┘ +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ~ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & | * │ ( │ ) │ _ – │ + ̣┃ ⌫ Back- ┃ +// AE│ ` ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6  ̂│ 7  ̑│ 8  ̍│ 9  ̓│ 0  ̊│ ¯ - │ = ̋┃ space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ Q │ W │ E Ǝ │ Š R │ T │ Y │ U Ω │ I Ɛ │ O Φ │ P ∏ │ Ø { │ Σ } ┃ Enter ┃ +// AD┃Tab ↹ ┃ q │ w │ e ǝ │ š r │ t │ y │ u ω │ i ɛ │ o φ │ p π │ ø [ │ σ ] ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ A │ S │ D │ F │ G │  ̇ H │ J │ K │ L │ Œ : │ " ” │ Æ | ┃ ┃ +// AC┃Caps ⇬ ┃ a  ̃│ s  ̄| d ́| f  ̀| g  ̌|  ̣ h │ j  ̆│ k  ̏│ l  ̈│ œ ; │ ' ’ │ æ \ ┃ ┃ +// ┣━━━━━━━━┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ │ Z Dz │ X │ C │ V │ B │ N ŋ │ M │ < « │ > » │ ? ┃ ┃ +// AB┃Shift ⇧ │ z dz │ x │ c │ v │ b │ n Ŋ │ m │ , ‹ │ . › │ / ┃Shift ⇧ ┃ +// ┣━━━━━━━┳━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// AA┃Ctrl ┃Meta ┃Alt ┃ Space ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// + +partial alphanumeric_keys +xkb_symbols "mmuock" { + + include "us(basic)" + + name[Group1]= "Mmuock"; + + key { [ dead_grave, dead_tilde, grave, asciitilde ] }; + key { [ 6, asciicircum, U0302 ] }; // tone 10 + key { [ 7, ampersand, U0311 ] }; // tone 12 + key { [ 8, asterisk, U030D ] }; // tone 13 + key { [ 9, parenleft, U0307 ] }; // tone 7 + key { [ 0, parenright, U030A ] }; // tone 6 + key { [dead_macron, underscore, minus, endash ] }; + key { [ equal, plus, U030B, dead_belowdot ] }; // U030B = tone 8 + + key { [ e, E, U01DD, U018E ] }; // U01DD = reversed E + key { [ scaron, Scaron, r, R ] }; + key { [ u, U, Greek_omega, Greek_OMEGA ] }; + key { [ i, I, U025B, U0190 ] }; // U025B = open E + key { [ o, O, Greek_phi, Greek_PHI ] }; + key { [ p, P, Greek_pi, Greek_PI ] }; + key { [ oslash, Oslash, bracketleft, braceleft ] }; + key { [Greek_sigma, Greek_SIGMA, bracketright, braceright ] }; + + key { [ a, A, U0303 ] }; // tone 0 + key { [ s, S, U0304 ] }; // tone 1 + key { [ d, D, U0301 ] }; // tone 3 + key { [ f, F, U0300 ] }; // tone 4 + key { [ g, G, U030C ] }; // tone 5 + key { [ U0323, U0307, h, H ] }; // COMBINING DOT BELOW, ABOVE + key { [ j, J, U0306 ] }; // tone 9 + key { [ k, K, U030F ] }; // tone 11 + key { [ l, L, U0308 ] }; // tone 14 + key { [ oe, OE, semicolon, colon ] }; + key { [ dead_acute, quotedbl, apostrophe ] }; + key { [ ae, AE, backslash, bar ] }; + + key { [ z, Z, U01F3, U01F2 ] }; // U01F3 = letter dz + key { [ n, N, eng, ENG ] }; + key { [ comma, less, guillemotleft, U2039 ] }; + key { [ period, greater, guillemotright, U203A ] }; + + include "cm(solidus_switch)" + include "level3(ralt_switch)" +}; + +// Use the slash key as special key for switching or latching to level 3. +partial modifier_keys +xkb_symbols "solidus_switch" { + key {[ ISO_Level3_Latch, question, slash, dead_abovedot ]}; + modifier_map Mod5 { ISO_Level3_Latch }; +}; diff --git a/nixos/xkb/symbols/cn b/nixos/xkb/symbols/cn new file mode 100644 index 00000000..627da26d --- /dev/null +++ b/nixos/xkb/symbols/cn @@ -0,0 +1,712 @@ +// Keyboard layouts for China. + +// The default Chinese layout is the same as the American. +default partial alphanumeric_keys +xkb_symbols "basic" { + include "us(basic)" + + name[Group1]= "Chinese"; +}; + +// Tibetan Standard Keyboard map for XKB/X.org +// +// Based on the CNS Tibetan keyboard as supported by Windows Vista +// using information published by Tashi Tsering: +// http://www.yalasoo.com/English/docs/yalasoo_en_MStbKb.html +// +// XKB version by Rich Felker . +// +// The CNS Tibetan keyboard standard specifies 5 keyboards worth of keys, +// but apparently makes no requirements about how each is accessed. Only +// the first 2 are needed for native Tibetan text; the remainder are +// filled with special symbols and letters for transliterating foreign +// text. Further, CNS leaves the level of support of keyboards 2-5 as an +// option to the implementor (despite the fact that #2 is absolutely +// essential...). Windows Vista maps them as follows: +// +// 1. Unshifted +// 2. "m"-key-prefixed +// 3. Shift-modified +// 4. Ctrl+Alt+Shift-modified +// 5. "M"-key-prefixed +// +// I roughly copy the Windows Vista mapping, which was intended by the +// designer of the keyboard, with the following exceptions: +// +// The fifth keyboard is almost empty and contains only precomposed forms +// of subjoined letter characters whose use is strongly discouraged, and +// is not implemented at all in this XKB map. The fourth is implemented, +// but is accessed by an "m"-prefix (or "M"-prefix, for convenience) +// followed by a Shift-modified key. This avoids stealing the Ctrl and Alt +// keys, which belong to applications on *nix and not to the keyboard or +// input method. Aside from enterring rare special symbols and +// foreign-word-transliteration letters, these differences should not +// affect users. +// +// Implementation notes: +// +// A latching ISO Level3 shift is used for the "m"-prefix modifier. In +// principle moving it to other keys (e.g. AltGr) would be possible +// according to user preference, but this is not practical for typing +// Tibetan, since the subjoined consonants, of which Tibetan has 0-2 per +// syllable, are accessed via this mechanism. +// +// One annoyance is that the latching Level3 shift fails to work if the +// previous key is not yet released when "m" is pressed (the key release +// event kills the latch). I consider this a bug in X and don't know an +// easy way to work around it. Complain to the maintainers if it bothers +// you and maybe they'll find a fix. You won't notice it unless you're +// fast at typing Tibetan anyway. + +partial alphanumeric_keys +xkb_symbols "tib" { + + name[Group1]= "Tibetan"; + + key { [ 0x1000f68, 0x1000f01, 0x1000fb8, 0x1000f00 ] }; # ཨ ༁ ྸ ༀ + key { [ 0x1000f21, 0x1000f2a, 0x1000f04, 0x1000f76 ] }; # ༡ ༪ ༄ ྲྀ + key { [ 0x1000f22, 0x1000f2b, 0x1000f05, 0x1000f77 ] }; # ༢ ༫ ༅ ཷ + key { [ 0x1000f23, 0x1000f2c, 0x1000f7e, 0x1000f78 ] }; # ༣ ༬ ཾ ླྀ + key { [ 0x1000f24, 0x1000f2d, 0x1000f83, 0x1000f79 ] }; # ༤ ༭ ྃ ཹ + key { [ 0x1000f25, 0x1000f2e, 0x1000f37, 0x1000f81 ] }; # ༥ ༮ ༷ ཱྀ + key { [ 0x1000f26, 0x1000f2f, 0x1000f35, 0x1000f09 ] }; # ༦ ༯ ༵ ༉ + key { [ 0x1000f27, 0x1000f30, 0x1000f7f, 0x1000f0a ] }; # ༧ ༰ ཿ ༊ + key { [ 0x1000f28, 0x1000f31, 0x1000f14, 0x1000f0f ] }; # ༨ ༱ ༔ ༏ + key { [ 0x1000f29, 0x1000f32, 0x1000f11, 0x1000f10 ] }; # ༩ ༲ ༑ ༐ + key { [ 0x1000f20, 0x1000f33, 0x1000f08, 0x1000f12 ] }; # ༠ ༳ ༈ ༒ + key { [ 0x1000f67, 0x1000f3c, 0x1000fb7, 0x1000f0c ] }; # ཧ ༼ ྷ ༌ + key { [ 0x1000f5d, 0x1000f3d, 0x1000fba, 0x1000f13 ] }; # ཝ ༽ ྺ ༓ + + key { [ 0x1000f45, 0x1000f15, 0x1000f95, 0x1000f89 ] }; # ཅ ༕ ྕ ྉ + key { [ 0x1000f46, 0x1000f16, 0x1000f96, 0x1000f88 ] }; # ཆ ༖ ྖ ྈ + key { [ 0x1000f7a, 0x1000f17, 0x1000f7b, 0x1000fbe ] }; # ེ ༗ ཻ ྾ + key { [ 0x1000f62, 0x1000fbc, 0x1000fb2, 0x1000f6a ] }; # ར ྼ ྲ ཪ + key { [ 0x1000f4f, 0x1000f4a, 0x1000f9f, 0x1000f9a ] }; # ཏ ཊ ྟ ྚ + key { [ 0x1000f61, 0x1000fbb, 0x1000fb1, 0x1000fbf ] }; # ཡ ྻ ྱ ྿ + key { [ 0x1000f74, 0x1000f18, 0x1000fad, 0x1000f75 ] }; # ུ ༘ ྭ ཱུ + key { [ 0x1000f72, 0x1000f19, 0x1000f80, 0x1000f73 ] }; # ི ༙ ྀ ཱི + key { [ 0x1000f7c, 0x1000f1a, 0x1000f7d, 0x1000fc0 ] }; # ོ ༚ ཽ ࿀ + key { [ 0x1000f55, 0x1000f1b, 0x1000fa5, 0x1000fc1 ] }; # ཕ ༛ ྥ ࿁ + key { [ 0x1000f59, 0x1000f1c, 0x1000fa9, 0x1000fc2 ] }; # ཙ ༜ ྩ ࿂ + key { [ 0x1000f5a, 0x1000f1d, 0x1000faa, 0x1000fc3 ] }; # ཚ ༝ ྪ ࿃ + key { [ 0x1000f5b, 0x1000f1e, 0x1000fab, 0x1000f5c ] }; # ཛ ༞ ྫ ཛྷ + + key { [ 0x1000f60, 0x1000f71, 0x1000fb0, 0x1000fc4 ] }; # འ ཱ ྰ ࿄ + key { [ 0x1000f66, 0x1000f1f, 0x1000fb6, 0x1000fc5 ] }; # ས ༟ ྶ ࿅ + key { [ 0x1000f51, 0x1000f4c, 0x1000fa1, 0x1000f9c ] }; # ད ཌ ྡ ྜ + key { [ 0x1000f56, 0x1000f3e, 0x1000fa6, 0x1000f57 ] }; # བ ༾ ྦ བྷ + key { [ 0x1000f44, 0x1000f3f, 0x1000f94, 0x1000fc6 ] }; # ང ༿ ྔ ࿆ + key { [ 0x1000f58, 0x1000fcf, 0x1000fa8, 0x1000fc7 ] }; # མ ࿏ ྨ ࿇ + key { [ 0x1000f0b, 0x1000f02, 0x1000f84, 0x1000fc8 ] }; # ་ ༂ ྄ ࿈ + key { [ 0x1000f42, 0x1000f03, 0x1000f92, 0x1000f43 ] }; # ག ༃ ྒ གྷ + key { [ 0x1000f63, 0x1000f06, 0x1000fb3, 0x1000fc9 ] }; # ལ ༆ ླ ࿉ + key { [ 0x1000f5e, 0x1000f07, 0x1000fae, 0x1000fca ] }; # ཞ ༇ ྮ ࿊ + key { [ 0x1000f0d, 0x1000f38, 0x1000f0e, 0x1000fcb ] }; # ། ༸ ༎ ࿋ + + key { [ 0x1000f5f, 0x1000f34, 0x1000faf, 0x1000fcc ] }; # ཟ ༴ ྯ ࿌ + key { [ 0x1000f64, 0x1000f65, 0x1000fb4, 0x1000fb5 ] }; # ཤ ཥ ྴ ྵ + key { [ 0x1000f40, 0x1000f69, 0x1000f90, 0x1000fb9 ] }; # ཀ ཀྵ ྐ ྐྵ + key { [ 0x1000f41, 0x1000f87, 0x1000f91, 0x1000f36 ] }; # ཁ ྇ ྑ ༶ + key { [ 0x1000f54, 0x1000f86, 0x1000fa4, 0x1000f82 ] }; # པ ྆ ྤ ྂ + key { [ 0x1000f53, 0x1000f4e, 0x1000fa3, 0x1000f9e ] }; # ན ཎ ྣ ྞ + key { [ ISO_Level3_Latch, ISO_Level3_Latch, 0x1000f85, 0x1000f52 ] }; # -བཏགས་ ྅ དྷ + key { [ 0x1000f50, 0x1000f4b, 0x1000fa0, 0x1000f9b ] }; # ཐ ཋ ྠ ྛ + key { [ 0x1000f47, 0x1000f3a, 0x1000f97, 0x1000f8b ] }; # ཇ ༺ ྗ ྋ + key { [ 0x1000f49, 0x1000f3b, 0x1000f99, 0x1000f8a ] }; # ཉ ༻ ྙ ྊ +}; + +// Tibetan Standard Keyboard with ASCII numerals +// +// Users may prefer that the numeral keys enter ASCII numerals instead of +// Tibetan numerals, since the latter are not in modern use in Tibet. +// This is especially an issue for laptop users who do not have a numeric +// keypad by which to access the ASCII numerals, and who need to type +// numbers to be interpreted by applications. +// +// In this mapping, the Shift-modified numeral keys generate Tibetan +// numerals, since it was unclear to me that the standard Latin punctuation +// keys would be any use without Latin letters. (One can imagine wanting to +// type an email address using the @ sign, but as of present non-ASCII +// email addresses are not possible.) This mapping may change in the future +// if a clearly better use for the shifted numerals is pointed out by users. + +partial alphanumeric_keys +xkb_symbols "tib_asciinum" { + include "cn(tib)" + + name[Group1]= "Tibetan (with ASCII numerals)"; + + key { [ 1, 0x1000f21, 0x1000f04, 0x1000f76 ] }; # 1 ༡ ༄ ྲྀ + key { [ 2, 0x1000f22, 0x1000f05, 0x1000f77 ] }; # 2 ༢ ༅ ཷ + key { [ 3, 0x1000f23, 0x1000f7e, 0x1000f78 ] }; # 3 ༣ ཾ ླྀ + key { [ 4, 0x1000f24, 0x1000f83, 0x1000f79 ] }; # 4 ༤ ྃ ཹ + key { [ 5, 0x1000f25, 0x1000f37, 0x1000f81 ] }; # 5 ༥ ༷ ཱྀ + key { [ 6, 0x1000f26, 0x1000f35, 0x1000f09 ] }; # 6 ༦ ༵ ༉ + key { [ 7, 0x1000f27, 0x1000f7f, 0x1000f0a ] }; # 7 ༧ ཿ ༊ + key { [ 8, 0x1000f28, 0x1000f14, 0x1000f0f ] }; # 8 ༨ ༔ ༏ + key { [ 9, 0x1000f29, 0x1000f11, 0x1000f10 ] }; # 9 ༩ ༑ ༐ + key { [ 0, 0x1000f20, 0x1000f08, 0x1000f12 ] }; # 0 ༠ ༈ ༒ +}; + +// Uyghur Standard Keyboard Map for XKB/X.Org +// +// XKB version in collaboration by Muhemmed Abdullah , +// Abdussalam Abdurrahman , and +// Ekrem Tomur + +partial alphanumeric_keys +xkb_symbols "ug" { + include "us(basic)" + + name[Group1]= "Uyghur"; + + key { [ 9, parenright ] }; // 9 ) + key { [ 0, parenleft ] }; // 0 ( + key { [ minus, 0x1002014 ] }; // - — + + key { [ 0x1000686, VoidSymbol ] }; // چ + key { [ 0x10006cb, VoidSymbol ] }; // ۋ + key { [ 0x10006d0, VoidSymbol ] }; // ې + key { [ 0x1000631, VoidSymbol ] }; // ر + key { [ 0x100062a, VoidSymbol ] }; // ت + key { [ 0x100064a, VoidSymbol ] }; // ي + key { [ 0x10006c7, VoidSymbol ] }; // ۇ + key { [ 0x10006ad, VoidSymbol ] }; // ڭ + key { [ 0x1000648, VoidSymbol ] }; // و + key { [ 0x100067e, VoidSymbol ] }; // پ + key { [ bracketright, guillemotright ] }; // ] » + key { [ bracketleft, guillemotleft ] }; // [ « + + key { [ 0x10006be, VoidSymbol ] }; // ھ + key { [ 0x1000633, VoidSymbol ] }; // س + key { [ 0x100062f, 0x1000698 ] }; // د ژ + key { [ 0x1000627, 0x1000641 ] }; // ا ف + key { [ 0x10006d5, 0x10006af ] }; // ە گ + key { [ 0x1000649, 0x100062e ] }; // ى خ + key { [ 0x1000642, 0x100062c ] }; // ق ج + key { [ 0x1000643, 0x10006c6 ] }; // ك ۆ + key { [ 0x1000644, VoidSymbol ] }; // ل + key { [ Arabic_semicolon, colon ] }; // ؛ : + + key { [ 0x1000632, VoidSymbol ] }; // ز + key { [ 0x1000634, VoidSymbol ] }; // ش + key { [ 0x100063a, VoidSymbol ] }; // غ + key { [ 0x10006c8, VoidSymbol ] }; // ۈ + key { [ 0x1000628, VoidSymbol ] }; // ب + key { [ 0x1000646, VoidSymbol ] }; // ن + key { [ 0x1000645, VoidSymbol ] }; // م + key { [ Arabic_comma, 0x100203a ] }; // ، › + key { [ period, 0x1002039 ] }; // . ‹ + key { [ 0x1000626, Arabic_question_mark ] }; // ئ ؟ +}; + +// Pinyin Keyboard, in the style of altgr-intl +// +// Chinese speakers and learners often find it hard to type Hanyu Pinyin +// with all its tones and ü. This rule defines an altgr-intl-like behavior, +// with dead keys activated by "AltGr + ". It also works with many +// "pinyin" extensions, such as Tongyong Pinyin (Taiwan Mandarin) and +// various SASM/GNC romanizations. +// +// Number row keys 1 2 3 4 are defined as dead-keys for the tones. +// They correspond to the four tones in Hanyu Pinyin. +// +// To generate a · for "neutral" syllables, use AltGr + ` (grave). +// To generate a raw ü, use AltGr + v. +// V is used instead of ü for tones. +// +// AltGr+Shift+` triggers dead_abovering (˚), used by the Taiwanese +// Tongyong Pinyin variant for the "neutral" tone. +// +// AltGr+6 triggers dead_circumflex (^) for ê ẑ ĉ ŝ, etc. +// These can be stacked after tones to produce ế and ề; other tones require +// combining characters, available through nobreakspace (AltGr+Space). +// +// AltGr+Shift+6 triggers dead_diaeresis (¨) for SASM/GNC +// romanization of tib, mon, and ug. +// +// This file should be used with an appropriate XCompose file with +// definitons for dead_{macron,acute,caron,grave} + a/e/i/o/u/v(ü). +// --Mingye Wang + +partial alphanumeric_keys +xkb_symbols "altgr-pinyin" { + include "us(basic)" + name[Group1]= "Hanyu Pinyin Letters (with AltGr dead keys)"; + + key { [ grave, asciitilde, periodcentered,dead_abovering ] }; + key { [ 1, exclam, dead_macron, macron ] }; + key { [ 2, at, dead_acute, acute ] }; + key { [ 3, numbersign, dead_caron, caron ] }; + key { [ 4, dollar, dead_grave, grave ] }; + + key { [ 6, asciicircum, dead_circumflex, dead_diaeresis ] }; + key { [ v, V, udiaeresis, Udiaeresis ] }; + + key { [ space, space, nobreakspace, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + +// Mongolian Bichig (traditional) Keyboard Map for XKB/X.Org +// +// by Maurizio M. Gavioli , 2019 from PRC +// standard GB/T 28038-2011, par. 4.3. +// The original standard has vertical presentation forms (UFExx range) +// for level 2 of AB08 - AB10, AD11 - AD13, AE01, AE09, AE10; they have +// been replaced by the corresponding decompositions, assuming that: +// 1) presentation forms are a job of the font stack more than of the +// keyboard management. +// 2) these keyboard layout will not necessarily be used only for +// vertical text orientations. + +partial alphanumeric_keys +xkb_symbols "mon_trad" { + include "us(basic)" + + name[Group1]= "Mongolian (Bichig)"; + + key { [ U180D, asciitilde ] }; // ~: FVS3, ~ + key { [ 1, exclam ] }; // 1: 1, ! + key { [ 2, U2048 ] }; // 2: 2, ⁈ + key { [ 3, U2049 ] }; // 3: 3, ⁉ + key { [ 4, 4 ] }; // 4: 4 + key { [ 5, percent ] }; // 5: 5, % + key { [ 6, U200C ] }; // 6: 6, ZWNJ + key { [ 7, U180A ] }; // 7: 7, ᠊ NIRUGU + key { [ 8, U200D ] }; // 8: 8, ZWJ + key { [ 9, parenleft ] }; // 9: 9, ( + key { [ 0, parenright ] }; // 0: 0, ) + key { [ U202F, U180E ] }; // -: NNBSP, MVS + key { [ equal, plus ] }; // +: =, + + + key { [ U1823, U1842 ] }; // Q: ᠣ O, ᡂ CHI + key { [ U1838, U1838 ] }; // W: ᠸ WA + key { [ U1821, U1827 ] }; // E: ᠡ E, ᠧ EE + key { [ U1837, U183F ] }; // R: ᠷ RA, ᠿ ZRA + key { [ U1832, U1832 ] }; // T: ᠲ TA + key { [ U1836, U1836 ] }; // Y: ᠶ YA + key { [ U1826, U1826 ] }; // U: ᠦ UE + key { [ U1822, U1822 ] }; // I: ᠢ I + key { [ U1825, U1825 ] }; // O: ᠥ OE + key { [ U182B, U182B ] }; // P: ᠫ PA + key { [ bracketleft, U3008 ] }; // [: [, 〈 + key { [ bracketright, U3009 ] }; // ]: ], 〉 + key { [ U1801, U2014 ] }; // \: ᠁, — + + key { [ U1820, U1820 ] }; // A: ᠠ A + key { [ U1830, U1830 ] }; // S: ᠰ SA + key { [ U1833, U1833 ] }; // D: ᠳ DA + key { [ U1839, U1839 ] }; // F: ᠹ FA + key { [ U182D, U182D ] }; // G: ᠭ GA + key { [ U182C, U183E ] }; // H: ᠬ QA, ᠾ HAA + key { [ U1835, U1835 ] }; // J: ᠵ JA + key { [ U183A, U183B ] }; // K: ᠺ KA, ᠻ KHA + key { [ U182F, U1840 ] }; // L: ᠯ LA, ᡀ LHA + key { [ semicolon, U1804 ] }; // ;: ;, ᠄ + key { [ U180B, U180C ] }; // `: FVS1, FVS2 + + key { [ U183D, U1841 ] }; // Z: ᠽ ZA, ᡁ ZHI + key { [ U1831, U1831 ] }; // X: ᠱ SHA + key { [ U1834, U183C ] }; // C: ᠴ CHA, ᠼ TSA + key { [ U1824, U1824 ] }; // V: ᠤ U + key { [ U182A, U182A ] }; // B: ᠪ BA + key { [ U1828, U1829 ] }; // N: ᠨ NA, ᠩ ANG + key { [ U182E, U182E ] }; // M: ᠮ MA + key { [ U1802, U300A ] }; // ,: ᠂, 《 + key { [ U1803, U300B ] }; // .: ᠃, 》 + key { [ U00B7, question ] }; // /: ·, ? +}; + +// Mongolian (Todo) Keyboard Map for XKB/X.Org +// +// by Maurizio M. Gavioli , 2019 from PRC +// standard GB/T 28038-2011, par. 4.4. +// The original standard has vertical presentation forms (UFExx range) +// in AB08 - AB10, AC10, AD11 - AD13, AE01, AE09 - AE11: they have been +// replaced by the corresponding decompositions; see explanation for +// "mon_trad" above. + +partial alphanumeric_keys +xkb_symbols "mon_trad_todo" { + include "us(basic)" + + name[Group1]= "Mongolian (Todo)"; + + key { [ U180D, asciitilde ] }; // ~: FVS3, ~ + key { [ 1, exclam ] }; // 1: 1, ! + key { [ 2, U2048 ] }; // 2: 2, ⁈ + key { [ 3, U2049 ] }; // 3: 3, ⁉ + key { [ 4, U1843 ] }; // 4: 4, ᡃ TODO LONG VOWEL + key { [ 5, percent ] }; // 5: 5, % + key { [ 6, U200C ] }; // 6: 6, ZWNJ + key { [ 7, U180A ] }; // 7: 7, ᠊ NIRUGU + key { [ 8, U200D ] }; // 8: 8, ZWJ + key { [ 9, parenleft ] }; // 9: 9, ( + key { [ 0, parenright ] }; // 0: 0, ) + key { [ U202F, U2014 ] }; // -: NNBSP, — EM DASH + key { [ equal, plus ] }; // +: =, + + + key { [ U1846, U1806 ] }; // Q: ᡆ TODO O, ᠆ (Todo hyphen) + key { [ U1856, U1856 ] }; // W: ᡖ TODO WA + key { [ U1844, U1844 ] }; // E: ᡄ TODO E + key { [ U1837, U1837 ] }; // R: ᠷ RA + key { [ U1850, U1850 ] }; // T: ᡐ TODO TA + key { [ U1855, U1855 ] }; // Y: ᡕ TODO YA + key { [ U1849, U1849 ] }; // U: ᡉ TODO UE + key { [ U1845, U1845 ] }; // I: ᡅ TODO I + key { [ U1848, U1848 ] }; // O: ᡈ TODO OE + key { [ U184C, U184C ] }; // P: ᠫ PA + key { [ bracketleft, U300C ] }; // [: [, 「 + key { [ bracketright, U300D ] }; // ]: ], 」 + key { [ U1801, U00B7 ] }; // \: ᠁, · + + key { [ U1820, U1820 ] }; // A: ᠠ A + key { [ U1830, U1830 ] }; // S: ᠰ SA + key { [ U1851, U1851 ] }; // D: ᡑ TODO DA + key { [ U1838, U1838 ] }; // F: ᠸ WA + key { [ U184E, U1858 ] }; // G: ᡎ TODO GA, ᡘ TODO GAA + key { [ U184D, U1859 ] }; // H: ᡍ TODO Qa, ᡙ TODO HAA + key { [ U1853, U185A ] }; // J: ᡓ TODO JA, ᡚ TODO JIA + key { [ U1857, U1857 ] }; // K: ᡗ TODO KA + key { [ U182F, U1840 ] }; // L: ᠯ LA, ᡀ LHA + key { [ semicolon, U1804 ] }; // ;: ;, ᠄ + key { [ U180B, U180C ] }; // `: FVS1, FVS2 + + key { [ U1834, U185C ] }; // Z: ᠴ CHA, ᠼ TODO DZA + key { [ U1831, U1831 ] }; // X: ᠱ SHA + key { [ U1854, U1852 ] }; // C: ᡔ TODO TSA ᡒ TODO CHA + key { [ U1847, U1847 ] }; // V: ᡇ TODO U + key { [ U184B, U184B ] }; // B: ᡋ TODO BA + key { [ U1828, U184A ] }; // N: ᠨ NA, ᠩ TODO ANG + key { [ U184F, U184F ] }; // M: ᡏ TODO MA + key { [ comma, U300E ] }; // ,: ,, 『 + key { [ U3002, U300F ] }; // .: 。, 』 + key { [ U3001, question ] }; // /: 、, ? +}; + +// Mongolian (Xibe) Keyboard Map for XKB/X.Org +// +// by Maurizio M. Gavioli , 2019 from PRC +// standard GB/T 28038-2011, par. 4.5. +// The original standard has vertical presentation forms (UFExx range) +// in AB08 - AB10, AD11 - AD13, AE01, AE09, AE10; they have been +// replaced by the corresponding decompositions; see explanation for +// "mon_trad" above. + +partial alphanumeric_keys +xkb_symbols "mon_trad_xibe" { + include "us(basic)" + + name[Group1]= "Mongolian (Xibe)"; + + key { [ U180D, asciitilde ] }; // ~: FVS3, ~ + key { [ 1, exclam ] }; // 1: 1, ! + key { [ 2, U2018 ] }; // 2: 2, ‘ + key { [ 3, U2019 ] }; // 3: 3, ’ + key { [ 4, U1807 ] }; // 4: 4, ᠇ SIBE SYLL. BOUND. MARKER + key { [ 5, percent ] }; // 5: 5, % + key { [ 6, U200C ] }; // 6: 6, ZWNJ + key { [ 7, U180A ] }; // 7: 7, ᠊ NIRUGU + key { [ 8, U200D ] }; // 8: 8, ZWJ + key { [ 9, parenleft ] }; // 9: 9, ( + key { [ 0, parenright ] }; // 0: 0, ) + key { [ U202F, U202F ] }; // -: NNBSP + key { [ equal, plus ] }; // +: =, + + + key { [ U1834, U1834 ] }; // Q: ᠴ CHA + key { [ U1838, U1838 ] }; // W: ᠸ WA + key { [ U185D, U185D ] }; // E: ᡝ SIBE E + key { [ U1837, U1870 ] }; // R: ᠷ RA, ᡰ SIBE RAA + key { [ U1868, U1868 ] }; // T: ᡨ SIBE TA + key { [ U1836, U1836 ] }; // Y: ᠶ YA + key { [ U1860, U1860 ] }; // U: ᡠ SIBE UE + key { [ U185E, U185F ] }; // I: ᡞ SIBE I, ᡟ SIBE IY + key { [ U1823, U1823 ] }; // O: ᠣ O + key { [ U1866, U1866 ] }; // P: ᡦ SIBE PA + key { [ bracketleft, U201C ] }; // [: [, “ + key { [ bracketright, U201D ] }; // ]: ], ” + key { [ U1801, U2014 ] }; // \: ᠁, — + + key { [ U1820, U1820 ] }; // A: ᠠ A + key { [ U1830, U1830 ] }; // S: ᠰ SA + key { [ U1869, U1869 ] }; // D: ᡩ SIBE DA + key { [ U186B, U186B ] }; // F: ᡫ SIBE FA + key { [ U1864, U186C ] }; // G: ᡤ SIBE GA, ᡬ SIBE GAA + key { [ U1865, U186D ] }; // H: ᡥ SIBE HA, ᡭ SIBE HAA + key { [ U186A, U186A ] }; // J: ᡪ SIBE JA + key { [ U1863, U183A ] }; // K: ᡣ SIBE KA, ᠺ KA + key { [ U182F, U182F ] }; // L: ᠯ LA + key { [ semicolon, U1804 ] }; // ;: ;, ᠄ + key { [ U180B, U180C ] }; // `: FVS1, FVS2 + + key { [ U186F, U1872 ] }; // Z: ᡯ SIBE ZA, ᡲ SIBE ZHA + key { [ U1867, U1867 ] }; // X: ᡧ SIBE SHA + key { [ U186E, U1871 ] }; // C: ᡮ SIBE TSA, ᡱ SIBE CHA + key { [ U1861, U1861 ] }; // V: ᡡ SIBE U + key { [ U182A, U182A ] }; // B: ᠪ BA + key { [ U1828, U1862 ] }; // N: ᠨ NA, ᡢ SIBE ANG + key { [ U182E, U182E ] }; // M: ᠮ MA + key { [ comma, U300E ] }; // ,: ,, 『 + key { [ U3002, U300F ] }; // .: 。, 』 + key { [ U3001, question ] }; // /: 、, ? +}; + +// Mongolian (Manchu) Keyboard Map for XKB/X.Org +// +// by Maurizio M. Gavioli , 2019 from PRC +// standard GB/T 28038-2011, par. 4.6. +// The original standard has vertical presentation forms (UFExx range) +// for level 2 of AB10, ABC10, AD11 - AD13, AE01, AE09, AE10; they have been +// replaced by the corresponding decompositions; see explanation for +// "mon_trad" above. + + +partial alphanumeric_keys +xkb_symbols "mon_trad_manchu" { + include "us(basic)" + + name[Group1]= "Mongolian (Manchu)"; + + key { [ U180D, asciitilde ] }; // ~: FVS3, ~ + key { [ 1, exclam ] }; // 1: 1, ! + key { [ 2, 2 ] }; // 2: 2 + key { [ 3, 3 ] }; // 3: 3 + key { [ 4, 4 ] }; // 4: 4 + key { [ 5, percent ] }; // 5: 5, % + key { [ 6, U200C ] }; // 6: 6, ZWNJ + key { [ 7, U180A ] }; // 7: 7, ᠊ NIRUGU + key { [ 8, U200D ] }; // 8: 8, ZWJ + key { [ 9, parenleft ] }; // 9: 9, ( + key { [ 0, parenright ] }; // 0: 0, ) + key { [ U202F, U202F ] }; // -: NNBSP + key { [ equal, plus ] }; // +: =, + + + key { [ U1834, U1834 ] }; // Q: ᠴ CHA + key { [ U1838, U1838 ] }; // W: ᠸ WA + key { [ U185D, U185D ] }; // E: ᡝ SIBE E + key { [ U1875, U1870 ] }; // R: ᡵ MANCHU RA, ᡰ SIBE RAA + key { [ U1868, U1868 ] }; // T: ᡠ SIBE TA + key { [ U1836, U1836 ] }; // Y: ᠶ YA + key { [ U1860, U1860 ] }; // U: ᡠ SIBE UE + key { [ U1873, U185F ] }; // I: ᡳ MANCHU I, ᡟ SIBE IY + key { [ U1823, U1823 ] }; // O: ᠣ O + key { [ U1866, U1866 ] }; // P: ᡦ SIBE PA + key { [ bracketleft, bracketleft ] }; // [: [ + key { [ bracketright, bracketright ] }; // ]: ] + key { [ U1801, U2014 ] }; // \: ᠁, — + + key { [ U1820, U1820 ] }; // A: ᠠ A + key { [ U1830, U1830 ] }; // S: ᠰ SA + key { [ U1869, U1869 ] }; // D: ᡩ SIBE DA + key { [ U1876, U1876 ] }; // F: ᡶ MANCHU FA + key { [ U1864, U186C ] }; // G: ᡩ SIBE GA, ᡶ SIBE GAA + key { [ U1865, U186D ] }; // H: ᡩ SIBE HA, ᡶ SIBE HAA + key { [ U1835, U1835 ] }; // J: ᠵ JA + key { [ U1874, U183A ] }; // K: ᡴ MANCHU KA, ᠺ KA + key { [ U182F, U182F ] }; // L: ᠯ LA + key { [ semicolon, U1804 ] }; // ;: ;, ᠄ + key { [ U180B, U180C ] }; // `: FVS1, FVS2 + + key { [ U186F, U1872 ] }; // Z: ᡯ SIBE ZA, ᡲ SIBE ZHA + key { [ U1867, U1867 ] }; // X: ᡧ SIBE SHA + key { [ U186E, U1871 ] }; // C: ᡮ SIBE TSA, ᡱ SIBE CHA + key { [ U1861, U1861 ] }; // V: ᡡ SIBE U + key { [ U182A, U182A ] }; // B: ᠪ BA + key { [ U1828, U1862 ] }; // N: ᠨ NA, ᡢ SIBE ANG + key { [ U182E, U182E ] }; // M: ᠮ MA + key { [ U1808, U1808 ] }; // ,: ᠈ + key { [ U1809, U1809 ] }; // .: ᠉ + key { [ question, question ] }; // /: , ? +}; + +// Mongolian Bichig Galik Keyboard Map for XKB/X.Org +// +// by Maurizio M. Gavioli , 2019 from PRC +// standard GB/T 28038-2011, par. 4.7. + +partial alphanumeric_keys +xkb_symbols "mon_trad_galik" { + include "us(basic)" + + name[Group1]= "Mongolian (Galik)"; + + key { [ U180D, U180D ] }; // ~: FVS3 + key { [ U1811, U1811 ] }; // 1: ᠑ + key { [ U1812, U1812 ] }; // 2: ᠒ + key { [ U1813, U1813 ] }; // 3: ᠓ + key { [ U1814, U1814 ] }; // 4: ᠔ + key { [ U1815, U1815 ] }; // 5: ᠕ + key { [ U1816, U200C ] }; // 6: ᠖, ZWNJ + key { [ U1817, U1817 ] }; // 7: ᠗ + key { [ U1818, U200D ] }; // 8: ᠘, ZWJ + key { [ U1819, U1919 ] }; // 9: ᠙ + key { [ U1810, U1910 ] }; // 0: ᠐ + key { [ U202F, U180E ] }; // -: NNBSP, MVS + key { [ VoidSymbol, VoidSymbol ] }; // +: --- + + key { [ U1880, U1827 ] }; // Q: ᢀ ALI GALI ANUNASVARA ONE, ᠧ EE + key { [ U1881, U1823 ] }; // W: ᢁ ALI GALI VISARGA ONE, ᠣ O + key { [ U1882, U1821 ] }; // E: ᢂ ALI GALI DAMARU, ᠡ E + key { [ U1883, U1883 ] }; // R: ᢃ ALI GALI UBADAMA + key { [ U1884, U1884 ] }; // T: ᢄ ALI GAL INVERTED UDADAMA + key { [ U1885, U1885 ] }; // Y: ᢅ ALI GALI BALUDA + key { [ U1886, U1826 ] }; // U: ᢆ ALI GALI THREE BALUDA, ᠦ UE + key { [ U1887, U1822 ] }; // I: ᢇ ALI GALI A, ᠢ I + key { [ U1888, U1888 ] }; // O: ᢈALI GALI I + key { [ U1889, U1889 ] }; // P: ᢉ ALI GALI KA + key { [ U188A, U188A ] }; // [: ᢊ ALI GALI NGA + key { [ U1895, U1895 ] }; // ]: ᢕ ALI GALI ZHA + key { [ VoidSymbol, VoidSymbol ] }; // \: -- + + key { [ U188B, U1820 ] }; // A: ᠀ ALI GALI CA,ᠠ A + key { [ U188C, U188C ] }; // S: ᡛ ALI GALI TTA + key { [ U188D, U188D ] }; // D: ᢍ ALI GALI THA + key { [ U188E, U188E ] }; // F: ᢎ ALI GALI DDA + key { [ U188F, U188F ] }; // G: ᢏ ALI GALI NNA + key { [ U1890, U1890 ] }; // H: ᢐ ALI GALI TA + key { [ U1891, U1853 ] }; // J: ᢑ ALI GALI DA, ᡓ TODO JA + key { [ U1892, U1858 ] }; // K: ᢒ ALI GALI PA, ᡘ TODO GAA + key { [ U1893, U1893 ] }; // L: ᢓ ALI GALI PHA + key { [ U1894, U1894 ] }; // ;: ᢔ ALI GALI SSA + key { [ U180B, U180C ] }; // `: FVS1, FVS2 + + key { [ U1896, U185C ] }; // Z: ᢖ ALI GALI ZA, ᡜ TODO DZA + key { [ U1897, U1897 ] }; // X: ᢗ ALI GALI AH + key { [ U18A6, U18A6 ] }; // C: ᢦ ALI GALI HALF U + key { [ U18A7, U1824 ] }; // V: ᢦ ALI GALI HALF YA ,ᠤ U + key { [ U18A9, U18A9 ] }; // B: ᢩ ALI GALI DAGALGA + key { [ U1805, U1805 ] }; // N: ᠅ + key { [ U1800, U185B ] }; // M: ᠀ BIRGA, ᡛ TODO NYA + key { [ U1802, U1802 ] }; // ,: ᠂ + key { [ U1803, U1803 ] }; // .: ᠃ + key { [ VoidSymbol, VoidSymbol ] }; // /: +}; + +// Mongolian (Todo Galik) Keyboard Map for XKB/X.Org +// +// by Maurizio M. Gavioli , 2019 from PRC +// standard GB/T 28038-2011, par. 4.8. + +partial alphanumeric_keys +xkb_symbols "mon_todo_galik" { + include "us(basic)" + + name[Group1]= "Mongolian (Todo Galik)"; + + key { [ U180D, U180D ] }; // ~: FVS3 + key { [ U1811, U1811 ] }; // 1: ᠑ + key { [ U1812, U1812 ] }; // 2: ᠒ + key { [ U1813, U1813 ] }; // 3: ᠓ + key { [ U1814, U1843 ] }; // 4: ᠔, ᡃ TODO LONG VOWEL SIGN + + key { [ U1815, U1815 ] }; // 5: ᠕ + key { [ U1816, U200C ] }; // 6: ᠖, ZWNJ + key { [ U1817, U1817 ] }; // 7: ᠗ + key { [ U1818, U200D ] }; // 8: ᠘, ZWJ + key { [ U1819, U1919 ] }; // 9: ᠙ + key { [ U1810, U1910 ] }; // 0: ᠐ + key { [ U202F, U202F ] }; // -: NNBSP + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + + key { [ U1880, U1880 ] }; // Q: ᢀ ALI GALI ANUNASVARA ONE + key { [ U1881, U1846 ] }; // W: ᢁ ALI GALI VISARGA ONE, ᡆ TODO O + key { [ U1882, U1844 ] }; // E: ᢂ ALI GALI DAMARU, ᡄ TODO E + key { [ U1883, U1883 ] }; // R: ᢃ ALI GALI UBADAMA + key { [ U1884, U1884 ] }; // T: ᢄ ALI GAL INVERTED UDADAMA + key { [ U1885, U1885 ] }; // Y: ᢅ ALI GALI BALUDA + key { [ U1886, U1849 ] }; // U: ᢆ ALI GALI THREE BALUDA, ᡉ TODO UE + key { [ U1889, U1845 ] }; // I: ᢉ ALI GALI KA, ᡅ TODO I + key { [ U188A, U188A ] }; // O: ᢊ ALI GALI NGA + key { [ U1887, U1887 ] }; // P: ᢇ ALI GALI A + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + + key { [ U188B, U1820 ] }; // A: ᢋ ALI GALI CA, ᠠ A + key { [ U188C, U188C ] }; // S: ᢌ ALI GALI TTA + key { [ U188D, U188D ] }; // D: ᢍ ALI GALI THA + key { [ U188E, U188E ] }; // F: ᢎ ALI GALI DDA + key { [ U188F, U188F ] }; // G: ᢏ ALI GALI NNA + key { [ U1894, U1894 ] }; // ;: ᢔ ALI GALI SSA + key { [ U1896, U1896 ] }; // Z: ᢖ ALI GALI ZA + key { [ U1897, U1897 ] }; // X: ᢗ ALI GALI AH + key { [ U1898, U1898 ] }; // L: ᢘ TODO ALI GALI TA + key { [ U1892, U1892 ] }; // K: ᢒ ALI GALI PA + key { [ U180B, U180C ] }; // `: FVS1, FVS2 + + key { [ U1899, U1899 ] }; // Z: ᢙ TODO ALI GALI ZHA + key { [ U18A7, U18A6 ] }; // X: ᢧ ALI GALI HALF YA + key { [ U1893, U1893 ] }; // C: ᢓ ALI GALI PHA + key { [ U1847, U1847 ] }; // V: ᡇ TODO U + key { [ U18A9, U18A9 ] }; // B: ᢩ ALIGALI DAGALGA + key { [ U1805, U1805 ] }; // N: ᠅ FOUR DOTS + key { [ U1800, U185B ] }; // M: ᠀ BIRGA, ᡛ TODO NIA + key { [ U1802, U1802 ] }; // ,: ᠂ COMMA + key { [ U1803, U1803 ] }; // .: ᠃ FULL STOP + key { [ VoidSymbol, VoidSymbol ] }; // /: --- +}; + +// Mongolian (Manchu Galik) Keyboard Map for XKB/X.Org +// +// by Maurizio M. Gavioli , 2019 from PRC +// standard GB/T 28038-2011, par. 4.9. + + +partial alphanumeric_keys +xkb_symbols "mon_manchu_galik" { + include "us(basic)" + + name[Group1]= "Mongolian (Manchu Galik)"; + + key { [ U180D, U180D ] }; // ~: FVS3 + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, U200C ] }; // 6: --, ZWNJ + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, U200D ] }; // 8: 8, ZWJ + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ U202F, U202F ] }; // -: NNBSP + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + + key { [ U1880, U1880 ] }; // Q: ᢀ ALI GALI ANUNASVARA ONE + key { [ U1881, U1881 ] }; // W: ᢁ ALI GALI VISARGA ONE + key { [ U1882, U185D ] }; // E: ᢂ ALI GALI DAMARU, ᡝ SIBE E + key { [ U1883, U1883 ] }; // R: ᢃ ALI GALI UBADAMA + key { [ U1884, U1884 ] }; // T: ᢄ ALI GAL INVERTED UDADAMA + key { [ U1885, U1885 ] }; // Y: ᢅ ALI GALI BALUDA + key { [ U1886, U1860 ] }; // U: ᢆ ALI GALI THREE BALUDA, ᡠ SIBE UE + key { [ U1887, U1873 ] }; // I: ᢇ ALI GALI A, ᡳ MANCHU I + key { [ U1888, U1823 ] }; // O: ᢈ ALI GALI I, ᠣ O + key { [ U188F, U188F ] }; // P: ᢏ ALI GALI NNA + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + + key { [ U1892, U1820 ] }; // A: ᢒ ALI GALI PA, ᠠ A + key { [ U189A, U189A ] }; // S: ᢚ MANCHU ALI GALI GHA + key { [ U189B, U189B ] }; // D: ᢛ MANCHU ALI GALI NGA + key { [ U189C, U189C ] }; // F: ᢜ MANCHU ALI GALI CA + key { [ U189D, U189D ] }; // G: ᢝ MANCHU ALI GALI JHA + key { [ U189E, U189E ] }; // H: ᢞ MANCHU ALI GALI TTA + key { [ U189F, U189F ] }; // J: ᢟ MANCHU ALI GALI DDHA + key { [ U18A0, U18A0 ] }; // K: ᢠ MANCHU ALI GALI TA + key { [ U18A1, U18A1 ] }; // L: ᢡ MANCHU ALI GALI DHA + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ U180B, U180C ] }; // `: FVS1, FVS2 + + key { [ U18A2, U18A2 ] }; // Z: ᢢ MANCHU ALI GALI SSA + key { [ U18A3, U18A3 ] }; // X: ᢣ MANCHU ALI GALI CYA + key { [ U18A4, U18A4 ] }; // C: ᢤ MANCHU ALI GALI ZHA + key { [ U18A5, U1861 ] }; // V: ᢥ MANCHU ALI GALI ZA, ᡡ SIBE U + key { [ U18A8, U18A8 ] }; // B: ᢨ MANCHU ALI GALI BHA + key { [ U18AA, U18AA ] }; // N: ᢪ MANCHU ALI GALI LHA + key { [ VoidSymbol, VoidSymbol ] }; // /: --- + key { [ U1808, U1808 ] }; // ,: ᠈ + key { [ U1809, U1809 ] }; // .: ᠉ + key { [ VoidSymbol, VoidSymbol ] }; // /: --- +}; diff --git a/nixos/xkb/symbols/compose b/nixos/xkb/symbols/compose new file mode 100644 index 00000000..9a7166a7 --- /dev/null +++ b/nixos/xkb/symbols/compose @@ -0,0 +1,95 @@ +partial modifier_keys +xkb_symbols "ralt" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "lwin" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "lwin-altgr" { + key { type[Group1]="FOUR_LEVEL", [ Super_L, Super_L, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "rwin" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "rwin-altgr" { + key { type[Group1]="FOUR_LEVEL", [ Super_R, Super_R, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "menu" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "menu-altgr" { + key { type[Group1]="FOUR_LEVEL", [ Menu, Menu, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "rctrl" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "rctrl-altgr" { + key { type[Group1]="FOUR_LEVEL", [ Control_R, Control_R, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "lctrl" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "lctrl-altgr" { + key { type[Group1]="FOUR_LEVEL", [ Control_L, Control_L, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "caps" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "caps-altgr" { + key { type[Group1]="FOUR_LEVEL", [ Caps_Lock, Caps_Lock, Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "102" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "102-altgr" { + key { type[Group1]="FOUR_LEVEL", [ less, greater, Multi_key, Multi_key ] }; +}; + +// Make plain Insert do Compose, while Shift+Insert remains Insert. +partial modifier_keys +xkb_symbols "ins" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Insert ] }; +}; + +partial modifier_keys +xkb_symbols "paus" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "prsc" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; + +partial modifier_keys +xkb_symbols "sclk" { + key { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; +}; diff --git a/nixos/xkb/symbols/ctrl b/nixos/xkb/symbols/ctrl new file mode 100644 index 00000000..24743916 --- /dev/null +++ b/nixos/xkb/symbols/ctrl @@ -0,0 +1,130 @@ +// Eliminate CapsLock, making it another Ctrl. +partial modifier_keys +xkb_symbols "nocaps" { + replace key { [ Control_L ], type[group1] = "ONE_LEVEL" }; + modifier_map Control { }; +}; + +// Make the left Ctrl key a left Meta. +xkb_symbols "lctrl_meta" { + replace key { [ Meta_L ] }; + modifier_map Mod4 { }; +}; + +// Swap the functions of the CapsLock key and the left Ctrl key. +partial modifier_keys +xkb_symbols "swapcaps" { + replace key { [ Control_L ], type[group1] = "ONE_LEVEL" }; + replace key { [ Caps_Lock ] }; + modifier_map Control { }; + modifier_map Lock { }; +}; + +// Make the left Ctrl key a left Hyper, +// and the CapsLock key a left Control. +partial modifier_keys +xkb_symbols "hyper_capscontrol" { + replace key { [ Control_L ], type[group1] = "ONE_LEVEL" }; + replace key { [ Hyper_L ] }; + modifier_map Control { }; + modifier_map Mod4 { }; +}; + +// Swap the functions of the CapsLock key and the left Ctrl key. +// Pressing the left Ctrl key switches to the next group. +partial modifier_keys +xkb_symbols "grouptoggle_capscontrol" { + include "ctrl(swapcaps)" + include "group(lctrl_toggle)" +}; + +// Move Ctrl to the leftmost key on the middle row and CapsLock to the +// leftmost key on the bottom row. Only works if the geometry or keycodes +// file has defined appropriate aliases for the keys in question. +partial modifier_keys +xkb_symbols "ac_ctrl" { + replace key { [ Control_L ], type[group1] = "ONE_LEVEL" }; + replace key { [ Caps_Lock ] }; + modifier_map Control { }; + modifier_map Lock { }; +}; + +// Move Ctrl to the leftmost key on the bottom row and CapsLock to the +// leftmost key on the middle row. Only works if the geometry or keycodes +// file has defined appropriate aliases for the keys in question. +partial modifier_keys +xkb_symbols "aa_ctrl" { + replace key { [ Control_L ] }; + replace key { [ Caps_Lock ] }; + modifier_map Control { }; + modifier_map Lock { }; +}; + +// Right Ctrl functions as another right Alt. +partial modifier_keys +xkb_symbols "rctrl_ralt" { + key { [ Alt_R ] }; + modifier_map Mod1 { }; +}; + +// Menu key functions as another right Ctrl. +partial modifier_keys +xkb_symbols "menu_rctrl" { + key { [ Control_R ] }; + modifier_map Control { }; +}; + +// Right Alt key functions as another right Ctrl. +partial modifier_keys +xkb_symbols "ralt_rctrl" { + replace key { [ Control_R, Control_R ], type[group1] = "TWO_LEVEL" }; + modifier_map Control { }; +}; + +// Swap the functions of the left Alt key and the left Ctrl key. +partial modifier_keys +xkb_symbols "swap_lalt_lctl" { + replace key { [ Control_L, Control_L ] }; + replace key { [ Alt_L, Meta_L ] }; + modifier_map Mod1 { }; + modifier_map Control { }; +}; + +// Swap the functions of the right Alt key and the right Ctrl key. +partial modifier_keys +xkb_symbols "swap_ralt_rctl" { + replace key { [ Control_R, Control_R ] }; + replace key { [ Alt_R, Meta_R ] }; + modifier_map Mod1 { }; + modifier_map Control { }; +}; + +// Swap the functions of the left Win key and the left Ctrl key. +partial modifier_keys +xkb_symbols "swap_lwin_lctl" { + replace key { [ Control_L ] }; + replace key { [ Super_L ] }; + modifier_map Mod4 { }; + modifier_map Control { }; +}; + +// Swap the functions of the right Win key and the right Ctrl key. +partial modifier_keys +xkb_symbols "swap_rwin_rctl" { + replace key { [ Control_R ] }; + replace key { [ Super_R ] }; + modifier_map Mod4 { }; + modifier_map Control { }; +}; + +// Map Ctrl to the left Alt key, Alt to the left Win key, +// and Super to the left Ctrl key. +partial modifier_keys +xkb_symbols "swap_lalt_lctl_lwin" { + replace key { [ Control_L, Control_L ] }; + replace key { [ Alt_L, Meta_L ] }; + replace key { [ Super_L ] }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Control { }; +}; diff --git a/nixos/xkb/symbols/cz b/nixos/xkb/symbols/cz new file mode 100644 index 00000000..2d45238f --- /dev/null +++ b/nixos/xkb/symbols/cz @@ -0,0 +1,520 @@ +// Keyboard layouts for Czechia. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + // This layout conforms to a new Czech compromise standard + // designed to satisfy most Unix, Windows and Mac users. + // Originally by Kamil Toman , 2001. + + include "latin" + name[Group1]= "Czech"; + + key {[ semicolon, dead_abovering, grave, asciitilde ]}; + key {[ plus, 1, exclam, dead_tilde ]}; + key {[ ecaron, 2, at, dead_caron ]}; + key {[ scaron, 3, numbersign, dead_circumflex ]}; + key {[ ccaron, 4, dollar, dead_breve ]}; + key {[ rcaron, 5, percent, dead_abovering ]}; + key {[ zcaron, 6, asciicircum, dead_ogonek ]}; + key {[ yacute, 7, ampersand, dead_grave ]}; + key {[ aacute, 8, asterisk, dead_abovedot]}; + key {[ iacute, 9, braceleft, dead_acute ]}; + key {[ eacute, 0, braceright, dead_doubleacute ]}; + key {[ equal, percent, NoSymbol, dead_diaeresis ]}; + key {[dead_acute, dead_caron, dead_macron, dead_cedilla ]}; + + key {[ q, Q, backslash, NoSymbol ]}; + key {[ w, W, bar, NoSymbol ]}; + key {[ e, E, EuroSign, NoSymbol ]}; + key {[ r, R, NoSymbol, NoSymbol ]}; + key {[ t, T, NoSymbol, NoSymbol ]}; + key {[ z, Z, NoSymbol, NoSymbol ]}; + key {[ u, U, NoSymbol, NoSymbol ]}; + key {[ i, I, NoSymbol, NoSymbol ]}; + key {[ o, O, NoSymbol, NoSymbol ]}; + key {[ p, P, NoSymbol, NoSymbol ]}; + key {[ uacute, slash, bracketleft, division ]}; + key {[parenright, parenleft, bracketright, multiply ]}; + + key {[ a, A, asciitilde, NoSymbol ]}; + key {[ s, S, dstroke, NoSymbol ]}; + key {[ d, D, Dstroke, NoSymbol ]}; + key {[ f, F, bracketleft, NoSymbol ]}; + key {[ g, G, bracketright, NoSymbol ]}; + key {[ h, H, grave, NoSymbol ]}; + key {[ j, J, apostrophe, NoSymbol ]}; + key {[ k, K, lstroke, NoSymbol ]}; + key {[ l, L, Lstroke, NoSymbol ]}; + key {[ uring, quotedbl, dollar, NoSymbol ]}; + key {[ section, exclam, apostrophe, ssharp ]}; + key {[dead_diaeresis, apostrophe, backslash, bar ]}; + + key {[ backslash, bar, slash, NoSymbol ]}; + key {[ y, Y, degree, NoSymbol ]}; + key {[ x, X, numbersign, NoSymbol ]}; + key {[ c, C, ampersand, NoSymbol ]}; + key {[ v, V, at, NoSymbol ]}; + key {[ b, B, braceleft, NoSymbol ]}; + key {[ n, N, braceright, NoSymbol ]}; + key {[ m, M, asciicircum, NoSymbol ]}; + key {[ comma, question, less, NoSymbol ]}; + key {[ period, colon, greater, NoSymbol ]}; + key {[ minus, underscore, asterisk, NoSymbol ]}; + + key {[ space, space, space, space ]}; + + include "level3(ralt_switch)" +}; + +xkb_symbols "bksl" { + + // Put backslash on BKSL key (for when LSGT key is missing). + + include "cz(basic)" + name[Group1]= "Czech (extra backslash)"; + + key {[ backslash, bar, slash, NoSymbol ]}; +}; + +partial alphanumeric_keys +xkb_symbols "qwerty" { + + // This layout represents the actual Czech keyboards; + // it complies with the symbols printed on the keys. + // Originally by Lukáš Mojžíš , 2011. + + include "cz(basic)" + name[Group1]= "Czech (QWERTY)"; + + key {[ iacute, 9, parenleft, dead_acute ]}; + key {[ eacute, 0, parenright, dead_doubleacute ]}; + key {[ y, Y, NoSymbol, NoSymbol ]}; + key {[ uacute, slash, bracketleft, braceleft ]}; + key {[ parenright, parenleft, bracketright, braceright ]}; + key {[ uring, quotedbl, semicolon, colon ]}; + key {[ section, exclam, apostrophe, ssharp ]}; + key {[ z, Z, degree, NoSymbol ]}; +}; + +xkb_symbols "qwerty_bksl" { + + include "cz(qwerty)" + name[Group1]= "Czech (QWERTY, extra backslash)"; + + key {[ backslash, bar, slash, NoSymbol ]}; +}; + +partial alphanumeric_keys +xkb_symbols "winkeys" { + + // This layout conforms (mostly) to the one in Windows, which differs + // slightly from the standard ČSN 36 9050, but it is printed on every + // physical keyboard currently on the market. + // + // Originally by Milos Kozák , 2023. + + include "cz(basic)" + + name[Group1]= "Czech (QWERTZ, Windows)"; + + key {[ equal, percent, minus, underscore ]}; + key {[ dead_acute, dead_caron, equal, plus ]}; + + key {[ uacute, slash, bracketleft, braceleft ]}; + key {[ parenright, parenleft, bracketright, braceright ]}; + + key {[ uring, quotedbl, semicolon, colon ]}; + key {[ section, exclam, apostrophe, quotedbl ]}; + + key {[ comma, question, less, comma ]}; + key {[ period, colon, greater, period ]}; + key {[ minus, underscore, slash, question ]}; +}; + +partial alphanumeric_keys +xkb_symbols "winkeys-qwerty" { + + include "cz(winkeys)" + + name[Group1]= "Czech (QWERTY, Windows)"; + + key {[ y, Y, any, any ]}; + key {[ z, Z, degree, any ]}; +}; + +partial alphanumeric_keys +xkb_symbols "qwerty-mac" { + + // This layout corresponds to the Apple's Czech - QWERTY. + // 2018 by Jakub Jirutka + + include "latin" + name[Group1]= "Czech (QWERTY, Macintosh)"; + + key {[ less, greater, lessthanequal, greaterthanequal]}; + key {[ plus, 1, grave, notsign ]}; + key {[ ecaron, 2, at, enfilledcircbullet]}; + key {[ scaron, 3, numbersign, notequal ]}; + key {[ ccaron, 4, dollar, sterling ]}; + key {[ rcaron, 5, asciitilde, U25CA ]}; + key {[ zcaron, 6, asciicircum, dagger ]}; + key {[ yacute, 7, ampersand, paragraph ]}; + key {[ aacute, 8, asterisk, division ]}; + key {[ iacute, 9, braceleft, guillemotleft]}; + key {[ eacute, 0, braceright, guillemotright]}; + key {[ equal, percent, dead_abovering, dead_cedilla]}; + key {[dead_acute, dead_caron, dead_circumflex, dead_macron]}; + + key {[ q, Q, NoSymbol, NoSymbol ]}; + key {[ w, W, eabovedot, Eabovedot ]}; + key {[ e, E, eogonek, Eogonek ]}; + key {[ r, R, EuroSign, registered ]}; + key {[ t, T, NoSymbol, trademark ]}; + key {[ y, Y, NoSymbol, NoSymbol ]}; + key {[ u, U, NoSymbol, NoSymbol ]}; + key {[ i, I, NoSymbol, NoSymbol ]}; + key {[ o, O, NoSymbol, NoSymbol ]}; + key {[ p, P, NoSymbol, NoSymbol ]}; + key {[ uacute, slash, bracketleft, less ]}; + key {[parenright, parenleft, bracketright, greater ]}; + + key {[ a, A, aogonek, Aogonek ]}; + key {[ s, S, ssharp, U2211 ]}; + key {[ d, D, partialderivative, U2206 ]}; + key {[ f, F, NoSymbol, NoSymbol ]}; + key {[ g, G, NoSymbol, NoSymbol ]}; + key {[ h, H, leftsinglequotemark, leftdoublequotemark]}; + key {[ j, J, rightsinglequotemark, rightdoublequotemark]}; + key {[ k, K, NoSymbol, NoSymbol ]}; + key {[ l, L, lstroke, Lstroke ]}; + key {[ uring, quotedbl, semicolon, ellipsis ]}; + key {[ section, exclam, apostrophe, dead_tilde ]}; + key {[dead_diaeresis, grave, dead_diaeresis, dead_doubleacute]}; + + key {[ backslash, bar, NoSymbol, NoSymbol ]}; + key {[ z, Z, zabovedot, Zabovedot ]}; + key {[ x, X, NoSymbol, NoSymbol ]}; + key {[ c, C, NoSymbol, copyright ]}; + key {[ v, V, NoSymbol, squareroot ]}; + key {[ b, B, NoSymbol, NoSymbol ]}; + key {[ n, N, singlelowquotemark, doublelowquotemark]}; + key {[ m, M, NoSymbol, NoSymbol ]}; + key {[ comma, question, less, lessthanequal]}; + key {[ period, colon, greater, greaterthanequal]}; + key {[ minus, underscore, endash, emdash ]}; + + key {[ space, space, nobreakspace, nobreakspace ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys alternate_group +xkb_symbols "ucw" { + + // This layout is meant to be used as the second group: + // it contains accented characters only, no 'latin' set. + // Originally by Milan Vancura , 2008. + + name[Group1]= "Czech (UCW, only accented letters)"; + + key {[ adiaeresis, Adiaeresis ]}; + key {[ ecaron, Ecaron ]}; + key {[ eacute, Eacute ]}; + key {[ rcaron, Rcaron ]}; + key {[ tcaron, Tcaron ]}; + key {[ yacute, Yacute ]}; + key {[ uring, Uring ]}; + key {[ iacute, Iacute ]}; + key {[ oacute, Oacute ]}; + key {[ odiaeresis, Odiaeresis ]}; + + key {[ aacute, Aacute ]}; + key {[ scaron, Scaron ]}; + key {[ dcaron, Dcaron ]}; + key {[ ediaeresis, Ediaeresis ]}; + key {[ racute, Racute ]}; + key {[ uacute, Uacute ]}; + key {[ udiaeresis, Udiaeresis ]}; + key {[ ocircumflex, Ocircumflex ]}; + key {[ lcaron, Lcaron ]}; + + key {[ zcaron, Zcaron ]}; + key {[ ssharp, U1E9E ]}; + key {[ ccaron, Ccaron ]}; + key {[ ccedilla, Ccedilla ]}; + key {[ ntilde, Ntilde ]}; + key {[ ncaron, Ncaron ]}; + key {[ lacute, Lacute ]}; +}; + +partial alphanumeric_keys alternate_group +xkb_symbols "colemak-ucw" { + + // UCW extension for a US Colemak layout. + // Originally by Marek Maskarinec , 2022. + + name[Group1]= "Czech (US, Colemak, UCW support)"; + + key {[ yacute, Yacute ]}; + key {[ uring, Uring ]}; + + key {[ aacute, Aacute ]}; + key {[ rcaron, Rcaron ]}; + key {[ scaron, Scaron ]}; + key {[ tcaron, Tcaron ]}; + key {[ dcaron, Dcaron ]}; + key {[ uacute, Uacute ]}; + key {[ ncaron, Ncaron ]}; + key {[ ecaron, Ecaron ]}; + key {[ iacute, Iacute ]}; + key {[ oacute, Oacute ]}; + + key {[ zcaron, Zcaron ]}; + key {[ ccaron, Ccaron ]}; + key {[ eacute, Eacute ]}; +}; + +partial alphanumeric_keys +xkb_symbols "dvorak-ucw" { + + // US Dvorak layout extended with UCW, + // AltGr produces accented characters. + + include "us(dvorak)" + name[Group1]= "Czech (US, Dvorak, UCW support)"; + + key {[ y, Y, yacute, Yacute ]}; + key {[ c, C, ccaron, Ccaron ]}; + key {[ r, R, rcaron, Rcaron ]}; + + key {[ a, A, aacute, Aacute ]}; + key {[ o, O, oacute, Oacute ]}; + key {[ e, E, ecaron, Ecaron ]}; + key {[ u, U, uring, Uring ]}; + key {[ i, I, iacute, Iacute ]}; + key {[ d, D, dcaron, Dcaron ]}; + key {[ t, T, tcaron, Tcaron ]}; + key {[ n, N, ncaron, Ncaron ]}; + key {[ s, S, scaron, Scaron ]}; + + key {[ j, J, eacute, Eacute ]}; + key {[ k, K, uacute, Uacute ]}; + key {[ z, Z, zcaron, Zcaron ]}; + + include "level3(ralt_switch)" +}; + +// Phonetic layout with Russian letters on a Czech Qwerty keyboard. +// Originally by Pavel Sorejs , 2015. +partial alphanumeric_keys +xkb_symbols "rus" { + + include "cz(qwerty)" + name[Group1]= "Russian (Czechia, phonetic)"; + + key {[ Cyrillic_io, Cyrillic_IO ]}; + key {[ plus, ampersand, 1, 1 ]}; + key {[ Cyrillic_hardsign, 2, 2, 2 ]}; + key {[ Cyrillic_sha, Cyrillic_SHA, 3, 3 ]}; + key {[ Cyrillic_che, Cyrillic_CHE, 4, 4 ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA, 5, 5 ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE, 6, 6 ]}; + key {[ quotedbl, 4, 7, 7 ]}; + key {[ section, 5, 8, 8 ]}; + key {[ dollar, 6, 9, 9 ]}; + key {[ equal, 7, 0, 0 ]}; + key {[ percent, 8 ]}; + key {[ apostrophe, 9 ]}; + + key {[ numerosign, 1, q, Q ]}; + key {[ Cyrillic_yu, Cyrillic_YU, w, W ]}; + key {[ Cyrillic_ie, Cyrillic_IE, e, E ]}; + key {[ Cyrillic_er, Cyrillic_ER, r, R ]}; + key {[ Cyrillic_te, Cyrillic_TE, t, T ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU, y, Y ]}; + key {[ Cyrillic_u, Cyrillic_U, u, U ]}; + key {[ Cyrillic_i, Cyrillic_I, i, I ]}; + key {[ Cyrillic_o, Cyrillic_O, o, O ]}; + key {[ Cyrillic_pe, Cyrillic_PE, p, P ]}; + key {[ Cyrillic_e, Cyrillic_E, bracketleft, division ]}; + key {[ parenright, parenleft, bracketright, multiply ]}; + + key {[ Cyrillic_a, Cyrillic_A, a, A ]}; + key {[ Cyrillic_es, Cyrillic_ES, s, S ]}; + key {[ Cyrillic_de, Cyrillic_DE, d, D ]}; + key {[ Cyrillic_ef, Cyrillic_EF, f, F ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE, g, G ]}; + key {[ Cyrillic_ha, Cyrillic_HA, h, H ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI, j, J ]}; + key {[ Cyrillic_ka, Cyrillic_KA, k, K ]}; + key {[ Cyrillic_el, Cyrillic_EL, l, L ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN, less, greater ]}; + key {[ semicolon, colon ]}; + key {[ backslash, brokenbar ]}; + + key {[ bar, brokenbar ]}; + key {[ Cyrillic_ze, Cyrillic_ZE, z, Z ]}; + key {[ Cyrillic_ya, Cyrillic_YA, x, X ]}; + key {[ Cyrillic_tse, Cyrillic_TSE, c, C ]}; + key {[ Cyrillic_ve, Cyrillic_VE, v, V ]}; + key {[ Cyrillic_be, Cyrillic_BE, b, B ]}; + key {[ Cyrillic_en, Cyrillic_EN, n, N ]}; + key {[ Cyrillic_em, Cyrillic_EM, m, M ]}; + key {[ comma, question ]}; + key {[ period, exclam ]}; + key {[ minus, slash ]}; + + include "level3(ralt_switch)" +}; + + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/cz(sun_type6)" +}; + +xkb_symbols "prog" { + // Programmer keyboard -- a mix between the basic Czech and the basic US layout. + // The accented Czech letters are on the top row and on the upper levels of the + // corresponding letter. Punctuation is located like on a basic US layout. + // + // Originally by Viktor Grešák + // and Tomáš Hudec , 2019. + + name[Group1]="Czech (programming)"; + + key {[ grave, asciitilde ]}; + key {[ plus, 1, exclam, none ]}; + key {[ ecaron, 2, at, Ecaron ]}; + key {[ scaron, 3, numbersign, Scaron ]}; + key {[ ccaron, 4, dollar, Ccaron ]}; + key {[ rcaron, 5, percent, Rcaron ]}; + key {[ zcaron, 6, asciicircum, Zcaron ]}; + key {[ yacute, 7, ampersand, Yacute ]}; + key {[ aacute, 8, asterisk, Aacute ]}; + key {[ iacute, 9, parenleft, Iacute ]}; + key {[ eacute, 0, parenright, Eacute ]}; + key {[ equal, minus, underscore, U2212 ]}; + key {[ dead_acute, dead_caron, plusminus, notequal ]}; + + key {[ q, Q ]}; + key {[ w, W ]}; + key {[ e, E ]}; + key {[ r, R ]}; + key {[ t, T, tcaron, Tcaron ]}; + key {[ y, Y ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ o, O, oacute, Oacute ]}; + key {[ p, P ]}; + key {[ bracketleft, braceleft, uacute, Uacute ]}; + key {[ bracketright, braceright ]}; + + key {[ a, A ]}; + key {[ s, S ]}; + key {[ d, D, dcaron, Dcaron ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ h, H ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ l, L ]}; + key {[ semicolon, colon, uring, Uring ]}; + key {[ apostrophe, quotedbl, section ]}; + key {[ backslash, bar, dead_diaeresis ]}; + + key {[ z, Z ]}; + key {[ x, X ]}; + key {[ c, C ]}; + key {[ v, V ]}; + key {[ b, B ]}; + key {[ n, N, ncaron, Ncaron ]}; + key {[ m, M ]}; + key {[ comma, less, multiply ]}; + key {[ period, greater, division ]}; + key {[ slash, question, dead_abovedot ]}; + + key {[ Menu, Multi_key ]}; + + include "level3(ralt_switch)" +}; + +hidden +xkb_symbols "typo" { + // Typographic symbols on the third and fourth levels. + // Originally by Viktor Grešák + // and Tomáš Hudec , 2019. + + key {[ any, any, singlelowquotemark, leftsinglequotemark ]}; + key {[ any, any, any, rightsinglequotemark ]}; + key {[ any, any, underscore, U2212 ]}; + + key {[ any, any, permille, registered ]}; + key {[ any, any, leftarrow ]}; + key {[ any, any, downarrow, uparrow ]}; + key {[ any, any, rightarrow, UFB01 ]}; + key {[ any, any, minutes, seconds ]}; + + key {[ any, any, UFB00, UFB05 ]}; + key {[ any, any, U2010, U2011 ]}; + key {[ any, any, guillemotright, guillemotleft ]}; + key {[ any, any, dagger, doubledagger ]}; + key {[ any, any, UFB02, UFB04 ]}; + key {[ any, any, any, UFB03 ]}; + + key {[ any, any, degree, U2300 ]}; + key {[ any, any, multiply, U22C5 ]}; + key {[ any, any, ampersand, copyright ]}; + key {[ any, any, at, ordfeminine ]}; + key {[ any, any, enfilledcircbullet, enopencircbullet ]}; + key {[ any, any, U203A, U2039 ]}; + key {[ any, any, doublelowquotemark, leftdoublequotemark ]}; + key {[ any, any, ellipsis, rightdoublequotemark ]}; + key {[ any, any, endash, emdash ]}; + + key {[ space, space, space, nobreakspace ]}; +}; + +xkb_symbols "prog_typo" { + + // The Programmer and Typographic layouts combined. + + include "cz(prog)" + include "cz(typo)" + + name[Group1]="Czech (programming, typographic)"; +}; + +xkb_symbols "coder" { + + // A US layout with Czech characters under AltGr, + // for touch-typing programmers who need to write Czech occasionally. + // https://github.com/michalkahle/czech-coder-xkb + + include "us" + name[Group1]= "Czech (coder)"; + + key {[ grave, asciitilde, semicolon, dead_abovering ]}; + key {[ 2, at, ecaron, Ecaron ]}; + key {[ 3, numbersign, scaron, Scaron ]}; + key {[ 4, dollar, ccaron, Ccaron ]}; + key {[ 5, percent, rcaron, Rcaron ]}; + key {[ 6, asciicircum, zcaron, Zcaron ]}; + key {[ 7, ampersand, yacute, Yacute ]}; + key {[ 8, asterisk, aacute, Aacute ]}; + key {[ 9, parenleft, iacute, Iacute ]}; + key {[ 0, parenright, eacute, Eacute ]}; + key {[ equal, plus, dead_acute, dead_caron ]}; + + key {[ e, E, e, EuroSign ]}; + key {[ bracketleft, braceleft, uacute, Uacute ]}; + + key {[ semicolon, colon, uring, Uring ]}; + key {[ apostrophe, quotedbl, section, quotedbl ]}; + key {[ backslash, bar, dead_diaeresis, apostrophe ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/de b/nixos/xkb/symbols/de new file mode 100644 index 00000000..51c7021a --- /dev/null +++ b/nixos/xkb/symbols/de @@ -0,0 +1,1204 @@ +// Keyboard layouts for Germany. + +default +xkb_symbols "basic" { + + include "latin(type4)" + + name[Group1]="German"; + + key {[dead_circumflex, degree, U2032, U2033 ]}; // ′ ″ + key {[ 2, quotedbl, twosuperior, oneeighth ]}; + key {[ 3, section, threesuperior, sterling ]}; + key {[ 4, dollar, onequarter, currency ]}; + key {[ ssharp, question, backslash, questiondown, U1E9E ], type[group1]="FOUR_LEVEL_PLUS_LOCK" }; + key {[ dead_acute, dead_grave, dead_cedilla, dead_ogonek ]}; + + key {[ e, E, EuroSign, EuroSign ]}; + key {[ z, Z, leftarrow, yen ]}; + key {[ udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ]}; + key {[ plus, asterisk, asciitilde, macron ]}; + + key {[ s, S, U017F, U1E9E ]}; // ſ ẞ + key {[ j, J, dead_belowdot, dead_abovedot ]}; + key {[ odiaeresis, Odiaeresis, dead_doubleacute, dead_belowdot ]}; + key {[ adiaeresis, Adiaeresis, dead_circumflex, dead_caron ]}; + key {[ numbersign, apostrophe, rightsinglequotemark, dead_breve ]}; + + key {[ less, greater, bar, dead_belowmacron ]}; + key {[ y, Y, guillemotright, U203A ]}; // » › + key {[ x, X, guillemotleft, U2039 ]}; // « ‹ + key {[ comma, semicolon, periodcentered, multiply ]}; + key {[ period, colon, U2026, division ]}; // … ÷ + key {[ minus, underscore, endash, emdash ]}; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "deadtilde" { + // The previous standard German layout with tilde as dead key. + + include "de(basic)" + name[Group1]="German (dead tilde)"; + + key { [ plus, asterisk, dead_tilde, dead_macron ] }; +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + // Modify the basic German layout to not have any dead keys. + + include "de(basic)" + name[Group1]="German (no dead keys)"; + + key { [asciicircum, degree, notsign, notsign ] }; + key { [ acute, grave, cedilla, cedilla ] }; + key { [ udiaeresis, Udiaeresis, diaeresis, diaeresis ] }; + key { [ plus, asterisk, asciitilde, macron ] }; + key { [ j, J, ezh, EZH ] }; + key { [ odiaeresis, Odiaeresis, doubleacute, doubleacute ] }; + key { [ adiaeresis, Adiaeresis, asciicircum, asciicircum ] }; + key { [ numbersign, apostrophe, rightsinglequotemark, grave ] }; + key { [ less, greater, bar, dagger ] }; +}; + +partial alphanumeric_keys +xkb_symbols "deadgraveacute" { + // Modify the basic German layout to have only acute and grave as dead keys + // (~ and ^ are needed as spacing characters in many programming languages). + + include "de(basic)" + name[Group1]="German (dead grave acute)"; + + key { [asciicircum, degree, notsign, notsign ] }; + key { [ plus, asterisk, asciitilde, dead_macron ] }; + key { [ numbersign, apostrophe, rightsinglequotemark, grave ] }; +}; + +partial alphanumeric_keys +xkb_symbols "deadacute" { + // Modify the basic German layout to have only acute as a dead key. + + include "de(deadgraveacute)" + + name[Group1]="German (dead acute)"; + + key { [dead_acute, grave, dead_cedilla, dead_ogonek ] }; + key { [numbersign, apostrophe, rightsinglequotemark, dead_grave ] }; +}; + +partial alphanumeric_keys +xkb_symbols "e1" { + // German extended layout E1, based on DIN 2137-1:2020-11, for a 105-key keyboard. + // See https://de.wikipedia.org/wiki/E1_(Tastaturbelegung). + + name[Group1]="German (E1)"; + + key.type[Group1] = "EIGHT_LEVEL"; + key {[ dead_circumflex, degree, multiply, any, any, any ]}; + key {[ 1, exclam, rightsinglequotemark, any, onequarter, U25CA ]}; + key {[ 2, quotedbl, twosuperior, any, onehalf, brokenbar ]}; + key {[ 3, section, threesuperior, any, threequarters, paragraph ]}; + key {[ 4, dollar, emdash, any, currency, U2133 ]}; + key {[ 5, percent, exclamdown, any, permille, U20B0 ]}; + key {[ 6, ampersand, questiondown, any, U2044, U204A ]}; + key {[ 7, slash, braceleft, any, U2300, U2116 ]}; + key {[ 8, parenleft, bracketleft, any, U27E8, U27EA ]}; + key {[ 9, parenright, bracketright, any, U27E9, U27EB ]}; + key {[ 0, equal, braceright, any, division, U2205 ]}; + key {[ ssharp, question, backslash, any, notequal, notsign ]}; + key {[ dead_acute, dead_grave, dead_abovedot, any, sterling, U035C ]}; + + key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + key {[ q, Q, at, any, masculine, U2642 ]}; + key {[ w, W, dead_macron, any, ordfeminine, U2640 ]}; + key {[ e, E, EuroSign, any, schwa, SCHWA ]}; + key {[ r, R, dead_doubleacute, any, trademark, registered ]}; + key {[ t, T, dead_caron, any, thorn, THORN ]}; + key {[ z, Z, dead_diaeresis, any, ezh, EZH ]}; + key {[ u, U, dead_breve, any, rightarrow, leftarrow ]}; + key {[ i, I, dead_tilde, any, idotless, U26A5 ]}; + key {[ o, O, dead_abovering, any, oslash, Oslash ]}; + key {[ p, P, dead_hook, any, downarrow, uparrow ]}; + key {[ udiaeresis, Udiaeresis, dead_horn, any, U2198, U2197 ]}; + key.type[Group1] = "EIGHT_LEVEL"; + key {[ plus, asterisk, asciitilde, any, plusminus, U2052 ]}; + + key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + // Per DIN 2137-1:2018-12, p. 11-12, AltGr+a can either invoke a selection possibility + // for emojis and/or special characters, or output the U+263A smiley. + key {[ a, A, Multi_key, any, any, any ]}; + key {[ s, S, seconds, any, U017F, U2211 ]}; + key {[ d, D, minutes, any, eth, ETH ]}; + key {[ f, F, ISO_Level5_Latch, any, any, any ]}; + key {[ g, G, U1E9E, any, U02BF, U261B ]}; + key {[ h, H, dead_belowmacron, any, U02BE, U261A ]}; + key {[ j, J, dead_cedilla, any, U02B9, U02BA ]}; + key {[ k, K, dead_belowcomma, any, any, any ]}; + key {[ l, L, dead_ogonek, any, lstroke, Lstroke ]}; + key {[ odiaeresis, Odiaeresis, dead_belowdot, any, oe, OE ]}; + key {[ adiaeresis, Adiaeresis, dead_stroke, any, ae, AE ]}; + key.type[Group1] = "EIGHT_LEVEL"; + key {[ numbersign, apostrophe, U2212, any, U2020, U2021 ]}; + + key {[ less, greater, bar, any, lessthanequal, greaterthanequal ]}; + key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + key {[ y, Y, U203A, any, U2423, U23D1 ]}; + key {[ x, X, guillemotright, any, doublelowquotemark, singlelowquotemark ]}; + key {[ c, C, U202F, any, cent, copyright ]}; + key {[ v, V, guillemotleft, any, leftdoublequotemark, leftsinglequotemark ]}; + key {[ b, B, U2039, any, rightdoublequotemark, rightsinglequotemark ]}; + key {[ n, N, endash, any, eng, ENG ]}; + // Per DIN 2137-1:2018-12, p. 12, U+2217 should be replaced by the 'middle asterisk' character + // as soon as it has been added to Unicode (see Unicode proposal L2/17-152). + key {[ m, M, mu, any, U200C, U2217 ]}; + key.type[Group1] = "EIGHT_LEVEL"; + key {[ comma, semicolon, U2011, any, U02BB, U2661 ]}; + key {[ period, colon, periodcentered, any, ellipsis, U2713 ]}; + key {[ minus, underscore, hyphen, any, U2022, U25E6 ]}; + + key.type[Group1] = "EIGHT_LEVEL"; + key {[ space, space, nobreakspace, any, U200A, U2009 ]}; + + key.type[Group1] = "ONE_LEVEL"; + key {[ Shift_L ]}; + key {[ Shift_R ]}; + key {[ ISO_Level3_Shift ]}; + + include "kpdl(comma)" + }; + +partial alphanumeric_keys +xkb_symbols "e2" { + // German extended layout E2, based on DIN 2137-1:2020-11, for a 104-key keyboard. + // See https://de.wikipedia.org/wiki/E1_(Tastaturbelegung). + + include "de(e1)" + name[Group1]="German (E2)"; + + // One key less than E1: assign bar, less and greater to other keys. + key.type[Group1] = "EIGHT_LEVEL"; + key {[ dead_circumflex, degree, bar, any, any, any ]}; + key {[ 2, quotedbl, less, any, onehalf, brokenbar ]}; + key {[ 3, section, greater, any, threequarters, paragraph ]}; + key {[ plus, asterisk, asciitilde, any, multiply, U2052 ]}; + + // For when E2 is used on a 105-key keyboard. + key {[ ISO_Level3_Shift ], type[group1] = "ONE_LEVEL" }; +}; + +partial alphanumeric_keys +xkb_symbols "T3" { + // German extended layout T3 based on DIN 2137-1:2012-06 + // Now obsolete, use de(e1) or de(e2) + + name[Group1]="German (T3)"; + + key.type[Group1] = "EIGHT_LEVEL"; + key {[ dead_circumflex, degree, multiply, NoSymbol, U204A, hyphen, bar ]}; + key {[ 1, exclam, rightsinglequotemark, NoSymbol, onesuperior, exclamdown, U02B9 ]}; + key {[ 2, quotedbl, twosuperior, NoSymbol, twosuperior, currency, U02BA ]}; + key {[ 3, section, threesuperior, NoSymbol, threesuperior, sterling, U02BF ]}; + key {[ 4, dollar, emdash, NoSymbol, onequarter, EuroSign, U02BE ]}; + key {[ 5, percent, exclamdown, NoSymbol, onehalf, uparrow, U02C1 ]}; + key {[ 6, ampersand, questiondown, NoSymbol, threequarters, downarrow, U02C0 ]}; + key {[ 7, slash, braceleft, NoSymbol, oneeighth, leftarrow, braceleft ]}; + key {[ 8, parenleft, bracketleft, NoSymbol, threeeighths, rightarrow, braceright ]}; + key {[ 9, parenright, bracketright, NoSymbol, fiveeighths, plusminus, bracketleft ]}; + key {[ 0, equal, braceright, NoSymbol, seveneighths, trademark, bracketright ]}; + key {[ ssharp, question, backslash, NoSymbol, backslash, questiondown, U02BB ]}; + key {[ dead_acute, dead_grave, dead_abovedot, NoSymbol, dead_cedilla, dead_ogonek, notsign ]}; + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC"; + key {[ q, Q, at, NoSymbol, U0242, U0241, U030D ]}; + key {[ w, W, dead_caron, NoSymbol, U02B7, U2126, dead_abovedot ]}; + key {[ e, E, EuroSign, NoSymbol, oe, OE, dead_breve ]}; + key {[ r, R, dead_diaeresis, NoSymbol, paragraph, registered, dead_circumflex ]}; + key {[ t, T, dead_macron, NoSymbol, UA78C, UA78B, dead_diaeresis ]}; + key {[ z, Z, dead_doubleacute, NoSymbol, U027C, yen, dead_invertedbreve ]}; + key {[ u, U, dead_breve, NoSymbol, U0223, U0222, dead_caron ]}; + key {[ i, I, dead_tilde, NoSymbol, idotless, U214D, dead_abovecomma ]}; + key {[ o, O, dead_abovering, NoSymbol, oslash, Oslash, dead_horn ]}; + key {[ p, P, dead_hook, NoSymbol, thorn, THORN, dead_hook ]}; + key {[ udiaeresis, Udiaeresis, dead_horn, NoSymbol, U017F, dead_abovering, dead_grave ]}; + key.type[Group1] = "EIGHT_LEVEL"; + key {[ plus, asterisk, asciitilde, NoSymbol, dead_tilde, dead_macron, at ]}; + + key.type[Group1] = "ONE_LEVEL"; + key {[ Caps_Lock ]}; + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC"; + key {[ a, A, lessthanequal, NoSymbol, ae, AE, U0329 ]}; + key {[ s, S, greaterthanequal, NoSymbol, ssharp, section, dead_belowdot ]}; + key {[ d, D, U2300, NoSymbol, eth, ETH, dead_belowbreve ]}; + key {[ f, F, minutes, NoSymbol, U0294, ordfeminine, dead_belowcircumflex ]}; + key {[ g, G, seconds, NoSymbol, eng, ENG, dead_belowmacron ]}; + key {[ h, H, U1E9E, NoSymbol, U0272, U019D, U0332 ]}; + key {[ j, J, dead_cedilla, NoSymbol, U0133, U0132, dead_belowring ]}; + key {[ k, K, dead_belowcomma, NoSymbol, kra, dead_belowcomma, dead_stroke ]}; + key {[ l, L, dead_ogonek, NoSymbol, lstroke, Lstroke, U0338 ]}; + key {[ odiaeresis, Odiaeresis, dead_belowdot, NoSymbol, dead_acute, dead_doubleacute, degree ]}; + key {[ adiaeresis, Adiaeresis, dead_stroke, NoSymbol, U019B, U1E9E, minutes ]}; + key.type[Group1] = "EIGHT_LEVEL"; + key {[ numbersign, apostrophe, registered, NoSymbol, schwa, SCHWA, seconds ]}; + + key {[ less, greater, bar, NoSymbol, U0149, brokenbar, U266A ]}; + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC"; + key {[ y, Y, U203A, NoSymbol, ezh, EZH, guillemotleft ]}; + key {[ x, X, guillemotright, NoSymbol, doublelowquotemark, singlelowquotemark, guillemotright ]}; + key {[ c, C, copyright, NoSymbol, cent, copyright, Greek_horizbar ]}; + key {[ v, V, guillemotleft, NoSymbol, leftdoublequotemark, leftsinglequotemark, U2039 ]}; + key {[ b, B, U2039, NoSymbol, rightdoublequotemark, rightsinglequotemark, U203A ]}; + key {[ n, N, endash, NoSymbol, U019E, U0220, endash ]}; + key {[ m, M, mu, NoSymbol, mu, masculine, emdash ]}; + key.type[Group1] = "EIGHT_LEVEL"; + key {[ comma, semicolon, U02BB, NoSymbol, ellipsis, multiply, dollar ]}; + key {[ period, colon, U200C, NoSymbol, periodcentered, division, numbersign ]}; + key {[ minus, underscore, hyphen, NoSymbol, U0140, U013F, U2011 ]}; + + key {[ space, space, nobreakspace, NoSymbol, U202F, U200C, nobreakspace ]}; + + include "kpdl(comma)" + + key.type[Group1] = "THREE_LEVEL"; + key {[ Shift_L, Shift_L, ISO_Level5_Latch ]}; + key {[ Shift_R, Shift_R, ISO_Level5_Latch ]}; + key {[ ISO_Level3_Shift, ISO_Level5_Latch, ISO_Level5_Latch ]}; + }; + +partial alphanumeric_keys +xkb_symbols "ro" { + // Adds Romanian-specific letters to the German basic layout. + // Romanian symbols are accessible by combining and + // 'a', 's', 't', 'i', 'ä (ä)' (+ for capital letters). + + include "de(basic)" + + name[Group1]="Romanian (Germany)"; + + key { [ t, T, U021b, U021a ] }; + key { [ i, I, icircumflex, Icircumflex ] }; + key { [ a, A, acircumflex, Acircumflex ] }; + key { [ s, S, U0219, U0218 ] }; + key { [ adiaeresis, Adiaeresis, abreve, Abreve ] }; +}; + +partial alphanumeric_keys +xkb_symbols "ro_nodeadkeys" { + // Adds Romanian-specific letters to the German nodeadkeys layout. + // Read the comment for de_ro ! + + include "de(nodeadkeys)" + name[Group1]="Romanian (Germany, no dead keys)"; + + key { [ t, T, U021b, U021a ] }; + key { [ i, I, icircumflex, Icircumflex ] }; + key { [ a, A, acircumflex, Acircumflex ] }; + key { [ s, S, U0219, U0218 ] }; + key { [ adiaeresis, Adiaeresis, abreve, Abreve ] }; +}; + +// German Dvorak keymap by Thorsten Staerk (www.staerk.de/thorsten) +// Have acute and grave as dead keys, tilde and circumflex alive as they are needed +// in many programming languages. +// to use this keymap, use a 105-key-keyboard and the command setxkbmap -model pc105 -layout dvorak -variant de +// source: http://www-lehre.informatik.uni-osnabrueck.de/~rfreund/dvorak.php +partial alphanumeric_keys +xkb_symbols "dvorak" { + include "us(dvorak)" + + name[Group1]="German (Dvorak)"; + + key { [ asciicircum, degree ] }; + + key { [ 1, exclam, onesuperior ] }; + key { [ 2, quotedbl, twosuperior ] }; + key { [ 3, section, threesuperior ] }; + key { [ 4, dollar, bar ] }; + key { [ 5, percent, bar ] }; + key { [ 6, ampersand, brokenbar ] }; + key { [ 7, slash, braceleft ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, equal, braceright ] }; + key { [ plus, asterisk, asciitilde ] }; + key { [ less, greater, dead_grave ] }; + + key { [ udiaeresis, Udiaeresis, at ] }; + key { [ comma, semicolon, dead_diaeresis ] }; + key { [ period, colon ] }; + key { [ c, C, copyright, Cacute ] }; + key { [ t, T, trademark ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ question, ssharp ] }; + key { [ slash, backslash, dead_acute ] }; + + key { [ a, A, at, aogonek ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ e, E, EuroSign, eogonek ] }; + key { [ i, I ] }; + key { [ u, U ] }; + key { [ h, H ] }; + key { [ d, D ] }; + key { [ r, R, registered ] }; + key { [ n, N, nacute, Nacute ] }; + key { [ s, S, sacute, Sacute] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ minus, underscore, hyphen, diaeresis] }; + + key { [ adiaeresis, Adiaeresis, bar ] }; + key { [ odiaeresis, Odiaeresis ] }; + key { [ q, Q, at ] }; + key { [ m, M, mu ] }; + key { [ numbersign, apostrophe ] }; + + include "level3(ralt_switch)" +}; + + +// German Neo-Layout Version 2 +// adopted 2004 by Hanno Behrens +// inspired by Dvorak/de-ergo http://www.goebel-consult.de/de-ergo/ +// +// Authors: Stephan Hilb +// +// Benjamin Kellermann +// Erik Streb +// and many other contributors +// +// https://www.neo-layout.org + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "neo_base" { + + // The different layers and how to reach them + // -------------------------------------------------------------- + // Ebene 1: normal + // Ebene 2: Shift + // Ebene 3: Caps or Bksl ("Mod three") + // Ebene 4: Lsgt or RAlt ("Mod four") (for selecting, use also Shift) + // Ebene 5: Shift + Caps/Bksl + // Ebene 6: Caps/Bksl + Lsgt/RAlt + // Locking uppercase: left Shift + right Shift + // Locking Ebene 4: Shift + Caps + Tab, or Lsgt + RAlt + + + // Captions for the large table below + // -------------------------------------------------------------- + // Xorg: Level1 Level2 Level3 Level4 Level5 Level6 Level7 Level8 + // Neo: Ebene1 Ebene2 Ebene3 Ebene5 Ebene4 Pseudo-Ebene Ebene6 + // Access key: none Shift Caps/Bksl Shift + Caps/Bksl Lsgt/RAlt Shift + Lsgt/RAlt Caps/Bksl + Lsgt/RAlt + + + // Alphanumeric-keys + // ================= + key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK"; + + // The Tab key has Compose on the third layer (Caps + Tab) + // -------------------------------------------------------------- + key { [ Tab, ISO_Left_Tab, Multi_key, ISO_Level5_Lock, NoSymbol, NoSymbol, NoSymbol, ISO_Level5_Lock ] }; + + // Number row + // -------------------------------------------------------------- + key { [ dead_circumflex, dead_caron, U21BB, U02DE, dead_abovedot, Pointer_EnableKeys, dead_belowdot, NoSymbol ] }; + + key { [ 1, degree, onesuperior, onesubscript, ordfeminine, NoSymbol, notsign, NoSymbol ] }; + key { [ 2, section, twosuperior, twosubscript, masculine, NoSymbol, logicalor, NoSymbol ] }; + key { [ 3, U2113, threesuperior, threesubscript, numerosign, NoSymbol, logicaland, NoSymbol ] }; + key { [ 4, guillemotright, U203A, femalesymbol, NoSymbol, NoSymbol, U22A5, NoSymbol ] }; + key { [ 5, guillemotleft, U2039, malesymbol, periodcentered, NoSymbol, U2221, NoSymbol ] }; + key { [ 6, dollar, cent, U26A5, sterling, NoSymbol, U2225, NoSymbol ] }; + + key { [ 7, EuroSign, yen, U03F0, currency, NoSymbol, rightarrow, NoSymbol ] }; + key { [ 8, doublelowquotemark, singlelowquotemark, U27E8, Tab, ISO_Left_Tab, U221E, NoSymbol ] }; + key { [ 9, leftdoublequotemark, leftsinglequotemark, U27E9, KP_Divide, KP_Divide, variation, NoSymbol ] }; + key { [ 0, rightdoublequotemark, rightsinglequotemark, zerosubscript, KP_Multiply, KP_Multiply, emptyset, NoSymbol ] }; + + key { [ minus, emdash, NoSymbol, U2011, KP_Subtract, KP_Subtract, hyphen, NoSymbol ] }; + key { [ dead_grave, dead_cedilla, dead_abovering, dead_dasia, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ] }; + + // Top row + // -------------------------------------------------------------- + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK"; + key { [ x, X, ellipsis, Greek_xi, Prior, Prior, Greek_XI, NoSymbol ] }; + key { [ v, V, underscore, NoSymbol, BackSpace, BackSpace, radical, NoSymbol ] }; + key { [ l, L, bracketleft, Greek_lambda, Up, Up, Greek_LAMBDA, NoSymbol ] }; + key { [ c, C, bracketright, Greek_chi, Delete, Delete, U2102, NoSymbol ] }; + key { [ w, W, asciicircum, Greek_omega, Next, Next, Greek_OMEGA, NoSymbol ] }; + + key { [ k, K, exclam, Greek_kappa, exclamdown, NoSymbol, multiply, NoSymbol ] }; + key { [ h, H, less, Greek_psi, KP_7, KP_7, Greek_PSI, NoSymbol ] }; + key { [ g, G, greater, Greek_gamma, KP_8, KP_8, Greek_GAMMA, NoSymbol ] }; + key { [ f, F, equal, Greek_phi, KP_9, KP_9, Greek_PHI, NoSymbol ] }; + key { [ q, Q, ampersand, U03D5, KP_Add, KP_Add, U211A, NoSymbol ] }; + + key { [ ssharp, U1E9E, U017F, Greek_finalsmallsigma, U2212, NoSymbol, jot, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK"; + key { [ dead_acute, dead_tilde, dead_stroke, dead_psili, dead_doubleacute, NoSymbol, dead_breve, NoSymbol ] }; + + // Middle row + // -------------------------------------------------------------- + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK"; + key { [ u, U, backslash, NoSymbol, Home, Home, includedin, NoSymbol ] }; + key { [ i, I, slash, Greek_iota, Left, Left, integral, NoSymbol ] }; + key { [ a, A, braceleft, Greek_alpha, Down, Down, U2200, NoSymbol ] }; + key { [ e, E, braceright, Greek_epsilon, Right, Right, U2203, NoSymbol ] }; + key { [ o, O, asterisk, Greek_omicron, End, End, elementof, NoSymbol ] }; + + key { [ s, S, question, Greek_sigma, questiondown, NoSymbol, Greek_SIGMA, NoSymbol ] }; + key { [ n, N, parenleft, Greek_nu, KP_4, KP_4, U2115, NoSymbol ] }; + key { [ r, R, parenright, Greek_rho, KP_5, KP_5, U211D, NoSymbol ] }; + key { [ t, T, minus, Greek_tau, KP_6, KP_6, partialderivative, NoSymbol ] }; + key { [ d, D, colon, Greek_delta, KP_Separator, comma, Greek_DELTA, NoSymbol ] }; + + key { [ y, Y, at, Greek_upsilon, period, KP_Decimal, nabla, NoSymbol ] }; + + // Bottom row + // -------------------------------------------------------------- + key { [ udiaeresis, Udiaeresis, numbersign, NoSymbol, Escape, Escape, union, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, dollar, U03F5, Tab, Tab, intersection, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, bar, Greek_eta, Insert, Insert, U2135, NoSymbol ] }; + key { [ p, P, asciitilde, Greek_pi, Return, Return, Greek_PI, NoSymbol ] }; + key { [ z, Z, grave, Greek_zeta, Undo, Redo, U2124, NoSymbol ] }; + + key { [ b, B, plus, Greek_beta, colon, NoSymbol, U21D0, NoSymbol ] }; + key { [ m, M, percent, Greek_mu, KP_1, KP_1, ifonlyif, NoSymbol ] }; + key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK"; + key { [ comma, endash, quotedbl, U03F1, KP_2, KP_2, U21D2, NoSymbol ] }; + key { [ period, enfilledcircbullet, apostrophe, U03D1, KP_3, KP_3, U21A6, NoSymbol ] }; + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK"; + key { [ j, J, semicolon, Greek_theta, semicolon, NoSymbol, Greek_THETA, NoSymbol ] }; + + // Space key + // -------------------------------------------------------------- + key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK"; + key { [ space, space, space, nobreakspace, KP_0, KP_0, U202F, NoSymbol ] }; + + + // Keypad-keys + // =========== + + // The former Numlock key: + key { [ Tab, ISO_Left_Tab, equal, approxeq, notequal, Pointer_EnableKeys, identical, NoSymbol ] }; + + // Topmost row + // -------------------------------------------------------------- + key { [ KP_Divide, KP_Divide, division, U2300, U2044, NoSymbol, U2223, NoSymbol ] }; + key { [ KP_Multiply, KP_Multiply, U22C5, U2299, multiply, NoSymbol, U2297, NoSymbol ] }; + key { [ KP_Subtract, KP_Subtract, U2212, U2296, U2216, NoSymbol, U2238, NoSymbol ] }; + + // Top row + // -------------------------------------------------------------- + key { [ KP_7, U2714, U2195, U226A, KP_Home, KP_Home, upstile, NoSymbol ] }; + key { [ KP_8, U2718, uparrow, intersection, KP_Up, KP_Up, U22C2, NoSymbol ] }; + key { [ KP_9, dagger, U20D7, U226B, KP_Prior, KP_Prior, U2309, NoSymbol ] }; + key { [ KP_Add, KP_Add, plusminus, U2295, U2213, NoSymbol, U2214, NoSymbol ] }; + + // Middle row + // -------------------------------------------------------------- + key { [ KP_4, club, leftarrow, includedin, KP_Left, KP_Left, U2286, NoSymbol ] }; + key { [ KP_5, EuroSign, colon, U22B6, KP_Begin, KP_Begin, U22B7, NoSymbol ] }; + key { [ KP_6, U2023, rightarrow, includes, KP_Right, KP_Right, U2287, NoSymbol ] }; + + // Bottom row + // -------------------------------------------------------------- + key { [ KP_1, diamond, U2194, lessthanequal, KP_End, KP_End, downstile, NoSymbol ] }; + key { [ KP_2, heart, downarrow, union, KP_Down, KP_Down, U22C3, NoSymbol ] }; + key { [ KP_3, U2660, U21CC, greaterthanequal, KP_Next, KP_Next, U230B, NoSymbol ] }; + key { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, NoSymbol ] }; + key { [ KP_Equal, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + + // Bottommost row + // -------------------------------------------------------------- + key { [ KP_0, U2423, percent, permille, KP_Insert, KP_Insert, U25A1, NoSymbol ] }; + key { [ KP_Separator, period, comma, minutes, KP_Delete, KP_Delete, seconds, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "neo" { + + include "de(neo_base)" + + name[Group1]= "German (Neo 2)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +// Legacy layout for the German Mac, as depicted on +// https://iks.cs.ovgu.de/~elkner/keyboard/mac/germankbd.html. +partial alphanumeric_keys +xkb_symbols "mac" { + + name[Group1]= "German (Macintosh)"; + + key {[ dead_circumflex, degree, doublelowquotemark, leftdoublequotemark ]}; + key {[ 1, exclam, exclamdown, notsign ]}; + key {[ 2, quotedbl, leftdoublequotemark,rightdoublequotemark]}; + key {[ 3, section, paragraph, numbersign ]}; + key {[ 4, dollar, cent, sterling ]}; + key {[ 5, percent, bracketleft, UFB01 ]}; // fi + key {[ 6, ampersand, bracketright, dead_circumflex ]}; + key {[ 7, slash, bar, backslash ]}; + key {[ 8, parenleft, braceleft, U02DC ]}; // ˜ + key {[ 9, parenright, braceright, periodcentered ]}; + key {[ 0, equal, notequal, macron ]}; + key {[ ssharp, question, questiondown, abovedot ]}; + key {[ dead_acute, dead_grave, apostrophe, U02DA ]}; // ˚ + + key {[ q, Q, guillemotleft, guillemotright ]}; + key {[ w, W, Greek_SIGMA, doublelowquotemark ]}; + key {[ e, E, EuroSign, permille ]}; + key {[ r, R, registered, cedilla ]}; + key {[ t, T, dagger, U02DD ]}; // ˝ + key {[ z, Z, Greek_OMEGA, caron ]}; + key {[ u, U, dead_diaeresis, Aacute ]}; + key {[ i, I, U2044, Ucircumflex ]}; // ⁄ + key {[ o, O, oslash, Oslash ]}; + key {[ p, P, Greek_pi, Greek_PI ]}; + key {[ udiaeresis, Udiaeresis, U2022, degree ]}; // • + key {[ plus, asterisk, plusminus, UF8FF ]}; // Apple logo + + key {[ a, A, aring, Aring ]}; + key {[ s, S, singlelowquotemark, Iacute ]}; + key {[ d, D, partdifferential, trademark ]}; + key {[ f, F, function, Idiaeresis ]}; + key {[ g, G, copyright, Igrave ]}; + key {[ h, H, ordfeminine, Oacute ]}; + key {[ j, J, masculine, idotless ]}; + key {[ k, K, Greek_DELTA, U02C6 ]}; // ˆ + key {[ l, L, at, UFB02 ]}; // fl + key {[ odiaeresis, Odiaeresis, oe, OE ]}; + key {[ adiaeresis, Adiaeresis, ae, AE ]}; + key {[ numbersign, apostrophe, leftsinglequotemark,rightsinglequotemark]}; + + key {[ less, greater, lessthanequal, greaterthanequal ]}; + key {[ y, Y, yen, doubledagger ]}; + key {[ x, X, approxeq, Ugrave ]}; + key {[ c, C, ccedilla, Ccedilla ]}; + key {[ v, V, radical, U25CA ]}; // ◊ + key {[ b, B, integral, U2039 ]}; // ‹ + key {[ n, N, dead_tilde, U203A ]}; // › + key {[ m, M, mu, breve ]}; + key {[ comma, semicolon, infinity, ogonek ]}; + key {[ period, colon, ellipsis, division ]}; + key {[ minus, underscore, endash, emdash ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "mac_nodeadkeys" { + // modify the standard German mac layout to not have any dead keys + include "de(mac)" + name[Group1]= "German (Macintosh, no dead keys)"; + + key { [ asciicircum, degree, notsign ] }; + key { [ 4, dollar, onequarter, currency ] }; + key { [ 6, ampersand, bracketright, asciicircum ] }; + key { [ acute, grave, cedilla ] }; + key { [ u, U, diaeresis, Aacute ] }; + key { [ udiaeresis, Udiaeresis, diaeresis ] }; + key { [ plus, asterisk, asciitilde, macron ] }; + key { [ odiaeresis, Odiaeresis, acute ] }; + key { [ adiaeresis, Adiaeresis, asciicircum ] }; + key { [ numbersign, apostrophe, rightsinglequotemark ] }; + + key { [ n, N, asciitilde, U203A ] }; +}; + +partial alphanumeric_keys +xkb_symbols "dsb" +{ + include "latin(basic)" + name[Group1] = "Lower Sorbian"; + + key { [ e, E, ecaron, Ecaron ] }; + key { [ r, R, racute, Racute ] }; + key { [ t, T, cent, EuroSign ] }; + key { [ o, O, oacute, Oacute ] }; + + key { [ s, S, sacute, Sacute ] }; + key { [ d, D, scaron, Scaron ] }; + + key { [ z, Z, zcaron, Zcaron ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ v, V, ccaron, Ccaron ] }; + key { [ n, N, nacute, Nacute ] }; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "dsb_qwertz" +{ + include "de(basic)" + name[Group1] = "Lower Sorbian (QWERTZ)"; + + key { [ e, E, ecaron, Ecaron ] }; + key { [ r, R, racute, Racute ] }; + key { [ t, T, cent, EuroSign ] }; + key { [ z, Z, zcaron, Zcaron ] }; + key { [ u, U, zacute, Zacute ] }; + key { [ o, O, oacute, Oacute ] }; + + key { [ s, S, sacute, Sacute ] }; + key { [ d, D, scaron, Scaron ] }; + + key { [ c, C, cacute, Cacute ] }; + key { [ v, V, ccaron, Ccaron ] }; + key { [ n, N, nacute, Nacute ] }; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "qwerty" { + + // This layout should work exactly as a de with the exception + // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped). + // 2008 by Matej Košík + + include "de(basic)" + + name[Group1] = "German (QWERTY)"; + + key { [ z, Z, leftarrow, yen ] }; + key { [ y, Y, guillemotleft, less ] }; +}; + +// layout for Russian letters on an german keyboard +// based on US-RU layout by Ivan Popov 2005-07-17 +// adopted for german layout by Alexey Fisher 2010-08-19 + +partial alphanumeric_keys +xkb_symbols "ru" { + + include "de(basic)" + + name[Group1]= "Russian (Germany, phonetic)"; + + key {[ Cyrillic_io, Cyrillic_IO, asciitilde ]}; + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; + + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA, plus, asterisk ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_e, Cyrillic_E ]}; + key {[ Cyrillic_yu, Cyrillic_YU, numbersign, apostrophe ]}; + + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + + include "level3(ralt_switch)" +}; + +// layout for Russian (recommended) letters on a german keyboard +// based on "Russisch für Deutsche, empfohlen" by B. Bendixen und H. Rothe http://russisch.urz.uni-leipzig.de/key2000.htm 2016-02-01 +// adapted for Linux by Niko Krause 2016-06-09 + +partial alphanumeric_keys +xkb_symbols "ru-recom" { + + include "de(basic)" + + name[Group1]= "Russian (Germany, recommended)"; + + key {[ Cyrillic_ya, Cyrillic_YA, asciicircum, degree ]}; + key {[ asciitilde, question, backslash, questiondown ]}; + key {[ U0301, U0300, U0323, U0307 ]}; + + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + key {[ Cyrillic_sha, Cyrillic_SHA, plus, asterisk ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_es, Cyrillic_ES, Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI, Ukrainian_yi, Ukrainian_YI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_io, Cyrillic_IO ]}; + key {[ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ]}; + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN, numbersign, apostrophe ]}; + + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + + include "level3(ralt_switch)" +}; + +// layout for Russian (transliteration) letters on a german keyboard +// based on "Russisch für Deutsche, Transliteration" by B. Bendixen und H. Rothe http://russisch.urz.uni-leipzig.de/key2000.htm 2016-02-01 +// adapted for Linux by Niko Krause 2016-06-09 + +partial alphanumeric_keys +xkb_symbols "ru-translit" { + + include "de(basic)" + + name[Group1]= "Russian (Germany, transliteration)"; + + key {[ Cyrillic_ya, Cyrillic_YA, asciicircum, degree ]}; + key {[ asciitilde, question, backslash, questiondown ]}; + key {[ U0301, U0300, U0323, U0307 ]}; + + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN, plus, asterisk ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_es, Cyrillic_ES, Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI, Ukrainian_yi, Ukrainian_YI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_io, Cyrillic_IO ]}; + key {[ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN, numbersign, apostrophe ]}; + + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "pl" { + + // Combined layout for entering both German and Polish symbols on a German physical + // keyboard. Based on German (no dead keys) and Polish (basic). Polish diacritics + // on AltGr+"acelnosxz". EuroSign moved to AE04 (AltGr+dollar key) to avoid conflict + // with Polish eogonek. + + include "de(nodeadkeys)" + + name[Group1]= "Polish (Germany, no dead keys)"; + + key { [ 4, dollar, EuroSign, currency ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E, eogonek, Eogonek ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ a, A, aogonek, Aogonek ] }; + key { [ s, S, sacute, Sacute ] }; + key { [ f, F ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ n, N, nacute, Nacute ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "tr" { + + // add turkish-specific letters to the basic German layout. + // Turkish symbols are accessible with combination of and + // 'i', 's', 'g', 'c'' (+ for capital letters). + + include "de(basic)" + + name[Group1]="Turkish (Germany)"; + + key {[ i, I, idotless, Iabovedot ], type[group1]="FOUR_LEVEL_ALPHABETIC" }; + key {[ s, S, scedilla, Scedilla ]}; + key {[ g, G, gbreve, Gbreve ]}; + key {[ c, C, ccedilla, Ccedilla ]}; +}; + +partial alphanumeric_keys +xkb_symbols "us" { + include "us" + + name[Group1]="German (US)"; + + key { [ 3, numbersign, section, degree ] }; + key { [ minus, underscore, ssharp, U1E9E ] }; + + key { [ e, E, EuroSign, cent ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + key { [ o, O, odiaeresis, Odiaeresis ] }; + key { [ bracketleft, braceleft, udiaeresis, Udiaeresis ] }; + + key { [ a, A, adiaeresis, Adiaeresis ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ semicolon, colon, odiaeresis, Odiaeresis ] }; + key { [ apostrophe, quotedbl, adiaeresis, Adiaeresis ] }; + + key { [ c, C, Multi_key, Multi_key ] }; + key { [ m, M, dead_greek, Menu ] }; + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +partial alphanumeric_keys +xkb_symbols "hu" { + + // modify the basic German layout to not have any dead keys and add Hungarian letters + + include "de(basic)" + name[Group1]="German (with Hungarian letters, no dead keys)"; + + key { [ y, Y, guillemotleft, less ] }; + key { [odiaeresis, Odiaeresis, eacute, Eacute ] }; + key { [adiaeresis, Adiaeresis, aacute, Aacute] }; + key { [ e, E, EuroSign, EuroSign ] }; + key { [ z, Z, leftarrow, yen ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, odoubleacute, Odoubleacute ] }; + key { [udiaeresis, Udiaeresis, udoubleacute, Udoubleacute ] }; + key { [ plus, asterisk, asciitilde, macron ] }; + key { [ acute, grave, oacute, Oacute ] }; + key { [numbersign, apostrophe, rightsinglequotemark, grave ] }; + key { [asciicircum, degree, notsign, notsign ] }; +}; + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/de(sun_type6)" +}; + +partial alphanumeric_keys +xkb_symbols "adnw_base" { + include "de(neo_base)" + + key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK"; + key { [ period, enfilledcircbullet, NoSymbol, U03D1, NoSymbol, NoSymbol, U21A6, NoSymbol ] }; + key { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK"; + key { [ k, K, NoSymbol, Greek_kappa, NoSymbol, NoSymbol, multiply, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol, NoSymbol, NoSymbol, includedin, NoSymbol ] }; + key { [ udiaeresis, Udiaeresis, NoSymbol, NoSymbol, NoSymbol, NoSymbol, union, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, NoSymbol, Greek_eta, NoSymbol, NoSymbol, U2135, NoSymbol ] }; + key { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, radical, NoSymbol ] }; + key { [ g, G, NoSymbol, Greek_gamma, NoSymbol, NoSymbol, Greek_GAMMA, NoSymbol ] }; + key { [ c, C, NoSymbol, Greek_chi, NoSymbol, NoSymbol, U2102, NoSymbol ] }; + key { [ l, L, NoSymbol, Greek_lambda, NoSymbol, NoSymbol, Greek_LAMBDA, NoSymbol ] }; + key { [ j, J, NoSymbol, Greek_theta, NoSymbol, NoSymbol, Greek_THETA, NoSymbol ] }; + key { [ f, F, NoSymbol, Greek_phi, NoSymbol, NoSymbol, Greek_PHI, NoSymbol ] }; + key { [ h, H, NoSymbol, Greek_psi, NoSymbol, NoSymbol, Greek_PSI, NoSymbol ] }; + key { [ i, I, NoSymbol, Greek_iota, NoSymbol, NoSymbol, integral, NoSymbol ] }; + key { [ e, E, NoSymbol, Greek_epsilon, NoSymbol, NoSymbol, U2203, NoSymbol ] }; + key { [ a, A, NoSymbol, Greek_alpha, NoSymbol, NoSymbol, U2200, NoSymbol ] }; + key { [ o, O, NoSymbol, Greek_omicron, NoSymbol, NoSymbol, elementof, NoSymbol ] }; + key { [ d, D, NoSymbol, Greek_delta, NoSymbol, NoSymbol, Greek_DELTA, NoSymbol ] }; + key { [ t, T, NoSymbol, Greek_tau, NoSymbol, NoSymbol, partialderivative, NoSymbol ] }; + key { [ r, R, NoSymbol, Greek_rho, NoSymbol, NoSymbol, U211D, NoSymbol ] }; + key { [ n, N, NoSymbol, Greek_nu, NoSymbol, NoSymbol, U2115, NoSymbol ] }; + key { [ s, S, NoSymbol, Greek_sigma, NoSymbol, NoSymbol, Greek_SIGMA, NoSymbol ] }; + key { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] }; + key { [ x, X, NoSymbol, Greek_xi, NoSymbol, NoSymbol, Greek_XI, NoSymbol ] }; + key { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, NoSymbol, U03F5, NoSymbol, NoSymbol, intersection, NoSymbol ] }; + key { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] }; + key { [ b, B, NoSymbol, Greek_beta, NoSymbol, NoSymbol, U21D0, NoSymbol ] }; + key { [ p, P, NoSymbol, Greek_pi, NoSymbol, NoSymbol, Greek_PI, NoSymbol ] }; + key { [ w, W, NoSymbol, Greek_omega, NoSymbol, NoSymbol, Greek_OMEGA, NoSymbol ] }; + key { [ m, M, NoSymbol, Greek_mu, NoSymbol, NoSymbol, ifonlyif, NoSymbol ] }; + key { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "adnw" { + + include "de(adnw_base)" + + name[Group1]= "German (Aus der Neo-Welt)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +partial alphanumeric_keys +xkb_symbols "koy_base" { + include "de(neo_base)" + + key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK"; + key { [ period, enfilledcircbullet, NoSymbol, U03D1, NoSymbol, NoSymbol, U21A6, NoSymbol ] }; + key { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK"; + key { [ k, K, NoSymbol, Greek_kappa, NoSymbol, NoSymbol, multiply, NoSymbol ] }; + key { [ o, O, NoSymbol, Greek_omicron, NoSymbol, NoSymbol, elementof, NoSymbol ] }; + key { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] }; + key { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, radical, NoSymbol ] }; + key { [ g, G, NoSymbol, Greek_gamma, NoSymbol, NoSymbol, Greek_GAMMA, NoSymbol ] }; + key { [ c, C, NoSymbol, Greek_chi, NoSymbol, NoSymbol, U2102, NoSymbol ] }; + key { [ l, L, NoSymbol, Greek_lambda, NoSymbol, NoSymbol, Greek_LAMBDA, NoSymbol ] }; + key { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] }; + key { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] }; + key { [ h, H, NoSymbol, Greek_psi, NoSymbol, NoSymbol, Greek_PSI, NoSymbol ] }; + key { [ a, A, NoSymbol, Greek_alpha, NoSymbol, NoSymbol, U2200, NoSymbol ] }; + key { [ e, E, NoSymbol, Greek_epsilon, NoSymbol, NoSymbol, U2203, NoSymbol ] }; + key { [ i, I, NoSymbol, Greek_iota, NoSymbol, NoSymbol, integral, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol, NoSymbol, NoSymbol, includedin, NoSymbol ] }; + key { [ d, D, NoSymbol, Greek_delta, NoSymbol, NoSymbol, Greek_DELTA, NoSymbol ] }; + key { [ t, T, NoSymbol, Greek_tau, NoSymbol, NoSymbol, partialderivative, NoSymbol ] }; + key { [ r, R, NoSymbol, Greek_rho, NoSymbol, NoSymbol, U211D, NoSymbol ] }; + key { [ n, N, NoSymbol, Greek_nu, NoSymbol, NoSymbol, U2115, NoSymbol ] }; + key { [ s, S, NoSymbol, Greek_sigma, NoSymbol, NoSymbol, Greek_SIGMA, NoSymbol ] }; + key { [ f, F, NoSymbol, Greek_phi, NoSymbol, NoSymbol, Greek_PHI, NoSymbol ] }; + key { [ x, X, NoSymbol, Greek_xi, NoSymbol, NoSymbol, Greek_XI, NoSymbol ] }; + key { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, NoSymbol, Greek_eta, NoSymbol, NoSymbol, U2135, NoSymbol ] }; + key { [ udiaeresis, Udiaeresis, NoSymbol, NoSymbol, NoSymbol, NoSymbol, union, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, NoSymbol, U03F5, NoSymbol, NoSymbol, intersection, NoSymbol ] }; + key { [ b, B, NoSymbol, Greek_beta, NoSymbol, NoSymbol, U21D0, NoSymbol ] }; + key { [ p, P, NoSymbol, Greek_pi, NoSymbol, NoSymbol, Greek_PI, NoSymbol ] }; + key { [ w, W, NoSymbol, Greek_omega, NoSymbol, NoSymbol, Greek_OMEGA, NoSymbol ] }; + key { [ m, M, NoSymbol, Greek_mu, NoSymbol, NoSymbol, ifonlyif, NoSymbol ] }; + key { [ j, J, NoSymbol, Greek_theta, NoSymbol, NoSymbol, Greek_THETA, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "koy" { + + include "de(koy_base)" + + name[Group1]= "German (KOY)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +partial alphanumeric_keys +xkb_symbols "bone_base" { + include "de(neo_base)" + + key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK"; + key { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] }; + key { [ period, enfilledcircbullet, NoSymbol, U03D1, NoSymbol, NoSymbol, U21A6, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK"; + key { [ j, J, NoSymbol, Greek_theta, NoSymbol, NoSymbol, Greek_THETA, NoSymbol ] }; + key { [ d, D, NoSymbol, Greek_delta, NoSymbol, NoSymbol, Greek_DELTA, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol, NoSymbol, NoSymbol, includedin, NoSymbol ] }; + key { [ a, A, NoSymbol, Greek_alpha, NoSymbol, NoSymbol, U2200, NoSymbol ] }; + key { [ x, X, NoSymbol, Greek_xi, NoSymbol, NoSymbol, Greek_XI, NoSymbol ] }; + key { [ p, P, NoSymbol, Greek_pi, NoSymbol, NoSymbol, Greek_PI, NoSymbol ] }; + key { [ h, H, NoSymbol, Greek_psi, NoSymbol, NoSymbol, Greek_PSI, NoSymbol ] }; + key { [ l, L, NoSymbol, Greek_lambda, NoSymbol, NoSymbol, Greek_LAMBDA, NoSymbol ] }; + key { [ m, M, NoSymbol, Greek_mu, NoSymbol, NoSymbol, ifonlyif, NoSymbol ] }; + key { [ w, W, NoSymbol, Greek_omega, NoSymbol, NoSymbol, Greek_OMEGA, NoSymbol ] }; + key { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] }; + key { [ c, C, NoSymbol, Greek_chi, NoSymbol, NoSymbol, U2102, NoSymbol ] }; + key { [ t, T, NoSymbol, Greek_tau, NoSymbol, NoSymbol, partialderivative, NoSymbol ] }; + key { [ i, I, NoSymbol, Greek_iota, NoSymbol, NoSymbol, integral, NoSymbol ] }; + key { [ e, E, NoSymbol, Greek_epsilon, NoSymbol, NoSymbol, U2203, NoSymbol ] }; + key { [ o, O, NoSymbol, Greek_omicron, NoSymbol, NoSymbol, elementof, NoSymbol ] }; + key { [ b, B, NoSymbol, Greek_beta, NoSymbol, NoSymbol, U21D0, NoSymbol ] }; + key { [ n, N, NoSymbol, Greek_nu, NoSymbol, NoSymbol, U2115, NoSymbol ] }; + key { [ r, R, NoSymbol, Greek_rho, NoSymbol, NoSymbol, U211D, NoSymbol ] }; + key { [ s, S, NoSymbol, Greek_sigma, NoSymbol, NoSymbol, Greek_SIGMA, NoSymbol ] }; + key { [ g, G, NoSymbol, Greek_gamma, NoSymbol, NoSymbol, Greek_GAMMA, NoSymbol ] }; + key { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] }; + key { [ f, F, NoSymbol, Greek_phi, NoSymbol, NoSymbol, Greek_PHI, NoSymbol ] }; + key { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, radical, NoSymbol ] }; + key { [ udiaeresis, Udiaeresis, NoSymbol, NoSymbol, NoSymbol, NoSymbol, union, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, NoSymbol, Greek_eta, NoSymbol, NoSymbol, U2135, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, NoSymbol, U03F5, NoSymbol, NoSymbol, intersection, NoSymbol ] }; + key { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] }; + key { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] }; + key { [ k, K, NoSymbol, Greek_kappa, NoSymbol, NoSymbol, multiply, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "bone" { + + include "de(bone_base)" + + name[Group1]= "German (Bone)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +partial alphanumeric_keys +xkb_symbols "bone_eszett_home_base" { + include "de(bone_base)" + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK"; + key { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] }; + key { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "bone_eszett_home" { + + include "de(bone_eszett_home_base)" + + name[Group1]= "German (Bone, eszett in the home row)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +partial alphanumeric_keys +xkb_symbols "neo_qwertz_base" { + include "de(neo_base)" + + key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK"; + key { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] }; + key { [ period, enfilledcircbullet, NoSymbol, U03D1, NoSymbol, NoSymbol, U21A6, NoSymbol ] }; + key { [ minus, emdash, NoSymbol, U2011, NoSymbol, NoSymbol, hyphen, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK"; + key { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] }; + key { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] }; + key { [ w, W, NoSymbol, Greek_omega, NoSymbol, NoSymbol, Greek_OMEGA, NoSymbol ] }; + key { [ e, E, NoSymbol, Greek_epsilon, NoSymbol, NoSymbol, U2203, NoSymbol ] }; + key { [ r, R, NoSymbol, Greek_rho, NoSymbol, NoSymbol, U211D, NoSymbol ] }; + key { [ t, T, NoSymbol, Greek_tau, NoSymbol, NoSymbol, partialderivative, NoSymbol ] }; + key { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol, NoSymbol, NoSymbol, includedin, NoSymbol ] }; + key { [ i, I, NoSymbol, Greek_iota, NoSymbol, NoSymbol, integral, NoSymbol ] }; + key { [ o, O, NoSymbol, Greek_omicron, NoSymbol, NoSymbol, elementof, NoSymbol ] }; + key { [ p, P, NoSymbol, Greek_pi, NoSymbol, NoSymbol, Greek_PI, NoSymbol ] }; + key { [ udiaeresis, Udiaeresis, NoSymbol, NoSymbol, NoSymbol, NoSymbol, union, NoSymbol ] }; + key { [ a, A, NoSymbol, Greek_alpha, NoSymbol, NoSymbol, U2200, NoSymbol ] }; + key { [ s, S, NoSymbol, Greek_sigma, NoSymbol, NoSymbol, Greek_SIGMA, NoSymbol ] }; + key { [ d, D, NoSymbol, Greek_delta, NoSymbol, NoSymbol, Greek_DELTA, NoSymbol ] }; + key { [ f, F, NoSymbol, Greek_phi, NoSymbol, NoSymbol, Greek_PHI, NoSymbol ] }; + key { [ g, G, NoSymbol, Greek_gamma, NoSymbol, NoSymbol, Greek_GAMMA, NoSymbol ] }; + key { [ h, H, NoSymbol, Greek_psi, NoSymbol, NoSymbol, Greek_PSI, NoSymbol ] }; + key { [ j, J, NoSymbol, Greek_theta, NoSymbol, NoSymbol, Greek_THETA, NoSymbol ] }; + key { [ k, K, NoSymbol, Greek_kappa, NoSymbol, NoSymbol, multiply, NoSymbol ] }; + key { [ l, L, NoSymbol, Greek_lambda, NoSymbol, NoSymbol, Greek_LAMBDA, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, NoSymbol, U03F5, NoSymbol, NoSymbol, intersection, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, NoSymbol, Greek_eta, NoSymbol, NoSymbol, U2135, NoSymbol ] }; + key { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] }; + key { [ x, X, NoSymbol, Greek_xi, NoSymbol, NoSymbol, Greek_XI, NoSymbol ] }; + key { [ c, C, NoSymbol, Greek_chi, NoSymbol, NoSymbol, U2102, NoSymbol ] }; + key { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, radical, NoSymbol ] }; + key { [ b, B, NoSymbol, Greek_beta, NoSymbol, NoSymbol, U21D0, NoSymbol ] }; + key { [ n, N, NoSymbol, Greek_nu, NoSymbol, NoSymbol, U2115, NoSymbol ] }; + key { [ m, M, NoSymbol, Greek_mu, NoSymbol, NoSymbol, ifonlyif, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "neo_qwertz" { + + include "de(neo_qwertz_base)" + + name[Group1]= "German (Neo, QWERTZ)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +partial alphanumeric_keys +xkb_symbols "neo_qwerty_base" { + include "de(neo_qwertz_base)" + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK"; + key { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] }; + key { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "neo_qwerty" { + + include "de(neo_qwerty_base)" + + name[Group1]= "German (Neo, QWERTY)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; diff --git a/nixos/xkb/symbols/digital_vndr/lk b/nixos/xkb/symbols/digital_vndr/lk new file mode 100644 index 00000000..f8e7cf97 --- /dev/null +++ b/nixos/xkb/symbols/digital_vndr/lk @@ -0,0 +1,130 @@ +// +//Copyright (c) 1996 Digital Equipment Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining +//a copy of this software and associated documentation files (the +//"Software"), to deal in the Software without restriction, including +//without limitation the rights to use, copy, modify, merge, publish, +//distribute, sublicense, and sell copies of the Software, and to +//permit persons to whom the Software is furnished to do so, subject to +//the following conditions: +// +//The above copyright notice and this permission notice shall be included +//in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, +//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +//THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of the Digital Equipment +//Corporation shall not be used in advertising or otherwise to promote +//the sale, use or other dealings in this Software without prior written +//authorization from Digital Equipment Corporation. +// +// HISTORY +// Log: lk,v +// Revision 1.2 1996/06/18 09:10:09 erik +// use flags correctly, assorted cleanups and consortium fixes +// +// Revision 1.1.2.2 1995/03/10 17:16:52 William_Walker +// Rename to avoid name conflicts with XKB stuff +// [1995/03/10 17:10:33 William_Walker] +// +// Revision 1.1.2.2 1994/10/31 15:22:00 William_Walker +// New experimental version. +// [1994/10/31 14:48:37 William_Walker] +// +// EndLog +// +// @(#)RCSfile: lk,v Revision: 1.2 (DEC) Date: 1996/01/24 12:14:58 +// +// Symbols common to all the LK-style keyboards. +// +default xkb_symbols "common" { + + // Modifier mappings + modifier_map Shift { Shift_L, Shift_R }; + modifier_map Lock { Caps_Lock }; + modifier_map Control { Control_L, Control_R }; + modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R }; + modifier_map Mod2 { Num_Lock }; + modifier_map Mod3 { Scroll_Lock }; + + // Additional alphanumeric keys + key { [ less, greater ] }; + key { [ Alt_L, Meta_L ] }; + + // "Function" keys + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ Escape, F11 ] }; + key { [ F12 ] }; + key { [ F13 ] }; + key { [ F14 ] }; + key { [ F17 ] }; + key { [ F18 ] }; + key { [ F19 ] }; + key { [ F20 ] }; + + // "Editing" keys + key { [ Help ] }; + key { [ Menu ] }; + key { [ Find ] }; + key { [ Insert ] }; + key { [ Delete ] }; + key { [ Select ] }; + key { [ Prior ] }; + key { [ Next ] }; + + key { [ Up ] }; + key { [ Left ] }; + key { [ Down ] }; + key { [ Right ] }; + + // "Keypad" keys + key { + type= "SHIFT+ALT", + symbols[Group1]=[ KP_F1,Pointer_EnableKeys ] + }; + key { [ KP_F2 ] }; + key { [ KP_F3 ] }; + key { [ KP_F4 ] }; + + key { [ KP_Separator ] }; + key { [ KP_Subtract ] }; + + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + key { [ KP_Enter ] }; + + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; +}; + +xkb_symbols "lk401" { + include "digital_vndr/lk(common)" + key { [ Alt_R, Meta_R ] }; + key { [ Multi_key ] }; + key { [ Multi_key ] }; +}; diff --git a/nixos/xkb/symbols/digital_vndr/pc b/nixos/xkb/symbols/digital_vndr/pc new file mode 100644 index 00000000..d64daabf --- /dev/null +++ b/nixos/xkb/symbols/digital_vndr/pc @@ -0,0 +1,175 @@ +// +//Copyright (c) 1996 Digital Equipment Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining +//a copy of this software and associated documentation files (the +//"Software"), to deal in the Software without restriction, including +//without limitation the rights to use, copy, modify, merge, publish, +//distribute, sublicense, and sell copies of the Software, and to +//permit persons to whom the Software is furnished to do so, subject to +//the following conditions: +// +//The above copyright notice and this permission notice shall be included +//in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, +//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +//THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of the Digital Equipment +//Corporation shall not be used in advertising or otherwise to promote +//the sale, use or other dealings in this Software without prior written +//authorization from Digital Equipment Corporation. +// +// HISTORY +// Log +// Revision 1.2 1996/06/18 09:10:12 erik +// use flags correctly, assorted cleanups and consortium fixes +// +// Revision 1.1.6.4 1995/12/19 19:55:58 William_Walker +// Update to XKB 0.65 +// [1995/12/17 02:37:07 William_Walker] +// +// Revision 1.1.6.3 1995/10/25 21:01:09 William_Walker +// Make sure we use DIN 2137 and VT510 Spec for Group Semantics +// [1995/10/23 15:49:03 William_Walker] +// +// Revision 1.1.6.2 1995/08/07 17:40:40 William_Walker +// Upgrade XKB to protocol 0.62 (dual submit from decx11) +// [1995/08/06 14:06:32 William_Walker] +// +// Revision 1.1.2.7 1995/08/05 15:25:57 William_Walker +// Sync up with Erik's pool. +// [1995/08/03 20:17:15 William_Walker] +// +// Revision 1.1.2.6 1995/06/27 12:18:25 William_Walker +// Add LK201 and LK450 support as well as TW and DP variants. +// [1995/06/26 20:29:52 William_Walker] +// +// Revision 1.1.2.5 1995/06/08 17:10:28 William_Walker +// Make RALT default to Mode_switch +// [1995/06/08 17:08:50 William_Walker] +// +// Revision 1.1.2.4 1995/06/05 19:24:14 William_Walker +// New file. I love keymaps. +// [1995/06/05 18:17:03 William_Walker] +// +// EndLog +// +// @(#)RCSfile: pc Revision: /main/4 (DEC) Date: 1996/01/24 12:15:02 +// + +// ************************************************************** +// * * +// * The symbols common to all Extended PC layouts. * +// * * +// ************************************************************** +xkb_symbols "pc" { + + // Modifier mappings + // + modifier_map Shift { Shift_L, Shift_R }; + modifier_map Lock { Caps_Lock }; + modifier_map Control { Control_L, Control_R }; + modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R }; + modifier_map Mod3 { Mode_switch }; + modifier_map Mod4 { Num_Lock }; + modifier_map Mod5 { Scroll_Lock }; + + // Common keys + // + key { [ BackSpace, Delete ] }; + key { [ Tab, ISO_Left_Tab ] }; + key { [ Caps_Lock ] }; + key { [ Return ] }; + key { [ Shift_L ] }; + key { [ Shift_R ] }; + key { [ Control_L ] }; + key { [ Alt_L, Meta_L ] }; + key { [ space ] }; + key { [ Mode_switch ] }; + key { [ Control_R ] }; + + // "Function" keys + // + key { [ Escape ] }; + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ F11 ] }; + key { [ F12 ] }; + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { [ Scroll_Lock ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + + // "Editing" keys + // + key { [ Insert ] }; + key { [ Home ] }; + key { [ Prior ] }; + key { [ Delete ] }; + key { [ End ] }; + key { [ Next ] }; + + key { [ Up ] }; + key { [ Left ] }; + key { [ Down ] }; + key { [ Right ] }; + + // "Keypad" keys + // + key { + type= "SHIFT+ALT", + symbols[Group1]= [ Num_Lock,Pointer_EnableKeys] + }; + key { [ KP_Divide ] }; + key { [ KP_Multiply ] }; + key { [ KP_Subtract ] }; + + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + key { [ KP_Add ] }; + + key { [ KP_Left, KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Enter ] }; + + key { [ KP_Insert, KP_0 ] }; + key { [ KP_Delete, KP_Decimal ] }; + + // Key to support Lock-Down Modifier descriptions for R5 + // + key { [ NoSymbol ] }; +}; + +xkb_symbols "pc104" { + include "digital_vndr/pc(pc)" + + replace key { [ Alt_L ] }; + key { [ Meta_L ] }; + key { [ Meta_R ] }; + key { [ Menu ] }; +}; diff --git a/nixos/xkb/symbols/digital_vndr/us b/nixos/xkb/symbols/digital_vndr/us new file mode 100644 index 00000000..41de6199 --- /dev/null +++ b/nixos/xkb/symbols/digital_vndr/us @@ -0,0 +1,211 @@ +// +//Copyright (c) 1996 Digital Equipment Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining +//a copy of this software and associated documentation files (the +//"Software"), to deal in the Software without restriction, including +//without limitation the rights to use, copy, modify, merge, publish, +//distribute, sublicense, and sell copies of the Software, and to +//permit persons to whom the Software is furnished to do so, subject to +//the following conditions: +// +//The above copyright notice and this permission notice shall be included +//in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, +//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +//THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of the Digital Equipment +//Corporation shall not be used in advertising or otherwise to promote +//the sale, use or other dealings in this Software without prior written +//authorization from Digital Equipment Corporation. +// +// HISTORY +// Log +// Revision 1.2 1996/06/18 09:10:16 erik +// use flags correctly, assorted cleanups and consortium fixes +// +// Revision 1.1.6.3 1995/12/19 19:56:37 William_Walker +// Update to XKB 0.65 +// [1995/12/17 02:37:44 William_Walker] +// +// Revision 1.1.6.2 1995/10/25 21:01:25 William_Walker +// Add pc104-key support +// [1995/10/23 15:46:27 William_Walker] +// +// Revision 1.1.2.7 1995/06/27 12:18:40 William_Walker +// Add LK201 and LK450 support as well as TW and DP variants. +// [1995/06/26 20:30:33 William_Walker] +// +// Revision 1.1.2.6 1995/06/09 20:55:20 William_Walker +// Add VT105 layout support and ISO group support +// [1995/06/09 20:43:05 William_Walker] +// +// Revision 1.1.2.5 1995/06/08 21:05:49 William_Walker +// Use ISO_Next_Group instead of grouplock +// [1995/06/08 21:03:56 William_Walker] +// +// Revision 1.1.2.4 1995/06/05 19:25:00 William_Walker +// New file. I love keymaps. +// [1995/06/05 18:17:54 William_Walker] +// +// EndLog +// +// @(#)RCSfile: us Revision: /main/4 (DEC) Date: 1996/01/24 12:15:05 +// + +// ************************************************************** +// * * +// * Symbols for en_US.ISO8859-1 - English for U.S. * +// * * +// ************************************************************** + +xkb_symbols "us" { + + key { [ grave, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + key { [ backslash, bar ] }; + + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; +}; + +// ************************************************************** +// * * +// * The VT105 layouts * +// * * +// * NOTES: The typewriter (TW) and dataprocessing (DP) keys * +// * for the VT108 layout are identical for the US. * +// * * +// ************************************************************** +xkb_symbols "vt105-tw" { + include "digital_vndr/us(us)" + include "digital_vndr/vt(vt105)" + override key { + symbols[Group1]= [ 3, numbersign ], + symbols[Group2]= [ sterling ] + }; + key { [ less, greater ] }; +}; + +xkb_symbols "vt105-dp" { include "digital_vndr/us(vt105-tw)" }; +xkb_symbols "vt105" { include "digital_vndr/us(vt105-tw)" }; + +// ************************************************************** +// * * +// * The VT108 layouts - based upon the LK401-AA * +// * * +// * NOTES: The typewriter (TW) and dataprocessing (DP) keys * +// * for the VT108 layout are identical for the US. * +// * * +// ************************************************************** +xkb_symbols "vt108-tw" { + include "digital_vndr/us(us)" + include "digital_vndr/vt(vt108)" + replace key { [ Multi_key ] }; + override key { + symbols[Group1]= [ 3, numbersign ], + symbols[Group2]= [ sterling ] + }; + key { [ less, greater ] }; +}; + +xkb_symbols "vt108-dp" { include "digital_vndr/us(vt108-tw)" }; +xkb_symbols "vt108" { include "digital_vndr/us(vt108-tw)" }; + +// ************************************************************** +// * * +// * The "unix" layouts - based upon the LK421-AA * +// * * +// * NOTES: The "unix" keyboard emits the same keycodes as the * +// * LK401, but is a shorter keyboard that uses an * +// * "extend" key. To make life easier, we map * +// * to Escape so users do not have to press Extend+F11 * +// * to get Escape. * +// * * +// ************************************************************** +xkb_symbols "unix" { + include "digital_vndr/us(vt108)" + override key { [ Escape ] }; + override key { [ grave, asciitilde ] }; +}; + +// ************************************************************** +// * * +// * The "pcxal" layouts * +// * * +// * NOTES: The pcxal layouts are pretty much standardized for * +// * the US and use a 101-key keyboard. * +// * * +// ************************************************************** +xkb_symbols "pcxalga" { + include "digital_vndr/pc(pc)" + include "digital_vndr/us(us)" + replace key { [ Alt_R, Meta_R ] }; +}; + +xkb_symbols "pcxal" { include "digital_vndr/us(pcxalga)" }; +xkb_symbols "pcxalaa" { include "digital_vndr/us(pcxalga)" }; +xkb_symbols "pcxalfa" { include "digital_vndr/us(pcxalga)" }; +xkb_symbols "pcxalka" { include "digital_vndr/us(pcxalga)" }; +xkb_symbols "lk44x" { include "digital_vndr/us(pcxalga)" }; + +// ************************************************************** +// * * +// * The "pc104" layouts. * +// * * +// ************************************************************** +xkb_symbols "pc104" { + include "digital_vndr/pc(pc104)" + include "digital_vndr/us(us)" + replace key { [ Alt_R ] }; +}; diff --git a/nixos/xkb/symbols/digital_vndr/vt b/nixos/xkb/symbols/digital_vndr/vt new file mode 100644 index 00000000..580ae25a --- /dev/null +++ b/nixos/xkb/symbols/digital_vndr/vt @@ -0,0 +1,158 @@ +// +//Copyright (c) 1996 Digital Equipment Corporation +// +//Permission is hereby granted, free of charge, to any person obtaining +//a copy of this software and associated documentation files (the +//"Software"), to deal in the Software without restriction, including +//without limitation the rights to use, copy, modify, merge, publish, +//distribute, sublicense, and sell copies of the Software, and to +//permit persons to whom the Software is furnished to do so, subject to +//the following conditions: +// +//The above copyright notice and this permission notice shall be included +//in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +//OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, +//DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +//OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +//THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of the Digital Equipment +//Corporation shall not be used in advertising or otherwise to promote +//the sale, use or other dealings in this Software without prior written +//authorization from Digital Equipment Corporation. +// +// HISTORY +// Log +// Revision 1.2 1996/06/18 09:10:19 erik +// use flags correctly, assorted cleanups and consortium fixes +// +// Revision 1.1.6.2 1995/12/19 19:56:39 William_Walker +// Update to XKB 0.65 +// [1995/12/17 02:37:47 William_Walker] +// +// Revision 1.1.2.5 1995/07/11 21:20:50 William_Walker +// Make RALT act as RALT +// [1995/07/11 21:18:28 William_Walker] +// +// Revision 1.1.2.4 1995/06/27 12:18:41 William_Walker +// Add LK201 and LK450 support as well as TW and DP variants. +// [1995/06/26 20:30:37 William_Walker] +// +// Revision 1.1.2.3 1995/06/09 20:55:21 William_Walker +// Add VT105 layout support and ISO group support +// [1995/06/09 20:43:09 William_Walker] +// +// Revision 1.1.2.2 1995/06/05 19:25:04 William_Walker +// New file. I love keymaps. +// [1995/06/05 18:17:58 William_Walker] +// +// EndLog +// +// @(#)RCSfile: vt Revision: /main/3 (DEC) Date: 1996/01/24 12:15:08 +// +xkb_symbols "vt105" { + + // Modifier mappings + // + modifier_map Shift { Shift_L, Shift_R }; + modifier_map Lock { Caps_Lock }; + modifier_map Control { Control_L, Control_R }; + modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R }; + modifier_map Mod3 { Mode_switch }; + + // Common keys + // + key { [ Delete ] }; + key { [ Tab ] }; + key { [ Return ] }; + key { [ Control_L ] }; + key { [ Caps_Lock ] }; + key { [ Shift_L ] }; + key { [ Shift_R ] }; + key { [ Alt_L, Meta_L ] }; + key { [ space ] }; + + // "Function" keys + // + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ Escape, F11 ] }; + key { [ F12 ] }; + key { [ F13 ] }; + key { [ F14 ] }; + key { [ F17 ] }; + key { [ F18 ] }; + key { [ F19 ] }; + key { [ F20 ] }; + + // "Editing" keys + // + key { [ Help ] }; + key { [ Menu ] }; + key { [ Find ] }; + key { [ Insert ] }; + key { [ apLineDel ] }; + key { [ Select ] }; + key { [ Prior ] }; + key { [ Next ] }; + + key { [ Up ] }; + key { [ Left ] }; + key { [ Down ] }; + key { [ Right ] }; + + // "Keypad" keys + // + key { + type= "SHIFT+ALT", + symbols[Group1]= [ KP_F1,Pointer_EnableKeys ] + }; + key { [ KP_F2 ] }; + key { [ KP_F3 ] }; + key { [ KP_F4 ] }; + + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + key { [ KP_Subtract ] }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + key { [ KP_Separator ] }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + key { [ KP_Enter ] }; + + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; + + // Key to support Lock-Down Modifier descriptions for R5 + // + key { [ NoSymbol ] }; +}; + +xkb_symbols "vt108" { + + include "digital_vndr/vt(vt105)" + + replace key { [ Mode_switch ] }; + + key { [ Alt_L, Meta_L ] }; + key { [ Alt_R, Meta_R ] }; + key { [ Multi_key ] }; +}; diff --git a/nixos/xkb/symbols/dk b/nixos/xkb/symbols/dk new file mode 100644 index 00000000..daa0fbf1 --- /dev/null +++ b/nixos/xkb/symbols/dk @@ -0,0 +1,96 @@ +// Keyboard layouts for Denmark. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin(type2)" + + name[Group1]="Danish"; + + key {[ onehalf, section, threequarters, paragraph ]}; + key {[ plus, question, plusminus, questiondown ]}; + key {[dead_acute, dead_grave, bar, brokenbar ]}; + + key {[ ae, AE, dead_acute, dead_doubleacute]}; + key {[ oslash, Oslash, dead_circumflex, dead_caron ]}; + key {[apostrophe, asterisk, dead_doubleacute, multiply ]}; + + key {[ less, greater, backslash, notsign ]}; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "dk(basic)" + + name[Group1]="Danish (no dead keys)"; + + key {[ acute, grave, bar, ogonek ]}; + + key {[ aring, Aring, diaeresis, degree ]}; + key {[ diaeresis, asciicircum, asciitilde, macron ]}; + + key {[ j, J, ezh, EZH ]}; + key {[ ae, AE, acute, doubleacute ]}; + key {[ oslash, Oslash, asciicircum, caron ]}; + key {[apostrophe, asterisk, doubleacute, multiply ]}; + + key {[ comma, semicolon, cedilla, ogonek ]}; + key {[ period, colon, periodcentered, abovedot ]}; + key {[ minus, underscore, endash, emdash ]}; +}; + +partial alphanumeric_keys +xkb_symbols "winkeys" { + + include "dk(basic)" + + name[Group1] = "Danish (Windows)"; + + include "eurosign(5)" +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + include "dk(basic)" + + name[Group1]= "Danish (Macintosh)"; + + key {[ minus, underscore, hyphen, macron ]}; + key {[ space, space, nobreakspace, nobreakspace ]}; + + include "kpdl(dot)" +}; + +partial alphanumeric_keys +xkb_symbols "mac_nodeadkeys" { + + include "dk(mac)" + + name[Group1]= "Danish (Macintosh, no dead keys)"; + + key {[ acute, grave, bar, ogonek ]}; + key {[diaeresis, asciicircum, asciitilde, dead_macron ]}; +}; + +partial alphanumeric_keys +xkb_symbols "dvorak" { + + include "no(dvorak)" + + name[Group1]= "Danish (Dvorak)"; + + key {[ asciitilde, asciicircum, dead_diaeresis, dead_tilde ]}; +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/dk(sun_type6)" +}; diff --git a/nixos/xkb/symbols/dz b/nixos/xkb/symbols/dz new file mode 100644 index 00000000..f6c1160e --- /dev/null +++ b/nixos/xkb/symbols/dz @@ -0,0 +1,183 @@ +// Keyboard layouts for Algeria. + +// Tamazight in Latin characters. +// Original author: Noureddine LOUAHEDJ +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃ +// │ ² ¹ │ & ˇ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃ arrière┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ A Æ │ Z  │ E ¢ │ R Ṛ │ T Ṭ │ Y Ÿ │ U Û │ I Î │ O Ɛ │ P Ô │ ¨ ˚ │ £ Ø ┃Entrée ┃ +// ┃Tab ↹ ┃ a æ │ z â │ e € │ r ṛ │ t ṭ │ y ÿ │ u û │ i î │ o ɛ │ p ô │ ^ ~ │ $ ø ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ Q Ä │ S Ṣ │ D Ḍ │ F ‚ │ G Ǧ │ H Ḥ │ J Ü │ K Ï │ L Ŀ │ M Ö │ % Ù │ µ ̄ ┃ ┃ +// ┃Maj ⇬ ┃ q ä │ s ṣ │ d ḍ │ f ‘ │ g ǧ │ h ḥ │ j ü │ k ï │ l ŀ │ m ö │ ù ' │ * ` ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ > ≥ │ W “ │ X ” │ C Č │ V Ɣ │ B ↑ │ N → │ ? … │ . . │ / ∕ │ § − ┃ ┃ +// ┃Shift ⇧┃ < ≤ │ w « │ x » │ c č │ v ɣ │ b ↓ │ n ¬ │ , ¿ │ ; × │ : ÷ │ ! ¡ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ␣ Espace fine insécable ⍽ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Espace Espace insécable ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +default partial alphanumeric_keys +xkb_symbols "azerty-oss" { + + include "fr(oss)" + + name[Group1]="Berber (Algeria, Latin)"; + + key {[ z, Z, U1E93, U1E92 ]}; // z Z ẓ Ẓ + key {[ r, R, U1E5B, U1E5A ]}; // r R ṛ Ṛ + key {[ t, T, U1E6D, U1E6C ]}; // t T ṭ Ṭ + key {[ o, O, U025B, U0190 ]}; // o O ɛ Ɛ + key {[ s, S, U1E63, U1E62 ]}; // s s ṣ Ṣ + key {[ d, D, U1E0D, U1E0C ]}; // d D ḍ Ḍ + key {[ g, G, U01E7, U01E6 ]}; // g G ǧ Ǧ + key {[ h, H, U1E25, U1E24 ]}; // h H ḥ Ḥ + key {[ c, C, U010D, U010C ]}; // c C č Č + key {[ v, V, U0263, U0194 ]}; // v V ɣ Ɣ + + include "level3(ralt_switch)" +}; + +// Kabyle keyboard with dead keys. +// 2020 by Louis Gostiaux +partial alphanumeric_keys +xkb_symbols "azerty-deadkeys" { + + include "fr" + + name[Group1]= "Kabyle (AZERTY, with dead keys)"; + + key {[ a, A, U025B, U0190 ]}; // a A ɛ Ɛ + key {[ z, Z, U2D63 ]}; // ⵣ + key {[ q, Q, U0263, U0194 ]}; // q Q ɣ Ɣ + key {[ w, W, U02B7 ]}; // ʷ + // With dead belowdot for ḍ, ṭ, ẓ, ḥ, and dead caron for č and ǧ. + key {[ semicolon, period, dead_belowdot, dead_caron]}; + + include "level3(ralt_switch)" +}; + +// Kabyle keyboard, US international with dead keys. +// 2020 by Louis Gostiaux +partial alphanumeric_keys +xkb_symbols "qwerty-gb-deadkeys" { + + include "gb(intl)" + + name[Group1]= "Kabyle (QWERTY, UK, with dead keys)"; + + key {[ q, Q, U0263, U0194 ]}; // q Q ɣ Ɣ + key {[ w, W, U02B7 ]}; // ʷ + key {[ a, A, U025B, U0190 ]}; // a A ɛ Ɛ + key {[ z, Z, U2D63 ]}; // ⵣ + key {[ period, greater, dead_belowdot, dead_caron]}; + + include "level3(ralt_switch)" +}; + +// Kabyle keyboard, US international with dead keys. +// 2020 by Louis Gostiaux +partial alphanumeric_keys +xkb_symbols "qwerty-us-deadkeys" { + + include "us(intl)" + + name[Group1]= "Kabyle (QWERTY, US, with dead keys)"; + + key {[ q, Q, U0263, U0194 ]}; // q Q ɣ Ɣ + key {[ w, W, U02B7 ]}; // ʷ + key {[ a, A, U025B, U0190 ]}; // a A ɛ Ɛ + key {[ z, Z, U2D63 ]}; // ⵣ + key {[ period, greater, dead_belowdot, dead_caron]}; + + include "level3(ralt_switch)" +}; + + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ̆ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃ +// │ ² ¹ │ & ̌ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃ arrière┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ │ ⵥ │ ⵦ │ ⵕ │ ⵟ │ │ │ │ ⵧ │ │ │ £ Ø ┃Entrée ┃ +// ┃Tab ↹ ┃ ⴰ │ ⵣ ⵤ │ ⴻ │ ⵔ │ ⵜ ⵝ │ ⵢ │ ⵓ │ ⵉ │ ⵄ │ ⵃ │ ⵯ │ $ ø ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ ⵈ │ ⵚ │ ⴹ ⴺ │ │ ⴵ ⴶ │ ⵁ │ ⵋ │ ⴿ │ │ │ % Ù │ µ ¯ ┃ ┃ +// ┃Maj ⇬ ┃ ⵇ │ ⵙ │ ⴷ ⴸ │ ⴼ │ ⴳ ⴴ │ ⵀ ⵂ │ ⵊ ⵌ │ ⴽ ⴾ │ ⵍ │ ⵎ │ ù ´ │ * ` ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ > ≥ │ │ ⵆ │ ⵞ │ ⵗ ⵠ │ ⴲ │ ⵐ │ ? … │ . ⋅ │ / ∕ │ § − ┃ ┃ +// ┃Shift ⇧┃ < ≤ │ ⵡ │ ⵅ │ ⵛ │ ⵖ ⵘ │ ⴱ ⵒ │ ⵏ ⵑ │ , ¿ │ ; × │ : ÷ │ ! ¡ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ␣ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Espace ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial alphanumeric_keys +xkb_symbols "ber" { + + name[Group1]="Berber (Algeria, Tifinagh)"; + + key {[ twosuperior, threesuperior, onesuperior, dead_cedilla ]}; // ² ³ ¹ ¸ + key {[ ampersand, 1, dead_caron, dead_ogonek ]}; // & 1 ˇ ̨ + key {[ eacute, 2, asciitilde, Eacute ]}; // é 2 ~ É + key {[ quotedbl, 3, numbersign, dead_breve ]}; // " 3 # ˘ + key {[ apostrophe, 4, braceleft, U2014 ]}; // ' 4 { — (tiret cadratin) + key {[ parenleft, 5, bracketleft, U2013 ]}; // ( 5 [ – (tiret demi-cadratin) + key {[ minus, 6, bar, U2011 ]}; // - 6 | ‑ (tiret insécable) + key {[ egrave, 7, grave, Egrave ]}; // è 7 ` È + key {[ underscore, 8, backslash, trademark ]}; // _ 8 \ ™ + key {[ ccedilla, 9, asciicircum, Ccedilla ]}; // ç 9 ^ Ç + key {[ agrave, 0, at, Agrave ]}; // à 0 @ À + key {[ parenright, degree, bracketright,notequal]}; // ) ° ] ≠ + key {[ equal, plus, braceright, plusminus]}; // = + } ± + + key {[ U2D30 ]}; // ⴰ + key {[ U2D63, U2D65, U2D64 ]}; // ⵣ ⵥ ⵤ + key {[ U2D3B, U2D66 ]}; // ⴻ ⵦ + key {[ U2D54, U2D55 ]}; // ⵔ ⵕ + key {[ U2D5C, U2D5F, U2D5D ]}; // ⵜ ⵟ ⵝ + key {[ U2D62 ]}; // ⵢ + key {[ U2D53 ]}; // ⵓ + key {[ U2D49 ]}; // ⵉ + key {[ U2D44, U2D67 ]}; // ⵄ ⵧ + key {[ U2D43 ]}; // ⵃ + key {[ U2D6F ]}; // ⵯ + key {[ dollar, sterling, oslash, Oslash]}; // $ £ ø Ø + + key {[ U2D47, U2D48 ]}; // ⵇ ⵈ + key {[ U2D59, U2D5A ]}; // ⵙ ⵚ + key {[ U2D37, U2D39, U2D38, U2D3A ]}; // ⴷ ⴹ ⴸ ⴺ + key {[ U2D3C ]}; // ⴼ + key {[ U2D33, U2D35, U2D34, U2D36 ]}; // ⴳ ⴵ ⴴ ⴶ + key {[ U2D40, U2D41, U2D42 ]}; // ⵀ ⵁ ⵂ + key {[ U2D4A, U2D4B, U2D4C ]}; // ⵊ ⵋ ⵌ + key {[ U2D3D, U2D3F, U2D3E ]}; // ⴽ ⴿ ⴾ + key {[ U2D4D ]}; // ⵍ + key {[ U2D4E ]}; // ⵎ + key {[ ugrave, percent, dead_acute, Ugrave ]}; // ù % ' Ù + key {[ asterisk, mu, dead_grave, dead_macron ]}; // * µ ` ̄ + + key {[ less, greater, lessthanequal, greaterthanequal ]}; // < > ≤ ≥ + key {[ U2D61 ]}; // ⵡ + key {[ U2D45, U2D46 ]}; // ⵅ ⵆ + key {[ U2D5B, U2D5E ]}; // ⵛ ⵞ + key {[ U2D56, U2D57, U2D58, U2D60 ]}; // ⵖ ⵗ ⵘ ⵠ + key {[ U2D31, U2D32, U2D52 ]}; // ⴱ ⴲ ⵒ + key {[ U2D4F, U2D50, U2D51 ]}; // ⵏ ⵐ ⵑ + key {[ comma, question, questiondown, U2026 ]}; // , ? ¿ … + key {[ semicolon, period, multiply, U22C5 ]}; // ; . × ⋅ + key {[ colon, slash, division, U2215 ]}; // : / ÷ ∕ + key {[ exclam, section, exclamdown, U2212 ]}; // ! § ¡ − + + include "level3(ralt_switch)" +}; + +// Arabic AZERTY with modern Latin digits +partial alphanumeric_keys +xkb_symbols "ar" { + include "ara(azerty)" + + name[Group1]="Arabic (Algeria)"; +}; diff --git a/nixos/xkb/symbols/ee b/nixos/xkb/symbols/ee new file mode 100644 index 00000000..46ba89a3 --- /dev/null +++ b/nixos/xkb/symbols/ee @@ -0,0 +1,126 @@ +// Keyboard layouts for Estonia. + +// Estonian keyboard layout, by Ville Hallik . +// This layout conforms to both EVS8:1993 and EVS8:2000 standards. +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin(type4)" + + name[Group1]="Estonian"; + + key {[ dead_caron, dead_tilde, U2022,periodcentered]}; // bullet + key {[ 3, numbersign, sterling, sterling ]}; + key {[ 4, currency, dollar, dollar ]}; + key {[ 5, percent, EuroSign, threeeighths ]}; + key {[ plus, question, backslash, questiondown ]}; + key {[ dead_acute, dead_grave, grave, dead_cedilla ]}; + + key {[ w, W, ssharp, Greek_SIGMA ]}; + key {[ udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ]}; + key {[ otilde, Otilde, section, dead_macron ]}; + + key {[ s, S, scaron, Scaron ]}; + key {[ odiaeresis, Odiaeresis, dead_acute, dead_doubleacute ]}; + key {[ adiaeresis, Adiaeresis, asciicircum, dead_circumflex ]}; + key {[ apostrophe, asterisk, onehalf, dead_breve ]}; + + key {[ z, Z, zcaron, Zcaron ]}; + key {[ x, X, guillemotright, guillemotleft ]}; + key {[ comma, semicolon, less, multiply ]}; + key {[ period, colon, greater, division ]}; + key {[ minus, underscore, bar, dead_abovedot]}; + + include "eurosign(e)" + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "ee(basic)" + + name[Group1] = "Estonian (no dead keys)"; + + key {[asciicircum, asciitilde ]}; + key {[ apostrophe, grave, grave, dagger ]}; + + key {[ udiaeresis, Udiaeresis, diaeresis, degree ]}; + key {[ otilde, Otilde, section, macron ]}; + + key {[ j, J, ezh, EZH ]}; + key {[ odiaeresis, Odiaeresis, acute, doubleacute ]}; + key {[ adiaeresis, Adiaeresis, asciicircum, caron ]}; + key {[ apostrophe, asterisk, onehalf, breve ]}; + + key {[ minus, underscore, ellipsis, abovedot ]}; +}; + +// The US Dvorak layout with Estonian letters on the third level. +partial alphanumeric_keys +xkb_symbols "dvorak" { + + include "us(dvorak)" + + name[Group1] = "Estonian (Dvorak)"; + + key {[ 3, numbersign, sterling ]}; + key {[ 4, dollar, section, currency ]}; + key {[ 8, asterisk, onehalf ]}; + + key {[ a, A, adiaeresis, Adiaeresis ]}; + key {[ o, O, otilde, Otilde ]}; + key {[ e, E, odiaeresis, Odiaeresis ]}; + key {[ u, U, udiaeresis, Udiaeresis ]}; + key {[ s, S, scaron, Scaron ]}; + + key {[ z, Z, zcaron, Zcaron ]}; + + include "kpdl(comma)" + include "eurosign(5)" + + include "level3(ralt_switch)" +}; + +// The basic US layout with Estonian letters on the third level, +// originally by Elan Ruusamäe . +partial alphanumeric_keys +xkb_symbols "us" { + + include "us(basic)" + + name[Group1] = "Estonian (US)"; + + key {[ 3, numbersign, sterling, sterling ]}; + + key {[ q, Q, otilde, Otilde ]}; + key {[ u, U, udiaeresis, Udiaeresis ]}; + key {[ o, O, odiaeresis, Odiaeresis ]}; + key {[ p, P, otilde, Otilde ]}; + key {[ bracketleft, braceleft, udiaeresis, Udiaeresis ]}; + key {[ bracketright, braceright, otilde, Otilde ]}; + + key {[ a, A, adiaeresis, Adiaeresis ]}; + key {[ s, S, scaron, Scaron ]}; + key {[ d, D, odiaeresis, Odiaeresis ]}; + key {[ f, F, udiaeresis, Udiaeresis ]}; + key {[ semicolon, colon, odiaeresis, Odiaeresis ]}; + key {[ apostrophe, quotedbl, adiaeresis, Adiaeresis ]}; + + key {[ z, Z, zcaron, Zcaron ]}; + key {[ x, X, otilde, Otilde ]}; + key {[ c, C, cent, cent ]}; + + include "eurosign(5)" + include "eurosign(e)" + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/ee(sun_type6)" +}; diff --git a/nixos/xkb/symbols/eg b/nixos/xkb/symbols/eg new file mode 100644 index 00000000..5d7ed95c --- /dev/null +++ b/nixos/xkb/symbols/eg @@ -0,0 +1,70 @@ +// Keyboard layouts for Egypt. + +default +xkb_symbols "basic" { + + include "ara(basic)" + + name[Group1]= "Arabic (Egypt)"; +}; + + +// EXTRAS: + +// Coptic-language layout, based on https://coptic-dictionary.org, +// with added diacritics. +xkb_symbols "cop" { + + name[Group1]= "Coptic"; + + key { [ U0307, U0300 ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ U0305, minus, underscore ] }; + key { [ U0308, U2E17, equal, plus ] }; + + key { [ U2C91, U2C90 ] }; + key { [ U2CB1, U2CB0 ] }; + key { [ U2C89, U2C88 ] }; + key { [ U2CA3, U2CA2 ] }; + key { [ U2CA7, U2CA6 ] }; + key { [ U2CAF, U2CAE ] }; + key { [ U2CA9, U2CA8 ] }; + key { [ U2C93, U2C92 ] }; + key { [ U2C9F, U2C9E ] }; + key { [ U2CA1, U2CA0 ] }; + key { [ U03E3, U03E2 ] }; + key { [ bracketleft, bracketright ] }; + + key { [ U2C81, U2C80 ] }; + key { [ U2CA5, U2CA4 ] }; + key { [ U2C87, U2C86 ] }; + key { [ U03E5, U03E4 ] }; + key { [ U2C85, U2C84 ] }; + key { [ U03E9, U03E8 ] }; + key { [ U03EB, U03EA ] }; + key { [ U2C95, U2C94 ] }; + key { [ U2C97, U2C96 ] }; + key { [ U03E7, U03E6 ] }; + key { [ U2CC9, U2CC8 ] }; + key { [ U0304, U0323 ] }; + + key { [ U2C8D, U2C8C ] }; + key { [ U2C9D, U2C9C ] }; + key { [ U2CAD, U2CAC ] }; + key { [ U2CAB, U2CAA ] }; + key { [ U2C83, U2C82 ] }; + key { [ U2C9B, U2C9A ] }; + key { [ U2C99, U2C98 ] }; + key { [ U03ED, U03EC ] }; + key { [ U03EF, U03EE ] }; + key { [ U2C8F, U2C8E ] }; +}; diff --git a/nixos/xkb/symbols/empty b/nixos/xkb/symbols/empty new file mode 100644 index 00000000..d1825810 --- /dev/null +++ b/nixos/xkb/symbols/empty @@ -0,0 +1,5 @@ +default partial alphanumeric_keys modifier_keys +xkb_symbols "basic" { + // #UNREGISTERED + name[Group1]= "Empty"; +}; diff --git a/nixos/xkb/symbols/epo b/nixos/xkb/symbols/epo new file mode 100644 index 00000000..5b21254d --- /dev/null +++ b/nixos/xkb/symbols/epo @@ -0,0 +1,146 @@ +// Esperanto keyboard maps -- "Ekverto" + +// Ekverto B ("basic") (2006-12-02) +// Benno Schulenberg (Beno Sĥilenberĥ) +// Chusslove Illich (Ĉaslavo Iliĉo) + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "us(basic)" + + name[Group1]= "Esperanto"; + + key { [ 5, percent, EuroSign, EuroSign ] }; + + key { [ scircumflex, Scircumflex, q, Q ] }; + key { [ gcircumflex, Gcircumflex, w, W ] }; + key { [ ubreve, Ubreve, y, Y ] }; + key { [ o, O, braceleft, braceleft ] }; + key { [ p, P, braceright, braceright ] }; + key { [ jcircumflex, Jcircumflex, bracketleft, braceleft ] }; + key { [ hcircumflex, Hcircumflex, bracketright, braceright ] }; + + key { [ a, A, leftsinglequotemark, NoSymbol ] }; + key { [ s, S, rightsinglequotemark, NoSymbol ] }; + key { [ d, D, leftdoublequotemark, NoSymbol ] }; + key { [ f, F, rightdoublequotemark, NoSymbol ] }; + + key { [ ccircumflex, Ccircumflex, x, X ] }; + key { [ n, N, endash, endash ] }; + key { [ m, M, emdash, emdash ] }; + key { [ comma, less, guillemotleft, U2039 ] }; // « ‹ + key { [ period, greater, guillemotright, U203A ] }; // » › + + include "level3(ralt_switch)" +}; + + +// Ekverto A ("legacy") (2004-01-10) +// Chusslove Illich (Ĉaslavo Iliĉo) + +partial alphanumeric_keys +xkb_symbols "legacy" { + + name[Group1]= "Esperanto (legacy)"; + + key.type[Group1] = "FOUR_LEVEL"; + + key { [ grave, asciitilde, NoSymbol, NoSymbol ] }; + key { [ 1, exclam, NoSymbol, NoSymbol ] }; + key { [ 2, quotedbl, NoSymbol, NoSymbol ] }; + key { [ 3, numbersign, NoSymbol, NoSymbol ] }; + key { [ 4, dollar, NoSymbol, NoSymbol ] }; + key { [ 5, percent, NoSymbol, NoSymbol ] }; + key { [ 6, apostrophe, NoSymbol, NoSymbol ] }; + key { [ 7, ampersand, NoSymbol, NoSymbol ] }; + key { [ 8, asterisk, NoSymbol, NoSymbol ] }; + key { [ 9, parenleft, NoSymbol, NoSymbol ] }; + key { [ 0, parenright, NoSymbol, NoSymbol ] }; + key { [ minus, underscore, NoSymbol, NoSymbol ] }; + key { [ equal, plus, NoSymbol, NoSymbol ] }; + + key { [ comma, semicolon, NoSymbol, NoSymbol ] }; + key { [ period, colon, NoSymbol, NoSymbol ] }; + key { [ slash, question, NoSymbol, NoSymbol ] }; + + key { [ bracketleft, braceleft, NoSymbol, NoSymbol ] }; + key { [ bracketright, braceright, NoSymbol, NoSymbol ] }; + + key { [ backslash, bar, NoSymbol, NoSymbol ] }; + key { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; + + key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC"; + + key { [ scircumflex, Scircumflex, at, NoSymbol ] }; + key { [ jcircumflex, Jcircumflex, asciicircum, NoSymbol ] }; + key { [ e, E, EuroSign, NoSymbol ] }; + key { [ r, R, emdash, NoSymbol ] }; + key { [ t, T, endash, NoSymbol ] }; + key { [ gcircumflex, Gcircumflex, NoSymbol, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol ] }; + key { [ i, I, NoSymbol, NoSymbol ] }; + key { [ o, O, NoSymbol, NoSymbol ] }; + key { [ p, P, NoSymbol, NoSymbol ] }; + + key { [ a, A, less, NoSymbol ] }; + key { [ s, S, greater, NoSymbol ] }; + key { [ d, D, leftdoublequotemark, NoSymbol ] }; + key { [ f, F, rightdoublequotemark, NoSymbol ] }; + key { [ g, G, NoSymbol, NoSymbol ] }; + key { [ h, H, NoSymbol, NoSymbol ] }; + key { [ j, J, NoSymbol, NoSymbol ] }; + key { [ k, K, NoSymbol, NoSymbol ] }; + key { [ l, L, NoSymbol, NoSymbol ] }; + key { [ ubreve, Ubreve, NoSymbol, NoSymbol ] }; + key { [ hcircumflex, Hcircumflex, NoSymbol, NoSymbol ] }; + + key { [ z, Z, leftsinglequotemark, NoSymbol ] }; + key { [ ccircumflex, Ccircumflex, rightsinglequotemark, NoSymbol ] }; + key { [ c, C, NoSymbol, NoSymbol ] }; + key { [ v, V, NoSymbol, NoSymbol ] }; + key { [ b, B, NoSymbol, NoSymbol ] }; + key { [ n, N, NoSymbol, NoSymbol ] }; + key { [ m, M, NoSymbol, NoSymbol ] }; + + include "level3(ralt_switch)" +}; + + +// Add the Esperanto supersigned letters to their related keys on a Qwerty keyboard. +// This is a generic "component" that is not used by the other layouts in this file, +// but is meant to be applied to any Qwerty or Azerty or Qwertz layout. If you have +// any questions, ask J. Pablo Fernández . +partial +xkb_symbols "qwerty" { + key { [ NoSymbol, NoSymbol, ccircumflex, Ccircumflex ] }; + key { [ NoSymbol, NoSymbol, gcircumflex, Gcircumflex ] }; + key { [ NoSymbol, NoSymbol, hcircumflex, Hcircumflex ] }; + key { [ NoSymbol, NoSymbol, jcircumflex, Jcircumflex ] }; + key { [ NoSymbol, NoSymbol, scircumflex, Scircumflex ] }; + key { [ NoSymbol, NoSymbol, ubreve, Ubreve ] }; +}; + +// Add the Esperanto supersigned letters to their related keys in a +// Dvorak layout. Similar comment as above applies. +partial +xkb_symbols "dvorak" { + key { [ NoSymbol, NoSymbol, ccircumflex, Ccircumflex ] }; + key { [ NoSymbol, NoSymbol, gcircumflex, Gcircumflex ] }; + key { [ NoSymbol, NoSymbol, hcircumflex, Hcircumflex ] }; + key { [ NoSymbol, NoSymbol, jcircumflex, Jcircumflex ] }; + key { [ NoSymbol, NoSymbol, scircumflex, Scircumflex ] }; + key { [ NoSymbol, NoSymbol, ubreve, Ubreve ] }; +}; + +// Add the Esperanto supersigned letters to their related keys in a +// Colemak layout. Similar comment as above applies. +partial +xkb_symbols "colemak" { + key { [ NoSymbol, NoSymbol, ccircumflex, Ccircumflex ] }; + key { [ NoSymbol, NoSymbol, gcircumflex, Gcircumflex ] }; + key { [ NoSymbol, NoSymbol, hcircumflex, Hcircumflex ] }; + key { [ NoSymbol, NoSymbol, jcircumflex, Jcircumflex ] }; + key { [ NoSymbol, NoSymbol, scircumflex, Scircumflex ] }; + key { [ NoSymbol, NoSymbol, ubreve, Ubreve ] }; +}; diff --git a/nixos/xkb/symbols/es b/nixos/xkb/symbols/es new file mode 100644 index 00000000..cc1f6b39 --- /dev/null +++ b/nixos/xkb/symbols/es @@ -0,0 +1,250 @@ +// Keyboard layouts for Spain. + +// Modified for a real Spanish keyboard by Jon Tombs. +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin(type4)" + + name[Group1]="Spanish"; + + key { [ masculine, ordfeminine, backslash, backslash ] }; + key { [ 1, exclam, bar, exclamdown ] }; + key { [ 3, periodcentered, numbersign, sterling ] }; + key { [ 4, dollar, asciitilde, dollar ] }; + key { [apostrophe, question, backslash, questiondown ] }; + key { [exclamdown, questiondown, dead_cedilla, dead_ogonek] }; + + key { [dead_grave, dead_circumflex, bracketleft, dead_abovering ] }; + key { [ plus, asterisk, bracketright, dead_macron ] }; + + key { [ ntilde, Ntilde, dead_tilde, dead_doubleacute ] }; + key { [dead_acute, dead_diaeresis, braceleft, dead_caron ] }; + key { [ ccedilla, Ccedilla, braceright, dead_breve ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "winkeys" { + + include "es(basic)" + name[Group1]="Spanish (Windows)"; + include "eurosign(5)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "es(basic)" + + name[Group1]="Spanish (no dead keys)"; + + key { [exclamdown, questiondown, cedilla, ogonek ] }; + key { [ grave, asciicircum, bracketleft, degree ] }; + key { [ plus, asterisk, bracketright, macron ] }; + key { [ j, J, ezh, EZH ] }; + key { [ ntilde, Ntilde, asciitilde, doubleacute ] }; + key { [ acute, diaeresis, braceleft, caron ] }; + key { [ ccedilla, Ccedilla, braceright, breve ] }; + key { [ minus, underscore, ellipsis, abovedot ] }; +}; + +// Spanish Dvorak mapping (note R-H exchange) +partial alphanumeric_keys +xkb_symbols "dvorak" { + + name[Group1]="Spanish (Dvorak)"; + + key {[ masculine, ordfeminine, backslash, degree ]}; + key {[ 1, exclam, bar, onesuperior ]}; + key {[ 2, quotedbl, at, twosuperior ]}; + key {[ 3, periodcentered, numbersign, threesuperior ]}; + key {[ 4, dollar, asciitilde, onequarter ]}; + key {[ 5, percent, brokenbar, fiveeighths ]}; + key {[ 6, ampersand, notsign, threequarters ]}; + key {[ 7, slash, onehalf, seveneighths ]}; + key {[ 8, parenleft, oneeighth, threeeighths ]}; + key {[ 9, parenright, asciicircum ]}; + key {[ 0, equal, grave, dead_doubleacute ]}; + key {[ apostrophe, question, dead_macron, dead_ogonek ]}; + key {[ exclamdown, questiondown, dead_breve, dead_abovedot ]}; + + key {[ period, colon, less, guillemotleft ]}; + key {[ comma, semicolon, greater, guillemotright ]}; + key {[ ntilde, Ntilde, lstroke, Lstroke ]}; + key {[ p, P, paragraph ]}; + key {[ y, Y, yen ]}; + key {[ f, F, tslash, Tslash ]}; + key {[ g, G, dstroke, Dstroke ]}; + key {[ c, C, cent, copyright ]}; + key {[ h, H, hstroke, Hstroke ]}; + key {[ l, L, sterling ]}; + key {[ dead_grave, dead_circumflex, bracketleft, dead_caron ]}; + key {[ plus, asterisk, bracketright, plusminus ]}; + + key {[ a, A, ae, AE ]}; + key {[ o, O, oslash, Oslash ]}; + key {[ e, E, EuroSign ]}; + key {[ u, U, aring, Aring ]}; + key {[ i, I, oe, OE ]}; + key {[ d, D, eth, ETH ]}; + key {[ r, R, registered, trademark ]}; + key {[ t, T, thorn, THORN ]}; + key {[ n, N, eng, ENG ]}; + key {[ s, S, ssharp, section ]}; + key {[ dead_acute, dead_diaeresis, braceleft, dead_tilde ]}; + key {[ ccedilla, Ccedilla, braceright, dead_cedilla ]}; + + key {[ less, greater, guillemotleft, guillemotright ]}; + key {[ minus, underscore, hyphen, macron ]}; + key {[ q, Q, currency ]}; + key {[ j, J ]}; + key {[ k, K, kra ]}; + key {[ x, X, multiply, division ]}; + key {[ b, B ]}; + key {[ m, M, mu ]}; + key {[ w, W ]}; + key {[ v, V ]}; + key {[ z, Z ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "cat" { + + include "es(basic)" + + name[Group1]="Catalan (Spain, with middle-dot L)"; + + key { [ l, L, 0x1000140, 0x100013F ] }; +}; + +partial alphanumeric_keys +xkb_symbols "ast" { + + include "es(basic)" + + name[Group1]="Asturian (Spain, with bottom-dot H and L)"; + + key { [ h, H, 0x1001E25, 0x1001E24 ] }; + key { [ l, L, 0x1001E37, 0x1001E36 ] }; +}; + + +partial alphanumeric_keys +xkb_symbols "olpc" { + + // #HW-SPECIFIC + + // http://wiki.laptop.org/go/OLPC_Spanish_Keyboard + + include "us(basic)" + name[Group1]="Spanish"; + + key { [ masculine, ordfeminine ] }; + key { [ 1, exclam, bar ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, dead_grave, numbersign, grave ] }; + key { [ 5, percent, asciicircum, dead_circumflex ] }; + key { [ 6, ampersand, notsign ] }; + key { [ 7, slash, backslash ] }; + key { [ 8, parenleft ] }; + key { [ 9, parenright ] }; + key { [ 0, equal ] }; + key { [ apostrophe, question ] }; + key { [ exclamdown, questiondown ] }; + + key { [ e, E, EuroSign ] }; + key { [ dead_acute, dead_diaeresis, acute, dead_abovering ] }; + key { [ bracketleft, braceleft ] }; + + key { [ ntilde, Ntilde ] }; + key { [ plus, asterisk, dead_tilde ] }; + key { [ bracketright, braceright, section ] }; + + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + key { [ less, greater, ISO_Next_Group ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "olpcm" { + + // #HW-SPECIFIC + + // Mechanical (non-membrane) OLPC Spanish keyboard layout. + // See: http://wiki.laptop.org/go/OLPC_Spanish_Non-membrane_Keyboard + + include "us(basic)" + name[Group1]="Spanish"; + + key { [ questiondown, exclamdown, backslash ] }; + key { [ 1, exclam, bar ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, dead_grave, numbersign, grave ] }; + key { [ 4, dollar, asciitilde, dead_tilde ] }; + key { [ 5, percent, asciicircum, dead_circumflex ] }; + key { [ 6, ampersand, notsign ] }; + key { [ 7, slash, backslash ] }; // no '\' label on olpcm, leave for compatibility + key { [ 8, parenleft, masculine ] }; + key { [ 9, parenright, ordfeminine ] }; + key { [ 0, equal ] }; + key { [ apostrophe, question ] }; + + key { [ e, E, EuroSign ] }; + key { [ dead_acute, dead_diaeresis, dead_abovering, acute ] }; + key { [ plus, asterisk ] }; + + key { [ ntilde, Ntilde ] }; + // no AC11 or AC12 on olpcm + + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + key { [ less, greater ] }; + key { [ bracketleft, braceleft, ccedilla, Ccedilla ] }; + key { [ bracketright, braceright ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "deadtilde" { + + include "es(basic)" + + name[Group1]="Spanish (dead tilde)"; + + key { [ 4, dollar, dead_tilde, dollar ] }; + key { [ ntilde, Ntilde, asciitilde, dead_doubleacute ] }; +}; + +partial alphanumeric_keys +xkb_symbols "olpc2" { + // #HW-SPECIFIC + + // Modified variant of US International layout, specifically for Peru + // Contact: Sayamindu Dasgupta + + include "us(olpc)" + name[Group1]="Spanish"; + + key { [ 3, numbersign, dead_grave, dead_grave] }; // combining grave + key { [ XF86Start ] }; + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/es(sun_type6)" +}; diff --git a/nixos/xkb/symbols/et b/nixos/xkb/symbols/et new file mode 100644 index 00000000..417136f1 --- /dev/null +++ b/nixos/xkb/symbols/et @@ -0,0 +1,73 @@ +// Keyboard layouts for Ethiopia. + +// Designed as a part of OLPC project. +// +// 2007 Sergey Udaltsov + +default partial alphanumeric_keys +xkb_symbols "basic" { + include "et(olpc)" + name[Group1]="Amharic"; +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + + // #HW-SPECIFIC + + name[Group1]="Amharic"; + + key {[ U1369, U1372 ]}; // 1 + key {[ U136a, U1373 ]}; // 2 + key {[ U136b, U1374 ]}; // 3 + key {[ U136c, U1375 ]}; // 4 + key {[ U136d, U1376 ]}; // 5 + key {[ U136e, U1377 ]}; // 6 + key {[ U136f, U1378 ]}; // 7 + key {[ U1370, U1379 ]}; // 8 + key {[ U1371, U137a ]}; // 9 + key {[ U137b, U137c ]}; // 0 + key {[ minus, underscore ]}; // -_ + key {[ equal, plus ]}; // =+ + + key {[ U1240, U1250 ]}; // q + key {[ U12C8, none ]}; // w + key {[ dead_e, dead_E ]}; + key {[ U1228, none ]}; // r + key {[ U1270, U1320 ]}; // t + key {[ U12E8, none ]}; // y + key {[ dead_u, dead_U ]}; + key {[ dead_i, dead_I ]}; + key {[ dead_o, dead_O ]}; + key {[ U1350, U1330 ]}; // p + key {[ U1340, U1338 ]}; // [ + key {[ U1328, U1280 ]}; // ] + + key {[ dead_a, dead_A ]}; + key {[ U1230, U1220 ]}; // s + key {[ U12F0, U12F8 ]}; // d + key {[ U1348, none ]}; // f + key {[ U1308, U1318 ]}; // g + key {[ U1200, U1210 ]}; // h + key {[ U1300, none ]}; // j + key {[ U12A8, U12B8 ]}; // k + key {[ U1208, none ]}; // l + + key {[ U1362, U1361 ]}; // : + key {[ U1366, U1365 ]}; // ' + key {[ none, U2010 ]}; // \ + + key {[ U12D8, U12E0 ]}; // z + key {[ U12A0, U12D0 ]}; // x + key {[ U1278, dead_capital_schwa ]}; + key {[ U1238, U1268 ]}; // v + key {[ U1260, none ]}; // b + key {[ U1290, U1298 ]}; // n + key {[ U1218, none ]}; // m + + key {[ U1363, none ]}; // < + key {[ U1364, none ]}; // > + key {[ U1367, question ]}; // ? + + include "group(olpc)" +}; diff --git a/nixos/xkb/symbols/eu b/nixos/xkb/symbols/eu new file mode 100644 index 00000000..fec4d334 --- /dev/null +++ b/nixos/xkb/symbols/eu @@ -0,0 +1,64 @@ +// Keyboard layout for Western Europe. + +// Letters and symbols from Western European languages on levels three and four +// of a basic American layout. Based on . +// Copyright 2012 Steffen Bruentjen (eurkey (at) steffen dot bruentjen dot de) + +default partial alphanumeric_keys modifier_keys +xkb_symbols "basic" { + + name[Group1] = "EurKEY (US)"; + + key {[ grave, asciitilde, dead_grave, dead_tilde ]}; + key {[ 1, exclam, exclamdown, onesuperior ]}; + key {[ 2, at, ordfeminine, twosuperior ]}; + key {[ 3, numbersign, masculine, threesuperior ]}; + key {[ 4, dollar, sterling, yen ]}; + key {[ 5, percent, EuroSign, cent ]}; + key {[ 6, asciicircum, dead_circumflex, dead_caron ]}; + key {[ 7, ampersand, dead_abovering, dead_macron ]}; + key {[ 8, asterisk, doublelowquotemark, singlelowquotemark ]}; + key {[ 9, parenleft, leftdoublequotemark, leftsinglequotemark ]}; + key {[ 0, parenright, rightdoublequotemark, rightsinglequotemark ]}; + key {[ minus, underscore, endash, emdash ]}; + key {[ equal, plus, multiply, division ]}; + + key {[ q, Q, ae, AE ]}; + key {[ w, W, aring, Aring ]}; + key {[ e, E, ediaeresis, Ediaeresis ]}; + key {[ r, R, yacute, Yacute ]}; + key {[ t, T, thorn, THORN ]}; + key {[ y, Y, ydiaeresis, Ydiaeresis ]}; + key {[ u, U, udiaeresis, Udiaeresis ]}; + key {[ i, I, idiaeresis, Idiaeresis ]}; + key {[ o, O, odiaeresis, Odiaeresis ]}; + key {[ p, P, oe, OE ]}; + key {[ bracketleft, braceleft, guillemotleft, U2039 ]}; // ‹ + key {[ bracketright, braceright, guillemotright, U203A ]}; // › + key {[ backslash, bar, notsign, brokenbar ]}; + + key {[ a, A, adiaeresis, Adiaeresis ]}; + key {[ s, S, ssharp, section ]}; + key {[ d, D, eth, ETH ]}; + key {[ f, F, egrave, Egrave ]}; + key {[ g, G, eacute, Eacute ]}; + key {[ h, H, ugrave, Ugrave ]}; + key {[ j, J, uacute, Uacute ]}; + key {[ k, K, U0133, U0132 ]}; // ij, IJ + key {[ l, L, oslash, Oslash ]}; + key {[ semicolon, colon, degree, periodcentered ]}; + key {[ apostrophe, quotedbl, dead_acute, dead_diaeresis ]}; + + key {[ z, Z, agrave, Agrave ]}; + key {[ x, X, aacute, Aacute ]}; + key {[ c, C, ccedilla, Ccedilla ]}; + key {[ v, V, igrave, Igrave ]}; + key {[ b, B, iacute, Iacute ]}; + key {[ n, N, ntilde, Ntilde ]}; + key {[ m, M, dead_greek, Multi_key ]}; + key {[ comma, less, ograve, Ograve ]}; + key {[ period, greater, oacute, Oacute ]}; + key {[ slash, question, questiondown, U2026 ]}; // … + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/eurosign b/nixos/xkb/symbols/eurosign new file mode 100644 index 00000000..3b5f66da --- /dev/null +++ b/nixos/xkb/symbols/eurosign @@ -0,0 +1,31 @@ +// Most keyboards have the EuroSign engraved on the E key +// EuroSign on E, level 3 +partial +xkb_symbols "e" { + key { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] }; +}; + +// EuroSign on E, level 4 +// Alternative to eurosing(e) to keep 3rd level symbol. +partial +xkb_symbols "E" { + key { [ NoSymbol, NoSymbol, NoSymbol, EuroSign ] }; +}; + +// Many Apple keyboards have the EuroSign engraved on the 2 key +partial +xkb_symbols "2" { + key { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] }; +}; + +// Some keyboards have the EuroSign engraved on the 4 key +partial +xkb_symbols "4" { + key { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] }; +}; + +// Many keyboards have the EuroSign engraved on the 5 key +partial +xkb_symbols "5" { + key { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] }; +}; diff --git a/nixos/xkb/symbols/fi b/nixos/xkb/symbols/fi new file mode 100644 index 00000000..1528b7e3 --- /dev/null +++ b/nixos/xkb/symbols/fi @@ -0,0 +1,359 @@ +// Keyboard layouts for Finland. + +// SFS 5966 / Kotoistus keymap created by Troy Korjuslommi +// Classic keymap based on traditional by Marko Myllynen +// Eliminate deadkeys alternative sent by Linus Torvalds + +default partial alphanumeric_keys +xkb_symbols "kotoistus" { + + // Official keymap for Finland based on SFS 5966:2019 standard + // + // This keymap implements all the functionality of Annex 1 + // of the standard and additionally defines the following to + // allow entering these characters with keyboards without LSGT. + // + // AE08+4 : U+003C LESS-THAN SIGN (less) + // AE09+4 : U+003E GREATER-THAN SIGN (greater) + // AD08+4 : U+007C VERTICAL LINE (bar) + // + // Annex 3 of the standard is implemented in fi_FI.UTF-8/Compose. + // + // This keymap implements regular space in position "A-3" of the + // standard and implements NARROW NO-BREAK SPACE (U+202F) in A-4. + // + // The following definitions are also included to allow entering + // Greek letters and currency symbols with the libX11 sequences. + // + // AC08+4 : dead_greek + // AC09+4 : dead_currency + + name[Group1]="Finnish"; + + key { [ section, onehalf, dead_stroke, NoSymbol ] }; + key { [ 1, exclam, NoSymbol, exclamdown ] }; + key { [ 2, quotedbl, at, rightdoublequotemark ] }; + key { [ 3, numbersign, sterling, guillemotright ] }; + key { [ 4, currency, dollar, guillemotleft ] }; + key { [ 5, percent, permille, leftdoublequotemark ] }; + key { [ 6, ampersand, singlelowquotemark, doublelowquotemark ] }; + key { [ 7, slash, braceleft, NoSymbol ] }; + key { [ 8, parenleft, bracketleft, less ] }; + key { [ 9, parenright, bracketright, greater ] }; + key { [ 0, equal, braceright, degree ] }; + key { [ plus, question, backslash, questiondown ] }; + key { [ dead_acute, dead_grave, dead_cedilla, dead_ogonek ] }; + + key { [ q, Q, q, Q ] }; + key { [ w, W, w, W ] }; + key { [ e, E, EuroSign, NoSymbol ] }; + key { [ r, R, r, R ] }; + key { [ t, T, thorn, THORN ] }; + key { [ y, Y, y, Y ] }; + key { [ u, U, u, U ] }; + key { [ i, I, idotless, bar ] }; + key { [ o, O, oe, OE ] }; + key { [ p, P, dead_horn, dead_hook ] }; + key { [ aring, Aring, dead_doubleacute, dead_abovering ] }; + key { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_macron ] }; + + key { [ a, A, schwa, SCHWA ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ d, D, eth, ETH ] }; + key { [ f, F, f, F ] }; + key { [ g, G, g, G ] }; + key { [ h, H, h, H ] }; + key { [ j, J, j, J ] }; + key { [ k, K, kra, dead_greek ] }; + key { [ l, L, dead_stroke, dead_currency ] }; + key { [ odiaeresis, Odiaeresis, oslash, Oslash ] }; + key { [ adiaeresis, Adiaeresis, ae, AE ] }; + key { [ apostrophe, asterisk, dead_caron, dead_breve ] }; + + key { [ less, greater, bar, NoSymbol ] }; + key { [ z, Z, ezh, EZH ] }; + key { [ x, X, multiply, periodcentered ] }; + key { [ c, C, c, C ] }; + key { [ v, V, v, V ] }; + key { [ b, B, b, B ] }; + key { [ n, N, eng, ENG ] }; + key { [ m, M, mu, emdash ] }; + key { [ comma, semicolon, rightsinglequotemark, leftsinglequotemark ] }; + key { [ period, colon, dead_belowdot, dead_abovedot ] }; + key { [ minus, underscore, endash, dead_belowcomma ] }; + + key { [ space, space, space, U202F ] }; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "winkeys" { + + include "fi(kotoistus)" + + name[Group1]="Finnish (Windows)"; + + include "eurosign(5)" +}; + +hidden partial alphanumeric_keys +xkb_symbols "fi" { + + // Classic Finnish keyboard layout with dead keys + + key { [ section, onehalf, onequarter, threequarters ] }; + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, quotedbl, at, twosuperior ] }; + key { [ 3, numbersign, sterling, threesuperior ] }; + key { [ 4, currency, dollar, cent ] }; + key { [ 5, percent, EuroSign, masculine ] }; + key { [ 6, ampersand, yen, ordfeminine ] }; + key { [ 7, slash, braceleft, plusminus ] }; + key { [ 8, parenleft, bracketleft, less ] }; + key { [ 9, parenright, bracketright, greater ] }; + key { [ 0, equal, braceright, degree ] }; + key { [ plus, question, backslash, questiondown ] }; + key { [ dead_acute, dead_grave, dead_cedilla, dead_ogonek ] }; + + key { [ q, Q, q, Q ] }; + key { [ w, W, w, W ] }; + key { [ e, E, EuroSign, cent ] }; + key { [ r, R, registered, NoSymbol ] }; + key { [ t, T, thorn, THORN ] }; + key { [ y, Y, y, Y ] }; + key { [ u, U, u, U ] }; + key { [ i, I, idotless, bar ] }; + key { [ o, O, o, O ] }; + key { [ p, P, paragraph, NoSymbol ] }; + key { [ aring, Aring, oe, OE ] }; + key { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ] }; + + key { [ a, A, schwa, SCHWA ] }; + key { [ s, S, scaron, Scaron ] }; + key { [ d, D, eth, ETH ] }; + key { [ f, F, f, F ] }; + key { [ g, G, eng, ENG ] }; + key { [ h, H, h, H ] }; + key { [ j, J, j, J ] }; + key { [ k, K, kra, dead_greek ] }; + key { [ l, L, dead_stroke, dead_currency ] }; + key { [ odiaeresis, Odiaeresis, oslash, Oslash ] }; + key { [ adiaeresis, Adiaeresis, ae, AE ] }; + key { [ apostrophe, asterisk, dead_caron, dead_breve ] }; + + key { [ less, greater, bar, brokenbar ] }; + key { [ z, Z, zcaron, Zcaron ] }; + key { [ x, X, multiply, division ] }; + key { [ c, C, copyright, cent ] }; + key { [ v, V, v, V ] }; + key { [ b, B, ssharp, U1E9E ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ m, M, mu, NoSymbol ] }; + key { [ comma, semicolon, dead_cedilla, dead_ogonek ] }; + key { [ period, colon, periodcentered, notsign ] }; + key { [ minus, underscore, hyphen, dead_macron ] }; + + key { [ space, space, space, U202F ] }; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "classic" { + + include "fi(fi)" + + name[Group1]="Finnish (classic)"; +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + // Classic Finnish keyboard layout without dead keys + + include "fi(fi)" + + name[Group1]="Finnish (classic, no dead keys)"; + + key { [ acute, grave, cedilla, ogonek ] }; + key { [ diaeresis, asciicircum, asciitilde, caron ] }; + key { [ l, L, l, L ] }; + key { [ apostrophe, asterisk, caron, breve ] }; + key { [ comma, semicolon, cedilla, ogonek ] }; + key { [ minus, underscore, hyphen, macron ] }; +}; + +partial alphanumeric_keys +xkb_symbols "smi" { + + // Describes the differences between a Norwegian Northern Sami + // (keyboard with dead key support) and a Swedish/Finnish Sami + // keyboard according to the specs at: + // http://www.hum.uit.no/a/trond/se-lat9-sefi-keys.html + + include "no(smi)" + + name[Group1]="Northern Saami (Finland)"; + + key { [ odiaeresis, Odiaeresis, oslash, Oslash ] }; + key { [ adiaeresis, Adiaeresis, ae, AE ] }; +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + include "se(mac)" + + name[Group1]="Finnish (Macintosh)"; +}; + + +// EXTRAS: + +partial alphanumeric_keys +xkb_symbols "sun_type6" { + + // #HW-SPECIFIC + + include "sun_vndr/fi(sun_type6)" + + name[Group1]="Finnish"; +}; + +partial +xkb_symbols "das" { + + // DAS layout for typing Finnish designed by Cristian Seres (cseres at iki.fi). + // More information about DAS is available at http://c.seres.fi/DAS_en.html. + // This xkeyboard layout was created by Joel Lehtonen (joel.lehtonen at iki.fi), + // and he released it to public domain. + + name[Group1]="Finnish (DAS)"; + + key { [ backslash, dead_tilde ] }; + key { [ 1, exclam, section ] }; + key { [ 2, quotedbl, twosuperior ] }; + key { [ 3, at, sterling ] }; + key { [ 4, EuroSign, dollar ] }; + key { [ 5, percent, onehalf ] }; + key { [ 6, ampersand ] }; + key { [ 7, braceleft ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, braceright, degree ] }; + key { [ plus, question, currency ] }; + key { [ equal, numbersign ] }; + + key { [ p, P, Greek_pi ] }; + key { [ h, H ] }; + key { [ r, R, dead_circumflex ] }; + key { [ k, K, dead_caron ] }; + key { [ less, greater ] }; + key { [ apostrophe, bar ] }; + key { [ w, W ] }; + key { [ u, U ] }; + key { [ y, Y ] }; + key { [ b, B ] }; + key { [ q, Q ] }; + key { [ z, Z, zcaron, Zcaron ] }; + + key { [ s, S, scaron, Scaron ] }; + key { [ l, L, dead_acute ] }; + key { [ n, N, dead_grave ] }; + key { [ t, T, dead_diaeresis ] }; + key { [ v, V ] }; + key { [ g, G ] }; + key { [ a, A ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ e, E ] }; + key { [ c, C ] }; + key { [ asterisk, slash ] }; + + key { [ f, F ] }; + key { [ x, X ] }; + key { [ d, D ] }; + key { [ m, M, mu ] }; + key { [ j, J ] }; + key { [ aring, Aring ] }; + key { [ odiaeresis, Odiaeresis, oe, OE ] }; + key { [ adiaeresis, Adiaeresis, ae, AE ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore, U2013, dead_macron ] }; + + key { [ space, space, space, nobreakspace ] }; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "fidvorak" { + + // Dvorak keyboard layout for use with Finnish by Pekka Oinas. + // + // Dedicated keys for Ä and Ö by utilizing the extra LSGT key found on Finnish keyboards + // and by moving colon and semicolon behind shift-modifiers on comma and period. + // Less and greater than symbols moved behind 3rd level modifiers on comma and period. + // Includes an assortment of dead keys but was not created with them in mind. + + name[Group1]="Finnish (Dvorak)"; + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 1, exclam, NoSymbol, exclamdown ] }; + key { [ 2, at, cent, rightdoublequotemark ] }; + key { [ 3, numbersign, sterling ] }; + key { [ 4, dollar, currency ] }; + key { [ 5, percent, permille, leftdoublequotemark ] }; + key { [ 6, asciicircum, dead_circumflex, doublelowquotemark ] }; + key { [ 7, ampersand, section, singlelowquotemark ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright, degree, dead_abovering ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ apostrophe, quotedbl, dead_acute, dead_doubleacute ] }; + key { [ comma, semicolon, less, leftsinglequotemark ] }; + key { [ period, colon, greater ] }; + key { [ p, P ] }; + key { [ y, Y, yen ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ c, C ] }; + key { [ r, R ] }; + key { [ l, L, notsign ] }; + key { [ slash, question, NoSymbol, questiondown ] }; + key { [ equal, plus ] }; + + key { [ a, A, schwa, SCHWA ] }; + key { [ o, O, aring, Aring ] }; + key { [ e, E, EuroSign ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + key { [ i, I, idotless, Iabovedot ] }; + key { [ d, D, eth, ETH ] }; + key { [ h, H ] }; + key { [ t, T, thorn, THORN ] }; + key { [ n, N, eng, ENG ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ backslash, bar, dead_caron, dead_breve ] }; + + key { [ adiaeresis, Adiaeresis, ae, AE ] }; + key { [ odiaeresis, Odiaeresis, dead_diaeresis, dead_macron ] }; + key { [ q, Q, oslash, Oslash ] }; + key { [ j, J ] }; + key { [ k, K, kra ] }; + key { [ x, X, multiply, periodcentered ] }; + key { [ b, B, hyphen ] }; + key { [ m, M, mu, emdash ] }; + key { [ w, W ] }; + key { [ v, V ] }; + key { [ z, Z, ezh, EZH ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/fo b/nixos/xkb/symbols/fo new file mode 100644 index 00000000..40aac8a6 --- /dev/null +++ b/nixos/xkb/symbols/fo @@ -0,0 +1,45 @@ +// Keyboard layouts for the Faroe Islands. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin(type2)" + + name[Group1]= "Faroese"; + + key {[ onehalf, section, threequarters, paragraph ]}; + key {[ plus, question, plusminus, questiondown ]}; + key {[ dead_acute, dead_grave, bar, brokenbar ]}; + + key {[ aring, Aring, dead_diaeresis, dead_circumflex ]}; + key {[ eth, ETH, dead_tilde, dead_caron ]}; + + key {[ ae, AE ]}; + key {[ oslash, Oslash ]}; + key {[ apostrophe, asterisk, dead_doubleacute, multiply ]}; + + key {[ less, greater, backslash, notsign ]}; + key {[ minus, underscore, hyphen, macron ]}; + + key {[ space, space, nobreakspace, nobreakspace ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "fo(basic)" + + name[Group1]= "Faroese (no dead keys)"; + + key {[ acute, grave, bar, ogonek ]}; + key {[ aring, Aring, diaeresis, degree ]}; + key {[ diaeresis, asciicircum, asciitilde, macron ]}; + key {[ j, J, ezh, EZH ]}; + key {[ ae, AE, acute, doubleacute ]}; + key {[ oslash, Oslash, asciicircum, caron ]}; + key {[ apostrophe, asterisk, doubleacute, multiply ]}; + key {[ comma, semicolon, cedilla, ogonek ]}; + key {[ period, colon, periodcentered, abovedot ]}; +}; diff --git a/nixos/xkb/symbols/fr b/nixos/xkb/symbols/fr new file mode 100644 index 00000000..8318d80c --- /dev/null +++ b/nixos/xkb/symbols/fr @@ -0,0 +1,1404 @@ +// Keyboard layouts for France. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin" + + name[Group1]="French"; + + key { [twosuperior, asciitilde, notsign, notsign ] }; + key { [ ampersand, 1, onesuperior, exclamdown ] }; + key { [ eacute, 2, asciitilde, oneeighth ] }; + key { [ quotedbl, 3, numbersign, sterling ] }; + key { [apostrophe, 4, braceleft, dollar ] }; + key { [ parenleft, 5, bracketleft, threeeighths ] }; + key { [ minus, 6, bar, fiveeighths ] }; + key { [ egrave, 7, grave, seveneighths ] }; + key { [underscore, 8, backslash, trademark ] }; + key { [ ccedilla, 9, asciicircum, plusminus ] }; + key { [ agrave, 0, at, degree ] }; + key { [parenright, degree, bracketright, questiondown ] }; + key { [ equal, plus, braceright, dead_ogonek ] }; + + key { [ a, A, ae, AE ] }; + key { [ z, Z, guillemotleft, less ] }; + key { [ e, E, EuroSign, cent ] }; + key { [dead_circumflex, dead_diaeresis, dead_diaeresis, dead_abovering ] }; + key { [ dollar, sterling, currency, dead_macron ] }; + + key { [ q, Q, at, Greek_OMEGA ] }; + key { [ m, M, mu, masculine ] }; + key { [ ugrave, percent, dead_circumflex, dead_caron] }; + key { [ asterisk, mu, dead_grave, dead_breve ] }; + + key { [ w, W, lstroke, Lstroke ] }; + key { [ comma, question, dead_acute, dead_doubleacute ] }; + key { [ semicolon, period, U2022, multiply ] }; // bullet + key { [ colon, slash, periodcentered, division ] }; + key { [ exclam, section, dead_belowdot, dead_abovedot ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + + // #HW-SPECIFIC + + // Contact: Sayamindu Dasgupta + include "fr(basic)" + + name[Group1]="French"; + + key { [ less, greater ] }; + key { [ dead_circumflex, dead_diaeresis, notsign, dead_abovering ] }; + key { [ semicolon, period, underscore, multiply ] }; + key { [ twosuperior, asciitilde, VoidSymbol, VoidSymbol ] }; + + // Some keys only have the Shift+AltGr character printed on them (alongside + // the unmodified one). Make such keys shift-invariant so that the printed + // value is achieved by pressing AltGr or Shift+AltGr. + key { [ x, X, guillemotright, guillemotright ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ z, Z, guillemotleft, guillemotleft ] }; +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + // Modifies the basic French layout to eliminate all dead keys + + include "fr(basic)" + + name[Group1]="French (no dead keys)"; + + key { [ equal, plus, braceright, ogonek ] }; + key { [asciicircum, diaeresis, radical, dagger ] }; + key { [ dollar, sterling, currency, macron ] }; + key { [ j, J, ezh, EZH ] }; + key { [ ugrave, percent, asciicircum, caron ] }; + key { [ asterisk, mu, grave, breve ] }; + key { [ comma, question, acute, doubleacute ] }; + key { [ exclam, section, ellipsis, abovedot ] }; +}; + + +// Unicode French derivative +// Loose refactoring of the historic Linux French keyboard layout +// +// Copyright © 2006-2008 Nicolas Mailhot +// +// Credits (fr-latin1, fr-latin0, fr-latin9) +// © 199x-1996 René Cougnenc ✝ +// © 1997-2002 Guylhem Aznar +// © 2003-2006 Nicolas Mailhot +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃ +// │ ² ¹ │ & ˇ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃ arrière┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ A Æ │ Z  │ E ¢ │ R Ê │ T Þ │ Y Ÿ │ U Û │ I Î │ O Œ │ P Ô │ ¨ ˚ │ £ Ø ┃Entrée ┃ +// ┃Tab ↹ ┃ a æ │ z â │ e € │ r ê │ t þ │ y ÿ │ u û │ i î │ o œ │ p ô │ ^ ~ │ $ ø ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ Q Ä │ S „ │ D Ë │ F ‚ │ G ¥ │ H Ð │ J Ü │ K Ï │ L Ŀ │ M Ö │ % Ù │ µ ̄ ┃ ┃ +// ┃Maj ⇬ ┃ q ä │ s ß │ d ë │ f ‘ │ g ’ │ h ð │ j ü │ k ï │ l ŀ │ m ö │ ù ' │ * ` ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ > ≥ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N → │ ? … │ . . │ / ∕ │ § − ┃ ┃ +// ┃Shift ⇧┃ < ≤ │ w « │ x » │ c © │ v ⍽ │ b ↓ │ n ¬ │ , ¿ │ ; × │ : ÷ │ ! ¡ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ␣ Espace fine insécable ⍽ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Espace Espace insécable ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ +partial alphanumeric_keys +xkb_symbols "oss" { + + include "level3(ralt_switch)" + include "nbsp(level3n)" + include "keypad(oss)" + + name[Group1]="French (alt.)"; + + // First row + key { [ twosuperior, threesuperior, onesuperior, dead_cedilla ] }; // ² ³ ¹ ¸ + key { [ ampersand, 1, dead_caron, dead_ogonek ] }; // & 1 ˇ ˛ + key { [ eacute, 2, asciitilde, Eacute ] }; // é 2 ~ É + key { [ quotedbl, 3, numbersign, dead_breve ] }; // " 3 # ˘ + key { [ apostrophe, 4, braceleft, 0x1002014 ] }; // ' 4 { — (tiret cadratin) + key { [ parenleft, 5, bracketleft, 0x1002013 ] }; // ( 5 [ – (tiret demi-cadratin) + key { [ minus, 6, bar, 0x1002011 ] }; // - 6 | ‑ (tiret insécable) + key { [ egrave, 7, grave, Egrave ] }; // è 7 ` È + key { [ underscore, 8, backslash, trademark ] }; // _ 8 \ ™ + key { [ ccedilla, 9, asciicircum, Ccedilla ] }; // ç 9 ^ Ç + key { [ agrave, 0, at, Agrave ] }; // à 0 @ À + key { [ parenright, degree, bracketright, notequal ] }; // ) ° ] ≠ + key { [ equal, plus, braceright, plusminus ] }; // = + } ± + + // Second row + key { [ a, A, ae, AE ] }; // a A æ Æ + key { [ z, Z, acircumflex, Acircumflex ] }; // z Z â  + key { [ e, E, EuroSign, cent ] }; // e E € ¢ + key { [ r, R, ecircumflex, Ecircumflex ] }; // r R ê Ê + key { [ t, T, thorn, THORN ] }; // t T þ Þ + key { [ y, Y, ydiaeresis, Ydiaeresis ] }; // y Y ÿ Ÿ + key { [ u, U, ucircumflex, Ucircumflex ] }; // u U û Û + key { [ i, I, icircumflex, Icircumflex ] }; // i I î Î + key { [ o, O, oe, OE ] }; // o O œ Œ + key { [ p, P, ocircumflex, Ocircumflex ] }; // p P ô Ô + key { [ dead_circumflex, dead_diaeresis, dead_tilde, dead_abovering ] }; // ^ ¨ ˜ ˚ + key { [ dollar, sterling, oslash, Oslash ] }; // $ £ ø Ø + + // Third row + key { [ q, Q, adiaeresis, Adiaeresis ] }; // q Q ä Ä + key { [ s, S, ssharp, doublelowquotemark ] }; // s S ß „ + key { [ d, D, ediaeresis, Ediaeresis ] }; // d D ë Ë + key { [ f, F, leftsinglequotemark, singlelowquotemark ] }; // f F ‘ ‚ + key { [ g, G, rightsinglequotemark, yen ] }; // g G ’ ¥ + key { [ h, H, eth, ETH ] }; // h H ð Ð + key { [ j, J, udiaeresis, Udiaeresis ] }; // j J ü Ü + key { [ k, K, idiaeresis, Idiaeresis ] }; // k K ï Ï + key { [ l, L, 0x1000140, 0x100013F ] }; // l L ŀ Ŀ + key { [ m, M, odiaeresis, Odiaeresis ] }; // m M ö Ö + key { [ ugrave, percent, dead_acute, Ugrave ] }; // ù % ´ Ù + key { [ asterisk, mu, dead_grave, dead_macron ] }; // * µ ` ¯ + + // Fourth row + key { [ less, greater, lessthanequal, greaterthanequal ] }; // < > ≤ ≥ + key { [ w, W, guillemotleft, leftdoublequotemark ] }; // w W « “ + key { [ x, X, guillemotright, rightdoublequotemark ] }; // x X » ” + key { [ c, C, copyright, registered ] }; // c C © ® + key { [ v, V, 0x100202F, leftarrow ] }; // v V ⍽ ← (espace fine insécable) + key { [ b, B, downarrow, uparrow ] }; // b B ↓ ↑ + key { [ n, N, notsign, rightarrow ] }; // n N ¬ → + key { [ comma, question, questiondown, 0x1002026 ] }; // , ? ¿ … + key { [ semicolon, period, multiply, 0x10022C5 ] }; // ; . × ⋅ + key { [ colon, slash, division, 0x1002215 ] }; // : / ÷ ∕ + key { [ exclam, section, exclamdown, 0x1002212 ] }; // ! § ¡ − +}; + +partial alphanumeric_keys +xkb_symbols "oss_latin9" { + + // Restricts the fr(oss) layout to latin9 symbols + + include "fr(oss)" + include "keypad(oss_latin9)" + + name[Group1]="French (alt., Latin-9 only)"; + + // First row + key { [ ampersand, 1, dead_caron, dead_cedilla ] }; // & 1 ˇ ¸ + key { [ quotedbl, 3, numbersign, dead_tilde ] }; // " 3 # ˜ + key { [ apostrophe, 4, braceleft, underscore ] }; // ' 4 { _ + key { [ parenleft, 5, bracketleft, minus ] }; // ( 5 [ - + key { [ minus, 6, bar, minus ] }; // - 6 | - + key { [ underscore, 8, backslash, backslash ] }; // _ 8 \ \ + key { [ parenright, degree, bracketright, equal ] }; // ) ° ] = + + // Third row + key { [ s, S, ssharp, guillemotleft ] }; // s S ß « + key { [ f, F, apostrophe, apostrophe ] }; // f F ' ' + key { [ g, G, apostrophe, yen ] }; // g G ' ¥ + key { [ l, L, periodcentered, periodcentered ] }; // l L · · + key { [ asterisk, mu, dead_grave, dead_circumflex ] }; // * µ ` ^ + + // Fourth row + key { [ less, greater, less, greater ] }; // < > < > + key { [ w, W, guillemotleft, guillemotleft ] }; // w W « « + key { [ x, X, guillemotright, guillemotright ] }; // x X » » + key { [ v, V, nobreakspace, less ] }; // v V ⍽ < (espace insécable) + key { [ b, B, minus, asciicircum ] }; // b B - ^ + key { [ n, N, notsign, greater ] }; // n N ¬ > + key { [ comma, question, questiondown, period ] }; // , ? ¿ . + key { [ semicolon, period, multiply, periodcentered ] }; // ; . × · + key { [ colon, slash, division, slash ] }; // : / ÷ / + key { [ exclam, section, exclamdown, minus ] }; // ! § ¡ - +}; + +partial alphanumeric_keys +xkb_symbols "oss_nodeadkeys" { + + // Modifies the basic fr(oss) layout to eliminate all dead keys + + include "fr(oss)" + + name[Group1]="French (alt., no dead keys)"; + + key { [ twosuperior, threesuperior, onesuperior, cedilla ] }; // ² ³ ¹ ¸ + key { [ ampersand, 1, caron, ogonek ] }; // & 1 ˇ ˛ + key { [ quotedbl, 3, numbersign, breve ] }; // " 3 # ˘ + + key { [ asciicircum, diaeresis, asciitilde, Aring ] }; // ^ ¨ ~ Å + key { [ ugrave, percent, acute, Ugrave ] }; // ù % ' Ù + key { [ asterisk, mu, grave, macron ] }; // * µ ` ¯ +}; + + +// Historic Linux French keyboard layout (fr-latin9) +// Copyright (c) 199x, 2002 Rene Cougnenc (original work) +// Guylhem Aznar (maintainer) +// Nicolas Mailhot +// (XFree86 submission) +// +// This layout has long been distributed and refined outside official channels. +// To this day it remains more feature-rich and popular than the 'fr' layout. +// +// This layout is derived from an original version by Guylhem Aznar. +// The original version is always available from: +// http://en.tldp.org/HOWTO/Francophones-HOWTO.html +// and is distributed under a GPL license. +// +// The author has given permission for this derived version to be distributed +// under the standard XFree86 license. He would like all changes to this +// version to be sent to him at , so he can sync +// the identically named linux console map (kbd, linux-console) and his +// out-of-tree GPL version. +// +// Now follows the keyboard design description in French. +// (If you can't read it you probably have no business changing this file anyway:) +// +// Les accents circonflexes des principales voyelles sont obtenus avec +// la touche Alt_Gr, les trémas sont obtenus par Alt_Gr + Shift. +// +// ____ +// | S A| S = Shift, A = AltGr + Shift +// | s a| s = normal, a = AltGr +// ¯¯¯¯ +// ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______ +// | œ "| 1 ·| 2 É| 3 ,| 4 '| 5 "| 6 || 7 È| 8 ¯| 9 Ç| 0 À| ° ÿ| + °| <-- | +// | Œ "| & '| é ~| " #| ' {| ( [| - || è `| _ \| ç ^| à @| ) ]| = }| | +// ======================================================================== +// | |<- | A ä| Z Å| E ¢| R Ç| T Þ| Y Ý| U ü| I ï| O ö| P '| " `| $ ë| , | +// | ->| | a â| z å| e €| r ç| t þ| y ý| u û| i î| o ô| p ¶| ^ ~| £ ê| <-' | +// ===================================================================¬ | +// | | Q Ä| S Ø| D Ë| F ª| G Æ| H Ð| J Ü| K Ï| L Ö| M º| % Ù| µ ¥| | +// | MAJ | q Â| s ø| d Ê| f ±| g æ| h ð| j Û| k Î| l Ô| m ¹| ù ²| * ³| | +// ======================================================================== +// | ^ | > | W | X | C | V | B | N | ? | . | / | § | ^ | +// | | | < || w «| x »| c ©| v ®| b ß| n ¬| , ¿| ; ×| : ÷| ! ¡| | | +// ======================================================================== +// | | | | | | | | | +// | Ctrl | Super| Alt | Space Nobreakspace | AltGr | Super|Menu | Ctrl | +// ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯ +// +// Si les touches mortes fonctionnent, utiliser les accents dits +// « morts », i.e. fonctionnant comme l'accent circonflexe & le +// tréma des machines à écrire ; sont disponibles : +// +// (^) : accent circonflexe, +// Shift+(^) : tréma, +// AltGr+(^) : tilde, +// AltGr+(1) : accent aigu, +// AltGr+(7) : accent grave +// +// Pour s'en servir, procéder comme avec l'accent circonflexe & le tréma +// sur les vielles machines à écrire : +// +// AltGr+(1) puis e : é +// AltGr+(1) puis E : É +// +partial alphanumeric_keys + +xkb_symbols "latin9" { + + include "latin" + include "nbsp(level3)" + + name[Group1]="French (legacy, alt.)"; + + key { [ oe, OE, leftdoublequotemark, rightdoublequotemark ] }; + key { [ ampersand, 1, dead_acute, periodcentered ] }; + key { [ eacute, 2, asciitilde, Eacute ] }; + key { [ quotedbl, 3, numbersign, cedilla ] }; + key { [ apostrophe, 4, braceleft, acute ] }; + key { [ parenleft, 5, bracketleft, diaeresis ] }; + key { [ minus, 6, bar, brokenbar ] }; + key { [ egrave, 7, dead_grave, Egrave ] }; + key { [ underscore, 8, backslash, macron ] }; + key { [ ccedilla, 9, asciicircum, Ccedilla ] }; + key { [ agrave, 0, at, Agrave ] }; + key { [ parenright, degree, bracketright, ydiaeresis ] }; + key { [ equal, plus, braceright, dead_abovering ] }; + + key { [ a, A, acircumflex, adiaeresis ] }; + key { [ z, Z, aring, Aring ] }; + key { [ e, E, EuroSign, cent ] }; + key { [ r, R, ccedilla, Ccedilla ] }; + key { [ t, T, thorn, THORN ] }; + key { [ y, Y, yacute, Yacute ] }; + key { [ u, U, ucircumflex, udiaeresis ] }; + key { [ i, I, icircumflex, idiaeresis ] }; + key { [ o, O, ocircumflex, odiaeresis ] }; + key { [ p, P, paragraph, grave ] }; + key { [ dead_circumflex, dead_diaeresis, dead_tilde, apostrophe ] }; + key { [ dollar, sterling, ecircumflex, ediaeresis ] }; + + key { [ q, Q, Acircumflex, Adiaeresis ] }; + key { [ s, S, oslash, Oslash ] }; + key { [ d, D, Ecircumflex, Ediaeresis ] }; + key { [ f, F, plusminus, ordfeminine ] }; + key { [ g, G, ae, AE ] }; + key { [ h, H, eth, ETH ] }; + key { [ j, J, Ucircumflex, Udiaeresis ] }; + key { [ k, K, Icircumflex, Idiaeresis ] }; + key { [ l, L, Ocircumflex, Odiaeresis ] }; + key { [ m, M, onesuperior, masculine ] }; + key { [ ugrave, percent, twosuperior, Ugrave ] }; + key { [ asterisk, mu, threesuperior, yen ] }; + + key { [ less, greater, bar ] }; + key { [ w, W, guillemotleft ] }; + key { [ x, X, guillemotright ] }; + key { [ c, C, copyright ] }; + key { [ v, V, registered ] }; + key { [ b, B, ssharp, U1E9E ] }; + key { [ n, N, notsign ] }; + key { [ comma, question, questiondown ] }; + key { [ semicolon, period, multiply ] }; + key { [ colon, slash, division ] }; + key { [ exclam, section, exclamdown ] }; + + // French uses a comma as decimal separator, but keyboards are labeled with a period + // Will take effect when KP_Decimal is mapped to the locale decimal separator + key { [ KP_Delete, KP_Decimal, KP_Delete, KP_Decimal ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "latin9_nodeadkeys" { + + // Modifies the basic fr-latin9 layout to eliminate all dead keys + + include "fr(latin9)" + + name[Group1]="French (legacy, alt., no dead keys)"; + + key { [ ampersand, 1, apostrophe, periodcentered ] }; + key { [ egrave, 7, grave, Egrave ] }; + key { [ equal, plus, braceright ] }; + key { [ asciicircum, diaeresis, asciitilde, apostrophe ] }; +}; + +// Bépo : Improved ergonomic french keymap using Dvorak method. +// Built by community on 'Dvorak Fr / Bépo' : +// see http://www.clavier-dvorak.org/wiki/ to join and help. +// XOrg integration (1.0rc2 version) in 2008 +// by Frédéric Boiteux +// +// Bépo layout (1.0rc2 version) for a pc105 keyboard (french) : +// ┌─────┐ +// │ S A │ S = Shift, A = AltGr + Shift +// │ s a │ s = normal, a = AltGr +// └─────┘ +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ # ¶ │ 1 „ │ 2 “ │ 3 ” │ 4 ≤ │ 5 ≥ │ 6 │ 7 ¬ │ 8 ¼ │ 9 ½ │ 0 ¾ │ ° ′ │ ` ″ ┃ ⌫ Retour┃ +// │ $ – │ " — │ « < │ » > │ ( [ │ ) ] │ @ ^ │ + ± │ - − │ / ÷ │ * × │ = ≠ │ % ‰ ┃ arrière┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ B ¦ │ É ˝ │ P § │ O Œ │ È ` │ ! │ V │ D Ð │ L │ J IJ │ Z Ə │ W ┃Entrée ┃ +// ┃Tab ↹ ┃ b | │ é ˊ │ p & │ o œ │ è ` │ ˆ ¡ │ v ˇ │ d ð │ l / │ j ij │ z ə │ w ̆ ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ A Æ │ U Ù │ I ˙ │ E ¤ │ ; ̛ │ C ſ │ T Þ │ S ẞ │ R ™ │ N │ M º │ Ç , ┃ ┃ +// ┃Maj ⇬ ┃ a æ │ u ù │ i ̈ │ e € │ , ’ │ c © │ t þ │ s ß │ r ® │ n ˜ │ m ¯ │ ç ¸ ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ Ê │ À │ Y ‘ │ X ’ │ : · │ K │ ? ̉ │ Q ̣ │ G │ H ‡ │ F ª ┃ ┃ +// ┃Shift ⇧┃ ê / │ à \ │ y { │ x } │ . … │ k ~ │ ' ¿ │ q ˚ │ g µ │ h † │ f ˛ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ Espace inséc. Espace inséc. fin ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ (Espace) _ ␣ ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ +partial alphanumeric_keys +xkb_symbols "bepo" { + + include "level3(ralt_switch)" + include "keypad(oss)" + + name[Group1]= "French (BEPO)"; + + // First row + key { [ dollar, numbersign, endash, paragraph ] }; // $ # – ¶ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1, emdash, doublelowquotemark ] }; // " 1 — „ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less, leftdoublequotemark ] }; // « 2 < “ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, rightdoublequotemark ] }; // » 3 > ” + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft, lessthanequal ] }; // ( 4 [ ≤ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright, greaterthanequal ] }; // ) 5 ] ≥ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ at, 6, asciicircum ] }; // @ 6 ^ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 7, plusminus, notsign ] }; // + 7 ± ¬ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, U2212, onequarter ] }; // - 8 − ¼ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 9, division, onehalf ] }; // / 9 ÷ ½ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 0, multiply, threequarters ] }; // * 0 × ¾ + key { [ equal, degree, notequal, minutes ] }; // = ° ≠ ′ + key { [ percent, grave, permille, seconds ] }; // % ` ‰ ″ + + // Second row + key { [ b, B, bar, brokenbar ] }; // b B | ¦ + key { [ eacute, Eacute, dead_acute, dead_doubleacute]}; // é É ˊ ˝ + key { [ p, P, ampersand, section ] }; // p P & § + key { [ o, O, oe, OE ] }; // o O œ Œ + key { [ egrave, Egrave, dead_grave, grave ] }; // è È ` ` + key { [ dead_circumflex, exclam, exclamdown ] }; // ^ ! ¡ + key { [ v, V, dead_caron ] }; // v V ˇ + key { [ d, D, eth, ETH ] }; // d D ð Ð + key { [ l, L, dead_stroke ] }; // l L / + key { [ j, J, U0133, U0132 ] }; // j J ij IJ + key { [ z, Z, schwa, SCHWA ] }; // z Z ə Ə + key { [ w, W, dead_breve ] }; // w W ˘ + + // Third row + key { [ a, A, ae, AE ] }; // a A æ Æ + key { [ u, U, ugrave, Ugrave ] }; // u U ù Ù + key { [ i, I, dead_diaeresis, dead_abovedot ] }; // i I ¨ ˙ + key { [ e, E, EuroSign, dead_currency ] }; // e E € ¤ + key { [ comma, semicolon, rightsinglequotemark, dead_horn] }; // , ; ’ ̛ + key { [ c, C, copyright, U017F ] }; // c C © ſ + key { [ t, T, thorn, THORN ] }; // t T þ Þ + key { [ s, S, ssharp, U1E9E ] }; // s S ß ẞ + key { [ r, R, registered, trademark ] }; // r R ® ™ + key { [ n, N, dead_tilde ] }; // n N ˜ + key { [ m, M, dead_macron, masculine ] }; // m M ¯ º + key { [ ccedilla, Ccedilla, dead_cedilla, dead_belowcomma ]}; // ç Ç ¸ , + + // Fourth row + key { [ ecircumflex, Ecircumflex, slash ] }; // ê Ê / + key { [ agrave, Agrave, backslash ] }; // à À \ + key { [ y, Y, braceleft, leftsinglequotemark ] }; // y Y { ‘ + key { [ x, X, braceright, rightsinglequotemark ] }; // x X } ’ + key { [ period, colon, ellipsis, periodcentered ] }; // . : … · + key { [ k, K, asciitilde ] }; // k K ~ + key { [ apostrophe, question, questiondown, dead_hook ] }; // ' ? ¿ ̉ + key { [ q, Q, dead_abovering, dead_belowdot ] }; // q Q ˚ ̣ + key { [ g, G, dead_greek ] }; // g G µ + key { [ h, H, dagger, doubledagger ] }; // h H † ‡ + key { [ f, F, dead_ogonek, ordfeminine ] }; // f F ˛ ª + + key { [ space, nobreakspace, underscore, U202F ] }; // ␣ (espace insécable) _ (espace insécable fin) +}; + +partial alphanumeric_keys +xkb_symbols "bepo_latin9" { + + // Restricts the Bépo layout to latin9 symbols. + + include "fr(bepo)" + include "keypad(oss_latin9)" + + name[Group1]="French (BEPO, Latin-9 only)"; + + key { [ dollar, numbersign, dollar, paragraph ] }; // $ # $ ¶ + + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1 ] }; // " 1 + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less ] }; // « 2 < + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater ] }; // » 3 > + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft ] }; // ( 4 [ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright ] }; // ) 5 ] + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, minus, onequarter ] }; // - 8 - ¼ + key { [ equal, degree ] }; // = ° + key { [ percent, grave ] }; // % ` + + key { [ b, B, bar ] }; // b B | + key { [ eacute, Eacute, dead_acute ] }; // é É ˊ + key { [ j, J ] }; // j J + key { [ z, Z ] }; // z Z + key { [ w, W ] }; // w W + + key { [ i, I, dead_diaeresis ] }; // i I ¨ + key { [ comma, semicolon, comma, dead_horn ] }; // , ; , ̛ + key { [ c, C, copyright ] }; // c C © + key { [ s, S, ssharp, U1E9E ] }; // s S ß ẞ + key { [ r, R, registered ] }; // r R ® + key { [ m, M, macron, masculine ] }; // m M ¯ º + + key { [ y, Y, braceleft ] }; // y Y { + key { [ x, X, braceright ] }; // x X } + key { [ period, colon ] }; // . : + key { [ h, H ] }; // h H + key { [ f, F, f, ordfeminine ] }; // f F ª + + key { [ space, nobreakspace, underscore, nobreakspace ] }; // ␣ (espace insécable) _ (espace insécable) +}; + +// Version 1.1rc2 of the Bépo keyboard layout, +// normalized by the AFNOR NF Z71‐300 norm. +// +// Layout: https://bepo.fr/wiki/Version_1.1rc2 +// Normalization: https://normalisation.afnor.org/actualites/faq-clavier-francais/ +// +// ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗ +// │ # ¶│ 1 „│ 2 “│ 3 ”│ 4 ⩽│ 5 ⩾║ 6 │ 7 ¬│ 8 ¼│ 9 ½│ 0 ¾│ ° ′│ ` ″║ ║ +// │ $ –│ " —│ « <│ » >│ ( [│ ) ]║ @ ^│ + ±│ - −│ / ÷│ * ×│ = ≠│ % ‰║ <-- ║ +// ╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣ +// ║ |<- ║ B _│ É │ P §│ O Œ│ È `║ ! │ V │ D │ L £│ J │ Z │ W ║ | ║ +// ║ ->| ║ b |│ é ´│ p &│ o œ│ è `║ ˆ ¡│ v ˇ│ d ∞│ l /│ j │ z ―│ w ║ <-' ║ +// ╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗ ║ +// ║ ║ A Æ│ U Ù│ I ˙│ E ¤│ ; ,║ C ©│ T ™│ S ſ│ R ®│ N │ M │ Ç ©║ ║ +// ║ CAPS ║ a æ│ u ù│ i ¨│ e €│ , '║ c ¸│ t ᵉ│ s ß│ r ˘│ n ~│ m ¯│ ç ║ ║ +// ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣ +// ║ ^ ║ Ê ^│ À ‚│ Y ‘│ X ’│ : ·│ K ‑║ ? ̉│ Q ̛│ G †│ H ‡│ F ║ ^ ║ +// ║ | ║ ê /│ à \│ y {│ x }│ . …│ k ~║ ’ ¿│ q °│ g µ│ h ̣ │ f ˛║ | ║ +// ╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣ +// ║ ║ ║ ║ Fine insécable Insécable ║ ║ ║ ║ ║ +// ║ Ctrl ║ WinG ║ Alt ║ Espace _ ║AltGr║ WinD ║WinM ║ Ctrl ║ +// ╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝ +partial alphanumeric_keys +xkb_symbols "bepo_afnor" { + + name[Group1]= "French (BEPO, AFNOR)"; + + key { type[group1] = "FOUR_LEVEL", [ dollar, numbersign, endash, paragraph ] }; // $ # – ¶ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1, emdash, doublelowquotemark ] }; // " 1 — „ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less, leftdoublequotemark ] }; // « 2 < “ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, rightdoublequotemark ] }; // » 3 > ” + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft, U2A7D ] }; // ( 4 [ ⩽ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright, U2A7E ] }; // ) 5 ] ⩾ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ at, 6, asciicircum, U262D ] }; // @ 6 ^ ☭ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 7, plusminus, notsign ] }; // + 7 ± ¬ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, U2212, onequarter ] }; // - 8 − ¼ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 9, division, onehalf ] }; // / 9 ÷ ½ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 0, multiply, threequarters ] }; // * 0 × ¾ + key { type[group1] = "FOUR_LEVEL", [ equal, degree, notequal, minutes ] }; // = ° ≠ ′ + key { type[group1] = "FOUR_LEVEL", [ percent, grave, permille, seconds ] }; // % ` ‰ ″ + + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ b, B, bar, underscore ] }; // b B | _ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, Eacute, dead_acute, heart ] }; // é É ´ ♥ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ p, P, ampersand, section ] }; // p P & § + key { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ o, O, oe, OE ] }; // o O œ Œ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, Egrave, dead_grave, grave ] }; // è È ` ` + key { type[group1] = "FOUR_LEVEL", [ dead_circumflex, exclam, exclamdown, U2620 ] }; // ^ ! ¡ ☠ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ v, V, dead_caron, U2622 ] }; // v V ˇ ☢ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ d, D, UFDD7, U2623 ] }; // d D ∞ ☣ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ l, L, dead_stroke, sterling ] }; // l L / £ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ j, J, U262E, U262F ] }; // j J ☮ ☯ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ z, Z, UFDD8, U2619 ] }; // z Z ― ☙ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ w, W, U269C, U267F ] }; // w W ⚜ ♿ + + key { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ a, A, ae, AE ] }; // a A æ Æ + key { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ u, U, ugrave, Ugrave ] }; // u U ù Ù + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ i, I, dead_diaeresis, dead_abovedot ] }; // i I ¨ ˙ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ e, E, EuroSign, dead_currency ] }; // e E € ¤ + key { type[group1] = "FOUR_LEVEL", [ comma, semicolon, apostrophe, dead_belowcomma ] }; // , ; ' , + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ c, C, dead_cedilla, copyright ] }; // c C ¸ © + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ t, T, UFDD5, trademark ] }; // t T ᵉ ™ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ s, S, UFDD4, U017F ] }; // s S ß ſ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ r, R, dead_breve, registered ] }; // r R ˘ ® + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ n, N, dead_tilde, U2693 ] }; // n N ~ ⚓ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ m, M, dead_macron, U26FD ] }; // m M ¯ ⛽ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ccedilla, Ccedilla, U2708, U1F12F ] }; // ç Ç ✈ 🄯 + + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ecircumflex, Ecircumflex, slash, asciicircum ] }; // ê Ê / ^ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ agrave, Agrave, backslash, singlelowquotemark ] }; // à À \ ‚ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ y, Y, braceleft, leftsinglequotemark ] }; // y Y { ‘ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ x, X, braceright, rightsinglequotemark ] }; // x X } ’ + key { type[group1] = "FOUR_LEVEL", [ period, colon, ellipsis, periodcentered ] }; // . : … · + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ k, K, asciitilde, U2011 ] }; // k K ~ ‑ + key { type[group1] = "FOUR_LEVEL", [ rightsinglequotemark, question, questiondown, dead_hook ] }; // ’ ? ¿ ̉ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ q, Q, dead_abovering, dead_horn ] }; // q Q ˚ ̛ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ g, G, dead_greek, dagger ] }; // g G µ † + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ h, H, dead_belowdot, doubledagger ] }; // h H ̣ ‡ + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ f, F, dead_ogonek, U26C4 ] }; // f F ˛ ⛄ + key { type[group1] = "FOUR_LEVEL", [ space, U202F, underscore, nobreakspace ] }; //   _   + + include "level3(ralt_switch)" +}; + +// Ergo‑L +// +// Project page: https://ergol.org +// Author: NuclearSquid (huge thanks to Fabien Cazenave and the “Ergonauts”) +// Version: 1.0.0 +// +// In the following figures, a `*` preceding another character denotes a dead key. +// +// Base layer + Typography (dead key ★, implemented via ISO_Level5_Latch) +// ╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +// ┆ ~ ┃ € ‚ │ « ‘ │ » ’ │ $ │ % ┃ ^ │ & │ * │ # │ @ ┃ _ – ┆ + ± ┆ +// ┆ ` ┃ 1 „ │ 2 “ │ 3 ” │ 4 ¢ │ 5 ‰ ┃ 6 │ 7 │ 8 § │ 9 ¶ │ 0 ° ┃ / ÷ ┆ = ≠ ┆ +// ╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ Q │ C │ O │ P │ W ┃ J │ M │ D _ │ ! ¡ │ Y ┃ { ┆ } ┆ +// ┃ â │ ç │ œ │ ô │ ┃ │ µ │ _ │*★*¨ │ û ┃ [ ┆ ] ┆ +// ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ A │ S │ E │ N │ F ┃ L │ R │ T │ I │ U ┃ " ┆ | ┆ +// ┃ à │ é │ è │ ê │ ñ ┃ ( │ ) │ î │ ï │ ù ┃ ' ┆ \ ┆ +// ╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +// ┆ > ┃ Z │ X │ ? ¿ │ V │ B ┃ : │ H │ G │ ; • │ K ┃ +// ┆ < ┃ æ │ ß │ - ‑ │ – │ — ┃ . … │ │ *µ │ , · │ ┃ +// ╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ +// +// Symbols layer (AltGr) +// ╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +// ┆ ┃ ¹ │ ² │ ³ │ ⁴ │ ⁵ ┃ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ ┃ ┆ ┆ +// ┆ ┃ ₁ │ ₂ │ ₃ │ ₄ │ ₅ ┃ ₆ │ ₇ │ ₈ │ ₉ │ ₀ ┃ ┆ ┆ +// ╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ *^ │ │ │ *¤ │ ‰ ┃ *˚ │ │ × │ *´ │ *` ┃ ┆ ┆ +// ┃ ^ │ < │ > │ $ │ % ┃ @ │ & │ * │ ' │ ` ┃ ┆ ┆ +// ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ *ˇ │ │ │ *˙ │ ≠ ┃ */ │ ± │ *¯ │ ÷ │ *” ┃ ┆ ┆ +// ┃ { │ ( │ ) │ } │ = ┃ \ │ + │ - │ / │ " ┃ ┆ ┆ +// ╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +// ┆ ┃ *~ │ *, │ *˛ │ – │ ┃ │ ¬ │ *¸ │ : │ *˘ ┃ +// ┆ ┃ ~ │ [ │ ] │ _ │ # ┃ | │ ! │ ; │ : │ ? ┃ +// ╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ + +partial alphanumeric_keys modifier_keys +xkb_symbols "ergol" { + + name[group1]= "French (Ergo‑L)"; + + key.type[group1] = "EIGHT_LEVEL"; + + // Digits + key {[ 1 , EuroSign , U2081 , onesuperior , U201E , U201A ]}; // 1 € ₁ ¹ „ ‚ + key {[ 2 , guillemotleft , U2082 , twosuperior , U201C , U2018 ]}; // 2 « ₂ ² “ ‘ + key {[ 3 , guillemotright , U2083 , threesuperior , U201D , U2019 ]}; // 3 » ₃ ³ ” ’ + key {[ 4 , dollar , U2084 , U2074 , cent , VoidSymbol ]}; // 4 $ ₄ ⁴ ¢ + key {[ 5 , percent , U2085 , U2075 , U2030 , VoidSymbol ]}; // 5 % ₅ ⁵ ‰ + key {[ 6 , asciicircum , U2086 , U2076 , VoidSymbol , VoidSymbol ]}; // 6 ^ ₆ ⁶ + key {[ 7 , ampersand , U2087 , U2077 , VoidSymbol , VoidSymbol ]}; // 7 & ₇ ⁷ + key {[ 8 , asterisk , U2088 , U2078 , section , VoidSymbol ]}; // 8 * ₈ ⁸ § + key {[ 9 , numbersign , U2089 , U2079 , paragraph , VoidSymbol ]}; // 9 # ₉ ⁹ ¶ + key {[ 0 , at , U2080 , U2070 , degree , VoidSymbol ]}; // 0 @ ₀ ⁰ ° + + // Letters, first row + key {[ q , Q , asciicircum , dead_circumflex , acircumflex , Acircumflex ]}; // q Q ^ ^ â  + key {[ c , C , less , lessthanequal , ccedilla , Ccedilla ]}; // c C < ≤ ç Ç + key {[ o , O , greater , greaterthanequal, oe , OE ]}; // o O > ≥ œ Œ + key {[ p , P , dollar , dead_currency , ocircumflex , Ocircumflex ]}; // p P $ ¤ ô Ô + key {[ w , W , percent , U2030 , VoidSymbol , VoidSymbol ]}; // w W % ‰ + key {[ j , J , at , dead_abovering , VoidSymbol , VoidSymbol ]}; // j J @ ˚ + key {[ m , M , ampersand , VoidSymbol , mu , VoidSymbol ]}; // m M & µ + key {[ d , D , asterisk , multiply , underscore , underscore ]}; // d D * × _ _ + key {[ ISO_Level5_Latch, exclam , apostrophe , dead_acute , dead_diaeresis , exclamdown ]}; // *¨ ! ' ´ ¨ ¡ + key {[ y , Y , grave , dead_grave , ucircumflex , Ucircumflex ]}; // y Y ` ` û Û + + // Letters, second row + key {[ a , A , braceleft , dead_caron , agrave , Agrave ]}; // a A { ˇ à À + key {[ s , S , parenleft , VoidSymbol , eacute , Eacute ]}; // s S ( é É + key {[ e , E , parenright , VoidSymbol , egrave , Egrave ]}; // e E ) è È + key {[ n , N , braceright , dead_abovedot , ecircumflex , Ecircumflex ]}; // n N } ˙ ê Ê + key {[ f , F , equal , notequal , ntilde , Ntilde ]}; // f F = ≠ ñ Ñ + key {[ l , L , backslash , dead_stroke , parenleft , VoidSymbol ]}; // l L \ / ( + key {[ r , R , plus , plusminus , parenright , VoidSymbol ]}; // r R + ± ) + key {[ t , T , minus , dead_macron , icircumflex , Icircumflex ]}; // t T - ˉ î Î + key {[ i , I , slash , division , idiaeresis , Idiaeresis ]}; // i I / ÷ ï Ï + key {[ u , U , quotedbl , dead_doubleacute, ugrave , Ugrave ]}; // u U " ˝ ù Ù + + // Letters, third row + key {[ z , Z , asciitilde , dead_tilde , ae , AE ]}; // z Z ~ ~ æ Æ + key {[ x , X , bracketleft , dead_belowcomma , ssharp , U1E9E ]}; // x X [ , ß ẞ + key {[ minus , question , bracketright , dead_ogonek , U2011 , questiondown ]}; // - ? ] ˛ ‑ ¿ + key {[ v , V , underscore , endash , endash , VoidSymbol ]}; // v V _ – – + key {[ b , B , numbersign , VoidSymbol , emdash , VoidSymbol ]}; // b B # — + key {[ period , colon , bar , brokenbar , ellipsis , VoidSymbol ]}; // . : | ¦ … + key {[ h , H , exclam , notsign , VoidSymbol , VoidSymbol ]}; // h H ! ¬ + key {[ g , G , semicolon , dead_cedilla , dead_greek , VoidSymbol ]}; // g G ; ¸ µ + key {[ comma , semicolon , colon , colon , periodcentered , U2022 ]}; // , ; : : · • + key {[ k , K , question , dead_breve , VoidSymbol , VoidSymbol ]}; // k K ? ˘ + + // Pinky keys + key {[ slash , underscore , VoidSymbol , VoidSymbol , division , endash ]}; // / _ ÷ – + key {[ equal , plus , VoidSymbol , VoidSymbol , notequal , plusminus ]}; // = + ≠ ± + key {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // + key {[ bracketleft , braceleft , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // [ { + key {[ bracketright , braceright , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ] } + key {[ apostrophe , quotedbl , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ' " + key {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // + key {[ grave , asciitilde , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ` ~ + key {[ backslash , bar , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // \ | + key {[ less , greater , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // < > + + // Space bar + key {[ space , U202F , space , nobreakspace , U2019 , U2019 ]}; //     ’ ’ + + include "level3(ralt_switch)" +}; + +// Ergo‑L (angle-mod / ISO variant) +// Same as regular Ergo‑L, but with a permutation on the lower left keys. +// before: LSGT | z | x | - | v +// after: z | x | - | v | Backspace + +partial alphanumeric_keys modifier_keys +xkb_symbols "ergol_iso" { + + include "fr(ergol)" + name[group1]= "French (Ergo‑L, ISO variant)"; + + key {[ x , X , bracketleft , dead_belowcomma , ssharp , U1E9E ]}; // x X [ , ß ẞ + key {[ minus , question , bracketright , dead_ogonek , U2011 , questiondown ]}; // - ? ] ˛ ‑ ¿ + key {[ v , V , underscore , endash , endash , VoidSymbol ]}; // v V _ – – + key {[ b , B , numbersign , VoidSymbol , emdash , VoidSymbol ]}; // b B # — + key {[ BackSpace , BackSpace , Delete , Delete , VoidSymbol , VoidSymbol ]}; // bsp bsp del del + key {[ z , Z , asciitilde , dead_tilde , ae , AE ]}; // z Z ~ ~ æ Æ +}; + +// Author : Francis Leboutte, http://www.algo.be/ergo/dvorak-fr.html +// thanks to Fabien Cazenave for his help +// Licence : X11 +// Version : 0.3 + +// Base layer + dead AltGr key (`): +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓ +// │ * │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ % ┃ ┃ +// │ _ │ = │ / ± │ - ¼ │ è ½ │ \ ¾ │ ^ │ ( │ ` ` │ ) │ " │ [ │ ] ┃ ⌫ ┃ +// ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫ +// ┃ ┃ ? Æ │ < │ > │ G │ ! │ H │ V │ C Ç │ M │ K │ Z │ & ┃ ┃ +// ┃ ↹ ┃ : æ │ ' $ │ é É │ g € │ . ° │ h │ v │ c ç │ m µ │ k │ z │ ¨ ┃ ┃ +// ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ⏎ ┃ +// ┃ ┃ O Ò │ A À │ U Ù │ E È │ B │ F │ S │ T │ N │ D │ W │ # ┃ ┃ +// ┃ ⇬ ┃ o ò │ a à │ u ù │ e è │ b │ f │ s « │ t │ n » │ d │ w │ ~ ┃ ┃ +// ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫ +// ┃ ┃ ç Ç │ | Œ │ Q │ @ │ I Ì │ Y │ X │ R │ L │ P │ J ┃ ┃ +// ┃ ⇧ ┃ à À │ ; œ │ q { │ , } │ i ì │ y £ │ x │ r º │ l │ p § │ j ┃ ⇧ ┃ +// ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫ +// ┃ ┃ ┃ ┃ ␣ ⍽ ┃ ┃ ┃ ┃ ┃ +// ┃ ctrl ┃ super ┃ alt ┃ ␣ Espace Espace insécable ⍽ ┃ alt ┃ super ┃ menu ┃ ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +// Notice the specific Caps_Lock layer: +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓ +// │ * │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ % ┃ ┃ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ⌫ ┃ +// ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫ +// ┃ ┃ │ < │ > │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ ↹ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ⏎ ┃ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ ⇬ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫ +// ┃ ┃ / │ - │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃ ⇧ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ⇧ ┃ +// ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫ +// ┃ ┃ ┃ ┃ ␣ ⍽ ┃ ┃ ┃ ┃ ┃ +// ┃ ctrl ┃ super ┃ alt ┃ ␣ Espace Espace insécable ⍽ ┃ alt ┃ super ┃ menu ┃ ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial alphanumeric_keys modifier_keys +xkb_symbols "dvorak" { + name[Group1]="French (Dvorak)"; + + // First row + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ underscore, asterisk ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ equal, 1 ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 2, plusminus ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 3, onequarter ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, 4, onehalf ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ backslash, 5, threequarters ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ dead_circumflex, 6 ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 7 ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ISO_Level3_Latch, 8, grave ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 9 ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 0 ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ bracketleft, plus ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ bracketright, percent ] }; + + // Second row + key { [ colon, question, ae, AE ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ apostrophe, less, dollar ] }; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, greater, Eacute ] }; + key { [ g, G, EuroSign ] }; + key { [ period, exclam, degree ] }; + key { [ h, H ] }; + key { [ v, V ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ m, M, mu ] }; + key { [ k, K ] }; + key { [ z, Z ] }; + key { [ dead_diaeresis, ampersand ] }; + + // Third row + key { [ o, O, ograve, Ograve ] }; + key { [ a, A, agrave, Agrave ] }; + key { [ u, U, ugrave, Ugrave ] }; + key { [ e, E, egrave, Egrave ] }; + key { [ b, B ] }; + key { [ f, F ] }; + key { [ s, S, guillemotleft ] }; + key { [ t, T ] }; + key { [ n, N, guillemotright ] }; + key { [ d, D ] }; + key { [ w, W ] }; + key { [ asciitilde, numbersign ] }; + + // Fourth row + key { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ agrave, ccedilla, Agrave, Ccedilla, slash ] }; + key { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ semicolon, bar, oe, OE, minus ] }; + key { [ q, Q, braceleft ] }; + key { [ comma, at, braceright ] }; + key { [ i, I, igrave, Igrave ] }; + key { [ y, Y, sterling ] }; + key { [ x, X ] }; + key { [ r, R, masculine ] }; + key { [ l, L ] }; + key { [ p, P, section ] }; + key { [ j, J ] }; + + key { [ space, space, nobreakspace, nobreakspace ] }; +}; + +// C'WHERTY: Breton keyboard. Ar c'hlavier brezhoneg. +// Copyright © 2009 Dominique Pellé +// Version: 0.1 +// +// ┌─────┐ +// │ S A │ S = Reol = Shift, A = ArErl + Pennlizherenn = AltGr + Shift +// │ s a │ s = normal, a = ArErl = AltGr +// └─────┘ +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ $ Γ │ 1 Δ │ 2 Θ │ 3 Λ │ 4 Ξ │ 5 Π │ 6 Σ │ 7 Φ │ 8 Ψ │ 9 Ç │ 0 Ω │ ° ß │ + ¬ ┃ ⌫ Souzañ┃ +// │ ² ˙ │ & ¯ │ é ´ │ " # │ ' { │ ( [ │ - | │ è ` │ - \ │ ç ± │ à @ │ ) ] │ = } ┃ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃Toalenn┃ C'h │ W ω │ E ε │ R ρ │ T τ │ Y ψ │ U υ │ I ι │ O OE│ P π │ ¨ ¥ │ * £ ┃Enankañ┃ +// ┃ ↹ ┃ c'h │ w │ e € │ r │ t │ y │ u │ i ı │ o oe│ p │ ^ « │ / » ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃Prenn ┃ A Æ │ S σ │ D δ │ F φ │ G γ │ H η │ J ς │ K κ │ L λ │ M μ │ Ù ® │ ! ¡ ┃ ┃ +// ┃Pennli ⇬┃ a æ │ s │ d $ │ f │ g │ h │ j │ k │ l │ m │ ù ŭ │ ? ¿ ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ Q θ │ Z ζ │ X ξ │ C χ │ V │ B β │ N ν │ CH │ Ñ │ : © │ ; ┃ ┃ +// ┃Shift ⇧┃ q < │ z > │ x │ c ¢ │ v │ b │ n │ ch │ ñ │ . │ , ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ⍽ Espace insécable ␣ ┃ ┃ ┃ ┃ +// ┃Reol ┃Meta ┃Erl ┃ ␣ Espace ␣ ┃ArErl ⇮┃Menu ┃Reol ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ +partial alphanumeric_keys +xkb_symbols "bre" { + + include "keypad(oss)" + + name[Group1]= "Breton (France)"; + + // First row + key { [ twosuperior, dead_tilde, dead_abovedot, Greek_GAMMA ] }; + key { [ ampersand, 1, dead_macron, Greek_DELTA ] }; + key { [ eacute, 2, dead_acute, Greek_THETA ] }; + key { [ quotedbl, 3, numbersign, Greek_LAMDA ] }; + key { [ apostrophe, 4, braceleft, Greek_XI ] }; + key { [ parenleft, 5, bracketleft, Greek_PI ] }; + key { [ minus, 6, bar, Greek_SIGMA ] }; + key { [ egrave, 7, dead_grave, Greek_PHI ] }; + key { [ underscore, 8, backslash, Greek_PSI ] }; + key { [ ccedilla, 9, plusminus, Ccedilla ] }; + key { [ agrave, 0, at, Greek_OMEGA ] }; + key { [ parenright, dead_abovering, bracketright, ssharp ] }; + key { [ equal, plus, braceright, notsign ] }; + + // Second row + // Handling the C'H key correctly requires the XIM input method. + key { [ c_h, C_h, C_H, Greek_alpha ] }; + key { [ w, W, Greek_omega, Greek_omega ] }; + key { [ e, E, EuroSign, Greek_epsilon ] }; + key { [ r, R, Greek_rho, Greek_rho ] }; + key { [ t, T, Greek_tau, Greek_tau ] }; + key { [ y, Y, Greek_psi, Greek_psi ] }; + key { [ u, U, Greek_upsilon, Greek_upsilon ] }; + key { [ i, I, idotless, Greek_iota ] }; + key { [ o, O, oe, OE ] }; + key { [ p, P, Greek_pi, Greek_pi ] }; + key { [ dead_circumflex, dead_diaeresis, guillemotleft, yen ] }; + key { [ slash, asterisk, guillemotright, sterling ] }; + + // Third row + key { [ a, A, ae, AE ] }; + key { [ s, S, Greek_sigma, Greek_sigma ] }; + key { [ d, D, dollar, Greek_delta ] }; + key { [ f, F, Greek_phi, Greek_phi ] }; + key { [ g, G, Greek_gamma, Greek_gamma ] }; + key { [ h, H, Greek_eta, Greek_eta ] }; + key { [ j, J, Greek_finalsmallsigma, Greek_finalsmallsigma ] }; + key { [ k, K, Greek_kappa, Greek_kappa ] }; + key { [ l, L, Greek_lamda, Greek_lambda ] }; + key { [ m, M, Greek_mu, Greek_mu ] }; + key { [ ugrave, Ugrave, ubreve, registered ] }; + key { [ question, exclam, questiondown, exclamdown ] }; + + // Fourth row + key { [ q, Q, less, Greek_theta ] }; + key { [ z, Z, greater, Greek_zeta ] }; + key { [ x, X, Greek_xi, Greek_xi ] }; + key { [ c, C, cent, Greek_chi ] }; + key { [ v, V ] }; + key { [ b, B, Greek_beta, Greek_beta ] }; + key { [ n, N, Greek_nu, Greek_nu ] }; + // Handling the CH key correctly requires the XIM input method. + key { [ ch, Ch, CH, Greek_omicron ] }; + key { [ ntilde, Ntilde ] }; + key { [ period, colon, section, copyright ] }; + key { [ comma, semicolon, percent ] }; + + key { [ space, nobreakspace, space, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + +// Occitan layout +// Author : 2009 Thomas Metz +// Derived from the layout defined at http://www.panoccitan.org +// Version: 0.1 +// Differences from OSS French keyboard : +// - add á, í, ò, ó et ú, Á, Í, Ò, Ó, Ú, ñ, Ñ +// - change position of æ, ü, î, û, œ, ô, ö, ï, â, ë +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃ +// │ ² ¹ │ & ˇ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃ arrière┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ A Á │ Z Æ │ E ¢ │ R Ê │ T Ë │ Y Û │ U Ú │ I Í │ O Ó │ P Ò │ ¨ Œ │ £ Ø ┃Entrée ┃ +// ┃Tab ↹ ┃ a á │ z æ │ e € │ r ê │ t ë │ y û │ u ú │ i í │ o ó │ p ò │ ^ œ │ $ ø ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ Q Ä │ S „ │ D  │ F ‚ │ G ¥ │ H Ü │ J Î │ K Ï │ L Ô │ M Ö │ % Ù │ µ ̄ ┃ ┃ +// ┃Maj ⇬ ┃ q ä │ s ß │ d â │ f ‘ │ g ’ │ h ü │ j î │ k ï │ l ô │ m ö │ ù ' │ * ` ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ > ≥ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N Ñ │ ? … │ . . │ / ∕ │ § − ┃ ┃ +// ┃Shift ⇧┃ < ≤ │ w « │ x » │ c © │ v → │ b ↓ │ n ñ │ , ¿ │ ; × │ : ÷ │ ! ¡ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ␣ Espace fine insécable ⍽ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Espace Espace insécable ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ +partial alphanumeric_keys +xkb_symbols "oci" { + + include "fr(oss)" + + name[Group1]= "Occitan"; + + key {[ a, A, aacute, Aacute ]}; // a A á Á + key {[ z, Z, ae, AE ]}; // z Z æ Æ + key {[ t, T, ediaeresis, Ediaeresis ]}; // t T ë Ë + key {[ y, Y, ucircumflex, Ucircumflex ]}; // y Y û Û + key {[ u, U, uacute, Uacute ]}; // u U ú Ú + key {[ i, I, iacute, Iacute ]}; // i I í Í + key {[ o, O, oacute, Oacute ]}; // o O ó Ó + key {[ p, P, ograve, Ograve ]}; // p P ò Ò + key {[ dead_circumflex, dead_diaeresis, oe, OE ]}; // ^ ̈ œ Œ + + key {[ d, D, acircumflex, Acircumflex ]}; // d D â  + key {[ h, H, udiaeresis, Udiaeresis ]}; // h H ü Ü + key {[ j, J, icircumflex, Icircumflex ]}; // j J î Î + key {[ k, K, idiaeresis, Idiaeresis ]}; // k K ï Ï + key {[ l, L, ocircumflex, Ocircumflex ]}; // l L ô Ô + + key {[ v, V, rightarrow, leftarrow ]}; // v V → ← + key {[ n, N, ntilde, Ntilde ]}; // n N ñ Ñ +}; + +// Marc.Shapiro@inria.fr 19-sep-1998 +// modifications : Etienne Herlent june 2000 +// adapted to the new input layer : +// Martin Costabel 3-jan-2001 +// adapted for Latin9 alphabet (ISO-8859-15): +// Etienne Herlent march 2005 + +// This map is an almost-complete mapping of the standard French +// MacIntosh keyboard under Xwindows. I tried to remain as faithful +// as possible to the Mac meaning of each key. I did this entirely by +// hand and by intuition, relying on the Clavier (Keyboard?) Desktop +// Accessory for the Mac meaning of keys, and on reading keysymdef.h +// to intuit the corresponding X names. Lacking proper documentation, +// I may have made some mistakes. + +// Entries marked CHECK are particularly uncertain + +// Entries marked MISSING mark Mac characters for which I was unable +// to find a corresponding keysym. (Some for sure don't: e.g. the +// Apple mark and the oe/OE character; others I may have simply not +// found.) + +// Copied from macintosh_vndr/fr +partial alphanumeric_keys +xkb_symbols "mac" { + + name[Group1]= "French (Macintosh)"; + + key { [ at, numbersign, periodcentered, ydiaeresis ] }; + key { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple + key { [ eacute, 2, ediaeresis, Eacute ] }; + key { [ quotedbl, 3, leftdoublequotemark, rightdoublequotemark ]}; + key { [ apostrophe, 4, leftsinglequotemark, rightsinglequotemark ]}; + key { [ parenleft, 5, braceleft, bracketleft ] }; + key { [ section, 6, paragraph, aring ] }; + key { [ egrave, 7, guillemotleft, guillemotright ] }; + key { [ exclam, 8, exclamdown, Ucircumflex ] }; + key { [ ccedilla, 9, Ccedilla, Aacute ] }; + key { [ agrave, 0, oslash, Oslash ] }; + key { [ parenright, degree, braceright, bracketright ] }; + key { [ minus, underscore, emdash, endash ] }; + + key { [ a, A, ae, AE ] }; + key { [ z, Z, Acircumflex, Aring ] }; + key { [ e, E, ecircumflex, Ecircumflex ] }; + key { [ r, R, registered, currency ] }; + key { [ t, T, dagger, trademark ] }; + key { [ y, Y, Uacute, Ydiaeresis ] }; + key { [ u, U, masculine, ordfeminine ] }; + key { [ i, I, icircumflex, idiaeresis ] }; + key { [ o, O, oe, OE ] }; + key { [ p, P, Greek_pi, Greek_PI ] }; + key { [dead_circumflex,dead_diaeresis, ocircumflex, Ocircumflex ] }; + key { [ dollar, asterisk, EuroSign, yen ] }; + + key { [ q, Q, acircumflex, Agrave ] }; + key { [ s, S, Ograve, VoidSymbol ] }; + key { [ d, D, Greek_delta, Greek_DELTA ] }; + key { [ f, F, U0192, periodcentered ] }; // ƒ · + key { [ g, G, UFB01, UFB02 ] }; // fi fl + key { [ h, H, Igrave, Icircumflex ] }; + key { [ j, J, Idiaeresis, Iacute ] }; + key { [ k, K, Egrave, Ediaeresis ] }; + key { [ l, L, notsign, bar ] }; + key { [ m, M, mu, Oacute ] }; + key { [ ugrave,percent, Ugrave, ucircumflex ] }; // MISSING: per-mille + key { [ dead_grave, sterling, at, numbersign ] }; + + key { [ less, greater, lessthanequal, greaterthanequal ] }; + key { [ w, W, U2039, U203A ] }; // ‹ › + key { [ x, X, similarequal, U2044 ] }; // ≃ ⁄ + key { [ c, C, copyright, cent ] }; + key { [ v, V, diamond, radical ] }; // CHECK diamond + key { [ b, B, ssharp, integral ] }; + key { [ n, N, dead_tilde, asciitilde ] }; + key { [ comma, question, VoidSymbol, questiondown ] }; + key { [ semicolon, period, ellipsis, periodcentered ] }; + key { [ colon, slash, division, backslash ] }; + key { [ equal, plus, notequal, plusminus ] }; + + key { [ space, space, nobreakspace, nobreakspace ] }; + + key { [ comma,KP_Decimal ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "geo" { + + include "ge(basic)" + + name[Group1]= "Georgian (France, AZERTY Tskapo)"; + + key {[ exclam, any ]}; + key {[ U201E, 1 ]}; + key {[ U2116, 2 ]}; + key {[ percent, 3 ]}; + key {[ parenleft, 4 ]}; + key {[ colon, 5 ]}; + key {[ semicolon, 6 ]}; + key {[ question, 7 ]}; + key {[ U2116, 8 ]}; + key {[ degree, 9 ]}; + key {[ parenright, 0 ]}; + key {[ minus, underscore, emdash ]}; + key {[ less, greater ]}; + + key {[ Georgian_an, U10FA ]}; + key {[ Georgian_zen, Z ]}; + key {[ Georgian_en, E, Georgian_he ]}; + key {[ Georgian_rae, registered ]}; + key {[ Georgian_tar, T ]}; + key {[ Georgian_qar, U10F8 ]}; + key {[ Georgian_un, U ]}; + key {[ Georgian_in, Georgian_hie ]}; + key {[ Georgian_on, O ]}; + key {[ Georgian_par, P ]}; + key {[ Georgian_tan, T ]}; + key {[ Georgian_jil, Z ]}; + + key {[ Georgian_khar, Q ]}; + key {[ Georgian_san, S ]}; + key {[ Georgian_don, D ]}; + key {[ Georgian_phar, Georgian_fi ]}; + key {[ Georgian_gan, U10F9 ]}; + key {[ Georgian_hae, Georgian_hoe ]}; + key {[ Georgian_jhan, U10F7 ]}; + key {[ Georgian_kan, K ]}; + key {[ Georgian_las, L ]}; + key {[ Georgian_man, M ]}; + key {[ Georgian_zhar, J ]}; + key {[ Georgian_chin, copyright ]}; + + key {[ guillemotleft, guillemotright ]}; + key {[ Georgian_cil, W ]}; + key {[ Georgian_xan, Georgian_har ]}; + key {[ Georgian_can, copyright ]}; + key {[ Georgian_vin, Georgian_we ]}; + key {[ Georgian_ban, B ]}; + key {[ Georgian_nar, U10FC ]}; + key {[ comma, U2014 ]}; + key {[ Georgian_shin, S ]}; + key {[ Georgian_ghan, any ]}; + key {[ Georgian_char, any ]}; +}; + +// US keyboard made French +// +// Copyright (C) 2018, Florent Gallaire +partial alphanumeric_keys +xkb_symbols "us" { + + include "us(basic)" + name[Group1]= "French (US)"; + + + key { [ grave, asciitilde, dead_grave ] }; + key { [ 4, dollar, EuroSign, currency ] }; // € ¤ + key { [ 6,asciicircum,dead_circumflex ] }; + + key { [ e, E, eacute, Eacute ] }; // é É + key { [ r, R, egrave, Egrave ] }; // è È + key { [ y, Y, ydiaeresis, Ydiaeresis ] }; // ÿ Ÿ + key { [ u, U, ugrave, Ugrave ] }; // ù Ù + key { [ i, I, idiaeresis, Idiaeresis ] }; // ï Ï + key { [ o, O, ocircumflex, Ocircumflex ] }; // ô Ô + key { [ p, P, oe, OE ] }; // œ Œ + key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; // « “ + key { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; // » ” + + key { [ a, A, agrave, Agrave ] }; // à À + key { [ s, S, ae, AE ] }; // æ Æ + key { [ d, D, ecircumflex, Ecircumflex ] }; // ê Ê + key { [ f, F, ediaeresis, Ediaeresis ] }; // ë Ë + key { [ h, H, udiaeresis, Udiaeresis ] }; // ü Ü + key { [ j, J, ucircumflex, Ucircumflex ] }; // û Û + key { [ k, K, icircumflex, Icircumflex ] }; // î Î + key { [apostrophe, quotedbl,dead_diaeresis, degree ] }; + + key { [ z, Z, acircumflex, Acircumflex ] }; // â  + key { [ c, C, ccedilla, Ccedilla ] }; // ç Ç + + include "eurosign(5)" + include "level3(ralt_switch)" +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/fr(sun_type6)" +}; + + +// Plain French Azerty layout. +// Original author: Mats Blakstad , 2015. +// Based on https://en.wikipedia.org/wiki/File:KB_France.svg. + +// ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______ +// | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ° | + | <-- | +// | ² | & | é ~| " #| ' {| ( [| - || è `| _ \| ç ^| à @| ) ]| = }| | +// ======================================================================== +// | |<- | A | Z | E | R | T | Y | U | I | O | P | ¨ | $ | , | +// | ->| | a | z | e €| r | t | y | u | i | o | p | ^ | £ ¤| <-' | +// ===================================================================¬ | +// | | Q | S | D | F | G | H | J | K | L | M | % | µ | | +// | MAJ | q | s | d | f | g | h | j | k | l | m | ù | * | | +// ======================================================================== +// | ^ | > | W | X | C | V | B | N | ? | . | / | § | ^ | +// | | | < | w | x | c | v | b | n | , | ; | : | ! | | | +// ======================================================================== +// | | | | | | | | | +// | Ctrl | Super| Alt | Space Nobreakspace | AltGr | Super|Menu | Ctrl | +// ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯ +partial alphanumeric_keys +xkb_symbols "azerty" { + + name[Group1]="French (AZERTY)"; + + key {[ twosuperior ]}; + key {[ ampersand, 1 ]}; + key {[ eacute, 2, asciitilde ]}; + key {[ quotedbl, 3, numbersign ]}; + key {[ apostrophe, 4, braceleft ]}; + key {[ parenleft, 5, bracketleft ]}; + key {[ minus, 6, bar ]}; + key {[ egrave, 7, grave ]}; + key {[ underscore, 8, backslash ]}; + key {[ ccedilla, 9, asciicircum ]}; + key {[ agrave, 0, at ]}; + key {[ parenright, degree, bracketright ]}; + key {[ equal, plus, braceright ]}; + + key {[ a, A ]}; + key {[ z, Z ]}; + key {[ e, E, EuroSign ]}; + key {[ r, R ]}; + key {[ t, T ]}; + key {[ y, Y ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ o, O ]}; + key {[ p, P ]}; + key {[ dead_circumflex,dead_diaeresis ]}; + key {[ dollar, sterling, currency ]}; + + key {[ q, Q ]}; + key {[ s, S ]}; + key {[ d, D ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ h, H ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ l, L ]}; + key {[ m, M ]}; + key {[ ugrave, percent ]}; + key {[ asterisk, mu ]}; + + key {[ less, greater ]}; + key {[ w, W ]}; + key {[ x, X ]}; + key {[ c, C ]}; + key {[ v, V ]}; + key {[ b, B ]}; + key {[ n, N ]}; + key {[ comma, question ]}; + key {[ semicolon, period ]}; + key {[ colon, slash ]}; + key {[ exclam, section ]}; + + include "level3(ralt_switch)" +}; + +// US keyboard made French (with dead keys, alternative) +// +// Copyright (C) 2018, Florent Gallaire + +partial alphanumeric_keys +xkb_symbols "us-alt" { + + include "us(basic)" + name[Group1]= "French (US with dead keys, alt.)"; + + key { [dead_grave, asciitilde, grave ] }; + key { [ 4, dollar, EuroSign, currency ] }; // € ¤ + key { [dead_circumflex, asciicircum, 6 ] }; + + key { [ e, E, eacute, Eacute ] }; // é É + key { [ o, O, oe, OE ] }; // œ Œ + key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; // « “ + key { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; // » ” + + key { [ a, A, ae, AE ] }; // æ Æ + key { [dead_diaeresis, quotedbl, apostrophe ] }; + + key { [ c, C, ccedilla, Ccedilla ] }; // ç Ç + + include "eurosign(5)" + include "level3(ralt_switch)" +}; + +// For physically modified US keyboard (Q <-> A, W <-> Z and ; <-> M) +// +// Copyright (C) 2018, Florent Gallaire + +partial alphanumeric_keys +xkb_symbols "us-azerty" { + + include "us" + name[Group1]= "French (US, AZERTY)"; + + key { [ grave, asciitilde, dead_grave ] }; + key { [ 2, at, eacute, Eacute ] }; // é É + key { [ 4, dollar, currency ] }; // ¤ + key { [ 6,asciicircum,dead_circumflex ] }; + key { [ 7, ampersand, egrave, Egrave ] }; // è È + key { [ 9, parenleft, ccedilla, Ccedilla ] }; // ç Ç + key { [ 0, parenright, agrave, Agrave ] }; // à À + + key { [ a, A, ae, AE ] }; // æ Æ + key { [ z, Z ] }; + key { [ o, O, oe, OE ] }; // œ Œ + key { [bracketleft, braceleft,dead_circumflex, dead_diaeresis ] }; + + key { [ q, Q ] }; + key { [ m, M ] }; + key { [apostrophe, quotedbl, ugrave, Ugrave ] }; // ù Ù + + key { [ w, W, guillemotleft, leftdoublequotemark ] }; // « “ + key { [ x, X,guillemotright,rightdoublequotemark ] }; // » ” + key { [ semicolon, colon ] }; + + include "eurosign(e)" + include "level3(ralt_switch)" +}; + +// New Azerty layout, from the French Standardization Association (AFNOR), +// defined in norm NF Z71-300. See https://norme-azerty.fr. +// +// Original author: Cimbali , © 2019. +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ # ̑ │ 1 À │ 2 É │ 3 È │ 4 Ê │ 5 ̋ │ 6 ̏ │ 7 │ 8 — │ 9 ‹ │ 0 › │ " ˚ │ ¨ ┃ ⌫ Retour┃ +// │ @ ̆ │ à § │ é ́ │ è ̀ │ ê & │ ( [ │ ) ] │ ‘ ̄ │ ’ _ │ « “ │ » ” │ ' ° │ ̂ ̌ ┃ arrière┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ A Æ │ Z │ E │ R │ T ™ │ Y │ U Ù │ I ̣ │ O Œ │ P ‰ │ – ‑ │ ± ‡ ┃Entrée ┃ +// ┃Tab ↹ ┃ a æ │ z £ │ e € │ r ® │ t { │ y } │ u ù │ i ̇ │ o œ │ p % │ - − │ + † ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ Q │ S ẞ │ D │ F │ G │ H ̱ │ J │ K │ L │ M │ \ √ │ ½ ¼ ┃ ┃ +// ┃Maj ⇬ ┃ q θ │ s ß │ d $ │ f ¤ │ g µ │ h │ j │ k ̷ │ l | │ m ∞ │ / ÷ │ * × ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ > ≥ │ W Ʒ │ X │ C Ç │ V ˛ │ B │ N │ ? │ ! ̦ │ … │ = ≠ ┃ ┃ +// ┃Shift ⇧┃ < ≤ │ w ʒ │ x © │ c ç │ v ¸ │ b ̵ │ n ~ │ . ¿ │ , ¡ │ : · │ ; ≃ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ␣ Espace fine insécable ⍽ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Espace Espace insécable ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ +partial alphanumeric_keys +xkb_symbols "afnor" { + + name[Group1]="French (AZERTY, AFNOR)"; + + key {[ at, numbersign, dead_breve, dead_invertedbreve ]}; // @ # ̑ ̆ + key {[ agrave, 1, section, Agrave ]}; // à 1 § À + key {[ eacute, 2, dead_acute, Eacute ]}; // é 2 ́ É + key {[ egrave, 3, dead_grave, Egrave ]}; // è 3 ̀ È + key {[ ecircumflex, 4, ampersand, Ecircumflex ]}; // ê 4 & Ê + key {[ parenleft, 5, bracketleft, dead_doubleacute ]}; // ( 5 [ ̋ + key {[ parenright, 6, bracketright, dead_doublegrave ]}; // ) 6 ] ̏ + key {[ leftsinglequotemark, 7, dead_macron, none ]}; // ‘ 7 ̄ + key {[ rightsinglequotemark, 8, underscore, emdash ]}; // ’ 8 _ — + key {[ guillemotleft, 9, leftdoublequotemark, U2039 ]}; // « 9 “ ‹ + key {[ guillemotright, 0, rightdoublequotemark, U203A ]}; // » 0 ” › + key {[ apostrophe, quotedbl, degree, dead_abovering ]}; // ' " ° ̊ + key {[ dead_circumflex, dead_diaeresis, dead_caron, none ]}; // ̂ ̈ ̌ + + key {[ a, A, ae, AE ]}; // a A æ Æ + key {[ z, Z, sterling, none ]}; // z Z £ + key {[ e, E, EuroSign, none ]}; // e E € + key {[ r, R, registered, none ]}; // r R ® + key {[ t, T, braceleft, trademark ]}; // t T { ™ + key {[ y, Y, braceright, none ]}; // y Y } + key {[ u, U, ugrave, Ugrave ]}; // u U ù Ù + key {[ i, I, dead_abovedot, dead_belowdot ]}; // i I ̇ ̣ + key {[ o, O, oe, OE ]}; // o O œ Œ + key {[ p, P, percent, permille ]}; // p P % ‰ + key {[ minus, endash, U2212, U2011 ]}; // - – − ‑ // signe moins (minus sign), trait d'union insécable (non-breaking hyphen) + key {[ plus, plusminus, dagger, doubledagger ]}; // + ± † ‡ + + key {[ q, Q, Greek_theta, none ]}; // q Q θ + key {[ s, S, ssharp, U1E9E ]}; // s S ß ẞ // lettre majuscule latine S dur (latin capital letter sharp s) + key {[ d, D, dollar, none ]}; // d D $ + key {[ f, F, dead_currency, none ]}; // f F ¤ + key {[ g, G, dead_greek, none ]}; // g G µ + key {[ h, H, none, dead_belowmacron ]}; // h H ̱ // Missing deadkey for other european characters (ªəƏþÞıݺſðÐƞȠijIJ) + key {[ j, J, none, none ]}; // j J + key {[ k, K, dead_stroke, none ]}; // k K ̷ + key {[ l, L, bar, none ]}; // l L | + key {[ m, M, infinity, none ]}; // m M ∞ + key {[ slash, backslash, division, radical ]}; // / \ ÷ √ + key {[ asterisk, onehalf, multiply, onequarter ]}; // * ½ × ¼ + + key {[ less, greater, lessthanequal, greaterthanequal ]}; // < > ≤ ≥ + key {[ w, W, ezh, EZH ]}; // w W ʒ Ʒ + key {[ x, X, copyright, none ]}; // x X © + key {[ c, C, ccedilla, Ccedilla ]}; // c C ç Ç + key {[ v, V, dead_cedilla, dead_ogonek ]}; // v V ̧ ̨ + key {[ b, B, dead_stroke, none ]}; // b B ̵ + key {[ n, N, dead_tilde, none ]}; // n N ̃ + key {[ period, question, questiondown, none ]}; // . ? ¿ + key {[ comma, exclam, exclamdown, dead_belowcomma ]}; // , ! ¡ ̦ + key {[ colon, ellipsis, periodcentered, none ]}; // : … · + key {[ semicolon, equal, similarequal, notequal ]}; // ; = ≃ ≠ + + include "nbsp(level3n)" + include "keypad(oss)" + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/fujitsu_vndr/jp b/nixos/xkb/symbols/fujitsu_vndr/jp new file mode 100644 index 00000000..bb6dc0de --- /dev/null +++ b/nixos/xkb/symbols/fujitsu_vndr/jp @@ -0,0 +1,87 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +// Japanese for a Fujitsu 140 key keyboard + +xkb_symbols "basic" { + override "fujitsu_vndr/us" + augment key { [], [ kana_NU ] }; + key { [ 2, quotedbl ], [ kana_FU ] }; + key { [ 3, numbersign ], [ kana_A, kana_a ] }; + key { [ 4, dollar ], [ kana_U, kana_u ] }; + augment key { [], [ kana_E, kana_e ] }; + key { [ 6, ampersand ], [ kana_O, kana_o ] }; + key { [ 7, apostrophe ], [ kana_YA, kana_ya ] }; + key { [ 8, parenleft ], [ kana_YU, kana_yu ] }; + key { [ 9, parenright ], [ kana_YO, kana_yo ] }; + replace key { [ 0 ], [ kana_WA, kana_WO ] }; + key { [ minus, equal ], [ kana_HO ] }; + key { [ asciicircum, asciitilde ], [ kana_HE ] }; + key { [ backslash, bar ], [ prolongedsound] }; + augment key { [], [ kana_TA ] }; + augment key { [], [ kana_TE ] }; + augment key { [], [ kana_I, kana_i ] }; + augment key { [], [ kana_SU ] }; + augment key { [], [ kana_KA ] }; + augment key { [], [ kana_N ] }; + augment key { [], [ kana_NA ] }; + augment key { [], [ kana_NI ] }; + augment key { [], [ kana_RA ] }; + augment key { [], [ kana_SE ] }; + key { [ at, grave ], [ voicedsound ] }; + key { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] }; + augment key { [], [ kana_CHI ] }; + augment key { [], [ kana_TO ] }; + augment key { [], [ kana_SHI ] }; + augment key { [], [ kana_HA ] }; + augment key { [], [ kana_KI ] }; + augment key { [], [ kana_KU ] }; + augment key { [], [ kana_MA ] }; + augment key { [], [ kana_NO ] }; + augment key { [], [ kana_RI ] }; + key { [ semicolon, plus ], [ kana_RE ] }; + key { [ colon, asterisk ], [ kana_KE ] }; + key { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] }; + augment key { [], [ kana_TSU, kana_tsu ] }; + augment key { [], [ kana_SA ] }; + augment key { [], [ kana_SO ] }; + augment key { [], [ kana_HI ] }; + augment key { [], [ kana_KO ] }; + augment key { [], [ kana_MI ] }; + augment key { [], [ kana_MO ] }; + augment key { [], [ kana_NE, kana_comma ] }; + augment key { [], [ kana_RU, kana_fullstop ] }; + augment key { [], [ kana_ME, kana_conjunctive ] }; + key { [ underscore ], [ kana_RO ] }; + key { [ Select ] }; + key { [ Massyo ] }; + key { [ Touroku ] }; + key { [ Zenkaku_Hankaku ] }; + key { [ Eisu_Shift ] }; + key { [ Mode_switch ] }; + key { [ Cancel ] }; + key { [ Muhenkan ] }; + key { [ Henkan ] }; +}; diff --git a/nixos/xkb/symbols/fujitsu_vndr/us b/nixos/xkb/symbols/fujitsu_vndr/us new file mode 100644 index 00000000..83169fe1 --- /dev/null +++ b/nixos/xkb/symbols/fujitsu_vndr/us @@ -0,0 +1,142 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +// US/ASCII layout for a Fujitsu 138 key keyboard +xkb_symbols "basic" { + include "us(basic)" + + // A few alphanumeric keys are different + key { [ grave, asciitilde ] }; + key { [ BackSpace ] }; + key { [ backslash, bar ] }; + key { [ ] }; + + key { [ Shift_R ] }; + + key { [ Alt_L ] }; + key { [ Alt_R ] }; + key { [ Meta_L ] }; + key { [ Meta_R ] }; + key { [ Linefeed ] }; + key { [ Multi_key ] }; + // End alphanumeric section + + // Begin "Function" section + key { [ Break ] }; + key { [ Print ] }; + key { [ Kanji ] }; + key { [ Pause ] }; + + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ F11 ] }; + key { [ F12 ] }; + key { [ F13 ] }; + key { [ F14 ] }; + key { [ F15 ] }; + key { [ F16 ] }; + key { [ F17 ] }; + key { [ F18 ] }; + key { [ F19 ] }; + key { [ F20 ] }; + key { [ F21 ] }; + key { [ F22 ] }; + key { [ F23 ] }; + key { [ F24 ] }; + key { [ F25 ] }; + key { [ F26 ] }; + key { [ F27 ] }; + key { [ F28 ] }; + key { [ F29 ] }; + key { [ F30 ] }; + key { [ F31 ] }; + key { [ F32 ] }; + // End "Function" section + + // Begin "Editing" section + key { [ Undo ] }; + key { [ F33 ] }; + key { [ F34 ] }; + key { [ F35 ] }; + key { [ Help ] }; + // End "Editing" section + + // Begin "Cursor" section + key { [ ] }; + key { [ ] }; + key { [ ] }; + key { [ Prior ] }; + key { [ Home ] }; + key { [ Next ] }; + key { [ ] }; + key { [ Delete ] }; + key { [ Insert ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ Up ] }; + key { [ Down ] }; + key { [ Execute ] }; + // End "Cursor" section + + // Begin "Keypad" section + key { [ KP_Multiply ] }; + key { [ KP_Divide ] }; + key { [ KP_Add ] }; + key { [ KP_Subtract ] }; + + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + key { [ KP_Equal ] }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + key { [ KP_Decimal ] }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + key { [ KP_Enter ] }; + + key { [ KP_0 ] }; + key { [ KP_0 ] }; + // End "Keypad" section + + modifier_map Shift { Shift_R }; + modifier_map Mod1 { Meta_L, Meta_R }; + modifier_map Mod2 { Mode_switch }; + modifier_map Mod3 { Alt_L }; + modifier_map Mod4 { Num_Lock }; + modifier_map Mod5 { F13, F18, F20 }; +}; diff --git a/nixos/xkb/symbols/gb b/nixos/xkb/symbols/gb new file mode 100644 index 00000000..551484a3 --- /dev/null +++ b/nixos/xkb/symbols/gb @@ -0,0 +1,249 @@ +// Keyboard layouts for Great Britain. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + // The basic UK layout, also known as the IBM 166 layout, + // but with the useless brokenbar pushed two levels up. + + include "latin" + + name[Group1]="English (UK)"; + + key { [ grave, notsign, bar, bar ] }; + key { [ 2, quotedbl, twosuperior, oneeighth ] }; + key { [ 3, sterling, threesuperior, sterling ] }; + key { [ 4, dollar, EuroSign, onequarter ] }; + + key { [apostrophe, at, dead_circumflex, dead_caron] }; + key { [numbersign, asciitilde, dead_grave, dead_breve ] }; + + key { [ backslash, bar, bar, brokenbar ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "intl" { + + // A UK layout but with five accents made into dead keys: + // grave, diaeresis, circumflex, acute, and tilde. + // By Phil Jones . + + include "latin" + + name[Group1]="English (UK, intl., with dead keys)"; + + key { [ dead_grave, notsign, bar, bar ] }; + key { [ 2, dead_diaeresis, twosuperior, onehalf ] }; + key { [ 3, sterling, threesuperior, onethird ] }; + key { [ 4, dollar, EuroSign, onequarter ] }; + key { [ 6, dead_circumflex, threequarters, onesixth ] }; + + key { [ dead_acute, at, apostrophe, bar ] }; + key { [ numbersign, dead_tilde, bar, bar ] }; + + key { [ backslash, bar, bar, bar ] }; + key { [ comma, less, ccedilla, Ccedilla ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "extd" { + // Clone of the Microsoft "United Kingdom Extended" layout, which + // includes dead keys for: grave; diaeresis; circumflex; tilde; and + // accute. It also enables direct access to accute characters using + // the Multi_key (Alt Gr). + // + // Taken from... + // "Windows Keyboard Layouts" + // https://docs.microsoft.com/en-gb/globalization/windows-keyboard-layouts#U + // + // -- Jonathan Miles + + include "latin" + + name[Group1]="English (UK, extended, Windows)"; + + key { [ dead_grave, notsign, brokenbar, NoSymbol ] }; + key { [ 2, quotedbl, dead_diaeresis, onehalf ] }; + key { [ 3, sterling, threesuperior, onethird ] }; + key { [ 4, dollar, EuroSign, onequarter ] }; + key { [ 6, asciicircum, dead_circumflex, NoSymbol ] }; + + key { [ w, W, wacute, Wacute ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ y, Y, yacute, Yacute ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ bracketright, braceright, NoSymbol, bar ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ apostrophe, at, dead_acute, grave ] }; + key { [ numbersign, asciitilde, dead_tilde, backslash ] }; + + key { [ backslash, bar, NoSymbol, NoSymbol ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + + include "level3(ralt_switch)" +}; + +// Describe the differences between the US Colemak layout +// and a UK variant. By Andy Buckley (andy@insectnation.org) + +partial alphanumeric_keys +xkb_symbols "colemak" { + include "us(colemak)" + + name[Group1]="English (UK, Colemak)"; + + key { [ grave, notsign, bar, asciitilde ] }; + key { [ 2, quotedbl, twosuperior, oneeighth ] }; + key { [ 3, sterling, threesuperior, sterling ] }; + key { [ 4, dollar, EuroSign, onequarter ] }; + + key { [apostrophe, at, dead_circumflex, dead_caron] }; + key { [numbersign, asciitilde, dead_grave, dead_breve ] }; + + key { [ backslash, bar, asciitilde, brokenbar ] }; +}; + +// Colemak-DH (ISO) layout, UK Variant, https://colemakmods.github.io/mod-dh/ + +partial alphanumeric_keys +xkb_symbols "colemak_dh" { + include "us(colemak_dh)" + + name[Group1]="English (UK, Colemak-DH)"; + + key { [ grave, notsign, bar, asciitilde ] }; + key { [ 2, quotedbl, twosuperior, oneeighth ] }; + key { [ 3, sterling, threesuperior, sterling ] }; + key { [ 4, dollar, EuroSign, onequarter ] }; + + key { [apostrophe, at, dead_circumflex, dead_caron] }; + key { [numbersign, asciitilde, dead_grave, dead_breve ] }; + + key { [ backslash, bar, asciitilde, brokenbar ] }; +}; + + +// Dvorak (UK) keymap (by odaen) allowing the usage of +// the £ and ? key and swapping the @ and " keys. + +partial alphanumeric_keys +xkb_symbols "dvorak" { + include "us(dvorak-alt-intl)" + + name[Group1]="English (UK, Dvorak)"; + + key { [ grave, notsign, bar, bar ] }; + key { [ 2, quotedbl, twosuperior, NoSymbol ] }; + key { [ 3, sterling, threesuperior, NoSymbol ] }; + key { [ apostrophe, at ] }; + key { [ numbersign, asciitilde ] }; + key { [ backslash, bar ] }; +}; + +// Dvorak letter positions, but punctuation all in the normal UK positions. + +partial alphanumeric_keys +xkb_symbols "dvorakukp" { + include "gb(dvorak)" + + name[Group1]="English (UK, Dvorak, with UK punctuation)"; + + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ slash, question ] }; + key { [apostrophe, at, dead_circumflex, dead_caron] }; +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + include "latin" + + name[Group1]= "English (UK, Macintosh)"; + + key { [ section, plusminus ] }; + key { [ 2, at, EuroSign ] }; + key { [ 3, sterling, numbersign ] }; + key { [ grave, asciitilde ] }; + + include "level3(ralt_switch)" + include "level3(enter_switch)" +}; + + +partial alphanumeric_keys +xkb_symbols "mac_intl" { + + include "latin" + + name[Group1]="English (UK, Macintosh, intl.)"; + + key { [ section, plusminus, notsign, notsign ] }; //dead_grave + key { [ 2, at, EuroSign, onehalf ] }; + key { [ 3, sterling, twosuperior, onethird ] }; + key { [ 4, dollar, threesuperior, onequarter ] }; + key { [ 6, dead_circumflex, NoSymbol, onesixth ] }; + key { [ o, O, oe, OE ] }; + + key { [ dead_acute, dead_diaeresis, dead_diaeresis, bar ] }; //dead_doubleacute + key { [ backslash, bar, numbersign, bar ] }; + + key { [ dead_grave, dead_tilde, brokenbar, bar ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "pl" { + + // Polish accented letters on upper levels of corresponding base letters. + // Idea from Wawrzyniec Niewodniczański, adapted by Aleksander Kowalski. + + include "gb(basic)" + + name[Group1]="Polish (British keyboard)"; + + key { [ e, E, eogonek, Eogonek ] }; + key { [ o, O, oacute, Oacute ] }; + + key { [ a, A, aogonek, Aogonek ] }; + key { [ s, S, sacute, Sacute ] }; + + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ n, N, nacute, Nacute ] }; +}; + +partial alphanumeric_keys +xkb_symbols "gla" { + + // Grave-accented letters on the upper levels of the relevant vowels. + + include "gb(basic)" + + name[Group1]="Scottish Gaelic"; + + key { [ e, E, egrave, Egrave ] }; + key { [ u, U, ugrave, Ugrave ] }; + key { [ i, I, igrave, Igrave ] }; + key { [ o, O, ograve, Ograve ] }; + + key { [ a, A, agrave, Agrave ] }; +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/gb(sun_type6)" +}; diff --git a/nixos/xkb/symbols/ge b/nixos/xkb/symbols/ge new file mode 100644 index 00000000..fc265820 --- /dev/null +++ b/nixos/xkb/symbols/ge @@ -0,0 +1,261 @@ +// Keyboard layouts for Georgia. + +// Original author: Aiet Kolkhi +// +// This includes the following keyboard layouts: Georgian QWERTY; +// Georgian Ergonomic; Georgian MESS; and Georgian Russian. +// +// Layouts include the Georgian Mkhedruli alphabet; most layouts also include +// some special and ancient characters (like Fi, Yn, Elifi, Turned Gan and Ain). +// The Georgian Asomtavruli or Georgian Khutsuri alphabets are not included. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Georgian"; + + key { [ 0x0100201e, 0x0100201c, 0x0100201e, asciitilde ] }; + key { [ 1, exclam, apostrophe ] }; + key { [ 2, at, 0x0100201e ] }; + key { [ 3, numbersign, 0x0100201c ] }; + key { [ 4, dollar, 0x01002116 ] }; + key { [ 5, percent, EuroSign ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand, section ] }; + key { [ 8, asterisk, degree ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore, 0x01002014 ] }; + key { [ equal, plus, 0x01002013 ] }; + + key { [ Georgian_khar, Q ] }; + key { [ Georgian_cil, Georgian_char ] }; + key { [ Georgian_en, E, Georgian_he ] }; + key { [ Georgian_rae, Georgian_ghan, registered ] }; + key { [ Georgian_tar, Georgian_tan ] }; + key { [ Georgian_qar, Y, 0x010010f8 ] }; + key { [ Georgian_un, U ] }; + key { [ Georgian_in, I, Georgian_hie ] }; + key { [ Georgian_on, O ] }; + key { [ Georgian_par, P ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ Georgian_an, A, 0x010010fa ] }; + key { [ Georgian_san, Georgian_shin ] }; + key { [ Georgian_don, D ] }; + key { [ Georgian_phar, F, Georgian_fi ] }; + key { [ Georgian_gan, G, 0x010010f9 ] }; + key { [ Georgian_hae, H, Georgian_hoe ] }; + key { [ Georgian_jhan, Georgian_zhar, 0x010010f7 ] }; + key { [ Georgian_kan, K ] }; + key { [ Georgian_las, L ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + key { [ backslash, bar, asciitilde, asciitilde ] }; + + key { [ guillemotleft, guillemotright ] }; + key { [ Georgian_zen, Georgian_jil ] }; + key { [ Georgian_xan, X, Georgian_har ] }; + key { [ Georgian_can, Georgian_chin, copyright ] }; + key { [ Georgian_vin, V, Georgian_we ] }; + key { [ Georgian_ban, B ] }; + key { [ Georgian_nar, N, 0x010010fc ] }; + key { [ Georgian_man, M ] }; + key { [ comma, less, guillemotleft ] }; + key { [ period, greater, guillemotright ] }; + key { [ slash, question, 0x010010fb ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "qwerty" { + include "ge(basic)" +}; + +partial alphanumeric_keys +xkb_symbols "ergonomic" { + include "ge(basic)" + + name[Group1]= "Georgian (ergonomic)"; + + key { [ 0x0100201e, apostrophe, 0x0100201e, asciitilde ] }; + key { [ exclam, 1, exclam ] }; + key { [ 0x01002116, 2, at ] }; + key { [ comma, 3, numbersign, section ] }; + key { [ semicolon, 4, dollar ] }; + key { [ percent, 5, EuroSign ] }; + key { [ colon, 6, asciicircum ] }; + key { [ question, 7, ampersand ] }; + key { [ period, 8, asterisk, degree ] }; + key { [ parenleft, 9, parenleft, guillemotleft ] }; + key { [ parenright, 0, parenright, guillemotright ] }; + key { [ minus, plus, 0x01002014, underscore ] }; + key { [ 0x0100201c, equal, equal ] }; + + key { [ Georgian_chin, noSymbol ] }; + key { [ Georgian_par, noSymbol ] }; + key { [ Georgian_un, noSymbol ] }; + key { [ Georgian_jil, noSymbol, noSymbol, registered ] }; + key { [ Georgian_char, noSymbol, noSymbol, Georgian_tan ] }; + key { [ Georgian_tar, noSymbol, noSymbol, 0x010010f8 ] }; + key { [ Georgian_tan, noSymbol ] }; + key { [ Georgian_nar, noSymbol, 0x010010fc, I ] }; + key { [ Georgian_vin, noSymbol, Georgian_we ] }; + key { [ Georgian_shin, noSymbol ] }; + key { [ Georgian_kan, noSymbol, bracketleft, braceleft ] }; + key { [ Georgian_khar, noSymbol, bracketright,braceright ] }; + + key { [ Georgian_xan, noSymbol, Georgian_har ] }; + key { [ Georgian_in, noSymbol, Georgian_hie ] }; + key { [ Georgian_an, noSymbol, 0x010010fa, D ] }; + key { [ Georgian_en, noSymbol, Georgian_he ] }; + key { [ Georgian_on, noSymbol ] }; + key { [ Georgian_don, noSymbol ] }; + key { [ Georgian_man, noSymbol ] }; + key { [ Georgian_san, noSymbol ] }; + key { [ Georgian_rae, noSymbol, L ] }; + key { [ Georgian_ban, noSymbol, colon ] }; + key { [ Georgian_gan, noSymbol, 0x010010f9, quotedbl ] }; + key { [ slash, section, backslash, bar ] }; + + key { [ guillemotleft,guillemotright ] }; + key { [ Georgian_jhan, noSymbol ] }; + key { [ Georgian_hae, noSymbol, Georgian_hoe, X ] }; + key { [ Georgian_qar, noSymbol, 0x010010f8, C ] }; + key { [ Georgian_ghan, noSymbol, 0x010010f7, V ] }; + key { [ Georgian_zhar, noSymbol ] }; + key { [ Georgian_zen, noSymbol ] }; + key { [ Georgian_can, noSymbol, noSymbol, M ] }; + key { [ Georgian_las, noSymbol, guillemotleft, less ] }; + key { [ Georgian_phar, noSymbol, Georgian_fi, guillemotright ] }; + key { [ Georgian_cil, noSymbol, 0x010010fb ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "mess" { + include "ge(basic)" + + name[Group1]= "Georgian (MESS)"; + + key { [ Georgian_char, backslash, grave ] }; + key { [ 1, exclam, apostrophe ] }; + key { [ 2, at, asciitilde ] }; + key { [ 3, 0x01002116, numbersign ] }; + key { [ 4, dollar, EuroSign ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand, section ] }; + key { [ 8, asterisk, degree ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright, 0x01002014 ] }; + key { [ minus, underscore, 0x01002013 ] }; + key { [ Georgian_zhar, plus, bar ] }; + key { [ Georgian_khar, Q ] }; + key { [ Georgian_cil, W ] }; + key { [ Georgian_en, E ] }; + key { [ Georgian_rae, R ] }; + key { [ Georgian_tar, T ] }; + key { [ Georgian_qar, Y ] }; + key { [ Georgian_un, U ] }; + key { [ Georgian_in, I, Georgian_hie ] }; + key { [ Georgian_on, O ] }; + key { [ Georgian_par, P ] }; + key { [ Georgian_shin, bracketleft, guillemotleft ] }; + key { [ Georgian_ghan, bracketright, guillemotright ] }; + key { [ Georgian_an, A, 0x010010fa ] }; + key { [ Georgian_san, S ] }; + key { [ Georgian_don, D ] }; + key { [ Georgian_phar, F, Georgian_fi ] }; + key { [ Georgian_gan, G, 0x010010f9 ] }; + key { [ Georgian_hae, H, Georgian_he ] }; + key { [ Georgian_jhan, J, 0x010010f7 ] }; + key { [ Georgian_kan, K ] }; + key { [ Georgian_las, L ] }; + key { [ Georgian_tan, 0x0100201e ] }; + key { [ Georgian_chin,0x0100201c ] }; + key { [ equal, slash, bar ] }; + + key { [ guillemotleft, guillemotright ] }; + key { [ Georgian_zen, Z, Georgian_hoe ] }; + key { [ Georgian_xan, X, Georgian_har ] }; + key { [ Georgian_can, C ] }; + key { [ Georgian_vin, V, Georgian_we ] }; + key { [ Georgian_ban, B ] }; + key { [ Georgian_nar, N, 0x010010fc ] }; + key { [ Georgian_man, M ] }; + key { [ comma, semicolon, less ] }; + key { [ period, colon, greater ] }; + key { [ Georgian_jil, question, 0x010010fb ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "ru" { + + name[Group1]= "Russian (Georgia)"; + + key { [ asciicircum, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, semicolon ] }; + key { [ 5, colon ] }; + key { [ 6, comma ] }; + key { [ 7, period ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ numbersign, bar ] }; + + key { [ Georgian_ghan, q ] }; + key { [ Georgian_can, w ] }; + key { [ Georgian_un, e ] }; + key { [ Georgian_kan, r ] }; + key { [ Georgian_en, t ] }; + key { [ Georgian_nar, y ] }; + key { [ Georgian_gan, u ] }; + key { [ Georgian_shin, i ] }; + key { [ Georgian_cil, o ] }; + key { [ Georgian_zen, p ] }; + key { [ Georgian_xan, bracketleft ] }; + key { [ Georgian_jhan, bracketright ] }; + + key { [ Georgian_phar, a ] }; + key { [ Georgian_tan, s ] }; + key { [ Georgian_vin, d ] }; + key { [ Georgian_an, f ] }; + key { [ Georgian_par, g ] }; + key { [ Georgian_rae, h ] }; + key { [ Georgian_on, j ] }; + key { [ Georgian_las, k ] }; + key { [ Georgian_don, l ] }; + key { [ Georgian_zhar, semicolon ] }; + key { [ Georgian_jil, percent ] }; + key { [ backslash, bar ] }; + + key { [ guillemotleft, guillemotright ] }; + key { [ Georgian_char, z ] }; + key { [ Georgian_chin, x ] }; + key { [ Georgian_san, c ] }; + key { [ Georgian_man, v ] }; + key { [ Georgian_in, b ] }; + key { [ Georgian_tar, n ] }; + key { [ Georgian_khar, m ] }; + key { [ Georgian_ban, less ] }; + key { [ Georgian_qar, greater ] }; + key { [ Georgian_hae, question ] }; +}; + +partial alphanumeric_keys +xkb_symbols "os" { + + include "ru(os_legacy)" + + name[Group1]= "Ossetian (Georgia)"; +}; diff --git a/nixos/xkb/symbols/gh b/nixos/xkb/symbols/gh new file mode 100644 index 00000000..16629f1d --- /dev/null +++ b/nixos/xkb/symbols/gh @@ -0,0 +1,165 @@ +// Keyboard layouts for Ghana. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "us" + + name[Group1]= "English (Ghana)"; + + key {[ 4, U20B5, dollar, cent ]}; // ₵ (cedi sign) + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "akan" { + + include "gh(basic)" + + name[Group1]= "Akan"; + + key {[ U025B, U0190, q, Q ]}; // ɛ Ɛ + key {[ U0254, U0186, x, X ]}; // ɔ Ɔ +}; + +partial alphanumeric_keys +xkb_symbols "ga" { + + include "gh(basic)" + + name[Group1]= "Ga"; + + key {[ U025B, U0190, q, Q ]}; // ɛ Ɛ + key {[ U0254, U0186, x, X ]}; // ɔ Ɔ + key {[ U014B, U014A, c, C ]}; // ŋ Ŋ +}; + +partial alphanumeric_keys +xkb_symbols "ewe" { + + include "gh(basic)" + + name[Group1]= "Ewe"; + + key {[ U025B, U0190, q, Q ]}; // ɛ Ɛ + key {[ U0254, U0186, braceleft, braceleft ]}; // ɔ Ɔ + key {[ U028B, U01B2, braceright, braceright ]}; // ʋ Ʋ + key {[ U0256, U0189, backslash, backslash ]}; // ɖ Ɖ + + key {[ g, G, U0263, U0194 ]}; // ɣ Ɣ + key {[ U0192, U0191, j, J ]}; // ƒ Ƒ + + key {[ U014B, U014A, c, C ]}; // ŋ Ŋ +}; + +partial alphanumeric_keys +xkb_symbols "fula" { + + include "gh(basic)" + + name[Group1]= "Fula"; + + key {[ q, Q, q, Q ]}; + key {[ udiaeresis, Udiaeresis, w, W ]}; + key {[ e, E, EuroSign, cent ]}; + key {[ U01B4, U01B3,bracketleft, braceleft ]}; // ƴ Ƴ + key {[ gcaron, Gcaron,bracketright, braceright]}; + + key {[ U0257, U018A, d, D ]}; // ɗ Ɗ + key {[ U0131, U0130, semicolon, colon ]}; // ı İ + key {[ U01DD, U018E, apostrophe, quotedbl ]}; // ǝ Ǝ + + key {[ U0272, U019D, z, Z ]}; // ɲ Ɲ + key {[ ntilde, Ntilde, m, M ]}; + key {[ ccedilla, Ccedilla, period, greater ]}; + key {[ scedilla, Scedilla, slash, question ]}; +}; + +partial alphanumeric_keys +xkb_symbols "hausa" { + + include "gh(fula)" + + name[Group1]= "Hausa (Ghana)"; +}; + +partial alphanumeric_keys +xkb_symbols "generic" { + + include "gh(basic)" + + name[Group1]= "English (Ghana, multilingual)"; + + key {[ 4, dollar, U20B5, cent ]}; // ₵ (cedi sign) + + key {[ e, E, U025b, U0190 ]}; // ɛ Ɛ + + key {[ d, D, U0256, U0189 ]}; // ɖ Ɖ + key {[ f, F, U0192, U0191 ]}; // ƒ Ƒ + key {[ g, G, U0263, U0194 ]}; // ɣ Ɣ + + key {[ z, Z, U01B6, U01B5 ]}; // ƶ Ƶ + key {[ c, C, U0254, U0186 ]}; // ɔ Ɔ + key {[ v, V, U028B, U01B2 ]}; // ʋ Ʋ + key {[ n, N, U014b, U014a ]}; // ŋ Ŋ +}; + +partial alphanumeric_keys +xkb_symbols "avn" { + + include "gh(basic)" + + name[Group1]= "Avatime"; + + key {[ grave, asciitilde, U0300, U0303 ]}; // combining grave; combining tilde + key {[ 4, dollar, cent, U20B5 ]}; // ¢, ₵ + key {[ minus, underscore, U0304, U0304 ]}; // combining macron + + key {[ U028B, U01B2 ]}; // ʋ, Ʋ + key {[ u, U, U028A, U01B1 ]}; // ʊ, Ʊ + key {[ i, I, U0269, U0196 ]}; // ɩ, Ɩ + key {[ U025B, U0190,bracketleft, braceleft ]}; // ɛ, Ɛ + + key {[ d, D, U0256, U0189 ]}; // ɖ, Ɖ + key {[ f, F, U0192, U0191 ]}; // ƒ, Ƒ + key {[ U014B, U014A ]}; // ŋ, Ŋ + key {[ apostrophe, quotedbl, U0301, U0301 ]}; // combining acute + + key {[ U0254, U0186 ]}; // ɔ, Ɔ +}; + +// This layout imitates the 'Ghana Unicode' layout as used in GILLBT on Windows with Keyman. +// However, this layout uses a 3rd level key (the right Alt key: AltGr) rather than dead keys. +// It also has three additional symbols: +// 1) combining macron above: + + <-> +// 2) cent: + <4> +// 3) ʊ/Ʊ: + / +partial alphanumeric_keys +xkb_symbols "gillbt" { + + include "gh(basic)" + + name[Group1]= "English (Ghana, GILLBT)"; + + key {[ grave, asciitilde, U0300, U0303 ]}; // combining grave; combining tilde + key {[ 4, dollar, cent, U20B5 ]}; // ¢, ₵ + key {[ 6, asciicircum, U0302, U0302 ]}; // combining circumflex accent + key {[ minus, underscore, U0331, U0304 ]}; // combining macron below; combining macron above + key {[ U014B, U014A, equal, plus ]}; // ŋ, Ŋ + + key {[ U028B, U01B2, q, Q ]}; // ʋ, Ʋ + key {[ e, E, U01DD, U018E ]}; // ǝ, Ǝ + key {[ u, U, U028A, U01B1 ]}; // ʊ, Ʊ + key {[ U025B, U0190, bracketleft, braceleft ]}; // ɛ, Ɛ + key {[ U0254, U0186, bracketright, braceright ]}; // ɔ, Ɔ + + key {[ d, D, U0256, U0189 ]}; // ɖ, Ɖ + key {[ f, F, U0192, U0191 ]}; // ƒ, Ƒ + key {[ g, G, U0263, U0194 ]}; // ɣ, Ɣ + key {[ apostrophe, quotedbl, U0301, U0301 ]}; // combining acute + + key {[ z, Z, ezh, EZH ]}; // ʒ, Ʒ + key {[ U0269, U0196, x, X ]}; // ɩ, Ɩ + key {[ c, C, ccedilla, Ccedilla ]}; // ç, Ç +}; diff --git a/nixos/xkb/symbols/gn b/nixos/xkb/symbols/gn new file mode 100644 index 00000000..afe3042f --- /dev/null +++ b/nixos/xkb/symbols/gn @@ -0,0 +1,61 @@ +// Keyboard layout for Guinea. + +// Layout for N'Ko, by Denis Jacquerye. +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]="N'Ko (AZERTY)"; + + key {[ U07F1, U07C1 ]}; + key {[ U07EB, U07C2 ]}; + key {[ U07F5, U07C3, numbersign, sterling ]}; + key {[ U07F4, U07C4, U2E1C, dollar ]}; + key {[ parenleft, U07C5, U2E1D ]}; + key {[ minus, U07C6, bar ]}; + key {[ U07EC, U07C7, grave ]}; + key {[ U07FA, U07C8, backslash ]}; + key {[ U07ED, U07C9, asciicircum, plusminus ]}; + key {[ U07EE, U07C0, at, degree ]}; + key {[ parenright ]}; + key {[ equal, plus, braceright ]}; + + key {[ U07CA ]}; + key {[ U07E0, less ]}; + key {[ U07CD, U07CB ]}; + key {[ U07D9, U07DA ]}; + key {[ U07D5 ]}; + key {[ U07E6, U07E7 ]}; + key {[ U07CE, U07F6 ]}; + key {[ U07CC ]}; + key {[ U07D0, U07CF ]}; + key {[ U07D4 ]}; + key {[ U07F3 ]}; + key {[dollar, sterling, currency ]}; + + key {[ U07EB ]}; + key {[ U07DB ]}; + key {[ U07D8 ]}; + key {[ U07DD ]}; + key {[ U07DC, U07F7 ]}; + key {[ U07E4 ]}; + key {[ U07D6, U07E8 ]}; + key {[ U07DE ]}; + key {[ U07DF, U07EA ]}; + key {[ U07E1 ]}; + key {[ U07EF, U07F8, percent ]}; + key {[ U07EC, asciitilde, notsign ]}; + + key {[ U07D1, asterisk ]}; + key {[ U07E5 ]}; + key {[ U060C ]}; + key {[ U07D7, U07E9 ]}; + key {[ U07E2 ]}; + key {[ U07D3 ]}; + key {[ U07E3, U07D2 ]}; + key {[ U07F8, U061F ]}; + key {[ U061B ]}; + key {[ U060C, slash ]}; + key {[ U07F9 ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/gr b/nixos/xkb/symbols/gr new file mode 100644 index 00000000..9e4eff9d --- /dev/null +++ b/nixos/xkb/symbols/gr @@ -0,0 +1,216 @@ +// Keyboard layouts for Greece. + +// Original version: Kostas Gewrgiou +// Heavily modified by: Vasilis Vasaitis +// Converted to single-group form by: Ivan Pascal +// More modifications by: Web Dolphins® + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "gr(simple)" + + name[Group1] = "Greek"; + + key {[ any, any, U2015 ]}; // ― + key {[ any, any, U2022, onesuperior ]}; // • + key {[ any, any, onehalf, twosuperior ]}; + key {[ any, any, sterling, threesuperior ]}; + key {[ any, any, onequarter, threequarters ]}; + key {[ any, any, EuroSign, permille ]}; + key {[ any, any, U03F0, paragraph ]}; // ϰ ¶ + key {[ any, any, U03D7, U03CF ]}; // ϗ Ϗ + key {[ any, any, U20AF, currency ]}; // ₯ ¤ + key {[ any, any, brokenbar, leftsinglequotemark ]}; + key {[ any, any, degree, rightsinglequotemark ]}; + key {[ any, any, plusminus ]}; + + key {[ any, any, periodcentered ]}; + key {[ any, any, U03DB, U03DA ]}; // ϛ Ϛ + key {[ any, any, EuroSign, U03F5 ]}; // € ϵ + key {[ any, any, registered, U03F1 ]}; // ® ϱ + key {[ any, any, U03D2, yen ]}; // ϒ ¥ + key {[ any, any, U03D1, U03F4 ]}; // ϑ ϴ + key {[ any, any, U037B, U03FD ]}; // ͻ Ͻ + key {[ any, any, U03D9, U03D8 ]}; // ϙ Ϙ + key {[ any, any, U03E1, U03E0 ]}; // ϡ Ϡ + key {[ any, any, dead_tilde, dead_macron ]}; + key {[ any, any, dead_iota, dead_breve ]}; + + key {[ any, any, section ]}; + key {[ any, any, downarrow, uparrow ]}; + key {[ any, any, U03D5, Greek_PHI ]}; // ϕ Φ + key {[ any, any, U03DD, U03DC ]}; // ϝ Ϝ + key {[ any, any, U03F3, U037F ]}; // ϳ Ϳ + key {[ any, any, U037C, U03FE ]}; // ͼ Ͼ + key {[ any, any, U03DF, U03DE ]}; // ϟ Ϟ + key {[ any, any, U03F2, U03F9 ]}; // ϲ Ϲ + key {[ any, any, dead_acute, dead_psili ]}; + key {[ any, any, dead_grave, dead_dasia ]}; + key {[ any, any, notsign ]}; + + key {[ any, any, U037D, U03FF ]}; // ͽ Ͽ + key {[ any, any, rightarrow, leftarrow ]}; + key {[ any, any, copyright ]}; + key {[ any, any, U03D6 ]}; // ϖ + key {[ any, any, U03D0 ]}; // ϐ + key {[ any, any, U0374, U0375 ]}; // ʹ ͵ + key {[ any, any, U03FB, U03FA ]}; // ϻ Ϻ + key {[ any, any, guillemotleft, ellipsis ]}; + key {[ any, any, guillemotright, periodcentered ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "simple" { + + name[Group1] = "Greek (simple)"; + + key {[ grave, asciitilde ]}; // ` ~ + key {[ 1, exclam ]}; // 1 ! + key {[ 2, at ]}; // 2 @ + key {[ 3, numbersign ]}; // 3 # + key {[ 4, dollar ]}; // 4 $ + key {[ 5, percent ]}; // 5 % + key {[ 6, asciicircum ]}; // 6 ^ + key {[ 7, ampersand ]}; // 7 & + key {[ 8, asterisk ]}; // 8 * + key {[ 9, parenleft ]}; // 9 ( + key {[ 0, parenright ]}; // 0 ) + key {[ minus, underscore ]}; // - _ + key {[ equal, plus ]}; // = + + + key {[ semicolon, colon ]}; // ; : + key {[ Greek_finalsmallsigma, Greek_SIGMA ]}; // ς Σ + key {[ Greek_epsilon, Greek_EPSILON ]}; // ε Ε + key {[ Greek_rho, Greek_RHO ]}; // ρ Ρ + key {[ Greek_tau, Greek_TAU ]}; // τ Τ + key {[ Greek_upsilon, Greek_UPSILON ]}; // υ Υ + key {[ Greek_theta, Greek_THETA ]}; // θ Θ + key {[ Greek_iota, Greek_IOTA ]}; // ι Ι + key {[ Greek_omicron, Greek_OMICRON ]}; // ο Ο + key {[ Greek_pi, Greek_PI ]}; // π Π + + key {[ bracketleft, braceleft ]}; // [ { + key {[ bracketright, braceright ]}; // ] } + + key {[ Greek_alpha, Greek_ALPHA ]}; // α Α + key {[ Greek_sigma, Greek_SIGMA ]}; // σ Σ + key {[ Greek_delta, Greek_DELTA ]}; // δ Δ + key {[ Greek_phi, Greek_PHI ]}; // φ Φ + key {[ Greek_gamma, Greek_GAMMA ]}; // γ Γ + key {[ Greek_eta, Greek_ETA ]}; // η Η + key {[ Greek_xi, Greek_XI ]}; // ξ Ξ + key {[ Greek_kappa, Greek_KAPPA ]}; // κ Κ + key {[ Greek_lamda, Greek_LAMDA ]}; // λ Λ + key {[ dead_acute, dead_diaeresis ]}; // ´ ¨ + + key {[ apostrophe, quotedbl ]}; // ' " + key {[ backslash, bar ]}; // \ | + + key {[ guillemotleft, guillemotright ]}; // « » + + key {[ Greek_zeta, Greek_ZETA ]}; // ζ Ζ + key {[ Greek_chi, Greek_CHI ]}; // χ Χ + key {[ Greek_psi, Greek_PSI ]}; // ψ Ψ + key {[ Greek_omega, Greek_OMEGA ]}; // ω Ω + key {[ Greek_beta, Greek_BETA ]}; // β Β + key {[ Greek_nu, Greek_NU ]}; // ν Ν + key {[ Greek_mu, Greek_MU ]}; // μ Μ + + key {[ comma, less ]}; // , < + key {[ period, greater ]}; // . > + key {[ slash, question ]}; // / ? + + include "kpdl(comma)" +}; + +partial alphanumeric_keys +xkb_symbols "polytonic" { + + include "gr(basic)" + + name[Group1] = "Greek (polytonic)"; + + key.type[Group1] = "FOUR_LEVEL"; + key {[ 5, percent, U2030, U2031 ]}; // ‰ ‱ + + key {[Greek_finalsmallsigma,Greek_SIGMA, U03D9,U03D8 ]}; // ϙ Ϙ + key {[ Greek_pi, Greek_PI, U03D6, U03D5 ]}; // ϖ ϕ + key.type[Group1] = "THREE_LEVEL"; + key {[ dead_tilde, dead_diaeresis, dead_macron ]}; // ~ ¨ ¯ + key {[ dead_iota, none, dead_breve ]}; // ͺ ˘ + + key.type[Group1] = "FOUR_LEVEL"; + key {[ Greek_sigma, Greek_SIGMA, U03DB, U03DA ]}; // ϛ Ϛ (stigmata) + key {[ Greek_phi, Greek_PHI, U03DD, U03DC ]}; // ϝ Ϝ + key {[ Greek_xi, Greek_XI, U03F3, U037F ]}; // ϳ Ϳ + key {[ Greek_kappa, Greek_KAPPA, U03D7, U03CF ]}; // ϗ Ϗ (kai symbols) + + key.type[Group1] = "THREE_LEVEL"; + key {[ dead_acute, dead_psili ]}; + key.type[Group1] = "FOUR_LEVEL"; + key {[ dead_grave, dead_dasia, apostrophe,quotedbl ]}; + + key {[ Greek_beta, Greek_BETA, U03E1, U03E0 ]}; // ϡ Ϡ +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "gr(simple)" + + name[Group1] = "Greek (no dead keys)"; + + key {[ semicolon, colon ]}; // ; : +}; + + +// Greek layout rearranged as Colemak. +partial alphanumeric_keys +xkb_symbols "colemak" { + + include "gr(basic)" + + name[Group1] = "Greek (Colemak)"; + + key {[ semicolon, colon, periodcentered ]}; + key {[ Greek_finalsmallsigma, Greek_SIGMA, U03DB, U03DA ]}; + key {[ Greek_phi, Greek_PHI, U03D5, Greek_PHI ]}; + key {[ Greek_pi, Greek_PI, U03E1, U03E0 ]}; + key {[ Greek_gamma, Greek_GAMMA, U03DD, U03DC ]}; + key {[ Greek_xi, Greek_XI, U037C, U03FE ]}; + key {[ Greek_lamda, Greek_LAMDA, U03F2, U03F9 ]}; + key {[ Greek_theta, Greek_THETA, U03D1, U03F4 ]}; + key {[ Greek_upsilon, Greek_UPSILON, U03D2, yen ]}; + key {[ dead_acute, dead_diaeresis, dead_acute, dead_psili ]}; + + key {[ Greek_alpha, Greek_ALPHA ]}; + key {[ Greek_rho, Greek_RHO, registered, U03F1 ]}; + key {[ Greek_sigma, Greek_SIGMA, section ]}; + key {[ Greek_tau, Greek_TAU ]}; + key {[ Greek_delta, Greek_DELTA, downarrow, uparrow ]}; + key {[ Greek_eta, Greek_ETA, U03F3, U037F ]}; + key {[ Greek_nu, Greek_NU, U0374, U0375 ]}; + key {[ Greek_epsilon, Greek_EPSILON, EuroSign, U03F5 ]}; + key {[ Greek_iota, Greek_IOTA, U037B, U03FD ]}; + key {[ Greek_omicron, Greek_OMICRON ]}; + + key {[ Greek_zeta, Greek_ZETA, U037D, U03FF ]}; + key {[ Greek_chi, Greek_CHI, rightarrow, leftarrow ]}; + key {[ Greek_psi, Greek_PSI, copyright ]}; + key {[ Greek_omega, Greek_OMEGA, U03D6 ]}; + key {[ Greek_beta, Greek_BETA, U03D0 ]}; + key {[ Greek_kappa, Greek_KAPPA, U03DF, U03DE ]}; + key {[ Greek_mu, Greek_MU, U03FB, U03FA ]}; + + key {[ BackSpace, BackSpace, BackSpace, BackSpace ]}; +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/gr(sun_type6)" +}; diff --git a/nixos/xkb/symbols/grab b/nixos/xkb/symbols/grab new file mode 100644 index 00000000..98664140 --- /dev/null +++ b/nixos/xkb/symbols/grab @@ -0,0 +1,4 @@ +default partial +xkb_symbols "debug" { + include "srvr_ctrl(grab_debug)" +}; diff --git a/nixos/xkb/symbols/group b/nixos/xkb/symbols/group new file mode 100644 index 00000000..9378cefe --- /dev/null +++ b/nixos/xkb/symbols/group @@ -0,0 +1,328 @@ +// The right Alt key (while pressed) chooses the next group. +partial modifier_keys +xkb_symbols "switch" { + key {[ Mode_switch, Multi_key ]}; +}; + +// The left Alt key (while pressed) chooses the next group. +partial modifier_keys +xkb_symbols "lswitch" { + key {[ Mode_switch, Multi_key ]}; +}; + +// The left Win key (while pressed) chooses the next group. +partial modifier_keys +xkb_symbols "lwin_switch" { + key {[ Mode_switch, Multi_key ]}; +}; + +// The right Win key (while pressed) chooses the next group. +partial modifier_keys +xkb_symbols "rwin_switch" { + key {[ Mode_switch, Multi_key ]}; +}; + +// Either Win key (while pressed) chooses the next group. +partial modifier_keys +xkb_symbols "win_switch" { + include "group(lwin_switch)" + include "group(rwin_switch)" +}; + +// The Menu key (while pressed) chooses the next group, +// while Shift+Menu acts as Menu. +partial modifier_keys +xkb_symbols "menu_switch" { + key {[ Mode_switch, Menu ]}; +}; + +// The right Ctrl key (while pressed) chooses the next group. +partial modifier_keys +xkb_symbols "rctrl_switch" { + key {[ Mode_switch ]}; +}; + +// The Caps_Lock key (while pressed) chooses the next group, +// while Alt+Caps_Lock toggles CapsLock. +partial modifier_keys +xkb_symbols "caps_switch" { + key {[ Mode_switch, Caps_Lock ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +// Pressing the right Alt key switches to the next group. +partial modifier_keys +xkb_symbols "toggle" { + key {[ ISO_Next_Group ]}; +}; + +// Pressing the left Alt key switches to the next group. +partial modifier_keys +xkb_symbols "lalt_toggle" { + key {[ ISO_Next_Group ]}; +}; + +// Pressing both Shift keys switches to the next or previous group +// (depending on which Shift is pressed first). +partial modifier_keys +xkb_symbols "shifts_toggle" { + key {[ Shift_L, ISO_Prev_Group ], type[group1] = "TWO_LEVEL" }; + key {[ Shift_R, ISO_Next_Group ], type[group1] = "TWO_LEVEL" }; +}; + +// Pressing Caps_Lock switches to the next group, +// while Shift+Caps_Lock toggles CapsLock. +partial modifier_keys +xkb_symbols "caps_toggle" { + key {[ ISO_Next_Group, Caps_Lock ], type[group1] = "TWO_LEVEL" }; +}; + +// Pressing Shift+Caps_Lock switches to the next group. +partial modifier_keys +xkb_symbols "shift_caps_toggle" { + key {[ any, ISO_Next_Group ], type[group1] = "TWO_LEVEL" }; +}; + +// Pressing Alt+Space switches to the next group. +partial modifier_keys +xkb_symbols "alt_space_toggle" { + key {[ space, ISO_Next_Group ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +// Pressing Win+Space switches to the next group. +partial modifier_keys +xkb_symbols "win_space_toggle" { + key {[ space, ISO_Next_Group ], type[group1] = "PC_SUPER_LEVEL2" }; +}; + +// Pressing Ctrl+Space switches to the next group. +partial modifier_keys +xkb_symbols "ctrl_space_toggle" { + key {[ space, ISO_Next_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; +}; + + +// Pressing Caps_Lock selects the first group, +// pressing Shift+Caps_Lock selects the second group. +partial modifier_keys +xkb_symbols "caps_select" { + key {[ ISO_First_Group, ISO_Last_Group ], type[group1] = "TWO_LEVEL" }; +}; + +// Pressing the left Win key selects the first group, +// pressing the right Win key or the Menu key selects the second group. +partial modifier_keys +xkb_symbols "win_menu_select" { + key {[ ISO_First_Group ]}; + key {[ ISO_Last_Group ]}; + key {[ ISO_Last_Group ]}; +}; + +// Pressing the left Ctrl key selects the first group, +// pressing the right Ctrl key selects the second group. +partial modifier_keys +xkb_symbols "ctrl_select" { + key {[ ISO_First_Group ]}; + key {[ ISO_Last_Group ]}; +}; + + +// +// CTRL-SHIFT toggle section +// +partial modifier_keys +xkb_symbols "lctrl_lshift_toggle" { + key {[ Shift_L, ISO_Next_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; + key {[ Control_L, ISO_Next_Group ]}; +}; + +partial modifier_keys +xkb_symbols "lctrl_lshift_toggle_rev" { + key {[ Shift_L, ISO_Prev_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; + key {[ Control_L, ISO_Prev_Group ]}; +}; + +partial modifier_keys +xkb_symbols "rctrl_rshift_toggle" { + key {[ Shift_R, ISO_Next_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; + key {[ Control_R, ISO_Next_Group ]}; +}; + +partial modifier_keys +xkb_symbols "ctrl_shift_toggle" { + include "group(lctrl_lshift_toggle)" + include "group(rctrl_rshift_toggle)" +}; + +partial modifier_keys +xkb_symbols "ctrl_shift_toggle_bidir" { + include "group(lctrl_lshift_toggle_rev)" + include "group(rctrl_rshift_toggle)" +}; + + +// +// CTRL-ALT toggle section +// +partial modifier_keys +xkb_symbols "lctrl_lalt_toggle" { + key {[ NoSymbol, ISO_Next_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; + key {[ Control_L, ISO_Next_Group ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +partial modifier_keys +xkb_symbols "lctrl_lalt_toggle_rev" { + key {[ NoSymbol, ISO_Prev_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; + key {[ Control_L, ISO_Prev_Group ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +partial modifier_keys +xkb_symbols "rctrl_ralt_toggle" { + key {[ NoSymbol, ISO_Next_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; + key {[ Control_R, ISO_Next_Group ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +partial modifier_keys +xkb_symbols "ctrl_alt_toggle" { + include "group(lctrl_lalt_toggle)" + include "group(rctrl_ralt_toggle)" +}; + +partial modifier_keys +xkb_symbols "ctrl_alt_toggle_bidir" { + include "group(lctrl_lalt_toggle_rev)" + include "group(rctrl_ralt_toggle)" +}; + + +// +// ALT-SHIFT toggle section +// +partial modifier_keys +xkb_symbols "lalt_lshift_toggle" { + key {[ NoSymbol, ISO_Next_Group ], type[group1] = "TWO_LEVEL" }; + key {[ Shift_L, ISO_Next_Group ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +partial modifier_keys +xkb_symbols "lalt_lshift_toggle_rev" { + key {[ NoSymbol, ISO_Prev_Group ], type[group1] = "TWO_LEVEL" }; + key {[ Shift_L, ISO_Prev_Group ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +partial modifier_keys +xkb_symbols "ralt_rshift_toggle" { + key {[ NoSymbol, ISO_Next_Group ], type[group1] = "TWO_LEVEL" }; + key {[ Shift_R, ISO_Next_Group ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +partial modifier_keys +xkb_symbols "alt_shift_toggle" { + include "group(lalt_lshift_toggle)" + include "group(ralt_rshift_toggle)" +}; + +partial modifier_keys +xkb_symbols "alt_shift_toggle_bidir" { + include "group(lalt_lshift_toggle_rev)" + include "group(ralt_rshift_toggle)" +}; + + +// Pressing the Menu key switches to the next group, +// while Shift+Menu acts as Menu. +partial modifier_keys +xkb_symbols "menu_toggle" { + key {[ ISO_Next_Group, Menu ]}; +}; + +// Pressing the left Win key switches to the next group. +partial modifier_keys +xkb_symbols "lwin_toggle" { + key {[ ISO_Next_Group ]}; +}; + +// Pressing the right Win key switches to the next group. +partial modifier_keys +xkb_symbols "rwin_toggle" { + key {[ ISO_Next_Group ]}; +}; + +// Pressing both Ctrl keys switches to the next or previous group +// (depending on which Ctrl is pressed first). +partial modifier_keys +xkb_symbols "ctrls_toggle" { + key {[ NoSymbol, ISO_Prev_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; + key {[ NoSymbol, ISO_Next_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; +}; + +// Pressing both Alt keys switches to the next or previous group +// (depending on which Alt is pressed first). +partial modifier_keys +xkb_symbols "alts_toggle" { + key {[ Alt_L, ISO_Prev_Group ], type[group1] = "PC_ALT_LEVEL2" }; + key {[ Alt_R, ISO_Next_Group ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +// Pressing Alt plus AltGr switches to the next or previous group +// (depending on which one is pressed first). +partial modifier_keys +xkb_symbols "alt_altgr_toggle" { + key {[ Alt_L, Alt_L, ISO_Prev_Group, ISO_Prev_Group ], + type[group1] = "FOUR_LEVEL" }; + key {[ ISO_Level3_Shift, ISO_Next_Group ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +// Pressing the left Shift key switches to the next group. +partial modifier_keys +xkb_symbols "lshift_toggle" { + key {[ ISO_Next_Group ]}; +}; + +// Pressing the right Shift key switches to the next group. +partial modifier_keys +xkb_symbols "rshift_toggle" { + key {[ ISO_Next_Group ]}; +}; + +// Pressing the left Ctrl key switches to the next group. +partial modifier_keys +xkb_symbols "lctrl_toggle" { + key {[ ISO_Next_Group ]}; +}; + +// Pressing the right Ctrl key switches to the next group. +partial modifier_keys +xkb_symbols "rctrl_toggle" { + key {[ ISO_Next_Group ]}; +}; + +// Pressing Alt+Caps_Lock switches to the next group. +partial modifier_keys +xkb_symbols "alt_caps_toggle" { + key {[ any, ISO_Next_Group ], type[group1] = "PC_ALT_LEVEL2" }; +}; + +hidden partial modifier_keys +xkb_symbols "olpc" { + key {[ ISO_Next_Group, ISO_Prev_Group ]}; +}; + +// Pressing the Scroll Lock key switches to the next group. +partial modifier_keys +xkb_symbols "sclk_toggle" { + key {[ ISO_Next_Group ]}; +}; + +// Pressing Ctrl + the left Win key selects the first group, +// pressing Ctrl + the Menu key selects the second group. +partial modifier_keys +xkb_symbols "lctrl_lwin_rctrl_menu" { + key {[ Super_L, ISO_First_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; + key {[ Menu, ISO_Last_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; +}; + +// Pressing Ctrl + the left Win key switches to the next group. +partial modifier_keys +xkb_symbols "lctrl_lwin_toggle" { + key {[ Super_L, ISO_Next_Group ], type[group1] = "PC_CONTROL_LEVEL2" }; +}; diff --git a/nixos/xkb/symbols/hhkbse b/nixos/xkb/symbols/hhkbse new file mode 100644 index 00000000..3a3037f0 --- /dev/null +++ b/nixos/xkb/symbols/hhkbse @@ -0,0 +1,60 @@ +// HHKB Keyboard layout for Swedish, by cnst. + +default partial alphanumeric_keys +xkb_symbols "hhkbse" { + include "latin(type2)" + include "se(se)" + + name[Group1]="Sweden - HHKBse"; + + key {[ 1, exclam, paragraph, onehalf ]}; + key {[ 2, quotedbl, at ]}; + key {[ 3, numbersign, sterling ]}; + key {[ 4, dollar, currency ]}; + key {[ 5, percent, EuroSign ]}; + key {[ 6, ampersand, yen, radical ]}; + key {[ 7, slash, braceleft ]}; + key {[ 8, parenleft, bracketleft ]}; + key {[ 9, parenright, bracketright ]}; + key {[ 0, equal, braceright ]}; + key {[ plus, question, backslash, questiondown ]}; + key {[ Next, braceleft, Home ]}; + key {[ Prior, braceright, End ]}; + key {[ Delete, asterisk, asciicircum ]}; + + key {[ q, Q ]}; + key {[ w, W ]}; + key {[ e, E, EuroSign ]}; + key {[ r, R, registered, trademark ]}; + key {[ t, T ]}; + key {[ y, Y ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ o, O ]}; + key {[ p, P, Up, Greek_pi ]}; + key {[ aring, Aring ]}; + key {[apostrophe, bar, asciitilde, brokenbar ]}; + key {[ a, A ]}; + key {[ s, S ]}; + key {[ d, D ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ h, H ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ l, L, Left ]}; + key {[ odiaeresis, Odiaeresis, Down ]}; + key {[ adiaeresis, Adiaeresis, Right ]}; + + key {[ z, Z, less ]}; + key {[ x, X, greater ]}; + key {[ c, C, copyright ]}; + key {[ v, V ]}; + key {[ b, B ]}; + key {[ n, N ]}; + key {[ m, M, mu ]}; + key {[ comma, semicolon ]}; + key {[ period, colon ]}; + key {[ minus, underscore, endash ]}; + +}; diff --git a/nixos/xkb/symbols/hp_vndr/us b/nixos/xkb/symbols/hp_vndr/us new file mode 100644 index 00000000..9fb085e8 --- /dev/null +++ b/nixos/xkb/symbols/hp_vndr/us @@ -0,0 +1,103 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +// US/ASCII layout for a HP non-PC keyboard +xkb_symbols "hil" { + include "us(basic)" + + // A few alphanumeric keys are different + key { [ grave, asciitilde ]}; + key { [ Shift_R ]}; + key { [ Meta_L ]}; + key { [ Meta_R ]}; + // End alphanumeric section + + // Begin "Function" section + key { [ Break ]}; + key { [ Cancel ]}; + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ Menu ] }; + key { [ hpSystem ]}; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ hpClearLine ]}; + key { [ Clear ]}; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ F11 ] }; + key { [ F12 ] }; + // End "Function" section + + // Begin "Editing" section + key { [ Execute, Print ]}; + key { [ hpInsertLine ]}; + key { [ hpDeleteLine ]}; + key { [ hpInsertChar ]}; + key { [ hpDeleteChar ]}; + key { [ Home ] }; + key { [ Prior ] }; + key { [ Next ] }; + key { [ Select ] }; + key { [ Left ] }; + key { [ Down ] }; + key { [ Up ] }; + key { [ Right ]}; + // End "Editing" section + + // Begin "Keypad" section + key { [ KP_Multiply ]}; + key { [ KP_Divide ]}; + key { [ KP_Add ]}; + key { [ KP_Subtract ]}; + + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + key { [ KP_Enter ]}; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + key { [ KP_Separator ]}; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + key { [ KP_Tab ]}; + + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; + // End "Keypad" section + + modifier_map Shift { Shift_R }; + modifier_map Mod1 { Meta_L, Meta_R }; + modifier_map Mod2 { Alt_L }; + modifier_map Mod3 { Mode_switch }; +}; diff --git a/nixos/xkb/symbols/hr b/nixos/xkb/symbols/hr new file mode 100644 index 00000000..7892ee62 --- /dev/null +++ b/nixos/xkb/symbols/hr @@ -0,0 +1,75 @@ +// Keyboard layouts for Croatia. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "rs(latin)" + name[Group1]="Croatian"; + + // Swap the third and fourth level for four dead keys, for easier access + // to the non-dead symbols, and to match the XFree86 Croatian layout. + key { [ 1, exclam, asciitilde, dead_tilde ] }; + key { [ 3, numbersign, asciicircum, dead_circumflex ] }; + key { [ 5, percent, degree, dead_abovering ] }; + key { [ 7, slash, grave, dead_grave ] }; + + // Provide the correct closing double quote mark. + key { [ any, any, rightdoublequotemark, guillemotleft ] }; + + key { [ minus, underscore, dead_belowdot, dead_abovedot ] }; +}; + +partial alphanumeric_keys +xkb_symbols "us" { + + include "us" + name[Group1]= "Croatian (US)"; + + key { [ any, any, backslash ] }; + key { [ any, any, bar ] }; + key { [ any, any, EuroSign ] }; + key { [ any, any, z, Z ] }; + key { [ any, any, scaron, Scaron ] }; + key { [ any, any, dstroke, Dstroke ] }; + + key { [ any, any, bracketleft ] }; + key { [ any, any, bracketright ] }; + key { [ any, any, lstroke ] }; + key { [ any, any, Lstroke ] }; + key { [ any, any, ccaron, Ccaron ] }; + key { [ any, any, cacute, Cacute ] }; + key { [ any, any, zcaron, Zcaron ] }; + + key { [ any, any, bar ] }; + key { [ any, any, y, Y ] }; + key { [ any, any, at ] }; + key { [ any, any, braceleft ] }; + key { [ any, any, braceright ] }; + key { [ any, any, section ] }; + key { [ any, any, semicolon ] }; + key { [ any, any, colon ] }; + key { [ any, any, minus, underscore ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "alternatequotes" { + + include "rs(latinalternatequotes)" + name[Group1]= "Croatian (with guillemets)"; +}; + +partial alphanumeric_keys +xkb_symbols "unicode" { + + include "rs(latinunicode)" + name[Group1]= "Croatian (with Croatian digraphs)"; +}; + +partial alphanumeric_keys +xkb_symbols "unicodeus" { + + include "rs(latinunicodeyz)" + name[Group1]= "Croatian (US, with Croatian digraphs)"; +}; diff --git a/nixos/xkb/symbols/hu b/nixos/xkb/symbols/hu new file mode 100644 index 00000000..ac114b56 --- /dev/null +++ b/nixos/xkb/symbols/hu @@ -0,0 +1,817 @@ +// Keyboard layouts for Hungary. + +// Some widely used Hungarian keyboard layouts. +// +// (C) 2002-2004 Soós Péter +// (C) 2010 Andras Timar +// +// Permission is granted to anyone to use, distribute and modify +// this file in any way, provided that the above copyright notice +// is left intact and the author of the modification summarizes +// the changes in this header. +// +// This file is distributed without any expressed or implied warranty. +// +// Changes: +// 2004-04-17 - Moved to new style (only Unicode based layouts) +// - Added consistent dead key support +// - Fixed abovedot +// - Added adiaeresis +// - Added EuroSign and cent symbol +// 2010-04-23 - Added doublelowquotemark +// - Added rightdoublequotemark +// - Added endash +// 2010-05-13 - Added ellipsis + + +// Default layout +default partial +xkb_symbols "basic" { + include "hu(102_qwertz_comma_dead)" + name[Group1] = "Hungarian"; +}; + +// Standard layout +partial +xkb_symbols "standard" { + include "hu(102_qwertz_comma_dead)" + name[Group1] = "Hungarian (standard)"; +}; + +// Standard layout without dead key support +partial +xkb_symbols "nodeadkeys" { + include "hu(102_qwertz_comma_nodead)" + name[Group1] = "Hungarian (no dead keys)"; +}; + +// Qwerty layout +partial +xkb_symbols "qwerty" { + include "hu(101_qwerty_comma_dead)" + name[Group1] = "Hungarian (QWERTY)"; +}; + +// Main layouts + +// 101_qwertz_comma_dead +// 101 key qwertz layout +// with decimal comma on keypad +// and with dead key support +partial +xkb_symbols "101_qwertz_comma_dead" { + name[Group1] = "Hungarian (QWERTZ, 101-key, comma, dead keys)"; + include "latin" + include "hu(def_101)" + include "hu(def_qwertz)" + include "kpdl(comma)" + include "hu(def_dead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 101_qwertz_comma_nodead +// 101 key qwertz layout +// with decimal comma on keypad +// and without dead key support +partial +xkb_symbols "101_qwertz_comma_nodead" { + name[Group1] = "Hungarian (QWERTZ, 101-key, comma, no dead keys)"; + include "latin" + include "hu(def_101)" + include "hu(def_qwertz)" + include "kpdl(comma)" + include "hu(def_nodead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 101_qwertz_dot_dead +// 101 key qwertz layout +// with decimal dot on keypad +// and with dead key support +partial +xkb_symbols "101_qwertz_dot_dead" { + name[Group1] = "Hungarian (QWERTZ, 101-key, dot, dead keys)"; + include "latin" + include "hu(def_101)" + include "hu(def_qwertz)" + include "hu(def_dot)" + include "hu(def_dead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 101_qwertz_dot_nodead +// 101 key qwertz layout +// with decimal dot on keypad +// and without dead key support +partial +xkb_symbols "101_qwertz_dot_nodead" { + name[Group1] = "Hungarian (QWERTZ, 101-key, dot, no dead keys)"; + include "latin" + include "hu(def_101)" + include "hu(def_qwertz)" + include "hu(def_dot)" + include "hu(def_nodead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 101_qwerty_comma_dead +// 101 key qwerty layout +// with decimal comma on keypad +// and with dead key support +partial +xkb_symbols "101_qwerty_comma_dead" { + name[Group1] = "Hungarian (QWERTY, 101-key, comma, dead keys)"; + include "latin" + include "hu(def_101)" + include "hu(def_qwerty)" + include "kpdl(comma)" + include "hu(def_dead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 101_qwerty_comma_nodead +// 101 key qwerty layout +// with decimal comma on keypad +// and without dead key support +partial +xkb_symbols "101_qwerty_comma_nodead" { + name[Group1] = "Hungarian (QWERTY, 101-key, comma, no dead keys)"; + include "latin" + include "hu(def_101)" + include "hu(def_qwerty)" + include "kpdl(comma)" + include "hu(def_nodead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 101_qwerty_dot_dead +// 101 key qwerty layout +// with decimal dot on keypad +// and with dead key support +partial +xkb_symbols "101_qwerty_dot_dead" { + name[Group1] = "Hungarian (QWERTY, 101-key, dot, dead keys)"; + include "latin" + include "hu(def_101)" + include "hu(def_qwerty)" + include "hu(def_dot)" + include "hu(def_dead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 101_qwerty_dot_nodead +// 101 key qwerty layout +// with decimal dot on keypad +// and without dead key support +partial +xkb_symbols "101_qwerty_dot_nodead" { + name[Group1] = "Hungarian (QWERTY, 101-key, dot, no dead keys)"; + include "latin" + include "hu(def_101)" + include "hu(def_qwerty)" + include "hu(def_dot)" + include "hu(def_nodead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 102_qwertz_comma_dead +// 102 key qwertz layout +// with decimal comma on keypad +// and with dead key support +partial +xkb_symbols "102_qwertz_comma_dead" { + name[Group1] = "Hungarian (QWERTZ, 102-key, comma, dead keys)"; + include "latin" + include "hu(def_102)" + include "hu(def_qwertz)" + include "kpdl(comma)" + include "hu(def_dead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 102_qwertz_comma_nodead +// 102 key qwertz layout +// with decimal comma on keypad +// and without dead key support +partial +xkb_symbols "102_qwertz_comma_nodead" { + name[Group1] = "Hungarian (QWERTZ, 102-key, comma, no dead keys)"; + include "latin" + include "hu(def_102)" + include "hu(def_qwertz)" + include "kpdl(comma)" + include "hu(def_nodead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 102_qwertz_dot_dead +// 102 key qwertz layout +// with decimal dot on keypad +// and with dead key support +partial +xkb_symbols "102_qwertz_dot_dead" { + name[Group1] = "Hungarian (QWERTZ, 102-key, dot, dead keys)"; + include "latin" + include "hu(def_102)" + include "hu(def_qwertz)" + include "hu(def_dot)" + include "hu(def_dead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 102_qwertz_dot_nodead +// 102 key qwertz layout +// with decimal dot on keypad +// and without dead key support +partial +xkb_symbols "102_qwertz_dot_nodead" { + name[Group1] = "Hungarian (QWERTZ, 102-key, dot, no dead keys)"; + include "latin" + include "hu(def_102)" + include "hu(def_qwertz)" + include "hu(def_dot)" + include "hu(def_nodead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 102_qwerty_comma_dead +// 102 key qwerty layout +// with decimal comma on keypad +// and with dead key support +partial +xkb_symbols "102_qwerty_comma_dead" { + name[Group1] = "Hungarian (QWERTY, 102-key, comma, dead keys)"; + include "latin" + include "hu(def_102)" + include "hu(def_qwerty)" + include "kpdl(comma)" + include "hu(def_dead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 102_qwerty_comma_nodead +// 102 key qwerty layout +// with decimal comma on keypad +// and without dead key support +partial +xkb_symbols "102_qwerty_comma_nodead" { + name[Group1] = "Hungarian (QWERTY, 102-key, comma, no dead keys)"; + include "latin" + include "hu(def_102)" + include "hu(def_qwerty)" + include "kpdl(comma)" + include "hu(def_nodead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 102_qwerty_dot_dead +// 102 key qwerty layout +// with decimal dot on keypad +// and with dead key support +partial +xkb_symbols "102_qwerty_dot_dead" { + name[Group1] = "Hungarian (QWERTY, 102-key, dot, dead keys)"; + include "latin" + include "hu(def_102)" + include "hu(def_qwerty)" + include "hu(def_dot)" + include "hu(def_dead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// 102_qwerty_dot_nodead +// 102 key qwerty layout +// with decimal dot on keypad +// and without dead key support +partial +xkb_symbols "102_qwerty_dot_nodead" { + name[Group1] = "Hungarian (QWERTY, 102-key, dot, no dead keys)"; + include "latin" + include "hu(def_102)" + include "hu(def_qwerty)" + include "hu(def_dot)" + include "hu(def_nodead)" + include "hu(def_common)" + include "level3(ralt_switch)" +}; + +// Partial layouts + +// def_102: +// The standard Hungarian 102 key layout +hidden partial alphanumeric_keys +xkb_symbols "def_102" { + key { [ 0, section, notsign ] }; + key { [ iacute, Iacute, less, greater ] }; + +}; + +// def_101: +// An alternative layout for 101 key keyboards +hidden partial alphanumeric_keys +xkb_symbols "def_101" { + key { [ iacute, Iacute, 0, section ] }; + key { [ less, greater ] }; +}; + +// def_qwertz: +// The standard Hungaryan qwertz layout +hidden partial alphanumeric_keys +xkb_symbols "def_qwertz" { + key { [ z, Z, endash ] }; + key { [ y, Y, greater ] }; +}; + + +// def_qwerty: +// The qwerty layout for people who familiar with the standard US layout +hidden partial alphanumeric_keys +xkb_symbols "def_qwerty" { + key { [ y, Y, endash ] }; + key { [ z, Z, greater ] }; +}; + +// def_dot: +// The Hungarian standard is the comma on the keypad not decimal dot, +// but programmers hate it +hidden partial keypad_keys +xkb_symbols "def_dot" { + key { [ KP_Delete, KP_Decimal ] }; +}; + + +// def_dead: +// Dead keys support part +hidden partial alphanumeric_keys +xkb_symbols "def_dead" { + key { [ 1, apostrophe, asciitilde, dead_tilde ] }; + key { [ 2, quotedbl, dead_caron, caron ] }; + key { [ 3, plus, asciicircum, dead_circumflex ] }; + key { [ 4, exclam, dead_breve, breve ] }; + key { [ 5, percent, dead_abovering, degree ] }; + key { [ 6, slash, dead_ogonek, ogonek ] }; + key { [ 7, equal, grave, dead_grave ] }; + key { [ 8, parenleft, dead_abovedot, abovedot ] }; + key { [ 9, parenright, dead_acute, acute ] }; + key { [ odiaeresis, Odiaeresis, dead_doubleacute, doubleacute ] }; + key { [ udiaeresis, Udiaeresis, dead_diaeresis, diaeresis ] }; + key { [ oacute, Oacute, dead_cedilla, cedilla ] }; +}; + +// def_nodead: +// Without dead keys support +hidden partial alphanumeric_keys +xkb_symbols "def_nodead" { + key { [ 1, apostrophe, asciitilde ] }; + key { [ 2, quotedbl, caron ] }; + key { [ 3, plus, asciicircum ] }; + key { [ 4, exclam, breve ] }; + key { [ 5, percent, degree ] }; + key { [ 6, slash, ogonek ] }; + key { [ 7, equal, grave ] }; + key { [ 8, parenleft, abovedot ] }; + key { [ 9, parenright, acute ] }; + key { [ odiaeresis, Odiaeresis, doubleacute ] }; + key { [ udiaeresis, Udiaeresis, diaeresis ] }; + key { [ oacute, Oacute, cedilla ] }; +}; + + +// def_common: +// The common part of all Hungarian layout above +hidden partial alphanumeric_keys +xkb_symbols "def_common" { + key { [ q, Q, backslash ] }; + key { [ w, W, bar ] }; + key { [ e, E, Adiaeresis ] }; + key { [ u, U, EuroSign ] }; + key { [ i, I, Iacute, iacute ] }; + key { [ o, O, doublelowquotemark ] }; + key { [ p, P, rightdoublequotemark ] }; + key { [ odoubleacute, Odoubleacute, division ] }; + key { [ uacute, Uacute, multiply ] }; + + key { [ a, A, adiaeresis, Adiaeresis ] }; + key { [ s, S, dstroke ] }; + key { [ d, D, Dstroke ] }; + key { [ f, F, bracketleft ] }; + key { [ g, G, bracketright ] }; + key { [ j, J, iacute, Iacute ] }; + key { [ k, K, lstroke ] }; + key { [ l, L, Lstroke ] }; + key { [ eacute, Eacute, dollar, cent ] }; + key { [ aacute, Aacute, ssharp, U1E9E ] }; + + key { [ udoubleacute, Udoubleacute, currency ] }; + + key { [ x, X, numbersign ] }; + key { [ c, C, ampersand ] }; + key { [ v, V, at ] }; + key { [ b, B, braceleft ] }; + key { [ n, N, braceright ] }; + key { [ m, M, less ] }; + key { [ comma, question, semicolon ] }; + key { [ period, colon, greater ] }; + key { [ minus, underscore, asterisk ] }; + +}; + +// EXTRAS: + +// Old Hungarian keyboard layouts. +// +// (C) 2013 Andras Tisza +// (C) 2017,2018,2020 Viktor Kovacs +// +// Permission is granted to anyone to use, distribute and modify +// this file in any way, provided that the above copyright notice +// is left intact and the author of the modification summarizes +// the changes in this header. +// +// This file is distributed without any expressed or implied warranty. +// +// Changes: +// 2013 - Planned Old Hungarian layout +// 2017 - Added Old Hungarian layout +// 2018 - Resolved several easy-of-use issues, added extra punctuation and quotation marks. +// 2020 - Added ligature-capable layout (with zero-width-joiner), added copyright, copyleft symbols. +// 2020 - Added ZWNJ key to “Old Hungarian (for ligatures)”, changed its ohu_lig id to oldhunlig. +// - Added “oldhun_magic_numpad” for both "Old Hungarian" layouts, as a specialised numpad. +// 2023 - Added decimal comma +// 2023 - Removed basic “Old Hungarian” layout (oldhun) in favor of its variant with ligatures (oldhunlig). +// 2024 - Added “oldhun_sk*” Old Hungarian layouts for Carpathian Highlands' users + +// Old Hungarian layout for ligatures +partial alphanumeric_keys +xkb_symbols "oldhunlig" { + name[Group1]="Old Hungarian (for ligatures)"; + include "hu(oldhun_base)" + include "hu(oldhun_lig)" + include "hu(oldhun_magic_numpad)" + include "level3(ralt_switch)" +}; + +// The base Old Hungarian keys +// In the remarks you can read characters displayed only Unicode point +hidden partial alphanumeric_keys +xkb_symbols "oldhun_base" { + key.type[Group1]="FOUR_LEVEL_ALPHABETIC"; + key {[ U10CCE, U10C8E, backslash ]}; +//Old-Hungarian gy, Gy + key {[ U10CF0, U10CB0 ]}; +//Old Hungarian zs, Zs + key {[ U10CC9, U10C89, U10CCA, U10C8A ]}; + //Old Hungarian e, E, close e, close E + key {[ U10CE2, U10CA2, U10CE3, U10CA3 ]}; +//Old Hungarian r, R, short r, short R + key {[ U10CE6, U10CA6, U10CF1, U10CB1 ]}; +//Old Hungarian t, T, ent-sharped sign,Ent-sharped sign + key {[ U10CEF, U10CAF ]}; +//Old Hungarian z, Z + key {[ U10CEA, U10CAA, U10CF2, U10CB2 ]}; +//Old Hungarian u, U, Old Hungarian us, Us + key {[ U10CD0, U10C90, U10CD1, U10C91 ]}; +//Old Hungarian i, I, ii, II + key {[ U10CDB, U10C9B ]}; +//Old Hungarian o, O + key {[ U10CE0, U10CA0 ]}; +//Old Hungarian p, P + key {[ U10CDF, U10C9F ]}; +//Old Hungarian oee, Oee + key {[ U10CEB, U10CAB, U10CD5, U10C95 ]}; +//Old Hungarian uu,Uu,unk,Unk + key {[ U10CC0, U10C80, U10CC3, U10C83 ]}; +//Old Hungarian a,A,amb,Amb + key {[ U10CE4, U10CA4, U10CE1, U10CA1 ]}; +//Old Hungarian s,S,emp,Emp + key {[ U10CC7, U10C87, U10CE7, U10CA7 ]}; +//Old Hungarian d,D, ent/ant/int, Ent/Ant/Int + key {[ U10CCC, U10C8C, bracketleft ]}; +//Old Hungarian f,F + key {[ U10CCD, U10C8D, bracketright ]}; +//Old Hungarian g, G + key {[ U10CCF, U10C8F, U10CE9, U10CA9 ]}; +//Old Hungarian h, H,ech, Ech + key {[ U10CD2, U10C92, backslash ]}; +//Old Hungarian j, J + key {[ U10CD3, U10C93, U10CD4, U10C94 ]}; +//Old Hungarian open k, open K, close k, close K + key {[ U10CD6, U10C96 ]}; +//Old Hungarian l, L + key {[ U10CCB, U10C8B ]}; +//Old Hungarian ee, EE + key {[ U10CC1, U10C81, U10CC8, U10C88 ]}; +//Old Hungarian aa, AA, and And + key {[ U10CEC, U10CAC ]}; +//Old Hungarian ue, Ue + key {[ U10CD7, U10C97, greater ]}; +//Old Hungarian ly, Ly + key {[ U10CE5, U10CA5, numbersign ]}; +//Old Hungarian sz, Sz + key {[ U10CC4, U10C84, U10CC5, U10C85 ]}; +//Old Hungarian c,C, enc, Enc + key {[ U10CEE, U10CAE, at ]}; +//Old Hungarian v,V + key {[ U10CC2, U10C82, braceleft ]}; +//Old Hungarian b, B + key {[ U10CD9, U10C99, braceright ]}; +//Old Hungarian n, N + key {[ U10CD8, U10C98, less ]}; +//Old Hungarian m, M + key {[ U2E41, U2E2E, U204F, comma ]}; +//reversed question mark,reversed semicolon, reversed comma + key {[ period, colon, greater ]}; + key {[ minus, underscore, asterisk ]}; + key {[ U10CD1, U10C91, less ]}; +//Old Hungarian ii,II +}; + +//Old Hungarian layout specialised keys +// In the remarks you can read characters displayed only Unicode point +hidden partial alphanumeric_keys +xkb_symbols "oldhun_origin" { + key.type[Group1]="FOUR_LEVEL_ALPHABETIC"; + key {[ section, U200F, U200E, 0 ]}; +//Right to left mark, left to right mark + key {[ U10CFA, apostrophe, U2E42, 1 ]}; +//Old Hungarian one, reversed 9 double low quotemark + key {[ U10CFB, quotedbl, U201F, 2 ]}; +//Old Hungarian five, reversed 9 double upper quotemark + key {[ U10CFC, plus, minus, 3 ]}; +//Old Hungarian ten + key {[ U10CFD, exclam, U203C, 4 ]}; +//Old Hungarian fifty,double exclam + key {[ U10CFE, percent, U2026, 5 ]}; +//Old Hungarian hundred, triple dot + key {[ U10CFF, slash, backslash, 6 ]}; +//Old Hungarian thousand + key {[ U10CC6, U10C86, equal, 7 ]}; +//Old Hungarian cs, Cs + key {[ U10CDA, U10C9A, parenleft, 8 ]}; +//Old Hungarian ny, Ny + key {[ U10CE8, U10CA8, parenright, 9 ]}; +//Old Hungarian ty, Ty + key {[ U10CDE, U10C9E, U10CDD, U10C9D ]}; +//Old Hungarian Rudimenta oe, Oe, Nikolsburg oe, Oe + key {[ U10CED, U10CAD, section ]}; +//Old Hungarian ue , Ue + key {[ U10CDC, U10C9C, copyright, U1F12F ]}; +//Old Hungarian oo, OO, copyleft +}; + +//Special section for "Old Hungarian (for ligatures)" layout +// In the remarks you can read characters displayed only Unicode point +hidden partial alphanumeric_keys +xkb_symbols "oldhun_lig" { + key.type[Group1]="FOUR_LEVEL_ALPHABETIC"; + key {[ U200D, U200F, U200C, 0 ]}; +//Zero-width-joiner,Right to left mark, Zero-width-non-joiner +//Zero-width-joiner and Zero-width-non-joiner are reqired for ligatures + key {[ U10CFA, apostrophe, U2E42, 1 ]}; +//Old Hungarian one, reversed 9 double low quotemark + key {[ U10CFB, quotedbl, U201F, 2 ]}; +//Old Hungarian five, reversed 9 double upper quotemark + key {[ U10CFC, plus, minus, 3 ]}; +//Old Hungarian ten + key {[ U10CFD, exclam, U203C, 4 ]}; +//Old Hungarian fifty,double exclam + key {[ U10CFE, percent, U2026, 5 ]}; +//Old Hungarian hundred, triple dot + key {[ U10CFF, slash, backslash, 6 ]}; +//Old Hungarian thousand + key {[ U10CC6, U10C86, equal, 7 ]}; +//Old Hungarian cs, Cs + key {[ U10CDA, U10C9A, parenleft, 8 ]}; +//Old Hungarian ny, Ny + key {[ U10CE8, U10CA8, parenright, 9 ]}; +//Old Hungarian ty, Ty + key {[ U10CDE, U10C9E, U10CDD, U10C9D ]}; +//Old Hungarian Rudimenta oe, Oe, Nikolsburg oe, Oe + key {[ U10CED, U10CAD, section ]}; +//Old Hungarian ue , Ue + key {[ U10CDC, U10C9C, copyright, U1F12F ]}; +//Old Hungarian oo, OO, copyleft +}; + +// Old Hungarian layouts for Carpathian Highlands' users +partial alphanumeric_keys +xkb_symbols "oldhun_sk_sh" { + name[Group1] = "Old Hungarian (Carpathian Highlands, S as Sh)"; + key.type[Group1] = "FOUR_LEVEL_ALPHABETIC"; + include "hu(ohu_sk_fullcaps_req)" + key.type[Group1] = "FOUR_LEVEL"; + include "hu(ohu_sk_nocaps_req)" + key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC"; + include "hu(ohu_sk_semicaps_req)" + include "hu(oldhun_magic_numpad)" + key.type[Group1] = "FOUR_LEVEL_ALPHABETIC"; + include "hu(SK_Sh)" + include "level3(ralt_switch)" + +}; + +partial alphanumeric_keys +xkb_symbols "oldhun_sk_sz" { + name[Group1] = "Old Hungarian (Carpathian Highlands, S as Sz)"; + key.type[Group1] = "FOUR_LEVEL_ALPHABETIC"; + include "hu(ohu_sk_fullcaps_req)" + key.type[Group1] = "FOUR_LEVEL"; + include "hu(ohu_sk_nocaps_req)" + key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC"; + include "hu(ohu_sk_semicaps_req)" + include "hu(oldhun_magic_numpad)" + key.type[Group1] = "FOUR_LEVEL_ALPHABETIC"; + include "hu(SK_Sz)" + include "level3(ralt_switch)" +}; + +hidden partial alphanumeric_keys +xkb_symbols "SK_Sh"{ + key { [ U10CE4, U10CA4, U10CE1, U10CA1 ] }; + // Old Hungarian small and capital S, Emp + +}; + +hidden partial alphanumeric_keys +xkb_symbols "SK_Sz"{ + key { [ U10CE5, U10CA5, U10CE1, U10CA1 ] }; + // Old Hungarian small and capital Sz, Emp + +}; + + +hidden partial alphanumeric_keys +xkb_symbols "ohu_sk_fullcaps_req"{ + key { [ plus, exclam, plus, 1 ] }; + key { [ U10CD7, U10C97, U10CFA, 2 ] }; + // Old Hungarian small and capital Ly, Old Hungarian number ONE + key { [ U10CE4, U10CA4, U10CFB, 3 ] }; + // Old Hungarian small and capital S, Old Hungarian number FIVE + key { [ U10CC6, U10C86, U10CFC, 4 ] }; + // Old Hungarian small and capital Cs, Old Hungarian number TEN + key { [ U10CE8, U10CA8, U10CFD, 5 ]}; + // Old Hungarian small and capital Ty, Old Hungarian number FIFTY + key { [ U10CF0, U10CB0, U10CFE, 6 ] }; + // Old Hungarian small and capital Zs, Old Hungarian number HUNDRED + key { [ U10CEC, U10CAC, U10CFF, 7] }; + // Old Hungarian small and capital NIKOLSBURG UE, Old Hungarian nomber THOUSAND + key { [ U10CC1, U10C81, apostrophe, 8]}; + // Old Hungarian small and capital AA + key { [ U10CD1, U10C91, braceleft, 9] }; + // Old Hungarian small and capital II + key { [ U10CCB, U10C8B, braceright, 0] }; + // Old Hungarian small and capital EE + key { [ U10CC9, U10C89, U10CCA, U10C8A ] }; + //Old Hubgarian small and capital E, close E + key { [ U10CE2, U10CA2, U10CE3, U10CA3 ] }; + // Old Hungarian small and capital letter R, short R + key { [ U10CE6, U10CA6, U10CF1, U10CB1 ] }; + //Old Hungarian small and capital letter T, Ent shaped sign + key { [ U10CEA, U10CAA, U10CF2, U10CB2 ] }; + //Old Hungarian small and capital letter U, US + key { [ U10CD0, U10C90, U10CD1, U10C91 ] }; + //Old Hungarian small and capital letter I,II + key { [ U10CEB, U10CAB, U10CD5, U10C95] }; + //Old Hungarian small and capital letter UU, Unk + key { [ U10CDE, U10C9E, U10CDD, U10C9D ] }; + //Old Hungarian small and capital letter Rudimenta OE,Nikolsburg OE + key { [ U10CC0, U10C80, U10CC3, U10C83 ] }; + //Old Hungarian small and capital letter A, Amb + key { [ U10CC7, U10C87, U10CE7, U10CA7 ] }; + //Old Hungarian small and capital letter D, Ent/Ant/int + key { [ U10CCF, U10C8F, U10CE9, U10CA9 ] }; + //Old Hungarian small and capital letter H, Ch + key { [ U10CD2, U10C92, U10CD7, U10C97] }; + //Old Hungarian small and capital letter J, Ly + key { [ U10CD6, U10C96, U10CD7, U10C97 ] }; + //Old Hungarian small and capital letter L, Ly + key { [ U10CDC, U10C9C, U10CC8, U10C88 ] }; + //Old Hungarian small and capital letter OO, And + key { [ U10CEC, U10CAC, U10CC8, U10C88]}; + //Old Hungarian small and capital letter Rudimenta UE, AMB + key { [ U10CC4, U10C84, U10CC5, U10C85 ] }; + //Old Hungarian small and capital letter C, NC + key { [ U10CD3, U10C93, U10CD4, U10C94] }; + //Old Hungarian small and capital letter eK,aK + +}; + +hidden partial alphanumeric_keys +xkb_symbols "ohu_sk_nocaps_req"{ + key { [ U200D, U200F, U200E, NoSymbol] }; + //ZWJ, RTL, LTR + key { [ equal, percent ,exclam, U2E42 ]}; + key { [ U204F, U204F, quotedbl, U201F ] }; + key { [ backslash, bar, slash, NoSymbol ] }; + key { [ U2E41, U2E2E, U204F, comma ] }; + // reversed comma, reversed question mark, reversed semicolon + key { [ period, colon, greater, less ] }; + key { [ minus, underscore, asterisk, comma ] }; + +}; + +hidden partial alphanumeric_keys +xkb_symbols "ohu_sk_semicaps_req"{ + key { [ U10CDF,U10C9F, apostrophe, quotedbl ] }; + //Old Hungarian small and capital letter OEE + key { [ U10CDA, U10C9A, backslash, parenright ] }; + //Old Hungarian small and capital letter Ny + key { [ U10CCE, U10C8E, backslash, slash ] }; + //Old Hungarian small and capital Gy + key { [ U10CF0, U10CB0, bar, NoSymbol ] }; + //Old Hungarian small and capital Zs + key { [ U10CEF, U10CAF, NoSymbol, NoSymbol] }; + //Old Hungarian small and capital letter Z + key { [ U10CDB, U10C9B, bracketright, multiply ] }; + //Old Hungarian small and capital letter O + key { [ U10CE0, U10CA0, bracketleft, division ] }; + //Old Hungarian small and capital letter P + key { [ U10CCC, U10C8C, bracketleft, bracketright ] }; + //Old Hungaran small and capital letter F + key { [ U10CCD, U10C8D, bracketright, bracketleft ] }; + //Old Hungarian small and capital letter G + key { [ U10CE5, U10CA5, numbersign, ampersand ] }; + //Old Hungarian small and capital letter Sz + key { [ U10CEE, U10CAE, at, NoSymbol ] }; + //Old Hungarian small and capital letter V + key { [ U10CC2, U10C82, braceleft, braceright ] }; + //Old Hungarian small and capital letter B + key { [ U10CD9, U10C99, braceright, braceleft ] }; + //Old Hungarian small and capital letter N + key { [ U10CD8, U10C98, asciicircum, NoSymbol ] }; + //Old Hungarian small and capital letter M + +}; + + +// Numpad for Old Hungarian layouts +// In the remarks you can read characters displayed only Unicode point +hidden partial keypad_keys +xkb_symbols "oldhun_magic_numpad" { + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD"; + key {[ Num_Lock, Num_Lock, Num_Lock, Num_Lock ]}; + key {[ KP_Insert, KP_0, U200C, U200C ]}; +//Zero-width-non-joiner + key {[ KP_Home, KP_7, U10CFA, U10CFA ]}; +//Old Hungarian number one + key {[ KP_Up, KP_8, U10CFB, U10CFB ]}; +//Old Hungarian number five + key {[ KP_Prior, KP_9, U10CFC, U10CFC ]}; +//Old Hungarian number ten + key {[ KP_Left, KP_4, U10CFD, U10CFD ]}; +//Old Hungarian number fifty + key {[ KP_Begin, KP_5, U10CFE, U10CFE ]}; +//Old Hungarian number hundred + key {[ KP_Right, KP_6, U10CFF, U10CFF ]}; +//Old Hungarian number thousand + key {[ KP_End, KP_1, U200F, U200F ]}; +//Right-to-left mark + key {[ KP_Down, KP_2, U200D, U200D ]}; +//Zero-width-joiner + key {[ KP_Next, KP_3, U200E, U200E ]}; +//Left-to-right mark + key {[ KP_Enter, KP_Enter, KP_Enter, KP_Enter ]}; + key {[ KP_Equal, KP_Equal, KP_Equal, KP_Equal ]}; + key {[ KP_Delete, KP_Separator, KP_Delete, KP_Separator ]}; + key {[ KP_Separator, KP_Separator, KP_Separator, KP_Separator ]}; + key {[ KP_Divide, KP_Divide, KP_Divide, KP_Divide ]}; + key {[ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply ]}; + key {[ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract ]}; + key {[ KP_Add, KP_Add, KP_Add, KP_Add ]}; +}; + +// English (US layout with Hungarian characters) +// Hungarian characters are included on right alt layer +partial alphanumeric_keys +xkb_symbols "us" { + include "us" + name[Group1] = "Hungarian (US)"; + + key {[ e, E, eacute, Eacute ]}; // e E é É + key {[ t, T, udoubleacute, Udoubleacute ]}; // t T ű Ű + key {[ y, Y, udiaeresis, Udiaeresis ]}; // y Y ü Ü + key {[ u, U, uacute, Uacute ]}; // u U ú Ú + key {[ i, I, iacute, Iacute ]}; // i I í Í + key {[ o, O, oacute, Oacute ]}; // o O ó Ó + key {[ p, P, odiaeresis, Odiaeresis ]}; // p P ö Ö + key {[ bracketleft, braceleft, odoubleacute, Odoubleacute ]}; // [ { ő Ő + + key {[ a, A, aacute, Aacute ]}; // a A á Á + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/id b/nixos/xkb/symbols/id new file mode 100644 index 00000000..5ed99263 --- /dev/null +++ b/nixos/xkb/symbols/id @@ -0,0 +1,222 @@ +// Keyboard layouts for Indonesia. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "us(basic)" + + name[Group1]= "Indonesian (Latin)"; +}; + +// A layout for the Javanese script, usable for +// Javanese, Sundanese, Madurese, and others. +partial alphanumeric_keys +xkb_symbols "javanese" { + name[Group1]= "Javanese"; + + key {[ UA9DE, UA9DF ]}; // pada tirta tumetes, PADA ISEN-ISEN + key {[ UA9D1, UA9C6 ]}; // PADA WINDU + key {[ UA9D2, UA9CF ]}; // PANGRANGKEP + key {[ UA9D3, UA9C3 ]}; // ANDAP + key {[ UA9D4, UA9C4 ]}; // MADYA + key {[ UA9D5, UA9C5 ]}; // LUHUR + key {[ UA9D6, UA9BF ]}; // CAKRA (ra) + key {[ UA9D7, UA9BD ]}; // KERET (rae) + key {[ UA9D8, UA9B3 ]}; // CECAK TELU (nukta) + key {[ UA9D9, UA9C1 ]}; // Left RERENGAN + key {[ UA9D0, UA9C2 ]}; // Right RERENGAN + key {[ UA98E, underscore ]}; // o + key {[ UA989, UA98B ]}; // cerek (rae), NGA LELET RASWADI (loe) + + key {[ UA990, UA9B0 ]}; // ka sasak (qa), SA MAHAPRANA (ssa) + key {[ UA9AE, UA98D ]}; // wa, AI + key {[ UA9BC, UA98C ]}; // pepet (ae), E + key {[ UA9AB, UA9AC ]}; // ra, RA AGUNG + key {[ UA9A0, UA9A1 ]}; // ta, TA MURDA (tha) + key {[ UA9AA, UA9BE ]}; // ya, PENGKAL + key {[ UA9B8, UA9B9 ]}; // suku (u), SUKU MENDUT (uu) + key {[ UA9B6, UA9B7 ]}; // wulu (i), WULU MELIK (ii) + key {[ UA9BA, UA9B4 ]}; // taling (e), TARUNG (aa) + key {[ UA9A5, UA9A6 ]}; // pa, PA MURDA (pha) + key {[ UA9CA, UA9CB ]}; // pada adeg, PADA ADEG ADEG + key {[ UA9CC, UA9CD ]}; // pada piseleh, Turned PADA PISELEH + + key {[ UA9BB, UA984 ]}; // ai, A + key {[ UA9B1, UA9AF ]}; // sa, SA MURDA (sha) + key {[ UA9A2, UA9A3 ]}; // da, DA MAHAPRANA (dha) + key {[ UA99D, UA99E ]}; // dda, DDA MAHAPRANA (ddha) + key {[ UA992, UA993 ]}; // ga, GA MURDA (gha) + key {[ UA9B2, UA983 ]}; // ha, WIGNYAN + key {[ UA997, UA999 ]}; // ja, JA MAHAPRANA (jha) + key {[ UA98F, UA991 ]}; // ka, KA MURDA (kha) + key {[ UA9AD, UA98A ]}; // la, NGA LELET + key {[ UA9C7, UA988 ]}; // pada pangkat, U + key {[ UA9B5, quotedbl ]}; // tolong (o) + + key {[ UA9C0, UA985 ]}; // pangkon, I KAWI + + key {[ bar, brokenbar ]}; + + key {[ UA994, UA981 ]}; // nga, CECAK (ng) + key {[ UA99A, UA998 ]}; // nya, NYA MURDA (jnya) + key {[ UA995, UA996 ]}; // ca, CA MURDA (cha) + key {[ UA99B, UA99C ]}; // tta, TTA MAHAPRANA (ttha) + key {[ UA9A7, UA9A8 ]}; // ba, BA MURDA (bha) + key {[ UA9A4, UA99F ]}; // na, NA MURDA (nna) + key {[ UA9A9, UA980 ]}; // ma, CANDRABINDU + key {[ UA9C8, UA986 ]}; // lingsa, I + key {[ UA9C9, UA987 ]}; // lungsi, II + key {[ UA982, question ]}; // layar (r) +}; + +// +// Default phonetic layout for Arab Melayu script. +// +partial alphanumeric_keys +xkb_symbols "melayu-phonetic" { + + name[Group1]= "Indonesian (Arab Melayu, phonetic)"; + + key {[ grave, asciitilde, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_1, exclam, 1, VoidSymbol ]}; + key {[ Arabic_2, at, 2, VoidSymbol ]}; + key {[ Arabic_3, numbersign, 3, VoidSymbol ]}; + key {[ Arabic_4, VoidSymbol, 4, dollar ]}; + key {[ Arabic_5, Arabic_percent, 5, percent ]}; + key {[ Arabic_6, asciicircum, 6, VoidSymbol ]}; + key {[ Arabic_7, ampersand, 7, VoidSymbol ]}; + key {[ Arabic_8, asterisk, 8, VoidSymbol ]}; + key {[ Arabic_9, parenright, 9, VoidSymbol ]}; + key {[ Arabic_0, parenleft, 0, VoidSymbol ]}; + key {[ minus, Arabic_tatweel, VoidSymbol, underscore ]}; + key {[ equal, plus, VoidSymbol, VoidSymbol ]}; + + key {[ Arabic_qaf, Arabic_maddaonalef, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_waw, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_alefmaksura, Arabic_ain, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_ra, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_teh, Arabic_tehmarbuta, Arabic_tah, VoidSymbol ]}; + key {[ Arabic_yeh, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_hamzaonwaw, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_hamzaonyeh, Arabic_hamzaunderalef, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_hamza, U0674, VoidSymbol, VoidSymbol ]}; // high_hamza + key {[ Arabic_veh, VoidSymbol, VoidSymbol, VoidSymbol ]}; // p + key {[ bracketright, braceright, VoidSymbol, VoidSymbol ]}; + key {[ bracketleft, braceleft, VoidSymbol, VoidSymbol ]}; + key {[ backslash, bar, VoidSymbol, VoidSymbol ]}; + + key {[ Arabic_alef, Arabic_hamzaonalef, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_seen, Arabic_sheen, Arabic_sad, Arabic_theh ]}; + key {[ Arabic_dal, VoidSymbol, Arabic_dad, VoidSymbol ]}; + key {[ Arabic_feh, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ U0762, U06A0, Arabic_ghain, U06AF ]}; // g, ng, gaf (Tausug) + key {[ Arabic_ha, Arabic_hah, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_jeem, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_keheh, Arabic_kaf, VoidSymbol, VoidSymbol ]}; // k + key {[ Arabic_lam, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_semicolon, colon, semicolon, VoidSymbol ]}; + key {[ guillemotleft, guillemotright, apostrophe, quotedbl ]}; + + key {[ bar, brokenbar, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_zain, Arabic_thal, Arabic_zah, VoidSymbol ]}; + key {[ Arabic_khah, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_tcheh, VoidSymbol, VoidSymbol, VoidSymbol ]}; // c + key {[ Arabic_theh, VoidSymbol, VoidSymbol, U06CF ]}; // waw_with_dot_above (Malay) + key {[ Arabic_beh, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_noon, U06BD, VoidSymbol, VoidSymbol ]}; // ny + key {[ Arabic_meem, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_comma, greater, comma, U066B ]}; // decimal_separator + key {[ period, less, Arabic_fullstop, U066C ]}; // thousands_separator + key {[ slash, Arabic_question_mark, U060D, question ]}; // date_separator + + include "level3(ralt_switch)" +}; + +// +// Extended phonetic layout for Arab Melayu, with extra, non-standard characters. +// +partial alphanumeric_keys +xkb_symbols "melayu-phoneticx" { + + include "id(melayu-phonetic)" + name[Group1]= "Indonesian (Arab Melayu, extended phonetic)"; + + key {[ NoSymbol, NoSymbol, NoSymbol, Arabic_superscript_alef ]}; + key {[ NoSymbol, NoSymbol, NoSymbol, UFD3E ]}; // ornate_left + key {[ NoSymbol, NoSymbol, NoSymbol, UFD3F ]}; // ornate_right + + key {[ NoSymbol, NoSymbol, Arabic_shadda, NoSymbol ]}; + key {[ NoSymbol, NoSymbol, U08E6, U08E4 ]}; // curly_kasra, curly_fatha + key {[ NoSymbol, NoSymbol, Arabic_damma, Arabic_dammatan ]}; + key {[ NoSymbol, NoSymbol, Arabic_kasra, Arabic_kasratan ]}; + key {[ NoSymbol, NoSymbol, U065D, NoSymbol ]}; // reversed_damma + + key {[ NoSymbol, NoSymbol, Arabic_fatha, Arabic_fathatan ]}; + key {[ NoSymbol, NoSymbol, U08F8, NoSymbol ]}; // right_arrowhead_above + + key {[ NoSymbol, NoSymbol, U065B, U065C ]}; // inverted_small_v_above, dot_below + key {[ NoSymbol, NoSymbol, Arabic_sukun, U06E1 ]}; // small_high_dotless_head_of_khah +}; + +// +// Phonetic layout for Pegon script. +// +partial alphanumeric_keys +xkb_symbols "pegon-phonetic" { + + name[Group1]= "Indonesian (Arab Pegon, phonetic)"; + + key {[ grave, asciitilde, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_1, exclam, 1, VoidSymbol ]}; + key {[ Arabic_2, at, 2, VoidSymbol ]}; + key {[ Arabic_3, numbersign, 3, VoidSymbol ]}; + key {[ Arabic_4, VoidSymbol, 4, dollar ]}; + key {[ Arabic_5, Arabic_percent, 5, percent ]}; + key {[ Arabic_6, asciicircum, 6, VoidSymbol ]}; + key {[ Arabic_7, ampersand, 7, VoidSymbol ]}; + key {[ Arabic_8, asterisk, 8, VoidSymbol ]}; + key {[ Arabic_9, parenright, 9, VoidSymbol ]}; + key {[ Arabic_0, parenleft, 0, VoidSymbol ]}; + key {[ minus, Arabic_tatweel, VoidSymbol, underscore ]}; + key {[ equal, plus, VoidSymbol, VoidSymbol ]}; + + key {[ Arabic_qaf, Arabic_maddaonalef, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_waw, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_alefmaksura, Arabic_ain, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_ra, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_teh, U069F, Arabic_tah, Arabic_tehmarbuta ]}; // th + key {[ Arabic_yeh, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_hamzaonwaw, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_hamzaonyeh, Arabic_hamzaunderalef, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_hamza, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_veh, VoidSymbol, VoidSymbol, VoidSymbol ]}; // p + key {[ bracketright, braceright, VoidSymbol, VoidSymbol ]}; + key {[ bracketleft, braceleft, VoidSymbol, VoidSymbol ]}; + key {[ backslash, bar, VoidSymbol, VoidSymbol ]}; + + key {[ Arabic_alef, Arabic_hamzaonalef, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_seen, Arabic_sheen, Arabic_sad, Arabic_theh ]}; + key {[ Arabic_dal, U068E, Arabic_dad, VoidSymbol ]}; // dh + key {[ Arabic_feh, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ U06AE, U06A0, Arabic_ghain, VoidSymbol ]}; // g, ng + key {[ Arabic_ha, Arabic_hah, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_jeem, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_kaf, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_lam, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_semicolon, colon, semicolon, VoidSymbol ]}; + key {[ guillemotleft, guillemotright, apostrophe, quotedbl ]}; + + key {[ bar, brokenbar, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_zain, Arabic_thal, Arabic_zah, VoidSymbol ]}; + key {[ Arabic_khah, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_tcheh, VoidSymbol, VoidSymbol, VoidSymbol ]}; // c + key {[ Arabic_theh, VoidSymbol, VoidSymbol, U06CF ]}; // v + key {[ Arabic_beh, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_noon, U06D1, VoidSymbol, VoidSymbol ]}; // ny + key {[ Arabic_meem, VoidSymbol, VoidSymbol, VoidSymbol ]}; + key {[ Arabic_comma, greater, comma, U066B ]}; // decimal_separator + key {[ period, less, Arabic_fullstop, U066C ]}; // thousands_separator + key {[ slash, Arabic_question_mark, U060D, question ]}; // date_separator + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/ie b/nixos/xkb/symbols/ie new file mode 100644 index 00000000..200d7980 --- /dev/null +++ b/nixos/xkb/symbols/ie @@ -0,0 +1,328 @@ +// Keyboard layouts for Ireland. + +// Support for Irish (old and new orthography), English, and Ogham. +// Original author: Seamus O Ciardhuain , 2002. + +// The general idea is to provide the characters in ISO 8859-1, +// ISO 8859-14, ISO 8859-15, CP1252 and "Extended Latin-8". +// However, not all are accessible directly because there aren't +// enough keys; some need dead keys to access them, others the +// "Multi_key" compose sequences. + +// The basic layout is a modern keyboard, but dotted consonants are +// accessible using a dead key (AltGr+H or AltGr+W). +// If a proper Clo Gaelach keyboard is needed, then use the layout +// defined below as ie(CloGaelach), which gives dotted consonants +// without use of a dead key. + + +default partial alphanumeric_keys +xkb_symbols "basic" { + + // Modern keyboard for Irish and English + // - acute-accented vowels as AltGr+vowel and AltGr+Shift+vowel + // - euro currency sign as AltGr+4 + // - Comhartha Agus (Tironian Sign Et) as AltGr+Shift+7 + // - non-breaking space as AltGr+Space and AltGr+Shift+Space + // - matches hardware (keys and engraved symbols) for Irish keyboards + + name[Group1] = "Irish"; + + key {[ grave, notsign, brokenbar, NoSymbol ]}; + key {[ 1, exclam, exclamdown, onesuperior ]}; + key {[ 2, quotedbl, trademark, twosuperior ]}; + key {[ 3, sterling, copyright, threesuperior ]}; + key {[ 4, dollar, EuroSign, cent ]}; + key {[ 5, percent, section, dagger ]}; + key {[ 6, asciicircum, dead_circumflex, permille ]}; + key {[ 7, ampersand, paragraph, U204A ]}; // Tironian Et + key {[ 8, asterisk, dead_diaeresis, enfilledcircbullet ]}; + key {[ 9, parenleft, ordfeminine, periodcentered ]}; + key {[ 0, parenright, masculine, degree ]}; + key {[ minus, underscore, endash, emdash ]}; + key {[ equal, plus, notequal, plusminus ]}; + + key {[ q, Q, oe, OE ]}; + key {[ w, W, dead_abovedot, dead_abovedot ]}; + key {[ e, E, eacute, Eacute ]}; + key {[ r, R, registered, permille ]}; + key {[ t, T, thorn, THORN ]}; + key {[ y, Y, yen, mu ]}; + key {[ u, U, uacute, Uacute ]}; + key {[ i, I, iacute, Iacute ]}; + key {[ o, O, oacute, Oacute ]}; + key {[ p, P, singlelowquotemark, NoSymbol ]}; + key {[ bracketleft, braceleft, leftdoublequotemark, rightdoublequotemark ]}; + key {[ bracketright, braceright, leftsinglequotemark, rightsinglequotemark ]}; + + key {[ a, A, aacute, Aacute ]}; + key {[ s, S, ssharp, U1E9E ]}; // ß ẞ + key {[ d, D, eth, ETH ]}; + key {[ f, F, function, NoSymbol ]}; + key {[ g, G, copyright, NoSymbol ]}; + key {[ h, H, dead_abovedot, dead_abovedot ]}; + key {[ j, J, idotless, onequarter ]}; + key {[ k, K, dead_abovering, onehalf ]}; + key {[ l, L, acute, threequarters ]}; + key {[ semicolon, colon, ellipsis, doubledagger ]}; + key {[ apostrophe, at, ae, AE ]}; + key {[ numbersign, asciitilde, guillemotleft, guillemotright ]}; + + key {[ backslash, bar, dead_grave, dead_acute ]}; + key {[ z, Z, leftanglebracket, rightanglebracket ]}; + key {[ x, X, multiply, approximate ]}; + key {[ c, C, dead_cedilla, cedilla ]}; + key {[ v, V, dead_caron, NoSymbol ]}; + key {[ b, B, diaeresis, NoSymbol ]}; + key {[ n, N, dead_tilde, NoSymbol ]}; + key {[ m, M, macron, NoSymbol ]}; + key {[ comma, less, lessthanequal, doublelowquotemark ]}; + key {[ period, greater, greaterthanequal, singlelowquotemark ]}; + key {[ slash, question, division, questiondown ]}; + + key {[ space, space, nobreakspace, nobreakspace ]}; + + include "level3(ralt_switch)" + + include "compose(rwin)" +}; + +partial alphanumeric_keys +xkb_symbols "CloGaelach" { + + // Adds support for Clo Gaelach (old orthography for Irish). + // Changes from "basic": + // - dotted consonants as AltGr+consonant or AltGr+Shift+consonant (TPSDFGCBM) + // - long lowercase r as AltGr+R + // - long lowercase s as AltGr+Z + // - long lowercase s dotted as AltGr+Shift+Z + // - some symbols moved around to retain them + // - several characters unlikely to be used are lost + // The long letters are needed only where the font provides + // both the long and short forms as different glyphs. + + include "ie(basic)" + + name[Group1] = "CloGaelach"; + + key {[ grave, notsign, brokenbar, ssharp ]}; + key {[ r, R, U027C, registered ]}; // long r + key {[ t, T, tabovedot, Tabovedot ]}; + key {[ p, P, pabovedot, Pabovedot ]}; + + key {[ s, S, sabovedot, Sabovedot ]}; + key {[ d, D, dabovedot, Dabovedot ]}; + key {[ f, F, fabovedot, Fabovedot ]}; + key {[ g, G, gabovedot, Gabovedot ]}; + + key {[ z, Z, U017F, U1E9B ]}; // long s, long s dot + key {[ c, C, cabovedot, Cabovedot ]}; + key {[ b, B, babovedot, Babovedot ]}; + key {[ m, M, mabovedot, Mabovedot ]}; + + key {[ backslash, bar, dead_grave, dead_cedilla ]}; +}; + +partial alphanumeric_keys +xkb_symbols "UnicodeExpert" { + + // This should eventually be a "Unicode Expert" layout like the Mac one. + + name[Group1] = "Irish (UnicodeExpert)"; + + key {[ grave, notsign, brokenbar, brokenbar ]}; + key {[ 1, exclam, NoSymbol, NoSymbol ]}; + key {[ 2, quotedbl, dead_doubleacute, dead_doubleacute ]}; + key {[ 3, sterling, NoSymbol, NoSymbol ]}; + key {[ 4, dollar, EuroSign, EuroSign ]}; + key {[ 5, percent, NoSymbol, NoSymbol ]}; + key {[ 6, asciicircum, dead_circumflex, dead_circumflex ]}; + key {[ 7, ampersand, U204A, U204A ]}; // Tironian Et + key {[ 8, asterisk, dead_abovering, dead_abovering ]}; + key {[ 9, parenleft, dead_breve, dead_breve ]}; + key {[ 0, parenright, dead_ogonek, dead_ogonek ]}; + key {[ minus, underscore, dead_macron, dead_macron ]}; + key {[ equal, plus, NoSymbol, NoSymbol ]}; + + key {[ q, Q, NoSymbol, NoSymbol ]}; + key {[ w, W, NoSymbol, NoSymbol ]}; + key {[ e, E, eacute, Eacute ]}; + key {[ r, R, U027C, U027C ]}; // long r + key {[ t, T, NoSymbol, NoSymbol ]}; + key {[ y, Y, NoSymbol, NoSymbol ]}; + key {[ u, U, uacute, Uacute ]}; + key {[ i, I, iacute, Iacute ]}; + key {[ o, O, oacute, Oacute ]}; + key {[ p, P, NoSymbol, NoSymbol ]}; + key {[ bracketleft, braceleft, dead_hook, dead_hook ]}; + key {[ bracketright, braceright, dead_horn, dead_horn ]}; + + key {[ a, A, aacute, Aacute ]}; + key {[ s, S, NoSymbol, NoSymbol ]}; + key {[ d, D, NoSymbol, NoSymbol ]}; + key {[ f, F, NoSymbol, NoSymbol ]}; + key {[ g, G, NoSymbol, NoSymbol ]}; + key {[ h, H, dead_abovedot, dead_abovedot ]}; + key {[ j, J, NoSymbol, NoSymbol ]}; + key {[ k, K, NoSymbol, NoSymbol ]}; + key {[ l, L, NoSymbol, NoSymbol ]}; + key {[ semicolon, colon, dead_diaeresis, dead_diaeresis ]}; + key {[ apostrophe, at, dead_acute, dead_acute ]}; + key {[ numbersign, asciitilde, dead_tilde, dead_tilde ]}; + + key {[ backslash, bar, dead_grave, dead_grave ]}; + key {[ z, Z, U017F, U1E9B ]}; // long s, long s dot + key {[ x, X, NoSymbol, NoSymbol ]}; + key {[ c, C, NoSymbol, NoSymbol ]}; + key {[ v, V, dead_caron, dead_caron ]}; + key {[ b, B, NoSymbol, NoSymbol ]}; + key {[ n, N, NoSymbol, NoSymbol ]}; + key {[ m, M, NoSymbol, NoSymbol ]}; + key {[ comma, less, dead_cedilla, dead_cedilla ]}; + key {[ period, greater, dead_abovedot, dead_abovedot ]}; + key {[ slash, question, dead_belowdot, dead_belowdot ]}; + + key {[ space, space, space, nobreakspace ]}; + + include "level3(ralt_switch)" + + include "compose(rwin)" +}; + +partial alphanumeric_keys +xkb_symbols "ogam" { + + // Ogham keyboard layout as recommended in I.S. 434:1999. + + name[Group1] = "Ogham"; + + key.type[Group1] = "ONE_LEVEL"; + + key {[ U169C ]}; // OGHAM REVERSED FEATHER MARK + + // Top row: QWERTYUIOP + key {[ U168A ]}; // OGHAM LETTER CEIRT + key {[ U1695 ]}; // OGHAM LETTER EABHADH + key {[ U1693 ]}; // OGHAM LETTER EADHADH + key {[ U168F ]}; // OGHAM LETTER RUIS + key {[ U1688 ]}; // OGHAM LETTER TINNE + key {[ U1698 ]}; // OGHAM LETTER IFIN + key {[ U1692 ]}; // OGHAM LETTER UR + key {[ U1694 ]}; // OGHAM LETTER IODHADH + key {[ U1691 ]}; // OGHAM LETTER ONN + key {[ U169A ]}; // OGHAM LETTER PEITH + + // Middle row: ASDFGHJKL + key {[ U1690 ]}; // OGHAM LETTER AILM + key {[ U1684 ]}; // OGHAM LETTER SAIL + key {[ U1687 ]}; // OGHAM LETTER DAIR + key {[ U1683 ]}; // OGHAM LETTER FEARN + key {[ U168C ]}; // OGHAM LETTER GORT + key {[ U1686 ]}; // OGHAM LETTER UATH + key {[ U1697 ]}; // OGHAM LETTER UILLEANN + key {[ U1696 ]}; // OGHAM LETTER OR + key {[ U1682 ]}; // OGHAM LETTER LUIS + + key {[ U1680 ]}; // OGHAM SPACE MARK + + key {[ U169B, U169C ], type[group1]="TWO_LEVEL" }; + // OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK + // Bottom row: ZXCVBNM + key {[ U168E ]}; // OGHAM LETTER STRAIF + key {[ U1699 ]}; // OGHAM LETTER EAMHANCHOLL + key {[ U1689 ]}; // OGHAM LETTER COLL + key {[ U168D ]}; // OGHAM LETTER NGEADAL + key {[ U1681 ]}; // OGHAM LETTER BEITH + key {[ U1685 ]}; // OGHAM LETTER NION + key {[ U168B ]}; // OGHAM LETTER MUIN + + // As an extension because and may not be + // available or sensible. These are also a bit more + // intuitive on a standard Irish keyboard. + key {[ U169C ]}; // OGHAM REVERSED FEATHER MARK + key {[ U169B ]}; // OGHAM FEATHER MARK + key {[ U1680 ]}; // OGHAM SPACE MARK + + key {[ space ]}; + + include "compose(rwin)" +}; + +partial alphanumeric_keys +xkb_symbols "ogam_is434" { + + // This has the full layout of IS434 with an Irish QWERTY keyboard, + // and the Ogham characters accessed when CAPS LOCK is on. + + name[Group1] = "Ogham (IS434)"; + + key.type[Group1] = "THREE_LEVEL"; + + key {[ grave, notsign, U169C ]}; // OGHAM REVERSED FEATHER MARK + + key {[ 1, exclam ], type[group1]="TWO_LEVEL" }; + key {[ 2, quotedbl ], type[group1]="TWO_LEVEL" }; + key {[ 3, sterling ], type[group1]="TWO_LEVEL" }; + key {[ 4, dollar, EuroSign ]}; + key {[ 5, percent ], type[group1]="TWO_LEVEL" }; + key {[ 6, asciicircum ], type[group1]="TWO_LEVEL" }; + key {[ 7, ampersand, U204A ]}; // Tironian Et + key {[ 8, asterisk ], type[group1]="TWO_LEVEL" }; + key {[ 9, parenleft ], type[group1]="TWO_LEVEL" }; + key {[ 0, parenright ], type[group1]="TWO_LEVEL" }; + key {[ minus, underscore ], type[group1]="TWO_LEVEL" }; + key {[ equal, plus ], type[group1]="TWO_LEVEL" }; + + key {[ q, Q, U168A ]}; // OGHAM LETTER CEIRT + key {[ w, W, U1695 ]}; // OGHAM LETTER EABHADH + key {[ e, E, U1693 ]}; // OGHAM LETTER EADHADH + key {[ r, R, U168F ]}; // OGHAM LETTER RUIS + key {[ t, T, U1688 ]}; // OGHAM LETTER TINNE + key {[ y, Y, U1698 ]}; // OGHAM LETTER IFIN + key {[ u, U, U1692 ]}; // OGHAM LETTER UR + key {[ i, I, U1694 ]}; // OGHAM LETTER IODHADH + key {[ o, O, U1691 ]}; // OGHAM LETTER ONN + key {[ p, P, U169A ]}; // OGHAM LETTER PEITH + + key {[ a, A, U1690 ]}; // OGHAM LETTER AILM + key {[ s, S, U1684 ]}; // OGHAM LETTER SAIL + key {[ d, D, U1687 ]}; // OGHAM LETTER DAIR + key {[ f, F, U1683 ]}; // OGHAM LETTER FEARN + key {[ g, G, U168C ]}; // OGHAM LETTER GORT + key {[ h, H, U1686 ]}; // OGHAM LETTER UATH + key {[ j, J, U1697 ]}; // OGHAM LETTER UILLEANN + key {[ k, K, U1696 ]}; // OGHAM LETTER OR + key {[ l, L, U1682 ]}; // OGHAM LETTER LUIS + + key {[ numbersign, asciitilde, U1680 ]}; // OGHAM SPACE MARK + + key {[ backslash, bar, U169B, U169C ], type[group1] = "FOUR_LEVEL_ALPHABETIC" }; + // OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK + + key {[ z, Z, U168E ]}; // OGHAM LETTER STRAIF + key {[ x, X, U1699 ]}; // OGHAM LETTER EAMHANCHOLL + key {[ c, C, U1689 ]}; // OGHAM LETTER COLL + key {[ v, V, U168D ]}; // OGHAM LETTER NGEADAL + key {[ b, B, U1681 ]}; // OGHAM LETTER BEITH + key {[ n, N, U1685 ]}; // OGHAM LETTER NION + key {[ m, M, U168B ]}; // OGHAM LETTER MUIN + + key {[ comma, less, U169C ]}; // OGHAM REVERSED FEATHER MARK + key {[ period, greater, U169B ]}; // OGHAM FEATHER MARK + key {[ slash, question, U1680 ]}; // OGHAM SPACE MARK + + key {[ space, space, space ]}; + + // The standard says the Ogham characters should be accessed when Caps Lock + // is down; not clear if this means it should lock but seems logical. + key {[ ISO_Level3_Lock ], type[group1] = "ONE_LEVEL" }; + + // Also allow access to Ogham characters using RALT, for convenience. + include "level3(ralt_switch)" + + // Redefine Scroll Lock as locking shift, in case that's needed. + key {[ Shift_Lock ], type[group1] = "ONE_LEVEL" }; + modifier_map Shift { Shift_Lock }; + + include "compose(rwin)" +}; diff --git a/nixos/xkb/symbols/il b/nixos/xkb/symbols/il new file mode 100644 index 00000000..92a87451 --- /dev/null +++ b/nixos/xkb/symbols/il @@ -0,0 +1,353 @@ +// Keyboard layouts for Israel. + +// This is an implemetation of the Israeli standard SI-1452 (2013). +// It does not implement changes to the English layout, as that part of +// the standard is not normative nor really useful in the context of XKB. +// This implementation extends the standard with Yiddish digraphs +// (a common extension) and Nun Hafukha (a fun character). +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Hebrew"; + + key.type[Group1] = "FOUR_LEVEL"; + + key {[ semicolon, asciitilde, U05F3 ]}; // geresh + key {[ 1, exclam ]}; + key {[ 2, at ]}; + key {[ 3, numbersign, EuroSign]}; + key {[ 4, dollar, NewSheqelSign ]}; + key {[ 5, percent, degree ]}; + key {[ 6, asciicircum, U05AB ]}; // ole + key {[ 7, ampersand, U05BD ]}; // meteg + key {[ 8, asterisk, multiply]}; + key {[ 9, parenright, U200E ]}; // LRM + key {[ 0, parenleft, U200F ]}; // RLM + key {[ minus, underscore, U05BE ]}; // maqaf + key {[ equal, plus, endash ]}; + + key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC"; + + key {[ slash, Q, U05C2 ]}; // Sin Dot + key {[ apostrophe, W, U05C1 ]}; // Shin Dot + key {[ hebrew_qoph, E, U05B8 ]}; // Qamats + key {[ hebrew_resh, R, U05B3 ]}; // Hataf Qamats + key {[ hebrew_aleph, T ]}; + key {[ hebrew_tet, Y, U05F0 ]}; // Yiddish Double Vav + key {[ hebrew_waw, U, U05B9 ]}; // Holam + key {[ hebrew_finalnun, I ]}; + key {[ hebrew_finalmem, O ]}; + key {[ hebrew_pe, P, U05B7 ]}; // Patah + + key {[ hebrew_shin, A, U05B0 ]}; // shva + key {[ hebrew_dalet, S, U05BC ]}; // dagesh + key {[ hebrew_gimel, D ]}; + key {[ hebrew_kaph, F ]}; + key {[ hebrew_ayin, G, U05F1 ]}; // Yiddish vav yod + key {[ hebrew_yod, H, U05F2 ]}; // Yiddish double yod + key {[ hebrew_chet, J, U05B4 ]}; // hiriq + key {[ hebrew_lamed, K ]}; + key {[ hebrew_finalkaph, L, rightdoublequotemark ]}; + key {[ hebrew_finalpe, colon, doublelowquotemark ]}; + + key {[ hebrew_zain, Z ]}; + key {[ hebrew_samech, X, U05B6 ]}; // segol + key {[ hebrew_bet, C, U05B1 ]}; // hataf segol + key {[ hebrew_he, V ]}; + key {[ hebrew_nun, B, none, U05C6 ]}; // nun hafukha + key {[ hebrew_mem, N ]}; + key {[ hebrew_zade, M, U05B5 ]}; // tsere + key {[ hebrew_taw, greater, rightsinglequotemark ]}; + key {[ hebrew_finalzade, less, singlelowquotemark ]}; + + key.type[Group1] = "FOUR_LEVEL"; + + key {[ bracketright, braceright, U05B2 ]}; // Hataf Patah + key {[ bracketleft, braceleft, U05BF ]}; // Rafe + key {[ comma, quotedbl, U05F4 ]}; // Gershayim + key {[ backslash, bar, U05BB ]}; // Qubuts + key {[ period, question, division]}; + + include "level3(ralt_switch)" +}; + +// This implements part 2 of the Israeli SI-1452 standard (from 2018). +// Comma, period, slash, and apostrophe are placed where they are in the +// basic US layout too. This means that Taw and Finalzade are moved to +// the upper row; and Finalnun is moved too, to avoid confusion with its +// former lefthand neighbor Waw (both being a kind of vertical line). +partial alphanumeric_keys +xkb_symbols "si2" { + + include "il(basic)" + + name[Group1]= "Hebrew (SI-1452-2)"; + + key {[ hebrew_finalzade ]}; + key {[ hebrew_finalnun ]}; + key {[ hebrew_taw ]}; + + key {[ apostrophe ]}; + + key {[ comma ]}; + key {[ period ]}; + key {[ slash ]}; +}; + + +// Niqqud on the second level, based on Dekel Tsur's Hebrew mapping for LyX. +partial alphanumeric_keys +xkb_symbols "lyx" { + + name[Group1]= "Hebrew (lyx)"; + + key {[ semicolon, asciitilde ]}; + key {[ 1, exclam ]}; + key {[ 2, at ]}; + key {[ 3, numbersign ]}; + key {[ 4, dollar ]}; + key {[ 5, percent ]}; + key {[ 6, asciicircum ]}; + key {[ 7, ampersand ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenright ]}; + key {[ 0, parenleft ]}; + key {[ minus, U05BE ]}; // maqaf + key {[ equal, plus ]}; + + key {[ slash, none ]}; + key {[ apostrophe, none ]}; + key {[ hebrew_qoph, U05B8 ]}; // qamats + key {[ hebrew_resh, U05BC ]}; // dagesh/shuruq + key {[ hebrew_aleph, U200E ]}; // LRM + key {[ hebrew_tet, U200F ]}; // RLM + key {[ hebrew_waw, U05B9 ]}; // holam + key {[ hebrew_finalnun, none ]}; + key {[ hebrew_finalmem, none ]}; + key {[ hebrew_pe, U05B7 ]}; // patah + key {[ bracketright, braceright ]}; + key {[ bracketleft, braceleft ]}; + + key {[ hebrew_shin, U05B0 ]}; // sheva + key {[ hebrew_dalet, U05BC ]}; // dagesh/shuruq + key {[ hebrew_gimel, none ]}; + key {[ hebrew_kaph, none ]}; + key {[ hebrew_ayin, U05C2 ]}; // sin dot + key {[ hebrew_yod, U05C1 ]}; // shin dot + key {[ hebrew_chet, U05B4 ]}; // hiriq + key {[ hebrew_lamed, U20AA ]}; // ₪ (NIS) + key {[ hebrew_finalkaph, none ]}; + key {[ hebrew_finalpe, colon ]}; + key {[ comma, quotedbl ]}; + + key {[ hebrew_zain, none ]}; + key {[ hebrew_samech, U05B6 ]}; // segol + key {[ hebrew_bet, U05BB ]}; // qubuts + key {[ hebrew_he, U05B1 ]}; // hataf segol + key {[ hebrew_nun, U05B2 ]}; // hataf patah + key {[ hebrew_mem, U05B3 ]}; // hataf qamats + key {[ hebrew_zade, U05B5 ]}; // tsere + key {[ hebrew_taw, greater ]}; + key {[ hebrew_finalzade, less ]}; + key {[ period, question ]}; +}; + + +partial alphanumeric_keys +xkb_symbols "phonetic" { + + include "il(basic)" + + name[Group1]= "Hebrew (phonetic)"; + + key {[ grave, asciitilde ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + + key {[ hebrew_qoph, hebrew_qoph ]}; + key {[ hebrew_waw, hebrew_waw ]}; + key {[ hebrew_aleph, hebrew_aleph ]}; + key {[ hebrew_resh, hebrew_resh ]}; + key {[ hebrew_taw, hebrew_tet ]}; + key {[ hebrew_ayin, hebrew_ayin ]}; + key {[ hebrew_waw, hebrew_waw ]}; + key {[ hebrew_yod, hebrew_yod ]}; + key {[ hebrew_samech, hebrew_samech ]}; + key {[ hebrew_pe, hebrew_finalpe ]}; + key {[ bracketleft, braceleft ]}; + key {[ bracketright, braceright ]}; + + key {[ hebrew_aleph, hebrew_aleph ]}; + key {[ hebrew_shin, hebrew_shin ]}; + key {[ hebrew_dalet, hebrew_dalet ]}; + key {[ hebrew_pe, hebrew_finalpe ]}; + key {[ hebrew_gimel, hebrew_gimel ]}; + key {[ hebrew_he, hebrew_he ]}; + key {[ hebrew_yod, hebrew_yod ]}; + key {[ hebrew_kaph, hebrew_finalkaph]}; + key {[ hebrew_lamed, hebrew_lamed ]}; + key {[ semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + key {[ backslash, bar ]}; + + key {[ hebrew_zain, hebrew_zain ]}; + key {[ hebrew_chet, hebrew_chet ]}; + key {[ hebrew_zade, hebrew_finalzade]}; + key {[ hebrew_waw, hebrew_waw ]}; + key {[ hebrew_bet, hebrew_bet ]}; + key {[ hebrew_nun, hebrew_finalnun ]}; + key {[ hebrew_mem, hebrew_finalmem ]}; + key {[ comma, less ]}; + key {[ period, greater ]}; + key {[ slash, question ]}; +}; + +// The 'Biblical Hebrew' keyboard layout as defined by Tiro for use with the +// 'SBL Hebrew' font was added 2006.11.13 by Sebastian J. Bronner +// . Its primary features (as compared to the lyx layout) +// are that the consonants are in the Israeli standard positions, that a great +// multitude of glyphs can be input directly from the keyboard, and that it is +// the closest thing to a standard layout a theologian can hope for. +// Reference: https://www.sbl-site.org/fonts/biblicalhebrewtiromanual.pdf. +// Fonts: https://www.sbl-site.org/educational/biblicalfonts.aspx. +// +// It is of interest that the 'basic' layout defined first in this file (as +// ships with X.org) disagrees in the non-consonant characters that the Tiro- +// layout claims to be the Israeli standard. Tiro's apparent diligence in the +// PDF-documentation accompanying the keyboard-layout-files lead me to put +// greater stock in their claim than in this file. Therefore, the 'biblical' +// layout below does not include 'il(basic)' but redoes the _whole_ thing from +// scratch. +partial alphanumeric_keys +xkb_symbols "biblical" { + + name[Group1]= "Hebrew (Biblical, Tiro)"; + + key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC"; + + key {[ U05C3, U05AE, semicolon, asciitilde ]}; + key {[ 1, U05A9, none, exclam ]}; + key {[ 2, U0599, none, at ]}; + key {[ 3, U0592, none, numbersign ]}; + key {[ 4, U05AF, NewSheqelSign, dollar ]}; + key {[ 5, U05BA, U200D, percent ]}; + key {[ 6, U05B9, U200C, asciicircum ]}; + key {[ 7, U05BF, U034F, ampersand ]}; + key {[ 8, U05C2, U200E, asterisk ]}; + key {[ 9, U05C1, U200F, parenright ]}; + key {[ 0, U059D, U25CC, parenleft ]}; + key {[ U05BE, U05A0, minus, underscore ]}; + key {[ equal, U05BC, none, plus ]}; + + key {[ U0307, U05C4, U0308, slash ]}; + key {[ U05F3, U05AC, U05F4, apostrophe ]}; + key {[ hebrew_qoph, U05AB, U20AC ]}; + key {[ hebrew_resh, U059F ]}; + key {[ hebrew_aleph, U0593 ]}; + key {[ hebrew_tet, U059E ]}; + key {[ hebrew_waw, U059C, U05F0 ]}; + key {[ hebrew_finalnun, U05A1 ]}; + key {[ hebrew_finalmem, U0595 ]}; + key {[ hebrew_pe, U0594 ]}; + key {[ bracketright, U0597, none, braceright ]}; + key {[ bracketleft, U0598, none, braceleft ]}; + key {[ U05C0, U05A8, backslash, bar ]}; + + key {[ hebrew_shin, U05BD ]}; + key {[ hebrew_dalet, U05B0 ]}; + key {[ hebrew_gimel, U05BB ]}; + key {[ hebrew_kaph, U05B4 ]}; + key {[ hebrew_ayin, U05B1 ]}; + key {[ hebrew_yod, U05B6, U05F2 ]}; + key {[ hebrew_chet, U05B5, U05F1 ]}; + key {[ hebrew_lamed, U05B3 ]}; + key {[ hebrew_finalkaph, U05B8, U05C7 ]}; + key {[ hebrew_finalpe, U05B2, none, colon ]}; + key {[ U059a, U05B7, comma, quotedbl ]}; + + key {[ hebrew_zain, U05C5 ]}; + key {[ hebrew_samech, U05A4 ]}; + key {[ hebrew_bet, U05AA, U05A2 ]}; + key {[ hebrew_he, U05A6 ]}; + key {[ hebrew_nun, U05A5, U05C6 ]}; + key {[ hebrew_mem, U05A7 ]}; + key {[ hebrew_zade, U059B ]}; + key {[ hebrew_taw, U0591, none, greater ]}; + key {[ hebrew_finalzade, U0596, none, less ]}; + key {[ U05AD, U05A3, period, question ]}; + + key {[ space, space, thinspace, nobreakspace ]}; +}; + + +// EXTRAS + +// Biblical hebrew (SIL) US Standard layout version 1.5 +// This map is based closely on v 1.5 of the standard. The only deviation being the replacement of the composite characters sin and shin +// by their more recent Unicodev6 counterparts +// this map contains all the characters found in Biblical annotation, masoretic and Dead Sea Scroll related work. +// The layout corresponds phonetically to a US standard layout or similar (Qwerty). +// If you are using an actual Hebrew keyboard, you are probably better off using a Tiro compliant scholarly layout +// This linux port created and maintained by Dennis Meulensteen, dennis@meulensteen.nl +partial alphanumeric_keys +xkb_symbols "biblicalSIL" { + + name[Group1]= "Hebrew (Biblical, SIL phonetic)"; + + key.type[Group1] = "FOUR_LEVEL_SEMIALPHABETIC"; + + key {[ EuroSign, U20AA, dollar ]}; // € ₪ $ + key {[ 1, exclam, U05BD, U0597 ]}; // 1 exclamation meteg revia + key {[ 2, U0598, U05A2, U05AE ]}; // 2 zarqa atnaq hafukh zinor + key {[ 3, U05A8, U0596, U0599 ]}; // 3, qadma tipeha pashta + key {[ 4, U059C, U05A5, U05A0 ]}; // 4, geresh merkha tel. gedola + key {[ 5, U059E, U05A6, U05A9 ]}; // 5 gershayim mer. kefula tel. qetana + key {[ 6, none, U05AD, U059F ]}; // 6 - dehi qarney para + key {[ 7, U05AC, U05A3, U05A1 ]}; // 7, iluy munah pazer + key {[ 8, U059D, U059B, U0595 ]}; // 8 geresh muqdam tevir zaqef gadol + key {[ 9, parenright, U05A7, U0593 ]}; // 9 R. parenthesis darqa shalshelet + key {[ 0, parenleft, U05AA, U05AF ]}; // 0 L. parenthesis yer. ben yomo masora circle + key {[ U05BE, U2013, U2014, U05BF ]}; // maqaf en dash em dash rafe + key {[ U05BC, none, U0591, U25CC ]}; // dagesh - etnahta mark base: ◌ + + key {[ hebrew_qoph, U0597 ]}; // qof revia + key {[ hebrew_waw ]}; // waw + key {[ U05B6, U05B5, none, U05B1 ]}; // segol tsere - hataf segol + key {[ hebrew_resh ]}; // resh + key {[ hebrew_taw ]}; // taw + key {[ hebrew_yod, U059F ]}; // jod qarney para + key {[ U05BB ]}; // qubuts + key {[ U05B4 ]}; // hiriq + key {[ U05B9, U05BA, U05C7, U05B3 ]}; // holam holam for vav qamats qatan hataf qamats + key {[ hebrew_pe, hebrew_finalpe, none, U034F ]}; // pe final pe - CGJ + key {[ bracketright, braceright, none, U0594 ]}; // R. bracket R. brace - zaqef qatan + key {[ bracketleft, braceleft, U059A, U0592 ]}; // L. bracket L. brace yetiv segolta + key {[ U05C0, U05C0, U05A4, U05AB ]}; // paseq paseq mahapakh ole + + key {[ U05B7, U05B8, U05C7, U05B2 ]}; // patah qamats qamats qatan hataf patah + key {[ hebrew_samech, hebrew_shin ]}; // samech shin (no dot) + key {[ hebrew_dalet ]}; // dalet + key {[ UFB2B, hebrew_shin, U05C2 ]}; // shin w. sindot shin (no dot) sindot + key {[ hebrew_gimel, none, U25E6, U2022 ]}; // gimel - bullet: ◦ bullet: • + key {[ hebrew_he, none, U0336, U030A ]}; // he - strikeout ring above + key {[ UFB2A, hebrew_shin, U05C1 ]}; // shin w. shindot shin (no dot) shindot + key {[ hebrew_kaph, hebrew_finalkaph ]}; // kaph final kaph + key {[ hebrew_lamed, none ]}; // lamed + key {[ U05B0, U05F4, semicolon, U05C3 ]}; // sheva gersha. punc. semicolon sof pasuq + key {[ U2019, U201D, U0323, U05C4 ]}; // R. quote double R. quote punctum punctum above + + key {[ hebrew_zain ]}; // zayin + key {[ hebrew_chet ]}; // chet + key {[ hebrew_zade, hebrew_finalzade ]}; // tzade final tzade + key {[ hebrew_tet ]}; // tet + key {[ hebrew_bet ]}; // bet + key {[ hebrew_nun, hebrew_finalnun ]}; // nun final nun + key {[ hebrew_mem, hebrew_finalmem, U200C, U200D ]}; // mem final mem ZWNJ ZWJ + key {[ comma, hebrew_ayin, guillemotleft, U0307 ]}; // comma ayin R. guillemet masora dot + key {[ period, hebrew_aleph, guillemotright, U0308 ]}; // period alef L. guillemet thousands + key {[ slash, question, U05F3 ]}; // slash question geresh punc. + + key {[ space, space, thinspace, nobreakspace ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/in b/nixos/xkb/symbols/in new file mode 100644 index 00000000..85f90789 --- /dev/null +++ b/nixos/xkb/symbols/in @@ -0,0 +1,2616 @@ +// Keyboard layouts for India. + +// This file includes layouts for: +// - Hindi +// - Marathi +// - Sanskrit +// - Bangla +// - Assamese +// - Gujarati +// - Kannada +// - Malayalam +// - Oriya +// - Santali +// - Tamil +// - Telugu +// - Urdu + +// Links: +// - Indic INSCRIPT keyboard layout diagrams: +// http://java.sun.com/products/jfc/tsc/articles/InputMethod/indiclayout.html +// - Bangla Baishakhi (Bangla layouts): +// - Bangla Baishakhi InScript (Bangla layouts): +// - Bangla Bornona (Bangla layouts): +// - Uni Gitanjali (Bangla layouts): +// http://nltr.org +// - Ekusheyr Shadhinota (Bangla layouts): +// http://ekushey.org/projects/shadhinota/index.html +// - Microsoft Windows XP SP2: Indic Language Standards - an Introduction: +// http://www.bhashaindia.com/MSProducts/XpSp2/Articles/IndicLanguageStandards.aspx + + +// Devangari is the default. Kill me if I am wrong:) +default partial alphanumeric_keys +xkb_symbols "deva" { + // March 2004 -- David Holl + name[Group1]="Indian"; + + key.type[group1]="FOUR_LEVEL"; + + key { [ U094a, U0912, grave, asciitilde ] }; + key { [ U0967, U090d, 1, exclam ] }; + key { [ U0968, U0945, 2, at ] }; + // Shift+AE0[3-8] really need to return a macro of keys defined by + // INSCRIPT in place of the symbols that are here for now. But this + // requires XKB to map 1 key into two to three other key presses. + key { [ U0969, numbersign, 3, numbersign ] }; + key { [ U096a, dollar, 4, U20b9 ] }; // Rupee + key { [ U096b, percent, 5, percent ] }; + key { [ U096c, asciicircum, 6, asciicircum ] }; + key { [ U096d, ampersand, 7, ampersand ] }; + key { [ U096e, asterisk, 8, asterisk ] }; + key { [ U096f, parenleft, 9, parenleft ] }; + key { [ U0966, parenright, 0, parenright ] }; + key { [ minus, U0903, minus, underscore ] }; + key { [ U0943, U090b, U0944, U0960 ] }; + + key { [ U094c, U0914 ] }; + key { [ U0948, U0910 ] }; + key { [ U093e, U0906 ] }; + key { [ U0940, U0908, U0963, U0961 ] }; + key { [ U0942, U090a ] }; + key { [ U092c, U092d ] }; + key { [ U0939, U0919 ] }; + key { [ U0917, U0918, U095a ] }; + key { [ U0926, U0927 ] }; + key { [ U091c, U091d, U095b ] }; + key { [ U0921, U0922, U095c, U095d ] }; + key { [ U093c, U091e ] }; + key { [ U0949, U0911, backslash, bar ] }; + + key { [ U094b, U0913 ] }; + key { [ U0947, U090f ] }; + key { [ U094d, U0905 ] }; + key { [ U093f, U0907, U0962, U090c ] }; + key { [ U0941, U0909 ] }; + key { [ U092a, U092b, NoSymbol, U095e ] }; + key { [ U0930, U0931 ] }; + key { [ U0915, U0916, U0958, U0959 ] }; + key { [ U0924, U0925 ] }; + key { [ U091a, U091b, U0952 ] }; + key { [ U091f, U0920, NoSymbol, U0951 ] }; + + key { [ U0946, U090e, U0953 ] }; + key { [ U0902, U0901, NoSymbol, U0950 ] }; + key { [ U092e, U0923, U0954 ] }; + key { [ U0928, U0929 ] }; + key { [ U0935, U0934 ] }; + key { [ U0932, U0933 ] }; + key { [ U0938, U0936 ] }; + key { [ comma, U0937, U0970 ] }; + key { [period, U0964, U0965, U093d ] }; + key { [ U092f, U095f, slash, question ] }; + + // space, space, Zero-Width-Non-Joiner (ZWNJ), Zero-Width-Joiner (ZWJ): + include "nbsp(zwnj3zwj4)" + + include "level3(ralt_switch)" +}; + +//Name : Bolnagri (Combined) +//Description : A phonetic keyboard layout for Devnagari(Hindi) +// http://www.indlinux.org/wiki/index.php/BolNagri +//NOTE : This is a combined map of bolnagri_matras and bolnagri_vowels. +//Inspired by "devrom" keymap by Steve Smith for the windows tool "keyman" +//Original Author : Noah Levitt +//Past Authors : Pramod.R and Ravikant +//Current Main. : G Karunakar + +partial alphanumeric_keys +xkb_symbols "bolnagri" { + name[Group1] = "Hindi (Bolnagri)"; + key.type[group1]="FOUR_LEVEL"; + + // Roman digits + key { [ U0902, U0901, grave, asciitilde ] }; // anusvara, candrabindu + key { [ 1, exclam, U0967, exclam ] }; + key { [ 2, at, U0968, at ] }; + key { [ 3, numbersign, U0969, numbersign ] }; + key { [ 4, dollar, U096A, U20B9 ] }; // Rupee + key { [ 5, percent, U096B, percent ] }; + key { [ 6, asciicircum, U096C, asciicircum ] }; + key { [ 7, ampersand, U096D, ampersand ] }; + key { [ 8, asterisk, U096E, asterisk ] }; + key { [ 9, parenleft, U096F, parenleft ] }; + key { [ 0, parenright, U0966, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ U0964, U0965, backslash, bar ] }; // danda, double danda + + key { [ U200C, U200D ] }; // Q: ZWNJ, ZWJ + key { [ U0935, U0950 ] }; // W: wa, OM + key { [ U0947, U0948, U090F, U0910 ] }; // E: e, ai matras + key { [ U0930, U0943, U0931, U090B ] }; // R: ra, vocalic Ri + key { [ U0924, U0925 ] }; // T: ta, tha + key { [ U092f, U091E ] }; // Y: ya, nya + key { [ U0941, U0942, U0909, U090A ] }; // U: u, uu matras + key { [ U093F, U0940, U0907, U0908 ] }; // I: i, ii matras + key { [ U094B, U094C, U0913, U0914 ] }; // O: o, au matras + key { [ U092A, U092B ] }; // P: pa, pha + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ U093E, U0906, U0905, U0906 ] }; // A: aa, full A, AA + key { [ U0938, U0937 ] }; // S: sa, ssa + key { [ U0926, U0927 ] }; // D: da, dha + key { [ U091F, U0920 ] }; // F: TA, THA + key { [ U0917, U0918 ] }; // G: ga, gha + key { [ U0939, U0903 ] }; // H: ha, visarg + key { [ U091C, U091D ] }; // J: ja, jha + key { [ U0915, U0916 ] }; // K: ka, kha + key { [ U0932, U0933, U0962, U090C ] }; // L: la, vocalic L or lru matra + key { [ semicolon, colon ] }; + key { [apostrophe, quotedbl ] }; + + key { [ U0936, U0945, U0936, U090D ] }; // Z: sha, akaar candra + key { [ U094D, U0949, U094D, U0911 ] }; // X: halant, aakaar candra, chandra A + key { [ U091A, U091B ] }; // C: ca, cha + key { [ U0921, U0922 ] }; // V: da, dha + key { [ U092C, U092D ] }; // B: ba, bha + key { [ U0928, U0923 ] }; // N: na, nna + key { [ U092E, U0919, U092E, U093D ] }; // M: ma, nga, avagraha + key { [ comma, U0970 ] }; // dev abbreviation sign + key { [ period, U093C ] }; // nukta + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "ben" { + name[Group1]= "Bangla (India)"; + + // Mainly digits: + key {[ U09E7 ]}; + key {[ U09E8 ]}; + key {[ U09E9 ]}; + key {[ U09EA ]}; + key {[ U09EB ]}; + key {[ U09EC ]}; + key {[ U09ED ]}; + key {[ U09EE ]}; + key {[ U09EF, parenleft ]}; + key {[ U09E6, parenright ]}; + key {[ minus, U0983 ]}; + key {[ U098B, U09C3 ]}; + + // Mainly long vowels: + key {[ U09CC, U0994 ]}; + key {[ U09C8, U0990 ]}; + key {[ U09BE, U0986 ]}; + key {[ U09C0, U0988 ]}; + key {[ U09C2, U098A ]}; + + // Mainly voiced consonants: + key {[ U09AC, U09AD ]}; + key {[ U09B9, U0999 ]}; + key {[ U0997, U0998 ]}; + key {[ U09A6, U09A7 ]}; + key {[ U099C, U099D ]}; + key {[ U09A1, U09A2 ]}; + key {[ U09BC, U099E ]}; + + // Mainly short vowels: + key {[ U09CB, U0993 ]}; + key {[ U09C7, U098F ]}; + key {[ U09CD, U0985 ]}; + key {[ U09BF, U0987 ]}; + key {[ U09C1, U0989 ]}; + + // Mainly unvoiced consonants: + key {[ U09AA, U09AB ]}; + key {[ U09B0, U09DD ]}; + key {[ U0995, U0996 ]}; + key {[ U09A4, U09A5 ]}; + key {[ U099A, U099B ]}; + key {[ U099F, U09A0 ]}; + key {[ backslash, bar ]}; + + key {[ z, Z ]}; + key {[ U0982, U0981 ]}; + key {[ U09AE, U09A3 ]}; + key {[ U09A8, U09A8 ]}; + key {[ U09AC, U09AC ]}; + key {[ U09B2, U09B2 ]}; + key {[ U09B8, U09B6 ]}; + key {[ comma, U09B7 ]}; + key {[ period, U0964 ]}; + key {[ U09DF, U09AF ]}; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +xkb_symbols "ben_probhat" { + name[Group1]= "Bangla (India, Probhat)"; + key.type[group1]="FOUR_LEVEL"; + + // Digits row: + key { [ U200D, asciitilde ] }; + key { [ U09E7, exclam, U09F4 ] }; + key { [ U09E8, at, U09F5 ] }; + key { [ U09E9, numbersign, U09F6 ] }; + key { [ U09EA, U09F3, U09F7, U09F2 ] }; + key { [ U09EB, percent ] }; + key { [ U09EC, asciicircum ] }; + key { [ U09ED, U099E, U09FA ] }; + key { [ U09EE, U09CE ] }; + key { [ U09EF, parenleft ] }; + key { [ U09E6, parenright, U09F8, U09F9 ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + // Q row: + key { [ U09A6, U09A7 ] }; + key { [ U09C2, U098A ] }; + key { [ U09C0, U0988 ] }; + key { [ U09B0, U09DC, U20B9 ] }; // Rupee + key { [ U099F, U09A0 ] }; + key { [ U098F, U0990 ] }; + key { [ U09C1, U0989 ] }; + key { [ U09BF, U0987 ] }; + key { [ U0993, U0994 ] }; + key { [ U09AA, U09AB ] }; + key { [ U09C7, U09C8 ] }; + key { [ U09CB, U09CC, U09D7 ] }; + + // A row: + key { [ U09BE, U0985, U098C, U09E0 ] }; + key { [ U09B8, U09B7, U09E1, U09E3 ] }; + key { [ U09A1, U09A2, U09C4, U09E2 ] }; + key { [ U09A4, U09A5 ] }; + key { [ U0997, U0998 ] }; + key { [ U09B9, U0983, U09BD ] }; + key { [ U099C, U099D ] }; + key { [ U0995, U0996 ] }; + key { [ U09B2, U0982 ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + // Z row: + key { [ U09DF, U09AF ] }; + key { [ U09B6, U09DD ] }; + key { [ U099A, U099B ] }; + key { [ U0986, U098B ] }; + key { [ U09AC, U09AD ] }; + key { [ U09A8, U09A3 ] }; + key { [ U09AE, U0999 ] }; + key { [ comma, U09C3 ] }; + key { [ U0964, U0981, U09BC ] }; + key { [ U09CD, question ] }; + key { [ U200C, U0965 ] }; + + include "level3(ralt_switch)" +}; + +// The Bangla Baishakhi, Bangla Baishakhi Inscript, Bangla Bornona, and Uni Gitanjali layouts +// were added by Promathesh Mandal + +xkb_symbols "ben_baishakhi" { + name[Group1]= "Bangla (India, Baishakhi)"; + + // Digits row + key { [ 0x100200D, 0x100200C ] }; + key { [ 0x10009E7, exclam ] }; + key { [ 0x10009E8, at ] }; + key { [ 0x10009E9, numbersign ] }; + key { [ 0x10009EA, dollar, 0x10009F2 ] }; + key { [ 0x10009EB, percent ] }; + key { [ 0x10009EC, asciicircum,0x10009D7 ] }; + key { [ 0x10009ED, ampersand ] }; + key { [ 0x10009EE, asterisk, 0x10009FA ] }; + key { [ 0x10009EF, parenleft ] }; + key { [ 0x10009E6, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + // Q row + key { [ 0x10009A1, 0x10009A2 ] }; + key { [ 0x10009C0, 0x10009C2 ] }; + key { [ 0x10009C7, 0x100098F, 0x1000990 ] }; + key { [ 0x10009B0, 0x10009C3, 0x100098B ] }; + key { [ 0x100099F, 0x10009A0 ] }; + key { [ 0x10009AF, 0x10009DF ] }; + key { [ 0x10009C1, 0x1000989, 0x100098A ] }; + key { [ 0x10009BF, 0x1000987, 0x1000988 ] }; + key { [ 0x10009CB, 0x1000993, 0x1000994 ] }; + key { [ 0x10009AA, 0x10009AB ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + // A row + key { [ 0x10009BE, 0x1000985, 0x1000986 ] }; + key { [ 0x10009B8, 0x10009B6, 0x10009B7 ] }; + key { [ 0x10009A6, 0x10009A7 ] }; + key { [ 0x10009A4, 0x10009A5, 0x10009CE ] }; + key { [ 0x1000997, 0x1000998 ] }; + key { [ 0x10009CD, 0x10009B9, 0x1000983 ] }; + key { [ 0x100099C, 0x100099D ] }; + key { [ 0x1000995, 0x1000996 ] }; + key { [ 0x10009B2, 0x1000964, 0x100098C ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + // Z row + key { [ 0x10009C8, 0x10009CC ] }; + key { [ 0x10009DC, 0x10009DD ] }; + key { [ 0x100099A, 0x100099B ] }; + key { [ 0x10009F1, 0x10009F0 ] }; + key { [ 0x10009AC, 0x10009AD ] }; + key { [ 0x10009A8, 0x10009A3, 0x100099E ] }; + key { [ 0x10009AE, 0x1000999, 0x1000981 ] }; + key { [ comma, less ] }; + key { [ period, greater, 0x10009BC ] }; + key { [ slash, question, 0x1000982 ] }; + key { [ backslash, bar ] }; + + include "level3(ralt_switch)" +}; + +xkb_symbols "ben_inscript" { + name[Group1]= "Bangla (India, Baishakhi InScript)"; + + // Mainly digits: + key {[ 0x100200D, 0x100200C ]}; + key {[ 0x10009E7 ]}; + key {[ 0x10009E8 ]}; + key {[ 0x10009E9 ]}; + key {[ 0x10009EA ]}; + key {[ 0x10009EB ]}; + key {[ 0x10009EC ]}; + key {[ 0x10009ED ]}; + key {[ 0x10009EE ]}; + key {[ 0x10009EF, parenleft ]}; + key {[ 0x10009E6, parenright ]}; + key {[ minus, 0x1000983 ]}; + key {[ 0x10009C3, 0x100098B ]}; + + // Mainly long vowels: + key {[ 0x10009CC, 0x1000994 ]}; + key {[ 0x10009C8, 0x1000990 ]}; + key {[ 0x10009BE, 0x1000986 ]}; + key {[ 0x10009C0, 0x1000988 ]}; + key {[ 0x10009C2, 0x100098A ]}; + + // Mainly voiced consonants: + key {[ 0x10009AC, 0x10009AD ]}; + key {[ 0x10009B9, 0x1000999 ]}; + key {[ 0x1000997, 0x1000998 ]}; + key {[ 0x10009A6, 0x10009A7 ]}; + key {[ 0x100099C, 0x100099D ]}; + key {[ 0x10009A1, 0x10009A2 ]}; + key {[ 0x10009BC, 0x100099E ]}; + + // Mainly short vowels: + key {[ 0x10009CB, 0x1000993 ]}; + key {[ 0x10009C7, 0x100098F ]}; + key {[ 0x10009CD, 0x1000985 ]}; + key {[ 0x10009BF, 0x1000987 ]}; + key {[ 0x10009C1, 0x1000989 ]}; + + // Mainly unvoiced consonants: + key {[ 0x10009AA, 0x10009AB ]}; + key {[ 0x10009B0, 0x10009DD ]}; + key {[ 0x1000995, 0x1000996 ]}; + key {[ 0x10009A4, 0x10009A5 ]}; + key {[ 0x100099A, 0x100099B ]}; + key {[ 0x100099F, 0x10009A0 ]}; + key {[ backslash, bar ]}; + + key {[ 0x10009CE ]}; + key {[ 0x1000982, 0x1000981 ]}; + key {[ 0x10009AE, 0x10009A3 ]}; + key {[ 0x10009A8, 0x10009A8 ]}; + key {[ 0x10009AC, 0x10009AC ]}; + key {[ 0x10009B2, 0x10009B2 ]}; + key {[ 0x10009B8, 0x10009B6 ]}; + key {[ comma, 0x10009B7 ]}; + key {[ period, 0x1000964 ]}; + key {[ 0x10009DF, 0x10009AF ]}; +}; + +xkb_symbols "ben_gitanjali" { + name[Group1]= "Bangla (India, Gitanjali)"; + + key {[ colon, question ]}; + key {[ 0x10009E7, 0x10009CE ]}; + key {[ 0x10009E8, apostrophe ]}; + key {[ 0x10009E9, numbersign ]}; + key {[ 0x10009EA, 0x10009F3 ]}; + key {[ 0x10009EB, slash ]}; + key {[ 0x10009EC, period ]}; + key {[ 0x10009ED, ampersand ]}; + key {[ 0x10009EE, asterisk ]}; + key {[ 0x10009EF, parenleft ]}; + key {[ 0x10009E6, parenright ]}; + key {[ minus, 0x1000983 ]}; + key {[ 0x10009C3, 0x100098B ]}; + + // Q row + key {[ 0x10009D7, 0x1000994 ]}; + key {[ 0x10009C8, 0x1000990 ]}; + key {[ 0x10009BE, 0x1000985 ]}; + key {[ 0x10009C0, 0x1000988 ]}; + key {[ 0x10009C2, 0x100098A ]}; + key {[ 0x10009AC, 0x10009AD ]}; + key {[ 0x10009B9, 0x1000999 ]}; + key {[ 0x1000997, 0x1000998 ]}; + key {[ 0x10009A6, 0x10009A7 ]}; + key {[ 0x100099C, 0x100099D ]}; + key {[ 0x10009A1, 0x10009A2 ]}; + key {[ 0x100200C, 0x100099E ]}; + + // A row + key {[ 0x100200D, 0x1000993 ]}; + key {[ 0x10009C7, 0x100098F ]}; + key {[ 0x10009CD ]}; + key {[ 0x10009BF, 0x1000987 ]}; + key {[ 0x10009C1, 0x1000989 ]}; + key {[ 0x10009AA, 0x10009AB ]}; + key {[ 0x10009B0, 0x10009F0 ]}; + key {[ 0x1000995, 0x1000996 ]}; + key {[ 0x10009A4, 0x10009A5 ]}; + key {[ 0x100099A, 0x100099B ]}; + key {[ 0x100099F, 0x10009A0 ]}; + + // Z row + key {[ 0x10009C7, 0x100098F ]}; + key {[ 0x1000982, 0x1000981 ]}; + key {[ 0x10009AE, 0x10009A3 ]}; + key {[ 0x10009A8, 0x10009DC ]}; + key {[ 0x10009F1, 0x10009DD ]}; + key {[ 0x10009B2 ]}; + key {[ 0x10009B8, 0x10009B6 ]}; + key {[ comma, 0x10009B7 ]}; + key {[ 0x1000964, 0x10009FA ]}; + key {[ 0x10009AF, 0x10009DF ]}; + key {[ backslash, bar ]}; +}; + +xkb_symbols "ben_bornona" { + name[Group1]= "Bangla (India, Bornona)"; + + key {[ 0x100200D, 0x100200C ]}; + key {[ 0x10009E7, exclam ]}; + key {[ 0x10009E8, 0x1000981 ]}; + key {[ 0x10009E9, numbersign ]}; + key {[ 0x10009EA, 0x10009F3 ]}; + key {[ 0x10009EB, percent ]}; + key {[ 0x10009EC, 0x1000983 ]}; + key {[ 0x10009ED, 0x10009CE ]}; + key {[ 0x10009EE, asterisk ]}; + key {[ 0x10009EF, parenleft ]}; + key {[ 0x10009E6, parenright ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + // Q row + key {[ 0x1000982, 0x1000999, 0x10009D7 ]}; + key {[ 0x10009A2, 0x10009A0, 0x100098A ]}; + key {[ 0x10009C7, 0x10009C8, 0x1000988 ]}; + key {[ 0x10009B0, 0x10009C3, 0x100098B ]}; + key {[ 0x10009A4, 0x100099F ]}; + key {[ 0x10009A7, 0x10009A5, 0x100098F ]}; + key {[ 0x10009C1, 0x10009C2, 0x1000989 ]}; + key {[ 0x10009BF, 0x10009C0, 0x1000987 ]}; + key {[ 0x10009CB, 0x10009CC, 0x1000993 ]}; + key {[ 0x10009AA, 0x1000990, 0x1000994 ]}; + key {[ bracketleft, braceleft, 0x10009DC ]}; + key {[bracketright, braceright ]}; + + // A row + key {[ 0x10009BE, 0x1000985, 0x10009F4 ]}; + key {[ 0x10009B8, 0x10009B6, 0x10009F5 ]}; + key {[ 0x10009A6, 0x10009A1, 0x10009F8 ]}; + key {[ 0x10009AB ]}; + key {[ 0x1000997, 0x1000998 ]}; + key {[ 0x10009CD, 0x10009B9 ]}; + key {[ 0x100099C, 0x100099D ]}; + key {[ 0x1000995, 0x1000996 ]}; + key {[ 0x10009B2, 0x1000964 ]}; + key {[ semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + + // Z row + key {[ 0x10009AF, 0x10009DC ]}; + key {[ 0x10009B7, 0x10009DD, 0x10009FA ]}; + key {[ 0x100099A, 0x100099B ]}; + key {[ 0x10009AD ]}; + key {[ 0x10009AC, 0x10009DF ]}; + key {[ 0x10009A8, 0x10009A3 ]}; + key {[ 0x10009AE, 0x100099E ]}; + key {[ comma, less ]}; + key {[ period, greater ]}; + key {[ slash, question ]}; + key {[ 0x10009F1, 0x10009F0 ]}; + + include "level3(ralt_switch)" +}; + +// ---- BEGIN Bangla KaGaPa phonetic ---- +// Name: Bangla (Bengali) KaGaPa phonetic +// Diagram: (Original)[https://baraha.com/help/Keyboards/ben-brhkbd.htm] +// (This layout)[http://bdsatish.in/lang/ben-kagapa.png] +// +// Description: Based on KaGaPa layout (also called Baraha layout or Nudi layout). +// See the description to "hin-kagapa" below. +// Certain punctuation characters from Devanagari block are +// retained for compatibility. +// +// Author: Satish BD +// +partial alphanumeric_keys +xkb_symbols "ben-kagapa" { + name[Group1]= "Bangla (India, KaGaPa, phonetic)"; + key.type[group1] = "FOUR_LEVEL"; + + key { [ grave, asciitilde, U201C ] }; // U201C: left double quotation mark + key { [ 1, exclam, U09E7 ] }; + key { [ 2, at, U09E8, U20A8 ] }; // U20A8: generic rupee sign (Rs) + key { [ 3, numbersign, U09E9 ] }; + key { [ 4, dollar, U09EA, U20B9 ] }; // U20B9: new Indian rupee sign + key { [ 5, percent, U09EB ] }; + key { [ 6, asciicircum, U09EC, U200C ] }; // ZWNJ + key { [ 7, ampersand, U09ED, U200D ] }; // ZWJ + key { [ 8, asterisk, U09EE, U0981 ] }; // U0981: Bengali sign candrabindu + key { [ 9, parenleft, U09EF ] }; + key { [ 0, parenright, U09E6, U09FD ] }; // U09FD: Bengali abbreviation sign + key { [ minus, underscore, U0952 ] }; // U0952: Devanagari stress sign anudatta + key { [ equal, plus ] }; + + key { [ U099F, U09A0 ] }; // Q: retroflex Ta, Tha + key { [ U09A1, U09A2, U09DC, U09DD ] }; // W: retroflex Da, Dha, Da-nukta (RRA), Dha-nukta (RHA) + key { [ U09C7, U09C8, U098F, U0990 ] }; // E: matra e, matra ai, vowel e, vowel ai + key { [ U09B0, U09C3, U098B, U09F0 ] }; // R: ra, vocalic R matra, vocalic R, Assamese ra + key { [ U09A4, U09A5, U09CE ] }; // T: dental ta, tha, khanda ta + key { [ U09AF, U09DF ] }; // Y: ya, ya-nukta (YYA) + key { [ U09C1, U09C2, U0989, U098A ] }; // U: matra u, matra uu, u, uu + key { [ U09BF, U09C0, U0987, U0988 ] }; // I: matra i, matra ii, i, ii + key { [ U09CB, U09CC, U0993, U0994 ] }; // O: matra o, matra au, o, au + key { [ U09AA, U09AB ] }; // P: pa, pha + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ backslash, bar, U0964, U0965 ] }; // backslash, pipe, danda, double danda + + key { [ U09BE, U0986, U0985 ] }; // A: aa matra, aa, short a + key { [ U09B8, U09B6 ] }; // S: sa, sha + key { [ U09A6, U09A7 ] }; // D: dental da, dha + key { [ U09CD, U09C4, U09E0 ] }; // F: virama, vocalic RR matra, vocalic RR + key { [ U0997, U0998 ] }; // G: ga, gha + key { [ U09B9, U0983, U1CF5, U1CF6 ] }; // H: ha, visarga, jihvamuliya, upadhmaniya + key { [ U099C, U099D ] }; // J: ja, jha + key { [ U0995, U0996 ] }; // K: ka, kha + key { [ U09B2, U09B2, U09E2, U098C ] }; // L: la, la, vocalic L matra, vocalic L + key { [ semicolon, colon, U1CF2, U1CF3 ] }; // U1CF2/3: ardhavisarga/rotated ardhavisarga + key { [ apostrophe, quotedbl, U0951, U201D ] }; // U0951: Devanagari stress sign udatta + // U201D: Right double quotation mark + key { [ U099E, U0999 ] }; // Z: nya, nga + key { [ U09B7, U09BC ] }; // X: ssa, nukta below + key { [ U099A, U099B ] }; // C: ca, cha + key { [ U09F1, U09CC, U0994, U09D7 ] }; // V: assamese wa, matra au, au, length mark au + key { [ U09AC, U09AD, U09F0 ] }; // B: ba, bha, Assamese ra + key { [ U09A8, U09A3 ] }; // N: na, nna + key { [ U09AE, U0982, U09BD, U0980 ] }; // M: ma, anusvara, avagraha, anji (siddham) + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; +// ---- END Bangla KaGaPa phonetic ---- + +// Assamese uses Bangla layout +partial alphanumeric_keys +xkb_symbols "asm-kagapa" { + include "in(ben-kagapa)" + name[Group1] = "Assamese (KaGaPa, phonetic)"; +}; + +partial alphanumeric_keys +xkb_symbols "guj" { + name[Group1]= "Gujarati"; + + // Mainly digits: + key {[ U0AE7, U0A8D ]}; + key {[ U0AE8, U0AC5 ]}; + key {[ U0AE9 ]}; + key {[ U0AEA ]}; + key {[ U0AEB ]}; + key {[ U0AEC ]}; + key {[ U0AED ]}; + key {[ U0AEE ]}; + key {[ U0AEF, parenleft ]}; + key {[ U0AE6, parenright]}; + key {[ minus, U0A83 ]}; + key {[ U0A8B, U0AC3 ]}; + + // Mainly long vowels: + key {[ U0ACC, U0A94 ]}; + key {[ U0AC8, U0A90 ]}; + key {[ U0ABE, U0A86 ]}; + key {[ U0AC0, U0A88 ]}; + key {[ U0AC2, U0A8A ]}; + + // Mainly voiced consonants: + key {[ U0AAC, U0AAD ]}; + key {[ U0AB9, U0A99 ]}; + key {[ U0A97, U0A98 ]}; + key {[ U0AA6, U0AA7 ]}; + key {[ U0A9C, U0A9D ]}; + key {[ U0AA1, U0AA2 ]}; + key {[ U0ABC, U0A9E ]}; + + // Mainly short vowels: + key {[ U0ACB, U0A93 ]}; + key {[ U0AC7, U0A8F ]}; + key {[ U0ACD, U0A85 ]}; + key {[ U0ABF, U0A87 ]}; + key {[ U0AC1, U0A89 ]}; + + // Mainly unvoiced consonants: + key {[ U0AAA, U0AAB ]}; + key {[ U0AB0, U0AB0 ]}; + key {[ U0A95, U0A96 ]}; + key {[ U0AA4, U0AA5 ]}; + key {[ U0A9A, U0A9B ]}; + key {[ U0A9F, U0AA0 ]}; + key {[ U0AC9, U0A91 ]}; + + key {[ z, Z ]}; + key {[ U0A82, U0A81 ]}; + key {[ U0AAE, U0AA3 ]}; + key {[ U0AA8, U0AA8 ]}; + key {[ U0AB5, U0AB5 ]}; + key {[ U0AB2, U0AB3 ]}; + key {[ U0AB8, U0AB6 ]}; + key {[ comma, U0AB7 ]}; + key {[ period, U0964 ]}; + key {[ U0AAF, question ]}; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "kan" { + + // Inscript layout for Kannada. + // Author : G Karunakar + // Date : Wed Nov 13 17:22:58 IST 2002 + // Kannada digits mapped in basic only + + name[Group1]= "Kannada"; + + key { [ U0cca, U0c92 ] }; + key { [ U0ce7 ] }; + key { [ U0ce8 ] }; + key { [ U0ce9 ] }; + key { [ U0cea ] }; + key { [ U0ceb ] }; + key { [ U0cec ] }; + key { [ U0ced ] }; + key { [ U0cee ] }; + key { [ U0cef ] }; + key { [ U0ce6 ] }; + key { [ U0c83 ] }; + key { [ U0cc3, U0c8b ] }; + + key { [ U0ccc, U0c94 ] }; + key { [ U0cc8, U0c90 ] }; + key { [ U0cbe, U0c86 ] }; + key { [ U0cc0, U0c88 ] }; + key { [ U0cc2, U0c8a ] }; + key { [ U0cac, U0cad ] }; + key { [ U0cb9, U0c99 ] }; + key { [ U0c97, U0c98 ] }; + key { [ U0ca6, U0ca7 ] }; + key { [ U0c9c, U0c9d ] }; + key { [ U0ca1, U0ca2 ] }; + key { [ U0cbc, U0c9e ] }; + + key { [ U0ccb, U0c93 ] }; + key { [ U0cc7, U0c8f ] }; + key { [ U0ccd, U0c85 ] }; + key { [ U0cbf, U0c87 ] }; + key { [ U0cc1, U0c89 ] }; + key { [ U0caa, U0cab ] }; + key { [ U0cb0, U0cb1 ] }; + key { [ U0c95, U0c96 ] }; + key { [ U0ca4, U0ca5 ] }; + key { [ U0c9a, U0c9b ] }; + key { [ U0c9f, U0ca0 ] }; + + key { [ U0cc6, U0c8e ] }; + key { [ U0c82 ] }; + key { [ U0cae, U0ca3 ] }; + key { [ U0ca8 ] }; + key { [ U0cb5, U0cb4 ] }; + key { [ U0cb2, U0cb3 ] }; + key { [ U0cb8, U0cb6 ] }; + key { [ comma, U0cb7 ] }; + key { [ period ] }; + key { [ U0caf, at ] }; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +// Description : A keymap for Malayalam +// Encoding : Unicode (http://www.unicode.org) +// Author : Baiju M +// Date : Sat Aug 17 21:10:48 IST 2002 +partial alphanumeric_keys +xkb_symbols "mal" { + + name[Group1] = "Malayalam"; + + // From grave to backslash: + key { [ U0d4a , U0d12 ] }; + key { [ U0d67 , exclam ] }; + key { [ U0d68 , at ] }; + key { [ U0d69 , numbersign ] }; + key { [ U0d6a , dollar ] }; + key { [ U0d6b , percent ] }; + key { [ U0d6c , asciicircum ] }; + key { [ U0d6d , ampersand ] }; + key { [ U0d6e , asterisk ] }; + key { [ U0d6f , parenleft ] }; + key { [ U0d66 , parenright ] }; + key { [ minus , U0d03 ] }; + key { [ U0d43 , U0d0b ] }; + key { [ U200c, backslash ] }; // ZWNJ + + // From Q to right bracket: + key { [ U0d4c , U0d14 ] }; + key { [ U0d48 , U0d10 ] }; + key { [ U0d3e , U0d06 ] }; + key { [ U0d40 , U0d08 ] }; + key { [ U0d42 , U0d0a ] }; + key { [ U0d2c , U0d2d ] }; + key { [ U0d39 , U0d19 ] }; + key { [ U0d17 , U0d18 ] }; + key { [ U0d26 , U0d27 ] }; + key { [ U0d1c , U0d1d ] }; + key { [ U0d21 , U0d22 ] }; + key { [ U200d , U0d1e ] }; + + // From A to apostrophe: + key { [ U0d4b , U0d13 ] }; + key { [ U0d47 , U0d0f ] }; + key { [ U0d4d , U0d05 ] }; + key { [ U0d3f , U0d07 ] }; + key { [ U0d41 , U0d09 ] }; + key { [ U0d2a , U0d2b ] }; + key { [ U0d30 , U0d31 ] }; + key { [ U0d15 , U0d16 ] }; + key { [ U0d24 , U0d25 ] }; + key { [ U0d1a , U0d1b ] }; + key { [ U0d1f , U0d20 ] }; + + // From Z to slash: + key { [ U0d46 , U0d0e ] }; + key { [ U0d02 , U200b ] }; // X: ZWSP + key { [ U0d2e , U0d23 ] }; + key { [ U0d28 ] }; + key { [ U0d35 , U0d34 ] }; + key { [ U0d32 , U0d33 ] }; + key { [ U0d38 , U0d36 ] }; + key { [ comma , U0d37 ] }; + key { [ period, U200d ] }; + key { [ U0d2f , question ] }; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +//Name : Lalitha +//Description : A transliteration keyboard layout for Malayalam +//Original Author : Noah Levitt +//Current Main : Jinesh K.J, Swathantra Malayalam Computing (SMC) + +partial alphanumeric_keys +xkb_symbols "mal_lalitha" { + name[Group1] = "Malayalam (Lalitha)"; + key.type[group1]="FOUR_LEVEL"; + + key { [ U0D4D, U0D02, grave, asciitilde ] }; // grave: virama(chandrakala),anusvara + key { [ 1, exclam, U0D67, exclam ] }; + key { [ 2, at, U0D68, at ] }; + key { [ 3, numbersign, U0D69, numbersign ] }; + key { [ 4, dollar, U0D6A, U20B9 ] }; // Rupee + key { [ 5, percent, U0D6B, percent ] }; + key { [ 6, asciicircum, U0D6C, asciicircum ] }; + key { [ 7, ampersand, U0D6D, ampersand ] }; + key { [ 8, asterisk, U0D6E, asterisk ] }; + key { [ 9, parenleft, U0D6F, parenleft ] }; + key { [ 0, parenright, U0D66, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ backslash,bar, U200C ] }; //\: backslash, pipe, ZWNJ + + key { [ U0D48, U0D4C, U0D10, U0D14 ] }; // Q: ai and au matras + key { [ U0D35 ] }; // W: wa, OM + key { [ U0D46, U0D47, U0D0E, U0D0F ] }; // E: e,ee matras + key { [ U0D30, U0D31, U0D43, U0D0B ] }; // R: ra,rra, vocalic Ri + key { [ U0D24, U0D25, U0D1F, U0D20 ] }; // T: tha, ttha,ta,tta + key { [ U0D2f ] }; // Y: ya + key { [ U0D41, U0D42, U0D09, U0D0A ] }; // U: u, uu matras + key { [ U0D3F, U0D40, U0D07, U0D08 ] }; // I: i, ii matras + key { [ U0D4A, U0D4B, U0D12, U0D13 ] }; // O: o, oo matras + key { [ U0D2A ] }; // P: pa + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ U0D3E, U0D05, U0D06, U0D05 ] }; // A: a,aa + key { [ U0D38, U0D37 ] }; // S: sa, ssa + key { [ U0D26, U0D27, U0D21, U0D22 ] }; // D: soft da,soft dda,hard da,hard dda, + key { [ U0D2B ] }; // F: pha + key { [ U0D17, U0D18 ] }; // G: ga, gha + key { [ U0D39, U0D03 ] }; // H: ha, visarg + key { [ U0D1C, U0D1D ] }; // J: ja, jha + key { [ U0D15, U0D16 ] }; // K: ka, kha + key { [ U0D32, U0D33 ] }; // L: la, vocalic L or lru matra` + key { [ semicolon, colon ] }; + key { [apostrophe, quotedbl ] }; + + key { [ U0D34, U0D36 ] }; // Z: sha,zha + key { [ U0D4D, U200B ] }; // X: chandrakala,ZWSP + key { [ U0D1A, U0D1B ] }; // C: ca, cha + key { [ U0D35, U200D ] }; // V: va,ZWJ + key { [ U0D2C, U0D2D ] }; // B: ba, bha + key { [ U0D28, U0D23, U0D19, U0D1E ] }; // N: na, hard na,nga,nha + key { [ U0D2E, U0D02 ] }; // M: ma + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; + + +// Layout for Santali, using the Ol Chiki script. +// (https://www.unicode.org/L2/L2005/05243r-n2984-ol-chiki.pdf, figure 9) +partial alphanumeric_keys +xkb_symbols "sat" { + + name[Group1]= "Santali (Ol Chiki)"; + + key {[ grave, U1C7B ]}; + key {[ U1C51, exclam ]}; + key {[ U1C52, at ]}; + key {[ U1C53, numbersign ]}; + key {[ U1C54, dollar ]}; + key {[ U1C55, percent ]}; + key {[ U1C56, asciicircum ]}; + key {[ U1C57, ampersand ]}; + key {[ U1C58, asterisk ]}; + key {[ U1C59, parenleft ]}; + key {[ U1C50, parenright ]}; + key {[ minus, U1C7C ]}; + key {[ equal, plus ]}; + + key {[ U1C67 ]}; + key {[ U1C63 ]}; + key {[ U1C6E ]}; + key {[ U1C68 ]}; + key {[ U1C74, U1C5B ]}; + key {[ U1C6D ]}; + key {[ U1C69 ]}; + key {[ U1C64 ]}; + key {[ U1C5A, U1C73 ]}; + key {[ U1C6F ]}; + key {[ bracketleft, braceleft ]}; + key {[ bracketright, braceright ]}; + key {[ U1C7F, U1C7E ]}; + + key {[ U1C5F ]}; + key {[ U1C65 ]}; + key {[ U1C70, U1C6B ]}; + key {[ U1C5D ]}; + key {[ U1C5C ]}; + key {[ U1C66, U1C77 ]}; + key {[ U1C61 ]}; + key {[ U1C60 ]}; + key {[ U1C5E ]}; + key {[ semicolon, U1C7A ]}; + key {[ apostrophe, quotedbl ]}; + + key {[ U1C72 ]}; + key {[ U1C7D ]}; + key {[ U1C6A ]}; + key {[ U1C76 ]}; + key {[ U1C75 ]}; + key {[ U1C71, U1C78 ]}; + key {[ U1C62, U1C6C ]}; + key {[ comma, less ]}; + key {[ U1C79, greater ]}; + key {[ slash, question ]}; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + + +// Inscript layout for Oriya. +// Author: G Karunakar +// Date: November 2002 +partial alphanumeric_keys +xkb_symbols "ori" { + name[Group1]= "Oriya"; + + key { [ U0b67 ] }; + key { [ U0b68 ] }; + key { [ U0b69 ] }; + key { [ U0b6a ] }; + key { [ U0b6b ] }; + key { [ U0b6c ] }; + key { [ U0b6d ] }; + key { [ U0b6e ] }; + key { [ U0b6f ] }; + key { [ U0b66 ] }; + key { [ U0b03 ] }; + key { [ U0b43, U0b0b ] }; + + key { [ U0b4c, U0b14 ] }; + key { [ U0b48, U0b10 ] }; + key { [ U0b3e, U0b06 ] }; + key { [ U0b40, U0b08 ] }; + key { [ U0b42, U0b0a ] }; + key { [ U0b2c, U0b2d ] }; + key { [ U0b39, U0b19 ] }; + key { [ U0b17, U0b18 ] }; + key { [ U0b26, U0b27 ] }; + key { [ U0b1c, U0b1d ] }; + key { [ U0b21, U0b22 ] }; + key { [ U0b3c, U0b1e ] }; + + key { [ U0b4b, U0b13 ] }; + key { [ U0b47, U0b0f ] }; + key { [ U0b4d, U0b05 ] }; + key { [ U0b3f, U0b07 ] }; + key { [ U0b41, U0b09 ] }; + key { [ U0b2a, U0b2b ] }; + key { [ U0b30 ] }; + key { [ U0b15, U0b16 ] }; + key { [ U0b24, U0b25 ] }; + key { [ U0b1a, U0b1b ] }; + key { [ U0b1f, U0b20 ] }; + + key { [ U0b02, U0b01 ] }; + key { [ U0b2e, U0b23 ] }; + key { [ U0b28 ] }; + key { [ U0b35 ] }; + key { [ U0b32, U0b33 ] }; + key { [ U0b38, U0b36 ] }; + key { [ comma, U0b37 ] }; + key { [ period ] }; + key { [ U0b2f, at ] }; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +// Phonetic layout for Oriya like Hindi Bolnagiri +// Author: Lalit Mishra +// Date: 3rd March, 2021. +partial alphanumeric_keys +xkb_symbols "ori-bolnagri" { + + name[Group1] = "Oriya (Bolnagri)"; + + key.type[group1]="FOUR_LEVEL"; + + key {[ U0B02, U0B01, grave, asciitilde ]}; // grave: anusvara, candrabindu + key {[ U0B67, exclam, 1 ]}; + key {[ U0B68, at, 2, U20AC ]}; + key {[ U0B69, numbersign, 3, U00A3 ]}; + key {[ U0B6A, dollar, 4, U20B9 ]}; // Rupee symbol on Shift+AltGr+4 + key {[ U0B6B, percent, 5 ]}; + key {[ U0B6C, asciicircum, 6 ]}; + key {[ U0B6D, ampersand, 7 ]}; + key {[ U0B6E, asterisk, 8 ]}; + key {[ U0B6F, parenleft, 9 ]}; + key {[ U0B66, parenright, 0 ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + key {[ U0964, U0965, U007C, U005C ]}; //pipe : danda, double danda + + key {[ U200C, U200D ]}; // Q: ZWNJ, ZWJ + key {[ U0B71, U0B35 ]}; // W: wa + key {[ U0B47, U0B48, U0B0F, U0B10 ]}; // E: e, ai matras + key {[ U0B30, U0B43, U0B0B, U0B60 ]}; // R: ra, vocalic Ri + key {[ U0B24, U0B25 ]}; // T: ta, tha + key {[ U0B2f, U0B5F, U0B1E ]}; // Y: ya, nya + key {[ U0B41, U0B42, U0B09, U0B0A ]}; // U: u, uu matras + key {[ U0B3F, U0B40, U0B07, U0B08 ]}; // I: i, ii matras + key {[ U0B4B, U0B4C, U0B13, U0B14 ]}; // O: o, au matras + key {[ U0B2A, U0B2B ]}; // P: pa, pha + key {[ bracketleft, braceleft ]}; + key {[ bracketright, braceright]}; + + key {[ U0B3E, U0B06, U0B05, U0B06 ]}; // A: aa, full A, AA + key {[ U0B38, U0B37 ]}; // S: sa, ssa + key {[ U0B26, U0B27 ]}; // D: da, dha + key {[ U0B1F, U0B20 ]}; // F: TA, THA + key {[ U0B17, U0B18 ]}; // G: ga, gha + key {[ U0B39, U0B03 ]}; // H: ha, visarg + key {[ U0B1C, U0B1D ]}; // J: ja, jha + key {[ U0B15, U0B16 ]}; // K: ka, kha + key {[ U0B32, U0B33, U0B62, U0B0C ]}; // L: la, vocalic L or lru matra + key {[ semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + + key {[ U0B36 ]}; // Z: sha, akaar candra + key {[ U0B4D ]}; // X: halant, aakaar candra, chandra A + key {[ U0B1A, U0B1B ]}; // C: ca, cha + key {[ U0B21, U0B22 ]}; // V: da, dha + key {[ U0B2C, U0B2D ]}; // B: ba, bha + key {[ U0B28, U0B23 ]}; // N: na, nna + key {[ U0B2E, U0B19, U0B3D ]}; // M: ma, nga, avagraha + key {[ comma, U0B70, U0B44, U0B61 ]}; // comma: comma, dev abbreviation sign + key {[ period, U0B3C, U0B55 ]}; // period: period, nukta + key {[ slash, question ]}; + + include "level3(ralt_switch)" +}; + +// Phonetic layout for Oriya like Hindi Wx +// Author: Lalit Mishra +// Date: 3rd March, 2021. +partial alphanumeric_keys +xkb_symbols "ori-wx" { + + name[Group1]= "Oriya (Wx)"; + + key {[ grave, asciitilde, U200C, U200D ]}; + key {[ U0B67, exclam, 1 ]}; + key {[ U0B68, at, 2, U20AC ]}; + key {[ U0B69, numbersign, 3, U00A3 ]}; + key {[ U0B6A, dollar, 4, U20B9 ]}; + key {[ U0B6B, percent, 5 ]}; + key {[ U0B6C, asciicircum, 6 ]}; + key {[ U0B6D, ampersand, 7 ]}; + key {[ U0B6e, asterisk, 8 ]}; + key {[ U0B6F, parenleft, 9 ]}; + key {[ U0B66, parenright, 0 ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ U0B43, U0B44, U0B0B, U0B60 ]}; + key {[ U0B24, U0B25 ]}; + key {[ U0B47, U0B48, U0B0F, U0B10 ]}; + key {[ U0B30, U0B37 ]}; + key {[ U0B1F, U0B20 ]}; + key {[ U0B2F, U0B5F ]}; + key {[ U0B41, U0B42, U0B09, U0B0A ]}; + key {[ U0B3F, U0B40, U0B07, U0B08 ]}; + key {[ U0B4B, U0B4C, U0B13, U0B14 ]}; + key {[ U0B2A, U0B2B ]}; + key {[bracketleft, braceleft ]}; + key {[bracketright, braceright ]}; + key {[ U0964, U0965, backslash, bar ]}; + + key {[ U0B4D, U0B3E, U0B05, U0B06 ]}; + key {[ U0B38, U0B36 ]}; + key {[ U0B21, U0B22 ]}; + key {[ U0B19, U0B1E ]}; + key {[ U0B17, U0B18 ]}; + key {[ U0B39, U0B03 ]}; + key {[ U0B1C, U0B1D ]}; + key {[ U0B15, U0B16 ]}; + key {[ U0B32, U0B62, U0B33, U0B0C ]}; + key {[semicolon, colon ]}; + key {[apostrophe, quotedbl ]}; + + key {[ U0B01, U0B3C, U0B3D ]}; + key {[ U0B26, U0B27 ]}; + key {[ U0B1A, U0B1B ]}; + key {[ U0B71, U0B35 ]}; + key {[ U0B2C, U0B2D ]}; + key {[ U0B28, U0B23 ]}; + key {[ U0B2E, U0B02 ]}; + key {[ comma, less ]}; + key {[ period, greater ]}; + key {[ slash, question ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "tam" { + + name[Group1] = "Tamil (InScript, with Arabic numerals)"; + + key {[ U0BCA, U0B92 ]}; + key {[ 1 ]}; + key {[ 2 ]}; + key {[ 3 ]}; + key {[ 4, U20B9 ]}; // Rupee + key {[ 5 ]}; + key {[ 6 ]}; + key {[ 7 ]}; + key {[ 8 ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ minus, U0B83 ]}; + key {[ equal, plus ]}; + + // Mainly long vowels: + key {[ U0BCC, U0B94 ]}; + key {[ U0BC8, U0B90 ]}; + key {[ U0BBE, U0B86 ]}; + key {[ U0BC0, U0B88 ]}; + key {[ U0BC2, U0B8A ]}; + + // Mainly voiced consonants: + key {[ U0BB9, U0B99 ]}; + key {[ U0B9C ]}; + key {[ U0B9E ]}; + + // Mainly short vowels: + key {[ U0BCB, U0B93 ]}; + key {[ U0BC7, U0B8F ]}; + key {[ U0BCD, U0B85 ]}; + key {[ U0BBF, U0B87 ]}; + key {[ U0BC1, U0B89 ]}; + + // Mainly unvoiced consonants: + key {[ U0BAA ]}; + key {[ U0BB0, U0BB1 ]}; + key {[ U0B95 ]}; + key {[ U0BA4 ]}; + key {[ U0B9A ]}; + key {[ U0B9F ]}; + key {[backslash, bar ]}; + + key {[ U0BC6, U0B8E ]}; + key {[ U0B82 ]}; + key {[ U0BAE, U0BA3 ]}; + key {[ U0BA8, U0BA9 ]}; + key {[ U0BB5, U0BB4 ]}; + key {[ U0BB2, U0BB3 ]}; + key {[ U0BB8, U0BB6 ]}; + key {[ comma, U0BB7 ]}; + key {[ period, U0964 ]}; + key {[ U0BAF, question]}; +}; + +partial alphanumeric_keys +xkb_symbols "tam_tamilnumbers" { + + include "in(tam)" + + name[Group1] = "Tamil (InScript, with Tamil numerals)"; + + key {[ U0BE7, any ]}; + key {[ U0BE8, any ]}; + key {[ U0BE9, any ]}; + key {[ U0BEA, any ]}; + key {[ U0BEB, any ]}; + key {[ U0BEC, any ]}; + key {[ U0BED, any ]}; + key {[ U0BEE, any ]}; + key {[ U0BEF, any ]}; + key {[ U0BF0, any ]}; + key {[ U0BF1, any ]}; + key {[ U0BF2, any ]}; +}; + +partial alphanumeric_keys +xkb_symbols "tamilnet" { + + // Description: A keymap based on the TamilNet'99 typewriter keyboard + // Encoding: Unicode (http://www.unicode.org) + // Author: Thuraiappah Vaseeharan + // Modifed by: Malathi S + // Secondary contact: Sri Ramadoss M + // Date : Fri Sep 4 11:32:00 CST 2009 + + name[Group1]= "Tamil (TamilNet '99)"; + + key {[ apostrophe, asciitilde ]}; + key {[ 1, exclam ]} ; + key {[ 2, at ]} ; + key {[ 3, numbersign ]} ; + key {[ 4, U0BF9 ]} ; + key {[ 5, percent ]} ; + key {[ 6, asciicircum ]} ; + key {[ 7, ampersand ]} ; + key {[ 8, asterisk ]} ; + key {[ 9, parenleft ]} ; + key {[ 0, parenright ]} ; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + // Q row + key {[ U0B9E, U0BB6 ]}; + key {[ U0BB1, U0BB7 ]}; + key {[ U0BA8, U0BB8 ]}; + key {[ U0B9A, U0BB9 ]}; + key {[ U0BB5, U0B9C ]}; + key {[ U0BB2 ]}; + key {[ U0BB0 ]}; + key {[ U0BC8, U0B90 ]}; + key {[ U0BCA, U0BCB ]}; + key {[ U0BBF, U0BC0 ]}; + key {[ U0BC1, U0BC2 ]}; + + // A row + key {[ U0BAF ]}; + key {[ U0BB3 ]}; + key {[ U0BA9 ]}; + key {[ U0B95 ]}; + key {[ U0BAA ]}; + key {[ U0BBE, U0BB4 ]}; + key {[ U0BA4 ]}; + key {[ U0BAE ]}; + key {[ U0B9F ]}; + key {[ U0BCD, U0B83 ]}; + key {[ U0B99 ]}; + + // Z row + key {[ U0BA3 ]}; + key {[ U0B92, U0B93 ]}; + key {[ U0B89, U0B8A ]}; + key {[ U0B8E, U0B8F ]}; + key {[ U0BC6, U0BC7 ]}; + key {[ U0B94, U0BCC ]}; + key {[ U0B85, U0B86 ]}; + key {[ U0B87, U0B88 ]}; +}; + +partial alphanumeric_keys +xkb_symbols "tamilnet_tamilnumbers" { + + include "in(tamilnet)" + + name[Group1]= "Tamil (TamilNet '99 with Tamil numerals)"; + + key {[ U0BE7, any ]}; + key {[ U0BE8, any ]}; + key {[ U0BE9, any ]}; + key {[ U0BEA, any ]}; + key {[ U0BEB, any ]}; + key {[ U0BEC, any ]}; + key {[ U0BED, any ]}; + key {[ U0BEE, any ]}; + key {[ U0BEF, any ]}; + key {[ U0BE6, any ]}; +}; + +partial alphanumeric_keys +xkb_symbols "tamilnet_TSCII" { + + // Description : A Tamil typewrite-style keymap + // loosely based on TamilNet'99 reommendations + // Encoding : TSCII (http://www.tscii.org) + // Author : Thuraiappah Vaseeharan + // Last Modified: Sat Jan 5 17:11:26 CST 2002 + + name[Group1]= "Tamil (TamilNet '99, TSCII encoding)"; + + key {[ 0x10000b7, 0x10000a4 ]}; // aytham + key {[ 0x1000082, 0x10000a5 ]}; // shri + key {[ 0x1000083, 0x1000088 ]}; // ja + key {[ 0x1000084, 0x1000089 ]}; // sha + key {[ 0x1000085, 0x100008a ]}; // sa + key {[ 0x1000086, 0x100008b ]}; // ha + key {[ 0x1000087, 0x100008c ]}; // ksha + + // Q row + key {[ 0x10000bb, 0x100009a ]}; // nja + key {[ 0x10000c8, 0x10000da ]}; // Ra + key {[ 0x10000bf, 0x10000d1 ]}; // NNa + key {[ 0x10000ba, 0x10000cd ]}; // ca + key {[ 0x10000c5, 0x10000d7 ]}; // va + key {[ 0x10000c4, 0x10000d6 ]}; // la + key {[ 0x10000c3, 0x10000d5 ]}; // ra + key {[ 0x10000a8, 0x10000b3 ]}; // sangili, ai + key {[ 0x10000ca, 0x10000cb ]}; // di, dI + key {[ 0x10000a2, 0x10000a3 ]}; // visiri + key {[ dead_acute,0x10000a3 ]}; // Ukaaram + + // A row + key {[ 0x10000c2, 0x10000d4 ]}; // ya + key {[ 0x10000c7, 0x10000d9 ]}; // La + key {[ 0x10000c9, 0x10000db ]}; // na + key {[ 0x10000b8, 0x10000cc ]}; // ka + key {[ 0x10000c0, 0x10000d2 ]}; // pa + key {[ dead_grave,0x10000a1 ]}; // pulli,aravu + key {[ 0x10000be, 0x10000d0 ]}; // tha + key {[ 0x10000c1, 0x10000d3 ]}; // ma + key {[ 0x10000bc, 0x10000ce ]}; // da + key {[ 0x10000c6, 0x10000d8 ]}; // zha + key {[ 0x10000b9, 0x1000099 ]}; // nga + + // Z row + key {[ 0x10000bd, 0x10000cf ]}; // Na + key {[ 0x10000b4, 0x10000b5 ]}; // o, O + key {[ 0x10000af, 0x10000b0 ]}; // u, U + key {[ 0x10000b1, 0x10000b2 ]}; // e, E + key {[ 0x10000a6, 0x10000a7 ]}; // kombus + key {[ 0x10000b6, 0x10000aa ]}; // au + key {[ 0x10000ab, 0x10000ac ]}; // a, A + key {[ 0x10000fe, 0x10000ae ]}; // i, I +}; + +partial alphanumeric_keys +xkb_symbols "tamilnet_TAB" { + + // Description: A keymap based on the TamilNet'99 typewriter keyboard + // Encoding: TAB (http://www.tamilnet99.org) + // Author: Thuraiappah Vaseeharan + // Date : Sun Aug 12 02:23:00 CDT 2001 + + name[Group1]= "Tamil (TamilNet '99, TAB encoding)"; + + // Digits row + key {[ 0x10000e7, 0x10000a7 ]} ; + key {[ 0x10000fa, 0x10000a8 ]} ; + key {[ 0x10000fb ]} ; + key {[ 0x10000fc ]} ; + key {[ 0x10000fd ]} ; + key {[ 0x10000fe ]} ; + key {[ 0x10000ff ]} ; + + // Q row + key {[ 0x10000eb, 0x10000b3 ]}; + key {[ 0x10000f8, 0x10000c1 ]}; + key {[ 0x10000ef, 0x10000b8 ]}; + key {[ 0x10000ea, 0x10000b2 ]}; + key {[ 0x10000f5, 0x10000be ]}; + key {[ 0x10000f4, 0x10000bd ]}; + key {[ 0x10000f3, 0x10000bc ]}; + key {[ 0x10000ac, 0x10000e4 ]}; + key {[ 0x10000ae, 0x10000af ]}; + key {[ 0x10000a4, 0x10000a6 ]}; + key {[ dead_circumflex, 0x10000a6 ]}; // Ukaaram + + // A row + key {[ 0x10000f2, 0x10000bb ]}; + key {[ 0x10000f7, 0x10000c0 ]}; + key {[ 0x10000f9, 0x10000c2 ]}; + key {[ 0x10000e8, 0x10000b0 ]}; + key {[ 0x10000f0, 0x10000b9 ]}; + key {[ 0x10000a2, 0x10000a3 ]}; + key {[ 0x10000ee, 0x10000b6 ]}; + key {[ 0x10000f1, 0x10000ba ]}; + key {[ 0x10000ec, 0x10000b4 ]}; + key {[ 0x10000f6, 0x10000bf ]}; + key {[ 0x10000e9, 0x10000b1 ]}; + + // Z row + key {[ 0x10000ed, 0x10000b5 ]}; + key {[ 0x10000e5, 0x10000e6 ]}; + key {[ 0x10000e0, 0x10000e1 ]}; + key {[ 0x10000e2, 0x10000e3 ]}; + key {[ 0x10000aa, 0x10000ab ]}; + key {[ 0x10000ac, 0x10000a3 ]}; + key {[ 0x10000dc, 0x10000dd ]}; + key {[ 0x10000de, 0x10000df ]}; +}; + +partial alphanumeric_keys +xkb_symbols "tel" { + + // InScript layout for Telugu using Unicode + // Author: G Karunakar + // See layout at http://www.indlinux.org/keymap/telugu.php + + name[Group1]= "Telugu"; + + key { [ U0c4a, U0c12 ] }; + key { [ U0c67 ] }; + key { [ U0c68 ] }; + key { [ U0c69, numbersign ] }; + key { [ U0c6a, dollar ] }; + key { [ U0c6b, percent ] }; + key { [ U0c6c, asciicircum ] }; + key { [ U0c6d, ampersand ] }; + key { [ U0c6e, asterisk ] }; + key { [ U0c6f, parenleft ] }; + key { [ U0c66, parenright ] }; + key { [ U0c03, underscore ] }; + key { [ U0c43, U0c0b ] }; + + key { [ U0c4c, U0c14 ] }; + key { [ U0c48, U0c10 ] }; + key { [ U0c3e, U0c06 ] }; + key { [ U0c40, U0c08 ] }; + key { [ U0c42, U0c0a ] }; + key { [ U0c2c, U0c2d ] }; + key { [ U0c39, U0c19 ] }; + key { [ U0c17, U0c18 ] }; + key { [ U0c26, U0c27 ] }; + key { [ U0c1c, U0c1d ] }; + key { [ U0c21, U0c22 ] }; + key { [ U0c1e ] }; + + key { [ U0c4b, U0c13 ] }; + key { [ U0c47, U0c0f ] }; + key { [ U0c4d, U0c05 ] }; + key { [ U0c3f, U0c07 ] }; + key { [ U0c41, U0c09 ] }; + key { [ U0c2a, U0c2b ] }; + key { [ U0c30, U0c31 ] }; + key { [ U0c15, U0c16 ] }; + key { [ U0c24, U0c25 ] }; + key { [ U0c1a, U0c1b ] }; + key { [ U0c1f, U0c20 ] }; + + key { [ U0c46, U0c0e ] }; + key { [ U0c02, U0c01 ] }; + key { [ U0c2e, U0c23 ] }; + key { [ U0c28 ] }; + key { [ U0c35 ] }; + key { [ U0c32, U0c33 ] }; + key { [ U0c38, U0c36 ] }; + key { [ comma, U0c37 ] }; + key { [ period ] }; + key { [ U0c2f, at ] }; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +//Name : Sarala +//Description : This is an adaptation of the Sarala keyboard (http://www.medhajananam.org/sarala/) developed +// by Krishna Dhullipalla. Because of the way keyboard shortcuts are laid out in KDE, the keyboard +// modifiers had to be changed. The layout does not take any part of the original Sarala keyboard +// code however. It has been developed from scratch, so the experience may differ. +// +// There is a ibus-m17n version of Sarala layout developed by Satya Pothamsetti on +// http://www.medhajananam.org/. +//Standard : Supports Unicode 9.0. +//Help : This layout differs slightly from the layout on Medhajenanam. The layout has been depicted in the +// pdf file attached to this post on Sarala google group. +// (https://groups.google.com/forum/#!topic/sarala-keyboard/-gsa90dUFcs). +// +//Layout Developed by : Krishna Dhullipalla (http://www.medhajananam.org/) +//Author : Venkat R Akkineni +//Date : Apr 28 2017 +partial alphanumeric_keys +xkb_symbols "tel-sarala" +{ + name[Group1] = "Telugu (Sarala)"; + key.type[group1]="FOUR_LEVEL"; + + key {[ U0C4A, U0C12 ]}; // ొ ఒ + key {[ U0C42, U0C0A ]}; // ూ ఊ + key {[ U0C21, U0C22 ]}; // డ ఢ + key {[ U0C35, U0C39 ]}; // వ హ + key {[ U0C2C, U0C2D ]}; // బ భ + key {[ U0C28, U0C23 ]}; // న ణ + key {[ U0C2E, U0C01 ]}; // మ ఁ + key {[ comma, U0C1E, less ]}; // , ఞ < + key {[ period, U0C19, greater ]}; // . ఙ > + key {[ U0C36, question, slash ]}; // శ ? / + + key {[ U0C2F, U0C3D ]}; // య ఽ + key {[ U0C02, U0C03 ]}; // ం ః + key {[ U0C26, U0C27 ]}; // ద ధ + key {[ U0C4D, U0C05 ]}; // ్ అ + key {[ U0C17, U0C18 ]}; // గ ఘ + key {[ U0C1A, U0C1B, U0C58, U0C59 ]}; // చ ఛ ౘ ౙ + key {[ U0C3E, U0C06 ]}; // ా ఆ + key {[ U0C15, U0C16, U0C62, U0C63 ]}; // క ఖ ౢ ౣ + key {[ U0C32, U0C33, U0C0C, U0C61 ]}; // ల ళ ఌ ౡ + key {[ U0C1F, U0C20, semicolon, colon ]}; // ట ఠ ; : + key {[ apostrophe, quotedbl ]}; // ' " + + key {[ U0C46, U0C0E, U0C44, U0C34 ]}; // ె ఎ ౄ ఴ + key {[ U0C38, U0C37, U0C44 ]}; // స ష ౄ + key {[ U0C47, U0C0F, U0C44 ]}; // ే ఏ ౄ + key {[ U0C30, U0C31, U0C44, U0C60 ]}; // ర ఱ ౄ ౠ + key {[ U0C24, U0C25 ]}; // త థ + key {[ U0C40, U0C08 ]}; // ీ ఈ + key {[ U0C41, U0C09 ]}; // ు ఉ + key {[ U0C3F, U0C07 ]}; // ి ఇ + key {[ U0C4B, U0C13 ]}; // ో ఓ + key {[ U0C2A, U0C2B ]}; // ప ఫ + key {[ U0C1C, U0C1D, bracketleft, braceleft ]}; // జ ఝ [ { + key {[ U0C48, U0C10, bracketright, braceright ]}; // ై ఐ ] } + + key {[ 1, exclam, U0C67, U0C78 ]}; // 1 ! ౦ ౸ + key {[ 2, at, U0C68, U0C79 ]}; // 2 @ ౨ ౹ + key {[ 3, numbersign, U0C69, U0C7A ]}; // 3 # ౩ ౺ + key {[ 4, dollar, U0C6A, U0C7B ]}; // 4 $ ౪ ౻ + key {[ 5, percent, U0C6B, U0C7C ]}; // 5 % ౫ ౼ + key {[ 6, asciicircum, U0C6C, U0C7D ]}; // 6 ^ ౬ ౽ + key {[ 7, ampersand, U0C6D, U0C7E ]}; // 7 & ౭ ౾ + key {[ 8, asterisk, U0C6E, U0C7F ]}; // 8 * ౮ ౿ + key {[ 9, parenleft, U0C6F, U20B9 ]}; // 9 ( ౯ ₹ + key {[ 0, parenright, U0C66, U0C55 ]}; // 0 ) ౦ ౕ + key {[ minus, underscore, NoSymbol, U0C56 ]}; // - _ ౖ + key {[ equal, plus ]}; // = + + key {[ U0C4C, U0C14, U0964, U0965 ]}; // ౌ ఔ । ॥ + key {[ U0C43, U0C0B, grave, asciitilde ]}; // ృ ఋ ` ~ + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "urd-phonetic" { + include "pk(urd-phonetic)" + name[Group1]= "Urdu (phonetic)"; +}; + +partial alphanumeric_keys +xkb_symbols "urd-phonetic3" { + include "pk(urd-crulp)" + name[Group1]= "Urdu (alt. phonetic)"; +}; + +partial alphanumeric_keys +xkb_symbols "urd-winkeys" { + include "pk(urd-nla)" + name[Group1]= "Urdu (Windows)"; +}; + +partial alphanumeric_keys +xkb_symbols "guru" { + name[Group1]= "Punjabi (Gurmukhi)"; + + // Mainly digits: + key { [ U0A67 ] }; + key { [ U0A68 ] }; + key { [ U0A69, U0A71 ] }; + key { [ U0A6A, U0A74 ] }; + key { [ U0A6B, U262C ] }; + key { [ U0A6C ] }; + key { [ U0A6D ] }; + key { [ U0A6e ] }; + key { [ U0A6F, parenleft ] }; + key { [ U0A66, parenright ] }; + key { [ U0A03 ] }; + key { [ equal,plus ] }; + + // Mainly long vowels: + key { [ U0A4C, U0A14 ] }; + key { [ U0A48, U0A10 ] }; + key { [ U0A3E, U0A06 ] }; + key { [ U0A40, U0A08 ] }; + key { [ U0A42, U0A0A ] }; + + // Mainly voiced consonants: + key { [ U0A2C, U0A2D ] }; + key { [ U0A39, U0A19 ] }; + key { [ U0A17, U0A18 ] }; + key { [ U0A26, U0A27 ] }; + key { [ U0A1C, U0A1D ] }; + key { [ U0A21, U0A22 ] }; + key { [ U0A3C, U0A1E ] }; + + // Mainly short vowels: + key { [ U0A4B, U0A13 ] }; + key { [ U0A47, U0A0F ] }; + key { [ U0A4D, U0A05 ] }; + key { [ U0A3F, U0A07 ] }; + key { [ U0A41, U0A09 ] }; + + // Mainly unvoiced consonants: + key { [ U0A2A, U0A2B ] }; + key { [ U0A30, U0A5C ] }; + key { [ U0A15, U0A16 ] }; + key { [ U0A24, U0A25 ] }; + key { [ U0A1A, U0A1B ] }; + key { [ U0A1F, U0A20 ] }; + key { [ backslash, bar] }; + + key { [ z, U0A01 ] }; + key { [ U0A02, U0A70, U0A71 ] }; + key { [ U0A2E, U0A23 ] }; + key { [ U0A28, U0A28 ] }; + key { [ U0A35, U0A35 ] }; + key { [ U0A32, U0A33 ] }; + key { [ U0A38, U0A36 ] }; + key { [ comma, less ] }; + key { [ period, U0964 ] }; + key { [ U0A2F, question ] }; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +//Name : Jhelum (Refind InScript) +//Description : A Jhelum keyboard layout for Gurmukhi (Punjabi) +// http://www.satluj.org/Jhelum.html +//Modified for InScript to make +//Original Author : Amanpreet Singh Alam { [ grave, asciitilde, U0A02,U0A01 ] }; // grave: anusvara, candrabindu + key { [ 1,exclam, U0A67, exclam ] }; + key { [ 2,at, U0A68, at ] }; + key { [ 3,numbersign, U0A69, numbersign ] }; + key { [ 4,dollar, U0A6A ] }; + key { [ 5,percent,U0A6B, percent ] }; + key { [ 6,U0A73, U0A6C,asciicircum ] }; + key { [ 7,U0A72,U0A6D,ampersand ] }; + key { [ 8,asterisk,U0A6E, asterisk ] }; + key { [ 9,parenleft,U0A6F,parenleft ] }; + key { [ 0,parenright,U0A66,parenright ] }; + key { [ minus,underscore] }; + key { [ equal,plus] }; + key { [ U0964,U0965,bar,backslash] }; //pipe : danda, double danda + + // Q row + key { [ U0A4C, U0A14 ] }; // Q: oo, ooh + key { [ U0A48, U0A10 ] }; // W: ee, ae + key { [ U0A3E, U0A06 ] }; // E: a, aa + key { [ U0A40, U0A08, U20B9 ] }; // R: ee, ai, rupeesign + key { [ U0A42, U0A0A ] }; // T: u, uu + key { [ U0A30, U0A5C ] }; // Y: ra, raa + key { [ U0A26, U0A27 ] }; // U: tha, thha + key { [ U0A17, U0A18, U0A5A ] }; // I:ga, gha + key { [ U0A24, U0A1F ] }; // O: ta, tha + key { [ U0A2A, U0A5E, VoidSymbol,U0A5E ] }; // P: pa, pha + key { [ U0A21, U0A22, bracketleft, braceleft ] }; + key { [ U0A19, U0A1E, bracketright, braceright ] }; + + // A row + key { [ U0A4B, U0A13 ] }; // A: o, oo + key { [ U0A47, U0A0F ] }; // S: e, ee + key { [ U0A4D, U0A05 ] }; // D: halant, aa + key { [ U0A3F, U0A07 ] }; // F: i, aa + key { [ U0A41, U0A09 ] }; // G: u, uh + key { [ U0A39, U0A20 ] }; // H: ha, thha + key { [ U0A1C, U0A1D, U0A5B ] }; // J: ja, jha + key { [ U0A15, U0A16,VoidSymbol ,U0A59 ] }; // K: ka, kha + key { [ U0A32, U0A25, U0A33 ] }; // L: la, tha + key { [ U0A38, colon, U0A36 ] }; //; sa + key { [apostrophe, quotedbl ] }; + + // Z row + key { [ U0A71, U0A3C ] }; // Z: addak, par bindi + key { [ U0A02, U0A70 ] }; // X: bindi, tippi + key { [ U0A1A, U0A1B ] }; // C: ca, cha + key { [ U0A35, U0A2F ] }; // V: va, ya + key { [ U0A2C, U0A2D ] }; // B: ba, bha + key { [ U0A28, U0A23 ] }; // N: na, nha + key { [ U0A2E, U0A2E ] }; // M: ma + key { [ comma, U262C ] };// comma: comma, dev abbreviation sign + key { [ period, U0A74 ] }; // period: period, nukta + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + +// Contact: Walter Bender + + include "in(deva)" + + key { [ U094A, U0912 ] }; // DEVANAGARI VOWEL SIGN SHORT O; DEVANAGARI LETTER SHORT O + key { [ U0967, U090D ] }; // DEVANAGARI DIGIT ONE; DEVANAGARI LETTER CANDRA E + key { [ U0968, U0945 ] }; // DEVANAGARI DIGIT TWO; DEVANAGARI VOWEL SIGN CANDRA E + key { [ U0969 ] }; // DEVANAGARI DIGIT THREE; + key { [ U096A ] }; // DEVANAGARI DIGIT FOUR; + key { [ U096B ] }; // DEVANAGARI DIGIT FIVE; + key { [ U096C ] }; // DEVANAGARI DIGIT SIX; + key { [ U096D ] }; // DEVANAGARI DIGIT SEVEN; + key { [ U096E ] }; // DEVANAGARI DIGIT EIGHT; + key { [ U096F, parenleft ] }; // DEVANAGARI DIGIT NINE; + key { [ U0966, parenright ] }; // DEVANAGARI DIGIT ZERO; + key { [ minus, U0903 ] }; // DEVANAGARI SIGN VISARGA; + key { [ U0943, U090B ] }; // DEVANAGARI VOWEL SIGN VOCALIC R; DEVANAGARI LETTER VOCALIC R + + key { [ U094C, U0914 ] }; // DEVANAGARI VOWEL SIGN AU; DEVANAGARI LETTER AU + key { [ U0948, U0910 ] }; // DEVANAGARI VOWEL SIGN AI; DEVANAGARI LETTER AI + key { [ U093E, U0906 ] }; // DEVANAGARI VOWEL SIGN AA; DEVANAGARI LETTER AA + key { [ U0940, U0908 ] }; // DEVANAGARI VOWEL SIGN II; DEVANAGARI LETTER II + key { [ U0942, U090A ] }; // DEVANAGARI VOWEL SIGN UU; DEVANAGARI LETTER UU + key { [ U092C, U092D ] }; // DEVANAGARI LETTER BA; DEVANAGARI LETTER BHA + key { [ U0939, U0919 ] }; // DEVANAGARI LETTER HA; DEVANAGARI LETTER NGA + key { [ U0917, U0918 ] }; // DEVANAGARI LETTER GA; DEVANAGARI LETTER GHA + key { [ U0926, U0927 ] }; // DEVANAGARI LETTER DA; DEVANAGARI LETTER DHA + key { [ U091C, U091D ] }; // DEVANAGARI LETTER JA; DEVANAGARI LETTER JHA + key { [ U0921, U0922 ] }; // DEVANAGARI LETTER DDA; DEVANAGARI LETTER DDHA + key { [ U093C, U091E ] }; // DEVANAGARI SIGN NUKTA; DEVANAGARI LETTER NYA + + key { [ U0949, U0911 ] }; // DEVANAGARI VOWEL SIGN CANDRA O; DEVANAGARI LETTER CANDRA O + + key { [ U094B, U0913 ] }; // DEVANAGARI VOWEL SIGN O; DEVANAGARI LETTER O + key { [ U0947, U090F ] }; // DEVANAGARI VOWEL SIGN E; DEVANAGARI LETTER E + key { [ U094D, U0905 ] }; // DEVANAGARI SIGN VIRAMA; DEVANAGARI LETTER A + key { [ U093F, U0907 ] }; // DEVANAGARI VOWEL SIGN I; DEVANAGARI LETTER I + key { [ U0941, U0909 ] }; // DEVANAGARI VOWEL SIGN U; DEVANAGARI LETTER U + key { [ U092A, U092B ] }; // DEVANAGARI LETTER PA; DEVANAGARI LETTER PHA + key { [ U0930, U0931 ] }; // DEVANAGARI LETTER RA; DEVANAGARI LETTER RRA + key { [ U0915, U0916 ] }; // DEVANAGARI LETTER KA; DEVANAGARI LETTER KHA + key { [ U0924, U0925 ] }; // DEVANAGARI LETTER TA; DEVANAGARI LETTER THA + key { [ U091A, U091B ] }; // DEVANAGARI LETTER CA; DEVANAGARI LETTER CHA + key { [ U091F, U0920 ] }; // DEVANAGARI LETTER TTA; DEVANAGARI LETTER TTHA + + key { [ U0946, U090E ] }; // DEVANAGARI VOWEL SIGN SHORT E; DEVANAGARI LETTER SHORT E + key { [ U0902, U0901 ] }; // DEVANAGARI SIGN ANUSVARA; DEVANAGARI SIGN CANDRABINDU + key { [ U092E, U0923 ] }; // DEVANAGARI LETTER MA; DEVANAGARI LETTER NNA + key { [ U0928, U0929 ] }; // DEVANAGARI LETTER NA; DEVANAGARI LETTER NNNA + key { [ U0935, U0934 ] }; // DEVANAGARI LETTER VA; DEVANAGARI LETTER LLLA + key { [ U0932, U0933 ] }; // DEVANAGARI LETTER LA; DEVANAGARI LETTER LLA + key { [ U0938, U0936 ] }; // DEVANAGARI LETTER SA; DEVANAGARI LETTER SHA + key { [ comma, U0937 ] }; // DEVANAGARI LETTER SSA + key { [ period, U0964 ] }; // DEVANAGARI DANDA + key { [ U092F, U095F ] }; // DEVANAGARI LETTER YA; DEVANAGARI LETTER YYA + + // space, space, Zero-Width-Non-Joiner (ZWNJ), Zero-Width-Joiner (ZWJ): + include "nbsp(zwnj3zwj4)" + + include "group(olpc)" +}; + +partial alphanumeric_keys +xkb_symbols "hin-wx" { + + name[Group1]= "Hindi (Wx)"; + + key { [ grave, asciitilde, 2, 3 ] }; + + key { [ 0x1000967, exclam ] }; + key { [ 0x1000968, at ] }; + key { [ 0x1000969 , numbersign ] }; + key { [ 0x100096A , dollar, U20B9 ] }; // Rupee + key { [ 0x100096B , percent ] }; + key { [ 0x100096C , asciicircum ] }; + key { [ 0x100096D , ampersand ] }; + key { [ 0x100096e , asterisk ] }; + key { [ 0x100096F, parenleft ] }; + key { [ 0x1000966, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + + key { [ 0x1000943, 0x1000944, 0x100090B, 0x1000960] }; + key { [ 0x1000924, 0x1000925 ] }; + key { [ 0x1000947, 0x1000948, 0x100090F, 0x1000910] }; + key { [ 0x1000930, 0x1000937 ] }; + key { [ 0x100091F, 0x1000920 ] }; + + + key { [ 0x100092F ] }; + key { [ 0x1000941, 0x1000942, 0x1000909, 0x100090A ] }; + key { [ 0x100093F, 0x1000940, 0x1000907, 0x1000908 ] }; + key { [ 0x100094B, 0x100094C, 0x1000913, 0x1000914] }; + key { [ 0x100092A, 0x100092B ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ backslash, bar, 0x1000964, 0x1000965 ] }; + + key { [ 0x100094D, 0x100093E, 0x1000905,0x1000906 ] }; + key { [ 0x1000938, 0x1000936 ] }; + key { [ 0x1000921, 0x1000922 ] }; + key { [ 0x1000919, 0x100091E ] }; + key { [ 0x1000917, 0x1000918 ] }; + + + key { [ 0x1000939, 0x1000903 ] }; + key { [ 0x100091C, 0x100091D ] }; + key { [ 0x1000915, 0x1000916 ] }; + key { [ 0x1000932, 0x1000962, 0x1000933, 0x100090C] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ 0x1000901, 0x100093C, 0x100093D, 0x1000950] }; + key { [ 0x1000926, 0x1000927 ] }; + key { [ 0x100091A, 0x100091B ] }; + key { [ 0x1000935 ] }; + key { [ 0x100092C, 0x100092D ] }; + key { [ 0x1000928, 0x1000923 ] }; + key { [ 0x100092E, 0x1000902 ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "eng" { + + include "us(basic)" + name[Group1]= "English (India, with rupee)"; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + + +// Description : Enhanced INSCRIPT keymap for Malayalam +// Encoding : Unicode (http://www.unicode.org) +// Author : Mahesh T Pai +// Date : March, 2011 +// Source : http://www.nongnu.org/smc/docs/images/ml_inscript_layout.jpg +// Comment : Based on the InScript Keyboard created by M Baiju + +partial alphanumeric_keys +xkb_symbols "mal_enhanced" { + + name[Group1] = "Malayalam (enhanced InScript, with rupee)"; + + // From grave to backslash: + key { [ U0d4a , U0d12 ] }; + key { [ U0d67 , exclam ] }; + key { [ U0d68 , at ] }; + key { [ U0d69 , numbersign ] }; + key { [ U0d6a , dollar ] }; + key { [ U0d6b , percent ] }; + key { [ U0d6c , asciicircum ] }; + key { [ U0d6d , ampersand ] }; + key { [ U0d6e , U0d7e ] }; + key { [ U0d6f , parenleft ] }; + key { [ U0d66 , parenright ] }; + key { [ minus , U0d03 ] }; + key { [ U0d43 , U0d0b ] }; + key { [ U0d7c , backslash ] }; // chillu RR + + // From Q to right bracket: + key { [ U0d57 , U0d14 ] }; + key { [ U0d48 , U0d10 ] }; + key { [ U0d3e , U0d06 ] }; + key { [ U0d40 , U0d08 ] }; + key { [ U0d42 , U0d0a ] }; + key { [ U0d2c , U0d2d ] }; + key { [ U0d39 , U0d19 ] }; + key { [ U0d17 , U0d18 ] }; + key { [ U0d26 , U0d27 ] }; + key { [ U0d1c , U0d1d ] }; + key { [ U0d21 , U0d22 ] }; + key { [ U200d , U0d1e ] }; + + // From A to apostrophe: + key { [ U0d4b , U0d13 ] }; + key { [ U0d47 , U0d0f ] }; + key { [ U0d4d , U0d05 ] }; + key { [ U0d3f , U0d07 ] }; + key { [ U0d41 , U0d09 ] }; + key { [ U0d2a , U0d2b ] }; + key { [ U0d30 , U0d31 ] }; + key { [ U0d15 , U0d16 ] }; + key { [ U0d24 , U0d25 ] }; + key { [ U0d1a , U0d1b ] }; + key { [ U0d1f , U0d20 ] }; + + // From Z to slash: + key { [ U0d46 , U0d0e ] }; + key { [ U0d02 , U0d7a ] }; + key { [ U0d2e , U0d23 ] }; + key { [ U0d28 , U0d7b ] }; + key { [ U0d35 , U0d34 ] }; + key { [ U0d32 , U0d33 ] }; + key { [ U0d38 , U0d36 ] }; + key { [ comma , U0d37 ] }; + key { [ period, U0d7d ] }; //chillu l + key { [ U0d2f , question ] }; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +// Description : Poorna Extended INSCRIPT keymap for Malayalam +// Encoding : Unicode (http://www.unicode.org) +// Author : Mujeeb Rahman K , Swathanthra Malayalam Computing (SMC) +// Date : October, 2022 +// Source : http://www.nongnu.org/smc/docs/images/ml_inscript_layout.jpg +// Comment : Based on the InScript Keyboard created by M Baiju + +partial alphanumeric_keys +xkb_symbols "mal_poorna" { + + name[Group1] = "Malayalam (Poorna, extended InScript)"; + + // From grave to backslash: + key {[ U0D4A, U0D12, U0060, U007E ]}; + key {[ U0031, U0021, U0D70, U0D67 ]}; + key {[ U0032, U0040, U0D71, U0D68 ]}; + key {[ U0033, U0023, U0D72, U0D69 ]}; + key {[ U0034, U0024, U20B9, U0D6A ]}; + key {[ U0035, U0025, U0D73, U0D6B ]}; + key {[ U0036, U005E, U0D74, U0D6C ]}; + key {[ U0037, U0026, U0D75, U0D6D ]}; + key {[ U0038, U0D7E, U002A, U0D6E ]}; + key {[ U0039, U0028, U007B, U0D6F ]}; + key {[ U0030, U0029, U007D, U0D66 ]}; + key {[ U002D, U0D03, U005F, none ]}; + key {[ U0D43, U0D0B, U0D44, U0D60 ]}; + + // From Q to right bracket: + key {[ U0D57, U0D14, U0D4C, U0D5E ]}; + key {[ U0D48, U0D10, none, U0D77 ]}; + key {[ U0D3E, U0D06, U0D5F, U0D5C ]}; + key {[ U0D40, U0D08, U0D63, U0D61 ]}; + key {[ U0D42, U0D0A, none, U0D76 ]}; + key {[ U0D2C, U0D2D, none, U0D5B ]}; + key {[ U0D39, U0D19, none, U0D59 ]}; + key {[ U0D17, U0D18, none, U0D58 ]}; + key {[ U0D26, U0D27, none, U0D78 ]}; + key {[ U0D1C, U0D1D, none, U0D5D ]}; + key {[ U0D21, U0D22, U005B, U0D5A ]}; + key {[ U200D, U0D1E, U005D, U002B ]}; + key {[ U200C, U0D7C, U005C, U007C ]}; + + // From A to apostrophe: + key {[ U0D4B, U0D13, none, none ]}; + key {[ U0D47, U0D0F, U0D3B, U0D3C ]}; + key {[ U0D4D, U0D05, U0D3D, U0D01 ]}; + key {[ U0D3F, U0D07, U0D62, U0D0C ]}; + key {[ U0D41, U0D09, none, none ]}; + key {[ U0D2A, U0D2B, U0D4F, none ]}; + key {[ U0D30, U0D31, U0D4E, U0D3A ]}; + key {[ U0D15, U0D16, none, U0D7F ]}; + key {[ U0D24, U0D25, none, none ]}; + key {[ U0D1A, U0D1B, U003B, U003A ]}; + key {[ U0D1F, U0D20, U0027, U0022 ]}; + + // From Z to slash: + key {[ U0D46, U0D0E, none, none ]}; + key {[ U0D02, U0D7A, U0D00, U0D04 ]}; + key {[ U0D2E, U0D23, none, U0D54 ]}; + key {[ U0D28, U0D7B, U0D79, U0D29 ]}; + key {[ U0D35, U0D34, none, U0D56 ]}; + key {[ U0D32, U0D33, none, none ]}; + key {[ U0D38, U0D36, none, none ]}; + key {[ U002C, U0D37, U003C, none ]}; + key {[ U002E, U0D7D, U003E, none ]}; + key {[ U0D2F, U003F, U002F, U0D55 ]}; + + include "level3(ralt_switch)" +}; + +// ---- BEGIN Hindi KaGaPa phonetic ---- +// Name: KaGaPa phonetic +// Brief: Devanagari layout (Hindi, Sanskrit, Nepali, Marathi, etc.) +// Diagram: (Original)[https://baraha.com/help/Keyboards/dev-brhkbd.htm] +// (This layout)[http://bdsatish.in/lang/dev-kagapa.png] +// +// Description: Based on KaGaPa layout (also called Baraha layout or Nudi layout) +// which is a modified layout of the specification by Dr. K. P. Rao. +// This is a phonetic layout with the following features: +// [1] All letters are mapped to phonetically-similar English keys +// as much as possible. +// [2] The independent vowel (svara) and its dependent vowel (maatra) +// use the same key (depending upon SHIFT, ALTGR or ALTGR + SHIFT). +// [3] Consonant conjuncts are produced by explicitly invoking the +// 'viraama' (key f). The 'short a' maatra is implicit in all +// consonants. +// [4] Zero width non-joiner and joiner are on keys 6 and 7 +// respectively. These are absolutely essential for alternative +// glyph renderings of consonant half-forms. +// [5] Rigvedic accent marks, visarga variants. +// +// Author: Satish BD +// +partial alphanumeric_keys +xkb_symbols "hin-kagapa" { + name[Group1] = "Hindi (KaGaPa, phonetic)"; + key.type[group1]="FOUR_LEVEL"; + + key { [ grave, asciitilde, U201C ] }; // U201C: left double quotation mark + key { [ 1, exclam, U0967 ] }; + key { [ 2, at, U0968, U20A8 ] }; // U20A8: generic rupee sign (Rs) + key { [ 3, numbersign, U0969 ] }; + key { [ 4, dollar, U096A, U20B9 ] }; // U20B9: new Indian rupee sign + key { [ 5, percent, U096B ] }; + key { [ 6, asciicircum, U096C, U200C ] }; // ZWNJ + key { [ 7, ampersand, U096D, U200D ] }; // ZWJ + key { [ 8, asterisk, U096E, U0901 ] }; // U0901: Devanagari candrabindu + key { [ 9, parenleft, U096F ] }; + key { [ 0, parenright, U0966, U0970 ] }; // U0970: Devanagari abbreviation sign + key { [ minus, underscore, U0952 ] }; // U0952: Devanagari stress sign anudatta + key { [ equal, plus ] }; + key { [ backslash, bar, U0964, U0965 ] }; // backslash, pipe, danda, double danda + + key { [ U091F, U0920 ] }; // Q: retroflex Ta, Tha + key { [ U0921, U0922, U095C, U095D ] }; // W: retroflex Da, Dha, Da-nukta, Dha-nukta + key { [ U0946, U0947, U090E, U090F ] }; // E: matras, short E, long E + key { [ U0930, U0943, U090B, U0931 ] }; // R: ra, vocalic R matra, vocalic R, ra-nukta + key { [ U0924, U0925 ] }; // T: dental ta, tha + key { [ U092F, U0948, U0910, U095F ] }; // Y: ya, ai matra, ai, ya-nukta + key { [ U0941, U0942, U0909, U090A ] }; // U: matras, u, uu + key { [ U093F, U0940, U0907, U0908 ] }; // I: matras, i, ii + key { [ U094A, U094B, U0912, U0913 ] }; // O: matras, short o, long o + key { [ U092A, U092B, U095E ] }; // P: pa, pha, pha-nukta + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ U093E, U0906, U0905, U0972 ] }; // A: aa matra, aa, short a, candra a + key { [ U0938, U0936 ] }; // S: sa, sha + key { [ U0926, U0927 ] }; // D: dental da, dha + key { [ U094D, U0944, U0960 ] }; // F: virama, vocalic RR matra, vocalic RR + key { [ U0917, U0918, U095A ] }; // G: ga, gha, ga-nukta + key { [ U0939, U0903, U1CF5, U1CF6 ] }; // H: ha, visarga, jihvamuliya, upadhmaniya + key { [ U091C, U091D, U095B ] }; // J: ja, jha, ja-nukta + key { [ U0915, U0916, U0958, U0959 ] }; // K: ka, kha, ka-nukta, kha-nukta + key { [ U0932, U0933, U0962, U090C ] }; // L: la, lla, vocalic L matra, vocalic L + key { [ semicolon, colon, U1CF2, U1CF3 ] }; // U1CF2/3: ardhavisarga/rotated ardhavisarga + key { [ apostrophe, quotedbl, U0951, U201D ] }; // U0951: Devanagari stress sign udatta + // U201D: Right double quotation mark + key { [ U091E, U0919 ] }; // Z: nya, nga + key { [ U0937, U093C, U0934 ] }; // X: ssa, nukta below, lla-nukta + key { [ U091A, U091B ] }; // C: ca, cha + key { [ U0935, U094C, U0914 ] }; // V: va, matra au, au + key { [ U092C, U092D ] }; // B: ba, bha + key { [ U0928, U0923, U0929 ] }; // N: na, nna, nnna + key { [ U092E, U0902, U093D, U0950 ] }; // M: ma, anusvara, avagraha, Devanagari OM + key { [ comma, less, U0945, U090D ] }; // ,: matra, candra e + key { [ period, greater,U0949, U0911 ] }; // .: matra, candra o + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; +// ---- END Hindi KaGaPa ---- + +// Sanskrit uses Devanagari layout of Hindi +partial alphanumeric_keys +xkb_symbols "san-kagapa" { + include "in(hin-kagapa)" + name[Group1] = "Sanskrit (KaGaPa, phonetic)"; +}; + +// Marathi uses Devanagari layout of Hindi +partial alphanumeric_keys +xkb_symbols "mar-kagapa" { + include "in(hin-kagapa)" + name[Group1] = "Marathi (KaGaPa, phonetic)"; +}; + +// ---- BEGIN Kannada KaGaPa phonetic ---- +// Name: Kannada KaGaPa phonetic +// Diagram: (Original)[https://baraha.com/help/Keyboards/kan-brhkbd.htm] +// (This layout)[http://bdsatish.in/lang/kan-kagapa.png] +// +// Description: Based on KaGaPa layout (also called Baraha layout or Nudi layout). +// See the description to "hin-kagapa" above. +// Certain punctuation characters from Devanagari block are +// retained for compatibility. +// +// Author: Satish BD +// +partial alphanumeric_keys +xkb_symbols "kan-kagapa" { + name[Group1] = "Kannada (KaGaPa, phonetic)"; + key.type[group1]="FOUR_LEVEL"; + + key { [ grave, asciitilde, U201C ] }; // U201C: left double quotation mark + key { [ 1, exclam, U0CE7 ] }; + key { [ 2, at, U0CE8, U20A8 ] }; // U20A8: generic rupee sign (Rs) + key { [ 3, numbersign, U0CE9 ] }; + key { [ 4, dollar, U0CEA, U20B9 ] }; // U20B9: new Indian rupee sign + key { [ 5, percent, U0CEB ] }; + key { [ 6, asciicircum, U0CEC, U200C ] }; // ZWNJ + key { [ 7, ampersand, U0CED, U200D ] }; // ZWJ + key { [ 8, asterisk, U0CEE, U0901 ] }; // U0901: Devanagari candrabindu + key { [ 9, parenleft, U0CEF ] }; + key { [ 0, parenright, U0CE6 ] }; + key { [ minus, underscore, U0952 ] }; // U0952: Devanagari stress sign anudatta + key { [ equal, plus ] }; + key { [ backslash, bar, U0964, U0965 ] }; // backslash, pipe, danda, double danda + + key { [ U0C9F, U0CA0 ] }; // Q: retroflex Ta, Tha + key { [ U0CA1, U0CA2 ] }; // W: retroflex Da, Dha + key { [ U0CC6, U0CC7, U0C8E, U0C8F ] }; // E: matras, short E, long E + key { [ U0CB0, U0CC3, U0C8B, U0CB1 ] }; // R: ra, vocalic R matra, vocalic R, RRA + key { [ U0CA4, U0CA5 ] }; // T: dental ta, tha + key { [ U0CAF, U0CC8, U0C90 ] }; // Y: ya, ai matra, ai + key { [ U0CC1, U0CC2, U0C89, U0C8A ] }; // U: matras, u, uu + key { [ U0CBF, U0CC0, U0C87, U0C88 ] }; // I: matras, i, ii + key { [ U0CCA, U0CCB, U0C92, U0C93 ] }; // O: matras, short o, long o + key { [ U0CAA, U0CAB ] }; // P: pa, pha + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ U0CBE, U0C86, U0C85 ] }; // A: aa matra, aa, short a + key { [ U0CB8, U0CB6 ] }; // S: sa, sha + key { [ U0CA6, U0CA7 ] }; // D: dental da, dha + key { [ U0CCD, U0CC4, U0CE0 ] }; // F: virama, vocalic RR matra, vocalic RR + key { [ U0C97, U0C98 ] }; // G: ga, gha + key { [ U0CB9, U0C83, U0CF1, U0CF2 ] }; // H: ha, visarga, jihvanuliya, upadhmaniya + key { [ U0C9C, U0C9D ] }; // J: ja, jha + key { [ U0C95, U0C96 ] }; // K: ka, kha + key { [ U0CB2, U0CB3, U0CE2, U0C8C ] }; // L: la, lla, vocalic L matra, vocalic L + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl, U0951, U201D ] }; // U0951: Devanagari stress sign udatta + // U201D: Right double quotation mark + key { [ U0C9E, U0C99 ] }; // Z: nya, nga + key { [ U0CB7, U0CBC, U0CDE ] }; // X: ssa, nukta below, LLLA + key { [ U0C9A, U0C9B ] }; // C: ca, cha + key { [ U0CB5, U0CCC, U0C94 ] }; // V: va, matra au, au + key { [ U0CAC, U0CAD ] }; // B: ba, bha + key { [ U0CA8, U0CA3 ] }; // N: na, nna + key { [ U0CAE, U0C82, U0CBD, U0950 ] }; // M: ma, anusvara, avagraha, Devanagari OM + key { [ comma, less, U0CB1 ] }; // ,: RRA + key { [ period, greater,U0CDE ] }; // .: LLLA + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; +// ---- END Kannada KaGaPa ---- + + +// ---- BEGIN Telugu KaGaPa phonetic ---- +// Name: Telugu KaGaPa phonetic +// Diagram: (Original)[https://baraha.com/help/Keyboards/tel-brhkbd.htm] +// (This layout)[http://bdsatish.in/lang/tel-kagapa.png] +// +// Description: Based on KaGaPa layout (also called Baraha layout or Nudi layout). +// See the description to "hin-kagapa" above. +// Certain punctuation characters from Devanagari block are +// retained for compatibility. +// +// Author: Satish BD +// +partial alphanumeric_keys +xkb_symbols "tel-kagapa" { + name[Group1] = "Telugu (KaGaPa, phonetic)"; + key.type[group1]="FOUR_LEVEL"; + + key { [ grave, asciitilde, U201C ] }; // U201C: left double quotation mark + key { [ 1, exclam, U0C67 ] }; + key { [ 2, at, U0C68, U20A8 ] }; // U20A8: generic rupee sign (Rs) + key { [ 3, numbersign, U0C69 ] }; + key { [ 4, dollar, U0C6A, U20B9 ] }; // U20B9: new Indian rupee sign + key { [ 5, percent, U0C6B ] }; + key { [ 6, asciicircum, U0C6C, U200C ] }; // ZWNJ + key { [ 7, ampersand, U0C6D, U200D ] }; // ZWJ + key { [ 8, asterisk, U0C6E, U0C01 ] }; // U0C01: Telugu arasunna + key { [ 9, parenleft, U0C6F ] }; + key { [ 0, parenright, U0C66 ] }; + key { [ minus, underscore, U0952 ] }; // U0952: Devanagari stress sign anudatta + key { [ equal, plus ] }; + key { [ backslash, bar, U0964, U0965 ] }; // backslash, pipe, danda, double danda + + key { [ U0C1F, U0C20 ] }; // Q: retroflex Ta, Tha + key { [ U0C21, U0C22 ] }; // W: retroflex Da, Dha + key { [ U0C46, U0C47, U0C0E, U0C0F ] }; // E: matras, short E, long E + key { [ U0C30, U0C43, U0C0B, U0C31 ] }; // R: ra, vocalic R matra, vocalic R, RRA + key { [ U0C24, U0C25 ] }; // T: dental ta, tha + key { [ U0C2F, U0C48, U0C10 ] }; // Y: ya, ai matra, ai + key { [ U0C41, U0C42, U0C09, U0C0A ] }; // U: matras, u, uu + key { [ U0C3F, U0C40, U0C07, U0C08 ] }; // I: matras, i, ii + key { [ U0C4A, U0C4B, U0C12, U0C13 ] }; // O: matras, short o, long o + key { [ U0C2A, U0C2B ] }; // P: pa, pha + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ U0C3E, U0C06, U0C05 ] }; // A: aa matra, aa, short a + key { [ U0C38, U0C36 ] }; // S: sa, sha + key { [ U0C26, U0C27 ] }; // D: dental da, dha + key { [ U0C4D, U0C44, U0C60 ] }; // F: virama, vocalic RR matra, vocalic RR + key { [ U0C17, U0C18 ] }; // G: ga, gha + key { [ U0C39, U0C03 ] }; // H: ha, visarga + key { [ U0C1C, U0C1D ] }; // J: ja, jha + key { [ U0C15, U0C16 ] }; // K: ka, kha + key { [ U0C32, U0C33, U0C62, U0C0C ] }; // L: la, lla, vocalic L matra, vocalic L + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl, U0951, U201D ] }; // U0951: Devanagari stress sign udatta + // U201D: Right double quotation mark + key { [ U0C1E, U0C19 ] }; // Z: nya, nga + key { [ U0C37 ] }; // X: ssa + key { [ U0C1A, U0C1B ] }; // C: ca, cha + key { [ U0C35, U0C4C, U0C14 ] }; // V: va, matra au, au + key { [ U0C2C, U0C2D ] }; // B: ba, bha + key { [ U0C28, U0C23 ] }; // N: na, nna + key { [ U0C2E, U0C02, U0C3D, U0950 ] }; // M: ma, anusvara, avagraha, Devanagari OM + key { [ comma, less, U0C58 ] }; // ,: comma, less than, TSA + key { [ period, greater,U0C59 ] }; // .: period, greater than, DZA + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; + +// ---- BEGIN Gujarati KaGaPa phonetic ---- +// Name: KaGaPa phonetic +// Author: Sharad Gor +// Diagram: (Original)[https://baraha.com/help/Keyboards/guj-brhkbd.htm] +// (This layout)[https://github.com/Docbroke/Gujarati_KaGaPa/blob/main/Guj_KaGaPa_layout.jpg] + +partial alphanumeric_keys +xkb_symbols "guj-kagapa" { + name[Group1] = "Gujarati (KaGaPa, phonetic)"; + key.type[group1]="FOUR_LEVEL"; + +// NUMBER ROW + key { [ grave, asciitilde, U201C ] }; // U201C: “ left double quotation mark + key { [ 1, exclam, U0AE7 ] }; + key { [ 2, at, U0AE8, U0AF1 ] }; // U0AF1: Gujarati rupee sign (૱) + key { [ 3, numbersign, U0AE9 ] }; + key { [ 4, dollar, U0AEA, U20B9 ] }; // U20B9: new Indian rupee sign + key { [ 5, percent, U0AEB ] }; + key { [ 6, asciicircum, U0AEC, U200C ] }; // ZWNJ + key { [ 7, ampersand, U0AED, U200D ] }; // ZWJ + key { [ 8, asterisk, U0AEE, U0A81 ] }; // U0A81: canndrabindu (ઁ ) + key { [ 9, parenleft, U0AEF ] }; + key { [ 0, parenright, U0AE6, U0AF0 ] }; // U0AF0:(૰) abbreviation sign + + key { [ minus, underscore, U0952 ] }; // U0952: Devanagari stress sign anudatta(॒) + key { [ equal, plus ] }; + +//First row + + key { [ U0A9F, U0AA0 ] }; // Q: retroflex Ta ટ , Tha ઠ + key { [ U0AA1, U0AA2 ] }; // W: retroflex Da ડ , Dha ઢ + key { [ U0AC7, U0AC8, U0A8F, U0A90 ] }; // E: oે oૈ એ ઐ + key { [ U0AB0, U0AC3, U0A8B, U0AC4 ] }; // R: ર oૃ ઋ oૄ + key { [ U0AA4, U0AA5, U0A9F, U0AA0 ] }; // T: ત થ ટ ઠ + key { [ U0AAF ] }; // Y: ય + key { [ U0AC1, U0AC2, U0A89, U0A8A ] }; // U: oુ oૂ ઉ ઊ + key { [ U0ABF, U0AC0, U0A87, U0A88 ] }; // I: oિ oી ઇ ઈ + key { [ U0ACB, U0ACC, U0A93, U0A94 ] }; // O: oો oૌ ઓ ઔ + key { [ U0AAA, U0AAB ] }; // P: પ ફ + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ backslash, bar, U0964, U0965 ] }; // backslash, pipe, danda, double danda + +//Second row + + key { [ U0ABE, U0A86, U0A85, U0A8D ] }; // A: oા આ અ ઍ + key { [ U0AB8, U0AB6 ] }; // S: સ શ + key { [ U0AA6, U0AA7, U0AA1, U0AA2 ] }; // D: દ ધ ડ ઢ + key { [ U0ACD, U0AC4, U0AE0 ] }; // F: o્ oૄ ૠ + key { [ U0A97, U0A98 ] }; // G: ગ ઘ + key { [ U0AB9, U0A83 ] }; // H: હ (ઃ) + + key { [ U0A9C, U0A9D, U0A9E, U0AF9 ] }; // J: જ ઝ ઞ ૹ + key { [ U0A95, U0A96 ] }; // K: ક ખ + key { [ U0AB2, U0AB3, U0AE1, U0AE2 ] }; // L: લ ળ ૡ oૢ + key { [ semicolon, colon ] }; // + key { [ apostrophe, quotedbl, U0951, U201D ] }; // U0951: o॑ Devanagari stress sign udatta + // U201D: ” Right double quotation mark + key { [ U0A9E, U0A99 ] }; // Z: nya ઞ, nga ઙ + key { [ U0AB7, U0ABC ] }; // X: ssa ષ, nukta below o઼ + key { [ U0A9A, U0A9B ] }; // C: ચ છ + key { [ U0AB5, U0ACC, U0A94 ] }; // V: વ oૌ ઔ + key { [ U0AAC, U0AAD ] }; // B: બ ભ + key { [ U0AA8, U0AA3 ] }; // N: ન ણ + key { [ U0AAE, U0A82, U0ABD, U0AD0 ] }; // M: મ oં ઽ ૐ + key { [ comma, less, U0AC5, U0A8D ] }; // ,: oॅ ઍ + key { [ period, greater, U0AC9, U0A91 ] }; // .: oૉ, ઑ + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; +// ---- END Gujarati KaGaPa ---- + + +// Layout for the Manipuri language (using "Meetei Mayek", the Meitei script). +// Originally by: Santosh Heigrujam , 2013. +partial alphanumeric_keys modifier_keys +xkb_symbols "mni" { + + name[Group1]= "Manipuri (Meitei)"; + + key { [ grave, asciitilde ] }; + key { [ Uabf1, exclam ] }; + key { [ Uabf2, at ] }; + key { [ Uabf3, numbersign ] }; + key { [ Uabf4, dollar ] }; + key { [ Uabf5, percent ] }; + key { [ Uabf6, asciicircum ] }; + key { [ Uabf7, ampersand ] }; + key { [ Uabf8, asterisk ] }; + key { [ Uabf9, parenleft ] }; + key { [ Uabf0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + key { [ Uabc8, Uabd8 ] }; + key { [ Uabcb, Uabcb ] }; + key { [ Uabcf, Uabe2 ] }; + key { [ Uabd4, Uabd4 ] }; + key { [ Uabc7, Uabe0 ] }; + key { [ Uabcc, Uabe6 ] }; + key { [ Uabce, Uabe8 ] }; + key { [ Uabe4, Uabe9 ] }; + key { [ Uabe3, Uabe7 ] }; + key { [ Uabc4, Uabde ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ Uabd1, Uabe5 ] }; + key { [ Uabc1, Uabd3 ] }; + key { [ Uabd7, Uabd9 ] }; + key { [ Uabd0, Uabda ] }; + key { [ Uabd2, Uabd8 ] }; + key { [ Uabcd, Uabea ] }; + key { [ Uabd6, Uabd3 ] }; + key { [ Uabc0, Uabdb ] }; + key { [ Uabc2, Uabdc ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ Uabc9, Uabe1 ] }; + key { [ Uabca, Uabd9 ] }; + key { [ Uabc6, Uabeb ] }; + key { [ Uabda, Uabed ] }; + key { [ Uabd5, Uabec ] }; + key { [ Uabc5, Uabdf ] }; + key { [ Uabc3, Uabdd ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + key { [ backslash, bar ] }; +}; + +// This layout is developed by Niranjan Tambe in July 2019 +// for typing Indic languages in International Phonetic Alphabet (IPA). +// Contact - niranjanvikastambe@gmail.com + +partial alphanumeric_keys modifier_keys +xkb_symbols "iipa" { + + name[Group1]= "Indic IPA"; + + key {[ grave, asciitilde ]}; + key {[ 1, exclam ]}; + key {[ 2, at ]}; + key {[ 3, numbersign ]}; + key {[ 4, U20B9 ]}; // Rupee + key {[ 5, percent ]}; + key {[ 6, asciicircum ]}; + key {[ 7, ampersand ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ U02B0, U02B1 ]}; // [ʰ], [ʱ] + key {[ U00E6, q ]}; // [æ], [q] found in Urdu + key {[ a, U028B ]}; // [a], [ʋ] + key {[ i, U026A ]}; // [i], [ɪ] + key {[ u, U026F ]}; // [u], [ɯ] found in Tamil + key {[ b, Y ]}; // [b] + key {[ h, U014B ]}; // [h], [ŋ] + key {[ g, U0263 ]}; // [g], [ɣ] found in Urdu + key {[ d, U00F0 ]}; // [d], [ð] found in Malayalam + key {[ U02A4, U02A3 ]}; // [ʤ], [ʣ] found in Marathi + key {[ U0256, U027D ]}; // [ɖ], [ɽ] + key {[ bracketleft, bracketright ]}; // "[", "]" for denoting phonetic symbols + + key {[ o, U0254 ]}; // [o], [ɔ] found in Bangla + key {[ e, U025B ]}; // [e], [ɛ] + key {[ schwa, U0361 ]}; // [ə], [ ͡ ] + key {[ i, U026A ]}; // [i], [ɪ] + key {[ u, U026F ]}; // [u], [ɯ] + key {[ p, f ]}; // [p], [f] + key {[ U027E, r ]}; // [ɾ], [r] + key {[ k, x ]}; // [k], [x] found in Urdu + key {[ t, U03B8 ]}; // [t], [θ] + key {[ U02A7, U02A6 ]}; // [ʧ], [ʦ] found in Marathi + key {[ U0288, quotedbl ]}; // [ʈ] + key {[ backslash, bar ]}; + + key {[ U032A, U0303 ]}; // [ ̪], [ ̃] Dental mark, nasalisation mark + key {[ U0306, X ]}; // [ ̆] Short sound + key {[ m, U0273 ]}; // [m], [ɳ] + key {[ n, v ]}; // [n], [v] + key {[ w, z ]}; // [w], [z] + key {[ l, U026D ]}; // [l], [ɭ] + key {[ s, U0283 ]}; // [s], [ʃ] + key {[ comma, U0282 ]}; // [ʂ] + key {[ period, U02D0 ]}; // [ː] Long sound + key {[ j, slash ]}; // [j] +}; + +// This layout is developed by Niranjan Tambe in July 2019 +// for typing Marathi language with some necessary symbols. +// Contact - niranjanvikastambe@gmail.com + +xkb_symbols "marathi" { + name[Group1]="Marathi (enhanced InScript)"; + key { [ U0962, U090C, grave, asciitilde ] }; // Added ॢ & ऌ + key { [ U0967, exclam, 1, exclam ] }; // Added exclamation mark + key { [ U0968, U0945, 2, at ] }; // Added ॅ + key { [ U0969, U093D, 3, numbersign ] }; // Added ऽ + key { [ U096a, U20B9, 4 ] }; // Added ₹ + key { [ U096b, percent, 5, percent ] }; + key { [ U096c, asciicircum, 6, asciicircum ] }; + key { [ U096d, U0970, 7, ampersand ] }; // Added ॰ + key { [ U096e, U0950, 8, asterisk ] }; + key { [ U096f, parenleft, 9, parenleft ] }; + key { [ U0966, parenright, 0, parenright ] }; + key { [ minus, U0903, minus, underscore ] }; + key { [ U0943, U090b, U0944, U0960 ] }; + + key { [ U094c, U0914 ] }; + key { [ U0948, U0910 ] }; + key { [ U093e, U0906 ] }; + key { [ U0940, U0908, U0963, U0961 ] }; + key { [ U0942, U090a ] }; + key { [ U092c, U092d ] }; + key { [ U0939, U0919 ] }; + key { [ U0917, U0918, U095a ] }; + key { [ U0926, U0927 ] }; + key { [ U091c, U091d, U095b ] }; + key { [ U0921, U0922, U095c, U095d ] }; + key { [ U093c, U091e ] }; + key { [ U0949, U0911, backslash, bar ] }; + + key { [ U094b, U0913 ] }; + key { [ U0947, U090f ] }; + key { [ U094d, U0905 ] }; + key { [ U093f, U0907, U0962, U090c ] }; + key { [ U0941, U0909 ] }; + key { [ U092a, U092b, NoSymbol, U095e ] }; + key { [ U0930, U0931 ] }; + key { [ U0915, U0916, U0958, U0959 ] }; + key { [ U0924, U0925 ] }; + key { [ U091a, U091b, U0952 ] }; + key { [ U091f, U0920, NoSymbol, U0951 ] }; + + key { [ apostrophe, U0972, U0953 ] }; // Added apostrophe & ॲ + key { [ U0902, U0901, NoSymbol, U0950 ] }; + key { [ U092e, U0923, U0954 ] }; + key { [ U0928, quotedbl ] }; // Added " + key { [ U0935, UA8FB ] }; // Added headstroke + key { [ U0932, U0933 ] }; + key { [ U0938, U0936 ] }; + key { [ comma, U0937, U0970 ] }; + key { [ period, U0964, U0965, U093d ] }; + key { [ U092f, question, slash, question ] }; +}; + + +// EXTRAS: + +// Vedic and Miscellaneous symbols +// This layout covers the 'Extended Devanagari' and 'Vedic Extensions' Unicode blocks. +// This is helpful for including all the required symbols when typing complex texts +// such as those from Samaveda and Yajurveda. +// This layout only includes signs and symbols. Text needs to be typed seperately. +// Created by : Abhishek Deshpande +// Date : 27th October, 2020 +partial alphanumeric_keys +xkb_symbols "san-misc" { + name[Group1] = "Sanskrit symbols"; + key.type[group1]="FOUR_LEVEL"; + + // Digits row + key { [ U1CD0, UA8FA ] }; + key { [ UA8E1, U1CD1 ] }; + key { [ UA8E2, UA8F2 ] }; + key { [ UA8E3, UA8F3 ] }; + key { [ UA8E4, UA8F4 ] }; + key { [ UA8E5, UA8F5 ] }; + key { [ UA8E6, UA8F6 ] }; + key { [ UA8E7, UA8F7 ] }; + key { [ UA8E8, UA8F8 ] }; + key { [ UA8E9, UA8F9 ] }; + key { [ UA8E0, UA8FC ] }; + key { [ UA8FB, U1CD2 ] }; + key { [ U1CF2, U1CF3 ] }; + key { [ U1CF8, U1CF9 ] }; + + // Q row + key { [ U1CD4, U1CD5 ] }; + key { [ U1CD6, U1CD7 ] }; + key { [ U1CD8, U1CD9 ] }; + key { [ UA8EF ] }; + key { [ U1CDA, U1CDB ] }; + key { [ UA8FE, UA8FF ] }; + key { [ UA8EB ] }; + key { [ U1CDC, U1CDD ] }; + key { [ U1CDE, U1CDF ] }; + key { [ UA8EE ] }; + key { [ U1CE0 ] }; + key { [ U1CE1 ] }; + + // A row + key { [ UA8EA ] }; + key { [ UA8F1 ] }; + key { [ U1CE2 ] }; + key { [ U1CE3, U1CE4 ] }; + key { [ U1CE5, U1CE6 ] }; + key { [ U1CE7, U1CE8 ] }; + key { [ U1CE9, U1CEA ] }; + key { [ UA8EC ] }; + key { [ U1CEB, U1CEC ] }; + key { [ U1CEE, U1CEF ] }; + key { [ U1CF0, U1CF1 ] }; + + // Z row + key { [ U1CED ] }; + key { [ U1CF4 ] }; + key { [ U1CF5 ] }; + key { [ UA8F0 ] }; + key { [ U1CF6 ] }; + key { [ UA8ED ] }; + key { [ U0950, UA8FD ] }; + key { [ U1CF7, U093D ] }; + key { [ U1CFA, U2638 ] }; + key { [ U0FD5, U2740 ] }; + + include "rupeesign(4)" + include "level3(ralt_switch)" +}; + +// Modi is an ancient Indian script that is used to write texts in Marathi, Hindi and +// Sanskrit. It is most commonly used to write the Marathi language in Maharashtra. +// This layout is based on the Marathi KaGaPa phonetic layout, just the characters +// that are not applicable in Modi are ommited. +// +// Created by : Abhishek Deshpande +// Date : 9th February, 2020 +partial alphanumeric_keys +xkb_symbols "modi-kagapa" { + name[Group1] = "Modi (KaGaPa, phonetic)"; + key.type[group1]="FOUR_LEVEL"; + + key { [ grave, asciitilde, U201C ] }; // U201C: left double quotation mark + key { [ 1, exclam, U11651 ] }; + key { [ 2, at, U11652, U20A8 ] }; // U20A8: generic rupee sign (Rs) + key { [ 3, numbersign, U11653 ] }; + key { [ 4, dollar, U11654, U20B9 ] }; // U20B9: new Indian rupee sign + key { [ 5, percent, U11655 ] }; + key { [ 6, asciicircum, U11656, U200C ] }; // ZWNJ + key { [ 7, ampersand, U11657, U200D ] }; // ZWJ + key { [ 8, asterisk, U11658 ] }; + key { [ 9, parenleft, U11659 ] }; + key { [ 0, parenright, U11650, U11643 ] }; // U11643: Modi abbreviation sign + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ backslash, bar, U11641, U11642 ] }; // \: Modi danda, Modi double danda + + key { [ U11618, U11619 ] }; // Q: retroflex Modi letter Ta, Tha + key { [ U1161A, U1161B ] }; // W: retroflex Modi letter Da, Dha + key { [ U11639, U1160A, U1160B ] }; // E: Modi vovel sign E, Modi letter E, letter ai + key { [ U11628, U11635, U11606 ] }; // R: Modi ra, Modi vowel sign vocalic R, vocalic letter R + key { [ U1161D, U1161E ] }; // T: dental Modi letter ta, tha + key { [ U11627, U1163A ] }; // Y: Modi letter ya, Modi vowel sign ai + key { [ U11633, U11634, U11604, U11605 ] }; // U: Modi vowel sign u, uu, Modi letter u, uu + key { [ U11631, U11632, U11602, U11603 ] }; // I: Modi vowel sign i, ii, Modi letter i, ii + key { [ U1163B, U1160C ] }; // O: Modi vowel sign o, Modi letter o + key { [ U11622, U11623 ] }; // P: Modi letter pa, pha + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ U11630, U11601, U11600 ] }; // A: Modi vowel sign aa, Modi letter aa, Modi letter a + key { [ U1162D, U1162B ] }; // S: Modi letter sa, sha + key { [ U1161F, U11620 ] }; // D: dental Modi letter da, dha + key { [ U1163F, U11636, U11607 ] }; // F: Modi sign virama, Modi vowel sign vocalic RR, letter vocalic RR + key { [ U11610, U11611 ] }; // G: Modi letter ga, gha + key { [ U1162E, U1163E ] }; // H: Modi letter ha, Modi visarga + key { [ U11615, U11616 ] }; // J: Modi letter ja, jha + key { [ U1160E, U1160F ] }; // K: Modi letter ka, kha + key { [ U11629, U1162F, U11637, U11608 ] }; // L: Modi letter la, lla, Modi vowel sign vocalic L, letter vocalic L + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ U11617, U11612 ] }; // Z: Modi letter nya, nga + key { [ U1162C, U11609, U11638 ] }; // X: Modi letter ssa, Modi letter vocalic ll, Modi vowel sign vocalic ll + key { [ U11613, U11614 ] }; // C: Modi letter ca, cha + key { [ U1162A, U1163C, U1160D ] }; // V: Modi letter va, Modi vowel sign au, Modi letter au + key { [ U11624, U11625 ] }; // B: Modi letter ba, bha + key { [ U11621, U1161C ] }; // N: Modi letter na, nna + key { [ U11626, U1163D, U093D, U0950 ] }; // M: Modi ma, Modi anusvara, avagraha, Devanagari OM (Avagraha & OM commonly occur in Marathi texts, so they are mapped here for convenience.) + key { [ comma, less, U11640, U11644 ] }; // ,: Modi chandrabindu, Modi sign huva + key { [ period, greater ] }; + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; + +// Navees, a phonetic keyboard layout for Urdu +// https://saadatm.github.io/navees +partial alphanumeric_keys +xkb_symbols "urd-navees" { + include "pk(urd-navees)" + name[Group1]= "Urdu (Navees)"; +}; diff --git a/nixos/xkb/symbols/inet b/nixos/xkb/symbols/inet new file mode 100644 index 00000000..cf7506c4 --- /dev/null +++ b/nixos/xkb/symbols/inet @@ -0,0 +1,2080 @@ +// EAK (Easy Access keyboards: Internet, Multimedia, PDA) +// Copyright (C) 2002 Stanislav Brabec +// +// Based on the LinEAK project. +// LinEAK - Linux support for Easy Access and Internets +// Copyright (C) 2001, 2002 Mark Smulders + +// Usage in XF86Config: +// Option "XkbLayout" "my_kb_layout" +// Option "XkbVariant" "my_kb_variant" +// Option "XkbModel" "my_eak_type" +// Option "XkbRules" "xfree86" +// Simple command line usage: +// setxkbmap 'my_kb_layout' -variant 'my_kb_variant' -model 'my_eak_type' + +// Very common set of media keys. +hidden partial alphanumeric_keys +xkb_symbols "media_common" { + key { [ XF86AudioMedia ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject ] }; +}; + +// Popular web navigation keys. +hidden partial alphanumeric_keys +xkb_symbols "nav_common" { + key { [ XF86Calculator ] }; + key { [ XF86WWW ] }; + key { [ XF86Search ] }; + key { [ XF86Favorites ] }; + key { [ XF86Reload ] }; + key { [ XF86Stop ] }; + key { [ XF86Forward ] }; + key { [ XF86Back ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioMedia ] }; +}; + +// ACPI Standard +hidden partial alphanumeric_keys +xkb_symbols "acpi_common" { + key { [ XF86PowerOff ] }; + key { [ XF86Standby ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Battery ] }; + key { [ XF86WLAN ] }; + key { [ XF86Sleep ] }; +}; + +// Combined sections, for simplicity. +hidden partial alphanumeric_keys +xkb_symbols "media_nav_common" { + include "inet(media_common)" + include "inet(nav_common)" +}; + +hidden partial alphanumeric_keys +xkb_symbols "media_nav_acpi_common" { + include "inet(media_common)" + include "inet(nav_common)" + include "inet(acpi_common)" +}; + +hidden partial alphanumeric_keys +xkb_symbols "nav_acpi_common" { + include "inet(nav_common)" + include "inet(acpi_common)" +}; + +hidden partial alphanumeric_keys +xkb_symbols "media_acpi_common" { + include "inet(media_common)" + include "inet(acpi_common)" +}; + +// Evdev Standardized Keycodes +partial alphanumeric_keys +xkb_symbols "evdev" { + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ XF86Open ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ Linefeed ] }; + + key { [ XF86TouchpadToggle ] }; + key { [ XF86TouchpadOn ] }; + key { [ XF86TouchpadOff ] }; + + key { [ XF86AudioMicMute ] }; + +// key { [ ] }; // KEY_MACRO + key { [ plusminus ] }; + key { [ XF86LaunchA ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Calculator ] }; +// key { [ ] }; // KEY_SETUP + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Explorer ] }; + key { [ XF86Send ] }; +// key { [ ] }; // KEY_DELETEFILE + key { [ XF86Xfer ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86RotateWindows ] }; + key { [ XF86TaskPane ] }; + key { [ XF86Mail ] }; + key { [ XF86Favorites ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; +// key { [ ] }; // KEY_CLOSECD (opposite of eject) + key { [ XF86Eject ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop, XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Phone ] }; +// key { [ ] }; // KEY_ISO + key { [ XF86Tools ] }; + key { [ XF86HomePage ] }; + key { [ XF86Reload ] }; + key { [ XF86Close ] }; +// key { [ ] }; // KEY_MOVE +// key { [ ] }; // KEY_EDIT + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ XF86LaunchA ] }; + key { [ XF86LaunchC ] }; + key { [ XF86LaunchD ] }; + key { [ XF86LaunchE ] }; + key { [ XF86LaunchF ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioPause ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86Suspend ] }; + key { [ XF86Close ] }; + key { [ XF86AudioPlay ] }; + key { [ XF86AudioForward ] }; +// key { [ ] }; // KEY_BASSBOOST + key { [ Print ] }; +// key { [ ] }; // KEY_HP + key { [ XF86WebCam ] }; + key { [ XF86AudioPreset ] }; +// key { [ ] }; // KEY_QUESTION + key { [ XF86Mail ] }; + key { [ XF86Messenger ] }; // KEY_CHAT + key { [ XF86Search ] }; + key { [ XF86Go ] }; // KEY_CONNECT + key { [ XF86Finance ] }; + key { [ XF86Game ] }; // KEY_SPORT + key { [ XF86Shop ] }; +// key { [ ] }; // KEY_ALTERASE + key { [ Cancel ] }; + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMedia ] }; +// key { [ ] }; // see +// key { [ ] }; // see +// key { [ ] }; // see +// key { [ ] }; // see + + key { [ XF86Favorites ] }; + key { [ XF86Keyboard ] }; + + key { [ XF86Tools ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch8 ] }; + key { [ XF86Launch9 ] }; + + // Key symbol mappings below are autogenerated + key { [ XF86Eject ] }; // KEY_EJECTCLOSECD + key { [ XF86New ] }; // KEY_NEW + key { [ Redo ] }; // KEY_REDO + key { [ XF86LaunchB ] }; // KEY_DASHBOARD + key { [ XF86Display ] }; // KEY_SWITCHVIDEOMODE + key { [ XF86KbdLightOnOff ] }; // KEY_KBDILLUMTOGGLE + key { [ XF86KbdBrightnessDown ] }; // KEY_KBDILLUMDOWN + key { [ XF86KbdBrightnessUp ] }; // KEY_KBDILLUMUP + key { [ XF86Send ] }; // KEY_SEND + key { [ XF86Reply ] }; // KEY_REPLY + key { [ XF86MailForward ] }; // KEY_FORWARDMAIL + key { [ XF86Save ] }; // KEY_SAVE + key { [ XF86Documents ] }; // KEY_DOCUMENTS + key { [ XF86Battery ] }; // KEY_BATTERY + key { [ XF86Bluetooth ] }; // KEY_BLUETOOTH + key { [ XF86WLAN ] }; // KEY_WLAN + key { [ XF86UWB ] }; // KEY_UWB + key { [ XF86Next_VMode ] }; // KEY_VIDEO_NEXT + key { [ XF86Prev_VMode ] }; // KEY_VIDEO_PREV + key { [ XF86MonBrightnessCycle ] }; // KEY_BRIGHTNESS_CYCLE + key { [ XF86BrightnessAuto ] }; // KEY_BRIGHTNESS_AUTO + key { [ XF86DisplayOff ] }; // KEY_DISPLAY_OFF + key { [ XF86WWAN ] }; // KEY_WWAN + key { [ XF86RFKill ] }; // KEY_RFKILL + key { [ XF86AudioMicMute ] }; // KEY_MICMUTE + key { [ XF86Info ] }; // KEY_INFO + key { [ XF86CycleAngle ] }; // KEY_ANGLE + key { [ XF86FullScreen ] }; // KEY_FULL_SCREEN + key { [ XF86AspectRatio ] }; // KEY_ASPECT_RATIO + key { [ XF86DVD ] }; // KEY_DVD + key { [ XF86Audio ] }; // KEY_AUDIO + key { [ XF86Video ] }; // KEY_VIDEO + key { [ XF86Calendar ] }; // KEY_CALENDAR + key { [ XF86ChannelUp ] }; // KEY_CHANNELUP + key { [ XF86ChannelDown ] }; // KEY_CHANNELDOWN + key { [ XF86AudioRandomPlay ] }; // KEY_SHUFFLE + key { [ XF86Break ] }; // KEY_BREAK + key { [ XF86VideoPhone ] }; // KEY_VIDEOPHONE + key { [ XF86Game ] }; // KEY_GAMES + key { [ XF86ZoomIn ] }; // KEY_ZOOMIN + key { [ XF86ZoomOut ] }; // KEY_ZOOMOUT + key { [ XF86ZoomReset ] }; // KEY_ZOOMRESET + key { [ XF86Word ] }; // KEY_WORDPROCESSOR + key { [ XF86Editor ] }; // KEY_EDITOR + key { [ XF86Excel ] }; // KEY_SPREADSHEET + key { [ XF86GraphicsEditor ] }; // KEY_GRAPHICSEDITOR + key { [ XF86Presentation ] }; // KEY_PRESENTATION + key { [ XF86Database ] }; // KEY_DATABASE + key { [ XF86News ] }; // KEY_NEWS + key { [ XF86Voicemail ] }; // KEY_VOICEMAIL + key { [ XF86Addressbook ] }; // KEY_ADDRESSBOOK + key { [ XF86Messenger ] }; // KEY_MESSENGER + key { [ XF86DisplayToggle ] }; // KEY_DISPLAYTOGGLE + key { [ XF86SpellCheck ] }; // KEY_SPELLCHECK + key { [ XF86LogOff ] }; // KEY_LOGOFF + key { [ dollar ] }; // KEY_DOLLAR + key { [ EuroSign ] }; // KEY_EURO + key { [ XF86FrameBack ] }; // KEY_FRAMEBACK + key { [ XF86FrameForward ] }; // KEY_FRAMEFORWARD + key { [ XF86ContextMenu ] }; // KEY_CONTEXT_MENU + key { [ XF86MediaRepeat ] }; // KEY_MEDIA_REPEAT + key { [ XF8610ChannelsUp ] }; // KEY_10CHANNELSUP + key { [ XF8610ChannelsDown ] }; // KEY_10CHANNELSDOWN + key { [ XF86Images ] }; // KEY_IMAGES + key { [ XF86NotificationCenter ] }; // KEY_NOTIFICATION_CENTER + key { [ XF86PickupPhone ] }; // KEY_PICKUP_PHONE + key { [ XF86HangupPhone ] }; // KEY_HANGUP_PHONE + key { [ XF86Fn ] }; // KEY_FN + key { [ XF86Fn_Esc ] }; // KEY_FN_ESC + key { [ XF86FnRightShift ] }; // KEY_FN_RIGHT_SHIFT + key { [ braille_dot_1 ] }; // KEY_BRL_DOT1 + key { [ braille_dot_2 ] }; // KEY_BRL_DOT2 + key { [ braille_dot_3 ] }; // KEY_BRL_DOT3 + key { [ braille_dot_4 ] }; // KEY_BRL_DOT4 + key { [ braille_dot_5 ] }; // KEY_BRL_DOT5 + key { [ braille_dot_6 ] }; // KEY_BRL_DOT6 + key { [ braille_dot_7 ] }; // KEY_BRL_DOT7 + key { [ braille_dot_8 ] }; // KEY_BRL_DOT8 + key { [ braille_dot_9 ] }; // KEY_BRL_DOT9 + key { [ braille_dot_1 ] }; // KEY_BRL_DOT10 + key { [ XF86Numeric0 ] }; // KEY_NUMERIC_0 + key { [ XF86Numeric1 ] }; // KEY_NUMERIC_1 + key { [ XF86Numeric2 ] }; // KEY_NUMERIC_2 + key { [ XF86Numeric3 ] }; // KEY_NUMERIC_3 + key { [ XF86Numeric4 ] }; // KEY_NUMERIC_4 + key { [ XF86Numeric5 ] }; // KEY_NUMERIC_5 + key { [ XF86Numeric6 ] }; // KEY_NUMERIC_6 + key { [ XF86Numeric7 ] }; // KEY_NUMERIC_7 + key { [ XF86Numeric8 ] }; // KEY_NUMERIC_8 + key { [ XF86Numeric9 ] }; // KEY_NUMERIC_9 + key { [ XF86NumericStar ] }; // KEY_NUMERIC_STAR + key { [ XF86NumericPound ] }; // KEY_NUMERIC_POUND + key { [ XF86NumericA ] }; // KEY_NUMERIC_A + key { [ XF86NumericB ] }; // KEY_NUMERIC_B + key { [ XF86NumericC ] }; // KEY_NUMERIC_C + key { [ XF86NumericD ] }; // KEY_NUMERIC_D + key { [ XF86CameraFocus ] }; // KEY_CAMERA_FOCUS + key { [ XF86WPSButton ] }; // KEY_WPS_BUTTON + key { [ XF86TouchpadToggle ] }; // KEY_TOUCHPAD_TOGGLE + key { [ XF86TouchpadOn ] }; // KEY_TOUCHPAD_ON + key { [ XF86TouchpadOff ] }; // KEY_TOUCHPAD_OFF + key { [ XF86CameraZoomIn ] }; // KEY_CAMERA_ZOOMIN + key { [ XF86CameraZoomOut ] }; // KEY_CAMERA_ZOOMOUT + key { [ XF86CameraUp ] }; // KEY_CAMERA_UP + key { [ XF86CameraDown ] }; // KEY_CAMERA_DOWN + key { [ XF86CameraLeft ] }; // KEY_CAMERA_LEFT + key { [ XF86CameraRight ] }; // KEY_CAMERA_RIGHT + key { [ XF86AttendantOn ] }; // KEY_ATTENDANT_ON + key { [ XF86AttendantOff ] }; // KEY_ATTENDANT_OFF + key { [ XF86AttendantToggle ] }; // KEY_ATTENDANT_TOGGLE + key { [ XF86LightsToggle ] }; // KEY_LIGHTS_TOGGLE + key { [ XF86ALSToggle ] }; // KEY_ALS_TOGGLE + key { [ XF86RotationLockToggle ] }; // KEY_ROTATE_LOCK_TOGGLE + key { [ XF86Buttonconfig ] }; // KEY_BUTTONCONFIG + key { [ XF86Taskmanager ] }; // KEY_TASKMANAGER + key { [ XF86Journal ] }; // KEY_JOURNAL + key { [ XF86ControlPanel ] }; // KEY_CONTROLPANEL + key { [ XF86AppSelect ] }; // KEY_APPSELECT + key { [ XF86Screensaver ] }; // KEY_SCREENSAVER + key { [ XF86VoiceCommand ] }; // KEY_VOICECOMMAND + key { [ XF86Assistant ] }; // KEY_ASSISTANT + key { [ ISO_Next_Group ] }; // KEY_KBD_LAYOUT_NEXT + key { [ XF86EmojiPicker ] }; // KEY_EMOJI_PICKER + key { [ XF86Dictate ] }; // KEY_DICTATE + key { [ XF86CameraAccessEnable ] }; // KEY_CAMERA_ACCESS_ENABLE + key { [ XF86CameraAccessDisable ] }; // KEY_CAMERA_ACCESS_DISABLE + key { [ XF86CameraAccessToggle ] }; // KEY_CAMERA_ACCESS_TOGGLE + key { [ XF86BrightnessMin ] }; // KEY_BRIGHTNESS_MIN + key { [ XF86BrightnessMax ] }; // KEY_BRIGHTNESS_MAX + key { [ XF86KbdInputAssistPrev ] }; // KEY_KBDINPUTASSIST_PREV + key { [ XF86KbdInputAssistNext ] }; // KEY_KBDINPUTASSIST_NEXT + key { [ XF86KbdInputAssistPrevgroup ] }; // KEY_KBDINPUTASSIST_PREVGROUP + key { [ XF86KbdInputAssistNextgroup ] }; // KEY_KBDINPUTASSIST_NEXTGROUP + key { [ XF86KbdInputAssistAccept ] }; // KEY_KBDINPUTASSIST_ACCEPT + key { [ XF86KbdInputAssistCancel ] }; // KEY_KBDINPUTASSIST_CANCEL + key { [ XF86RightUp ] }; // KEY_RIGHT_UP + key { [ XF86RightDown ] }; // KEY_RIGHT_DOWN + key { [ XF86LeftUp ] }; // KEY_LEFT_UP + key { [ XF86LeftDown ] }; // KEY_LEFT_DOWN + key { [ XF86RootMenu ] }; // KEY_ROOT_MENU + key { [ XF86MediaTopMenu ] }; // KEY_MEDIA_TOP_MENU + key { [ XF86Numeric11 ] }; // KEY_NUMERIC_11 + key { [ XF86Numeric12 ] }; // KEY_NUMERIC_12 + key { [ XF86AudioDesc ] }; // KEY_AUDIO_DESC + key { [ XF863DMode ] }; // KEY_3D_MODE + key { [ XF86NextFavorite ] }; // KEY_NEXT_FAVORITE + key { [ XF86StopRecord ] }; // KEY_STOP_RECORD + key { [ XF86PauseRecord ] }; // KEY_PAUSE_RECORD + key { [ XF86VOD ] }; // KEY_VOD + key { [ XF86Unmute ] }; // KEY_UNMUTE + key { [ XF86FastReverse ] }; // KEY_FASTREVERSE + key { [ XF86SlowReverse ] }; // KEY_SLOWREVERSE + key { [ XF86Data ] }; // KEY_DATA + key { [ XF86OnScreenKeyboard ] }; // KEY_ONSCREEN_KEYBOARD + key { [ XF86PrivacyScreenToggle ] }; // KEY_PRIVACY_SCREEN_TOGGLE + key { [ XF86SelectiveScreenshot ] }; // KEY_SELECTIVE_SCREENSHOT + key { [ XF86NextElement ] }; // KEY_NEXT_ELEMENT + key { [ XF86PreviousElement ] }; // KEY_PREVIOUS_ELEMENT + key { [ XF86AutopilotEngageToggle ] }; // KEY_AUTOPILOT_ENGAGE_TOGGLE + key { [ XF86MarkWaypoint ] }; // KEY_MARK_WAYPOINT + key { [ XF86Sos ] }; // KEY_SOS + key { [ XF86NavChart ] }; // KEY_NAV_CHART + key { [ XF86FishingChart ] }; // KEY_FISHING_CHART + key { [ XF86SingleRangeRadar ] }; // KEY_SINGLE_RANGE_RADAR + key { [ XF86DualRangeRadar ] }; // KEY_DUAL_RANGE_RADAR + key { [ XF86RadarOverlay ] }; // KEY_RADAR_OVERLAY + key { [ XF86TraditionalSonar ] }; // KEY_TRADITIONAL_SONAR + key { [ XF86ClearvuSonar ] }; // KEY_CLEARVU_SONAR + key { [ XF86SidevuSonar ] }; // KEY_SIDEVU_SONAR + key { [ XF86NavInfo ] }; // KEY_NAV_INFO + key { [ XF86BrightnessAdjust ] }; // KEY_BRIGHTNESS_MENU + key { [ XF86Macro1 ] }; // KEY_MACRO1 + key { [ XF86Macro2 ] }; // KEY_MACRO2 + key { [ XF86Macro3 ] }; // KEY_MACRO3 + key { [ XF86Macro4 ] }; // KEY_MACRO4 + key { [ XF86Macro5 ] }; // KEY_MACRO5 + key { [ XF86Macro6 ] }; // KEY_MACRO6 + key { [ XF86Macro7 ] }; // KEY_MACRO7 + key { [ XF86Macro8 ] }; // KEY_MACRO8 + key { [ XF86Macro9 ] }; // KEY_MACRO9 + key { [ XF86Macro10 ] }; // KEY_MACRO10 + key { [ XF86Macro11 ] }; // KEY_MACRO11 + key { [ XF86Macro12 ] }; // KEY_MACRO12 + key { [ XF86Macro13 ] }; // KEY_MACRO13 + key { [ XF86Macro14 ] }; // KEY_MACRO14 + key { [ XF86Macro15 ] }; // KEY_MACRO15 + key { [ XF86Macro16 ] }; // KEY_MACRO16 + key { [ XF86Macro17 ] }; // KEY_MACRO17 + key { [ XF86Macro18 ] }; // KEY_MACRO18 + key { [ XF86Macro19 ] }; // KEY_MACRO19 + key { [ XF86Macro20 ] }; // KEY_MACRO20 + key { [ XF86Macro21 ] }; // KEY_MACRO21 + key { [ XF86Macro22 ] }; // KEY_MACRO22 + key { [ XF86Macro23 ] }; // KEY_MACRO23 + key { [ XF86Macro24 ] }; // KEY_MACRO24 + key { [ XF86Macro25 ] }; // KEY_MACRO25 + key { [ XF86Macro26 ] }; // KEY_MACRO26 + key { [ XF86Macro27 ] }; // KEY_MACRO27 + key { [ XF86Macro28 ] }; // KEY_MACRO28 + key { [ XF86Macro29 ] }; // KEY_MACRO29 + key { [ XF86Macro30 ] }; // KEY_MACRO30 + key { [ XF86MacroRecordStart ] }; // KEY_MACRO_RECORD_START + key { [ XF86MacroRecordStop ] }; // KEY_MACRO_RECORD_STOP + key { [ XF86MacroPresetCycle ] }; // KEY_MACRO_PRESET_CYCLE + key { [ XF86MacroPreset1 ] }; // KEY_MACRO_PRESET1 + key { [ XF86MacroPreset2 ] }; // KEY_MACRO_PRESET2 + key { [ XF86MacroPreset3 ] }; // KEY_MACRO_PRESET3 + key { [ XF86KbdLcdMenu1 ] }; // KEY_KBD_LCD_MENU1 + key { [ XF86KbdLcdMenu2 ] }; // KEY_KBD_LCD_MENU2 + key { [ XF86KbdLcdMenu3 ] }; // KEY_KBD_LCD_MENU3 + key { [ XF86KbdLcdMenu4 ] }; // KEY_KBD_LCD_MENU4 + key { [ XF86KbdLcdMenu5 ] }; // KEY_KBD_LCD_MENU5 + // End of autogenerated key symbol mappings +}; + + +// Acer + +// Acer AirKey V +partial alphanumeric_keys +xkb_symbols "airkey" { + include "inet(acpi_common)" + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioMute ] }; + key { [ XF86WWW ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Terminal ] }; + key { [ XF86AudioStop, XF86Eject ] }; +}; + +// Acer C300 laptop +partial alphanumeric_keys +xkb_symbols "acer_c300" { + include "inet(nav_common)" + key { [ F14 ] }; + key { [ F13 ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Launch2 ] }; + key { [ Help ] }; + key { [ XF86Launch1 ] }; +}; + +// Acer Ferrari 4000 Keyboard +// From Alex Dubov +partial alphanumeric_keys +xkb_symbols "acer_ferrari4k" { + include "inet(media_nav_common)" + key { [ dollar ] }; + key { [ EuroSign ] }; + key { [ XF86Display ] }; + // Missing keycodes - set-up with setkeycodes + key { [ Help ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; +}; + +// Acer laptop (Generic layout for Acer laptops from 2004 onwards) +// From Carlos Corbacho +// Keys marked (HAL) require HAL 0.5.10 (or newer) to be set up correctly +// (Your laptop must also be added to hal-info) +// (Not all these keys will be available on every Acer laptop) +partial alphanumeric_keys +xkb_symbols "acer_laptop" { + include "inet(media_nav_acpi_common)" + key { [ XF86Launch2 ] }; // "P" or "P2" (HAL) + key { [ XF86Launch1 ] }; // "e" or "P1" (HAL) + + // Hotkeys (Function) + // Launch Keys + // Device keys + key { [ XF86Display ] }; // Fn+F5 (HAL) + key { [ XF86Launch4 ] }; // Fn+F3 (HAL) + key { [ XF86LaunchB ] }; // Bluetooth (HAL) + key { [ XF86LaunchA ] }; // Wireless (HAL) + key { [ Help ] }; // Fn+F1 (HAL) + key { [ XF86Launch5 ] }; // Fn+F7 (HAL) + key { [ XF86Launch3 ] }; // Fn+F2 (HAL) + + // Special Characters + // To avoid setting a precedent/standard that will be broken in later + // versions of HAL, these keys are commented out for now. When they are no + // longer marked 'FIXME' and have saner keycodes, these two entries can be + // fixed and permanently uncommented. In the meantime, just uncomment these + // to make the keys work. +// key { [ EuroSign ] }; // Euro (HAL) +// key { [ dollar ] }; // Dollar (HAL) +}; + + +// Azona + +// Azona RF2300 Wireless Internet +partial alphanumeric_keys +xkb_symbols "azonaRF2300" { + // From Radics Laszlo + include "inet(nav_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Copy ] }; + key { [ XF86Cut ] }; +// key { [ XF86Paste ] }; +}; + + +// Brother + +// Brother Internet +partial alphanumeric_keys +xkb_symbols "brother" { + include "inet(acpi_common)" + key { [ XF86ScrollUp ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86ScrollDown ] }; + key { [ XF86ZoomOut ] }; + key { [ XF86AudioMute ] }; + key { [ XF86WWW ] }; + key { [ Menu ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Calculator ] }; + key { [ XF86Xfer ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86ZoomIn ] }; + key { [ XF86AudioLowerVolume ] }; +}; + + +// BTC + +// BTC 5113RF Multimedia +partial alphanumeric_keys +xkb_symbols "btc5113rf" { + include "inet(acpi_common)" + key { [ XF86AudioStop ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Favorites ] }; + key { [ XF86Eject ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86Back ] }; + key { [ XF86WWW ] }; + key { [ XF86Search ] }; +}; + +// BTC 9000 +partial alphanumeric_keys +xkb_symbols "btc9000" { + include "inet(acpi_common)" + key { [ XF86AudioStop ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Favorites ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86Reload ] }; + key { [ XF86Mail ] }; + key { [ XF86HomePage ] }; + key { [ XF86Search ] }; +}; + +// BTC 9000A +partial alphanumeric_keys +xkb_symbols "btc9000a" { + include "inet(acpi_common)" + key { [ XF86AudioStop ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Favorites ] }; + key { [ XF86Eject ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86HomePage ] }; + key { [ Help ] }; + key { [ XF86WWW ] }; + key { [ XF86Search ] }; +}; + +// BTC 9001AH +xkb_symbols "btc9001ah" { + include "inet(acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Mail ] }; + key { [ XF86Eject ] }; +}; + +// BTC 5090 +partial alphanumeric_keys +xkb_symbols "btc5090" { + include "inet(media_nav_acpi_common)" + key { [ XF86Start ] }; + key { [ XF86Eject ] }; +}; + +// BTC 9019U +partial alphanumeric_keys +xkb_symbols "btc9019u" { + include "inet(media_nav_acpi_common)" + key { [ XF86Search ] }; + key { [ XF86HomePage ] }; +}; + + +// Cherry + +// Cherry Blue Line CyBo@rd +partial alphanumeric_keys +xkb_symbols "cherryblue" { + include "inet(nav_common)" + key { [ XF86Reload ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Standby ] }; + key { [ XF86Terminal ] }; + key { [ XF86Go ] }; +}; + +// Cherry CyMotion Master XPress +partial alphanumeric_keys +xkb_symbols "cherryblueb" { + include "inet(media_nav_common)" + key { [ XF86Reload ] }; + key { [ XF86HomePage ] }; + key { [ XF86Forward ] }; + key { [ XF86Back ] }; + key { [ XF86Copy ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ XF86Cut ] }; + key { [ XF86Paste ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Book ] }; + key { [ XF86Finance ] }; + key { [ XF86Standby ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Eject ] }; + key { [ XF86Book ] }; + key { [ XF86Book ] }; + key { [ XF86Terminal ] }; + key { [ XF86Go ] }; +}; + +// Cherry Blue Line CyBo@rd (alt.) +partial alphanumeric_keys +xkb_symbols "cherrybluea" { + include "inet(media_nav_acpi_common)" + key { [ XF86Go ] }; +}; + +// Cherry CyBo@rd USB-Hub +partial alphanumeric_keys +xkb_symbols "cherrycyboard" { + include "inet(media_nav_acpi_common)" + key { [ XF86Search ] }; + key { [ XF86HomePage ] }; + key { [ XF86Terminal ] }; + key { [ XF86AudioMedia ] }; +}; + +// Cherry CyMotion Expert +partial alphanumeric_keys +xkb_symbols "cherrycmexpert" { + include "inet(cherryblueb)" + include "inet(acpi_common)" + key { [ XF86Mail ] }; +}; + + +// Chicony + +// Chicony Internet +partial alphanumeric_keys +xkb_symbols "chicony" { + include "inet(acpi_common)" + key { [ XF86AudioMute ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86Forward ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Back ] }; + key { [ XF86LaunchB ] }; + key { [ XF86LaunchC ] }; + key { [ XF86LaunchA ] }; + key { [ XF86WWW ] }; + key { [ XF86ContrastAdjust ] }; + key { [ XF86BrightnessAdjust ] }; +}; + +// Chicony KU-0108 +partial alphanumeric_keys +xkb_symbols "chicony0108" { + include "inet(cherrycyboard)" +}; + +// Chicony KU-0420 AKA Targus Slim Internet Media USB Keyboard +partial alphanumeric_keys +xkb_symbols "chicony0420" { + include "inet(media_nav_acpi_common)" + key { [ XF86AudioMedia ] }; + key { [ XF86MyComputer ] }; +}; + +// Chicony KB-9885 +partial alphanumeric_keys +xkb_symbols "chicony9885" { + include "inet(acpi_common)" + key { [ XF86AudioMute ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86Forward ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Back ] }; + key { [ XF86LaunchB ] }; + key { [ XF86LaunchC ] }; + key { [ XF86LaunchA ] }; + key { [ XF86WWW ] }; +}; + + +// Compaq + +// Compaq Easy Access +partial alphanumeric_keys +xkb_symbols "compaqeak8" { + key { [ XF86Community ] }; + key { [ XF86Market ] }; + key { [ XF86Meeting ] }; + key { [ XF86Search ] }; + key { [ XF86News ] }; + key { [ XF86Mail ] }; + key { [ XF86HomePage ] }; + key { [ XF86WWW ] }; +}; + +// Compaq Internet (7 keys) +partial alphanumeric_keys +xkb_symbols "compaqik7" { + key { [ XF86LightBulb ] }; + key { [ XF86Mail ] }; + key { [ XF86Search ] }; + key { [ Help ] }; + key { [ XF86VendorHome ] }; + key { [ XF86HomePage ] }; + key { [ XF86Shop ] }; +}; + +// Compaq Internet (13 keys) +partial alphanumeric_keys +xkb_symbols "compaqik13" { + include "inet(media_acpi_common)" + key { [ XF86Mail ] }; + key { [ XF86Go ] }; + key { [ XF86Search ] }; + key { [ XF86WWW ] }; + key { [ XF86Shop ] }; +}; + +// Compaq Internet (18 keys) +partial alphanumeric_keys +xkb_symbols "compaqik18" { + include "inet(media_acpi_common)" + key { [ XF86LightBulb ] }; + key { [ XF86Eject ] }; + key { [ XF86Mail ] }; + key { [ XF86Go ] }; + key { [ XF86Search ] }; + key { [ XF86WWW ] }; + key { [ XF86VendorHome ] }; + key { [ XF86Community ] }; + key { [ XF86Shop ] }; + key { [ Print ] }; +}; + +// laptop/notebook Compaq (eg. Armada, Evo) laptop Keyboard +partial alphanumeric_keys +xkb_symbols "armada" { + include "inet(media_acpi_common)" + key { [ XF86Search ] }; + key { [ XF86Mail ] }; + key { [ XF86HomePage ] }; + key { [ XF86WWW ] }; + key { [ XF86Launch2 ] }; // Battery Monitor + key { [ XF86AudioMedia ] }; + key { [ XF86Launch0 ] }; // Info Center +}; + +// Compaq Presario laptop +partial alphanumeric_keys +xkb_symbols "presario" { + include "inet(media_acpi_common)" + key { [ XF86Q ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Mail ] }; + key { [ XF86Launch1 ] }; + key { [ XF86WWW ] }; + key { [ XF86Shop ] }; + key { [ XF86AudioMedia ] }; +}; + +// Compaq iPaq +partial alphanumeric_keys +xkb_symbols "ipaq" { + key { [ XF86Shop ] }; + key { [ XF86Standby ] }; + key { [ XF86Search ] }; + key { [ XF86Travel ] }; + key { [ XF86BackForward ] }; + key { [ XF86Q ] }; + key { [ XF86Mail ] }; +}; + + +// Dell + +partial alphanumeric_keys +xkb_symbols "dell" { + include "inet(acpi_common)" + key { [ XF86Mail ] }; + key { [ XF86Search ] }; + key { [ XF86HomePage ] }; +}; + +// Dell Precision M65 laptop +partial alphanumeric_keys +xkb_symbols "dellm65" { + include "inet(media_common)" + key { [ XF86PowerOff ] }; + key { [ Super_L ] }; +}; + +// laptop/notebook Dell Inspiron 8xxx +partial alphanumeric_keys +xkb_symbols "inspiron" { + include "inet(media_common)" + key { [ XF86AudioStop ] }; + key { [ XF86AudioNext ] }; + key { [ XF86Eject ] }; + key { [ XF86Display ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; +}; + +// DELL USB Multimedia (former 8135, generalized, superset of 8125) +partial alphanumeric_keys +xkb_symbols "dellusbmm" { + // Describes the extra keys on a SK-8135 Multimedia keyboard + // From Olivier Lahaye + include "inet(media_nav_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86MyComputer ] }; + key { [ XF86AudioMedia ] }; +}; + + +// Diamond + +// Diamond 9801/9802 +partial alphanumeric_keys +xkb_symbols "diamond" { + include "inet(media_nav_acpi_common)" + key { [ XF86Go ] }; +}; + + +// Ennyah + +// Ennyah DKB-1008 +partial alphanumeric_keys +xkb_symbols "ennyah_dkb1008" { + include "inet(media_nav_acpi_common)" + key { [ XF86AudioMedia ] }; +}; + + +// Genius + +// Genius Comfy KB-16M/Multimedia KWD-910 +partial alphanumeric_keys +xkb_symbols "genius" { + include "inet(media_acpi_common)" + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Calculator ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86Forward ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86Back ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86Mail ] }; + key { [ XF86Eject ] }; + key { [ XF86WWW ] }; +}; + +// Genius Comfy 21e +partial alphanumeric_keys +xkb_symbols "geniuscomfy2" { + // Describes the extra keys on a Genius Comfy KB-21e-Scroll + // From Radics Laszlo + include "inet(media_nav_acpi_common)" + key { [ Return ] }; +}; + + +// Gyration + +partial alphanumeric_keys +xkb_symbols "gyration" { + include "inet(nav_common)" + key { [ XF86Reload ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; +}; + + +// Hewlett-Packard + +// Hewlett-Packard Internet +partial alphanumeric_keys +xkb_symbols "hpi6" { + include "inet(media_nav_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86Search ] }; + key { [ XF86VendorHome ] }; + key { [ XF86Community ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86Eject ] }; + key { [ XF86Shop ] }; + key { [ XF86Launch1 ] }; + key { [ Help ] }; + key { [ XF86Finance ] }; + key { [ Print ] }; + key { [ Help ] }; +}; + +// Hewlett-Packard SK-2501, SK-2505 Multimedia +partial alphanumeric_keys +xkb_symbols "hp250x" { + key { [ XF86Tools ] }; + key { [ XF86Search ] }; + key { [ XF86Eject ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86Standby ] }; + key { [ Help ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86WWW ] }; +}; + +// Hewlett-Packard Omnibook XE3 GC, GD, GE and Pavilion N5xxx +partial alphanumeric_keys +xkb_symbols "hpxe3gc" { + // Describes the OneTouch buttons on HP Omnibook XE3 GC and + // HP Pavilion N52XX models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_common)" + key { [ Help ] }; + key { [ XF86Launch1 ] }; + key { [ XF86WWW ] }; + key { [ XF86Mail ] }; +}; + +// Hewlett-Packard Omnibook XE3 GF +partial alphanumeric_keys +xkb_symbols "hpxe3gf" { + // Describes the OneTouch buttons on HP Omnibook XE3 GF models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_nav_common)" + key { [ Help ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Omnibook XT1000 +partial alphanumeric_keys +xkb_symbols "hpxt1000" { + // Describes the OneTouch buttons on HP Omnibook XT1000 models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_nav_common)" + key { [ XF86Launch3 ] }; + key { [ Help ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Pavilion ZT1100 +partial alphanumeric_keys +xkb_symbols "hpzt11xx" { + // Describes the OneTouch buttons on HP Pavilion ZT11xx models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_nav_common)" + key { [ XF86Launch3 ] }; + key { [ Help ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Pavilion dv5 +partial alphanumeric_keys +xkb_symbols "hpdv5" { + // Describes the OneTouch buttons on HP Pavilion dv5 models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_common)" + key { [ XF86ScreenSaver ] }; + key { [ XF86WWW ] }; + key { [ Help ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Omnibook XE4xxx and ZE4xxx +partial alphanumeric_keys +xkb_symbols "hpxe4xxx" { + // Describes the OneTouch buttons on HP Omnibook XE4xxx and ZE4xxx + // models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_nav_common)" + key { [ Help ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Omnibook 500 FA +partial alphanumeric_keys +xkb_symbols "hp500fa" { + // Describes the OneTouch buttons on HP Omnibook 500 FA models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + key { [ Help ] }; + key { [ XF86Launch1 ] }; +}; + +// Hewlett-Packard Omnibook 500 +partial alphanumeric_keys +xkb_symbols "hp5xx" { + // Describes the OneTouch buttons on HP Omnibook 5xx models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + include "inet(media_common)" + key { [ Help ] }; + key { [ XF86Launch1 ] }; +}; + + +// Honeywell + +// Honeywell Euroboard +partial alphanumeric_keys +xkb_symbols "honeywell_euroboard" { + // January 2002 + // Scott Penrose + // http://linux.dd.com.au/quest/linux/keyboard/honeywell/ + key { [ XF86Game ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86Eject ] }; + key { [ XF86Launch2 ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86Launch1 ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Mail ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86Calculator ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86WWW ] }; +}; + + +// IBM + +// IBM Rapid Access +partial alphanumeric_keys +xkb_symbols "rapidaccess" { + key { [ XF86AudioMute ] }; + key { [ XF86Launch2 ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPause ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Standby ] }; + key { [ Help ] }; + key { [ XF86Launch4 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch1 ] }; +}; + +// IBM Rapid Access II +partial alphanumeric_keys +xkb_symbols "rapidaccess2" { + include "inet(acpi_common)" + key { [ XF86AudioNext ] }; + key { [ XF86Favorites ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86HomePage ] }; + key { [ XF86Shop ] }; + key { [ XF86Search ] }; + key { [ XF86MyComputer ] }; + key { [ XF86VendorHome ] }; +}; + +// IBM ThinkPad 60 series +partial alphanumeric_keys +xkb_symbols "thinkpad60" { + include "inet(media_nav_common)" + key { [ XF86VendorHome ] }; +}; + + +// Logitech + +// Logitech common definitions +hidden partial alphanumeric_keys +xkb_symbols "logitech_base" { + include "inet(media_nav_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86Community ] }; + key { [ XF86ScrollClick ] }; + key { [ XF86VendorHome ] }; + key { [ XF86New ] }; + key { [ XF86Reply ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Documents ] }; + key { [ XF86Pictures ] }; + key { [ XF86Music ] }; +}; + +// Logitech second set of common keys +hidden partial alphanumeric_keys +xkb_symbols "logitech_set3" { + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86New ] }; // F1 + key { [ XF86Reply ] }; // F2 + key { [ XF86Send ] }; // F4 + key { [ Print ] }; // F7 + key { [ XF86Save ] }; // F8 + key { [ XF86Documents ] }; // F10 + key { [ XF86Go ] }; + key { [ XF86AudioMedia ] }; +}; + +// Logitech Access +partial alphanumeric_keys +xkb_symbols "logiaccess" { + include "inet(logitech_base)" + key { [ XF86MailForward ] }; + key { [ XF86Send ] }; + key { [ XF86Messenger ] }; + key { [ XF86WebCam ] }; +}; + +// Logitech Cordless Desktop (alt.) +partial alphanumeric_keys +xkb_symbols "logicda" { + include "inet(logitech_base)" + include "inet(logitech_set3)" +}; + +// Logitech Internet Navigator +partial alphanumeric_keys +xkb_symbols "logicink" { + include "inet(logitech_base)" + key { [ XF86Shop ] }; + key { [ XF86VendorHome ] }; + key { [ XF86Finance ] }; + key { [ XF86Start ] }; +}; + +// Logitech Cordless Desktop EX110 +partial alphanumeric_keys +xkb_symbols "logiex110" { + include "inet(logitech_base)" + key { [ XF86Close ] }; // Close +// Extended function keys +// In the Console before starting X +// Using setkeycodes e03b 212 e03c 213 e03d 214 e03e 215 e03f 216 e040 217 +// setkeycodes e041 218 e042 219 e043 220 e044 221 e057 222 e058 223 6d 206 +// *=keys that are there but need different symbol names. + key { [ Help ] }; // F1 + key { [ XF86Word ] }; // F2 + key { [ XF86Excel ] }; // F3 + key { [ XF86Pictures ] }; // F4 + key { [ Undo ] }; // F5 + key { [ Redo ] }; // F6 * + key { [ Print ] }; // F7 + key { [ XF86Save ] }; // F8 + key { [ XF86Launch1 ] }; // F9 * + key { [ XF86Launch2 ] }; // F10 + key { [ XF86Launch3 ] }; // F11 + key { [ XF86Launch4 ] }; // F12 +}; + +// Logitech iTouch Internet Navigator SE +partial alphanumeric_keys +xkb_symbols "logiinkse" { + include "inet(logitech_base)" + key { [ XF86MailForward ] }; // F3 + key { [ XF86Send ] }; // F4 + key { [ Undo ] }; // F5 + key { [ Redo ] }; // F6 + key { [ Print ] }; // F7 + key { [ XF86Messenger ] }; + key { [ XF86WebCam ] }; + key { [ XF86VendorHome ] }; + key { [ XF86Shop ] }; + key { [ XF86Save ] }; // F8 +}; + +// Logitech iTouch Internet Navigator SE USB +partial alphanumeric_keys +xkb_symbols "logiinkseusb" { + include "inet(logitech_base)" + include "inet(logitech_set3)" +}; + +// Logitech iTouch Cordless Y-RB6 +partial alphanumeric_keys +xkb_symbols "logiitc" { + include "inet(logitech_base)" + key { [ XF86AudioRaiseVolume ] }; + + // Just to override RaiseVolume from logitech_base, + // since no keysym can have two keycodes, see + // https://bugs.freedesktop.org/show_bug.cgi?id=7095 + key { [ XF86Launch1 ] }; +}; + +// Logitech Internet +partial alphanumeric_keys +xkb_symbols "logiik" { + include "inet(logitech_base)" + key { [ Find ] }; + key { [ Print ] }; + key { [ XF86Favorites ] }; + key { [ XF86Reload ] }; + key { [ XF86Search ] }; + key { [ XF86HotLinks ] }; + key { [ XF86Forward ] }; + key { [ XF86HomePage ] }; + key { [ XF86Stop ] }; + key { [ XF86OpenURL ] }; + key { [ XF86AddFavorite ] }; + key { [ XF86History ] }; + key { [ XF86WWW ] }; +}; + +// Logitech iTouch +partial alphanumeric_keys +xkb_symbols "itouch" { + include "inet(logitech_base)" + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; +}; + +// Logitech UltraX Cordless Media Desktop +partial alphanumeric_keys +xkb_symbols "logiultraxc" { + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioRaiseVolume ] }; +}; + +partial alphanumeric_keys +xkb_symbols "logidinovo" { + include "inet(media_nav_common)" + key { [ XF86HomePage ] }; + key { [ XF86Standby ] }; + key { [ XF86Search ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioMedia ] }; +}; + +partial alphanumeric_keys +xkb_symbols "logidinovoedge" { + include "inet(media_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86Mail ] }; + key { [ XF86Search ] }; + key { [ XF86AudioMedia ] }; +}; + +partial alphanumeric_keys +xkb_symbols "logitech_g15" { + include "inet(media_nav_acpi_common)" + key { [ XF86Messenger ] }; + key { [ XF86Launch7 ] }; + key { [ XF86Launch9 ] }; + key { [ XF86Phone ] }; + key { [ XF86LaunchD ] }; + key { [ XF86Support ] }; + key { [ XF86LaunchF ] }; + key { [ XF86LogOff ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Travel ] }; + key { [ XF86Spell ] }; + key { [ XF86Launch4 ] }; + key { [ XF86Music ] }; + key { [ XF86Forward ] }; + key { [ XF86Send ] }; + key { [ XF86Save ] }; + key { [ XF86Pictures ] }; + key { [ XF86LaunchA ] }; + key { [ XF86iTouch ] }; + key { [ XF86Launch3 ] }; + key { [ XF86ToDoList ] }; + key { [ XF86Calculator ] }; + key { [ XF86VendorHome ] }; + key { [ XF86Away ] }; + key { [ XF86WebCam ] }; + key { [ XF86Launch0 ] }; + key { [ XF86Launch6 ] }; + key { [ XF86Calendar ] }; + key { [ XF86LaunchB ] }; + key { [ XF86LaunchC ] }; + key { [ XF86WWW ] }; + key { [ XF86LaunchE ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch8 ] }; +}; + + +// Memorex + +// Memorex MX1998 +partial alphanumeric_keys +xkb_symbols "mx1998" { + include "inet(media_acpi_common)" + key { [ XF86ScrollDown ] }; + key { [ XF86AudioRewind ] }; + key { [ XF86Close ] }; + key { [ XF86Xfer ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86Documents ] }; + key { [ XF86Game ] }; + key { [ XF86Calculator ] }; + key { [ Menu ] }; + key { [ XF86WWW ] }; + key { [ XF86WakeUp ] }; + key { [ XF86DOS ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86ScrollUp ] }; +}; + +// Memorex MX2500 EZ-Access +partial alphanumeric_keys +xkb_symbols "mx2500" { + include "inet(media_nav_acpi_common)" + key { [ XF86Clear ] }; + key { [ XF86Phone ] }; + key { [ XF86DOS ] }; + key { [ XF86Close ] }; + key { [ XF86Xfer ] }; + key { [ XF86Eject ] }; + key { [ XF86Documents ] }; + key { [ XF86News ] }; + key { [ XF86WakeUp ] }; + key { [ XF86RotateWindows ] }; +}; + +// Memorex MX2750 +partial alphanumeric_keys +xkb_symbols "mx2750" { + include "inet(media_nav_acpi_common)" + key { [ XF86Launch0 ] }; +}; + + +// Microsoft + +// Microsoft Natural Ergonomic 4000 +partial alphanumeric_keys +xkb_symbols "microsoft4000" { + include "inet(media_nav_common)" + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch4 ] }; + key { [ XF86Launch5 ] }; +// Missing because of lack of support from kbd driver: Zoom in and +// slider. +}; + +// Microsoft Natural Wireless Ergonomic 7000 +partial alphanumeric_keys +xkb_symbols "microsoft7000" { + include "inet(media_nav_common)" + key { [ Undo ] }; + key { [ XF86New ] }; + key { [ Redo ] }; + key { [ XF86MailForward ] }; + key { [ XF86Close ] }; + key { [ Print ] }; + key { [ XF86Save ] }; + key { [ XF86Send ] }; + key { [ Help ] }; + key { [ XF86Reply ] }; + key { [ parenleft ] }; + key { [ parenright ] }; + key { [ KP_Equal ] }; + key { [ XF86Open ] }; +// Missing because of lack of support from kbd driver: Spell, Launch, +// and Zoom in and out buttons. +}; + +// Microsoft Internet +partial alphanumeric_keys +xkb_symbols "microsoftinet" { + include "inet(nav_acpi_common)" + key { [ XF86AudioStop ] }; +}; + +// Microsoft Natural Pro USB +partial alphanumeric_keys +xkb_symbols "microsoftprousb" { + include "inet(nav_common)" + key { [ XF86Reload ] }; + key { [ XF86AudioMedia ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Standby ] }; +// Internet Section -- Left Side +// Multimedia Section -- Right Side +// My Computer Section -- Far Right +// My computer maps to printscreen, so leaving commented out for now +// key { [ XF86MyComputer ] }; +}; + +// Microsoft Natural Pro OEM +partial alphanumeric_keys +xkb_symbols "microsoftprooem" { + include "inet(media_nav_common)" + key { [ XF86Search ] }; + key { [ XF86HomePage ] }; + key { [ XF86Standby ] }; + key { [ XF86MyComputer ] }; +// Internet Section -- Left Side +// Multimedia Section -- Right Side +// My Computer Section -- Far Right +}; + +// Microsoft Internet Pro (Swedish) +partial alphanumeric_keys +xkb_symbols "microsoftprose" { + include "inet(nav_common)" + key { [ XF86Reload ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Standby ] }; + key { [ XF86AudioStop ] }; + key { [ XF86MyComputer ] }; + key { [ XF86AudioMedia ] }; +}; + +// Microsoft Office Keyboard +partial alphanumeric_keys +xkb_symbols "microsoftoffice" { + include "inet(nav_acpi_common)" + key { [ XF86Calendar ] }; + key { [ Undo ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Cut ] }; + key { [ XF86LogOff ] }; + key { [ XF86ApplicationLeft ] }; + key { [ XF86TaskPane ] }; + key { [ XF86Spell ] }; + key { [ XF86WWW ] }; + key { [ XF86New ] }; + key { [ XF86Open ] }; + key { [ XF86Close ] }; + key { [ Help ] }; + key { [ XF86Save ] }; + key { [ Print ] }; + key { [ XF86OfficeHome ] }; + key { [ Redo ] }; + key { [ XF86Reply ] }; + key { [ XF86MailForward ] }; + key { [ XF86Send ] }; + key { [ XF86Copy ] }; + key { [ XF86ApplicationRight ] }; + key { [ XF86Paste ] }; +}; + +// Microsoft Wireless Multimedia 1.0A +partial alphanumeric_keys +xkb_symbols "microsoftmult" { + include "inet(media_nav_acpi_common)" + key { [ XF86Messenger ] }; + key { [ XF86New ] }; + key { [ XF86Open ] }; + key { [ XF86Close ] }; + key { [ XF86Reply ] }; + key { [ Redo ] }; + key { [ Undo ] }; + key { [ XF86LogOff ] }; + key { [ XF86Spell ] }; + key { [ Help ] }; + key { [ XF86Music ] }; + key { [ XF86Forward ] }; + key { [ XF86Send ] }; + key { [ XF86Save ] }; + key { [ Print ] }; + key { [ XF86Pictures ] }; + key { [ XF86Documents ] }; +}; + +// Microsoft Surface +partial alphanumeric_keys +xkb_symbols "microsoftsurface" { + include "inet(evdev)" + key { [ XF86Search ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; +}; + + +// Oretec + +// Oretec MCK-800 MM/Internet keyboard +partial alphanumeric_keys +xkb_symbols "oretec" { + include "inet(acpi_common)" + key { [ XF86ScrollUp ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86ScrollDown ] }; + key { [ XF86ZoomOut ] }; + key { [ XF86AudioMute ] }; + key { [ XF86WWW ] }; + key { [ Menu ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Calculator ] }; + key { [ XF86Xfer ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86ZoomIn ] }; + key { [ XF86AudioLowerVolume ] }; +}; + + +// Propeller + +// Propeller Voyager KTEZ-1000 +partial alphanumeric_keys +xkb_symbols "propeller" { + include "inet(media_common)" + key { [ XF86AudioRewind ] }; + key { [ XF86Close ] }; + key { [ XF86Xfer ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86Documents ] }; + key { [ XF86Game ] }; + key { [ XF86Calculator ] }; + key { [ Menu ] }; + key { [ XF86WWW ] }; + key { [ XF86DOS ] }; + key { [ XF86Standby ] }; +}; + + +// QTronix + +// QTronix Scorpius 98N+ +partial alphanumeric_keys +xkb_symbols "qtronix" { + key { [ XF86ScrollDown ] }; + key { [ XF86Forward ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Search ] }; + key { [ XF86Standby ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86Back ] }; + key { [ XF86Reload ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioStop ] }; + key { [ XF86HomePage ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86PowerOff ] }; + key { [ XF86Stop ] }; + key { [ XF86Calculator ] }; +}; + + +// Samsung + +// Samsung SDM 4500P +partial alphanumeric_keys +xkb_symbols "samsung4500" { + include "inet(media_nav_acpi_common)" + key { [ XF86Launch4 ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Launch5 ] }; + key { [ XF86Close ] }; + key { [ XF86Book ] }; + key { [ XF86Eject ] }; + key { [ Help ] }; + key { [ XF86Explorer ] }; + key { [ XF86Launch2 ] }; +}; + +// Samsung SDM 4510P +partial alphanumeric_keys +xkb_symbols "samsung4510" { + include "inet(media_acpi_common)" + key { [ XF86Launch1 ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Eject ] }; + key { [ XF86Launch2 ] }; +}; + + +// SK + +// NEC SK-1300 +partial alphanumeric_keys +xkb_symbols "sk1300" { + include "inet(media_common)" + key { [ XF86Eject ] }; + key { [ XF86Forward ] }; + key { [ XF86WWW ] }; + key { [ XF86Standby ] }; + key { [ XF86Back ] }; + key { [ XF86Stop ] }; +}; + +// NEC SK-2500 +partial alphanumeric_keys +xkb_symbols "sk2500" { + include "inet(media_nav_common)" + key { [ XF86AudioRewind ] }; + key { [ XF86Close ] }; + key { [ XF86Eject ] }; + key { [ XF86Eject ] }; + key { [ XF86Forward ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86Xfer ] }; + key { [ XF86PowerOff ] }; + key { [ Menu ] }; + key { [ XF86ScreenSaver ] }; +}; + +// NEC SK-6200 +partial alphanumeric_keys +xkb_symbols "sk6200" { + include "inet(acpi_common)" + key { [ XF86Favorites ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86WWW ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop ] }; + key { [ XF86Mail ] }; +}; + +// NEC SK-7100 +partial alphanumeric_keys +xkb_symbols "sk7100" { + include "inet(media_common)" + key { [ XF86AudioPause ] }; + key { [ XF86Close ] }; + key { [ XF86Video ] }; + key { [ XF86Eject ] }; + key { [ XF86CD ] }; + key { [ XF86Display ] }; + key { [ XF86WWW ] }; +}; + + +// Sven + +// SVEN Ergonomic 2500 +partial alphanumeric_keys +xkb_symbols "sven" { + include "inet(acpi_common)" + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86Forward ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86ZoomOut ] }; + key { [ XF86AudioPrev ] }; + key { [ XF86AudioStop ] }; + key { [ XF86HomePage ] }; + key { [ XF86Mail ] }; + key { [ XF86ZoomIn ] }; + key { [ XF86MyComputer ] }; + key { [ XF86Stop ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Calculator ] }; + key { [ XF86Reload ] }; + key { [ XF86Search ] }; + key { [ XF86Favorites ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86ScrollDown ] }; + key { [ XF86AudioNext ] }; + key { [ XF86Back ] }; +}; + +// SVEN Slim 303 +partial alphanumeric_keys +xkb_symbols "sven303" { + key { [ XF86PowerOff ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; +}; + + +// Symplon + +// Symplon PaceBook tablet +partial alphanumeric_keys +xkb_symbols "symplon" { + include "inet(nav_acpi_common)" + key { [ XF86RotationPB ] }; + key { [ XF86SplitScreen ] }; + key { [ XF86Support ] }; + key { [ XF86New ] }; + key { [ XF86User2KB ] }; + key { [ XF86RotationKB ] }; + key { [ XF86MenuKB ] }; + key { [ XF86User1KB ] }; + key { [ XF86UserPB ] }; + key { [ XF86MenuPB ] }; +}; + + +// Toshiba + +// Toshiba Satellite S3000 +partial alphanumeric_keys +xkb_symbols "toshiba_s3000" { + include "inet(media_common)" + // Describes the Special buttons on Toshiba Satellite 3000 models. + // See http://sourceforge.net/projects/omke for details on enabling + // these keys + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86WWW ] }; + key { [ XF86Mail ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioLowerVolume ] }; +}; + + +// Trust + +// Trust Wireless Classic +partial alphanumeric_keys +xkb_symbols "trust" { + include "inet(media_nav_acpi_common)" + key { [ XF86ScreenSaver ] }; + key { [ XF86Eject ] }; +}; + +// Trust Direct Access +partial alphanumeric_keys +xkb_symbols "trustda" { + include "inet(media_common)" + key { [ XF86AudioRewind ] }; + key { [ XF86Close ] }; + key { [ XF86Eject ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86Xfer ] }; + key { [ XF86Standby ] }; + key { [ Help ] }; + key { [ XF86WWW ] }; + key { [ XF86Away ] }; +}; + + +// YaHoo! + +// Yahoo! Internet +partial alphanumeric_keys +xkb_symbols "yahoo" { + include "inet(acpi_common)" + key { [ XF86AudioPrev ] }; + key { [ XF86AudioPlay, XF86AudioPause ] }; + key { [ XF86AudioStop ] }; + key { [ XF86AudioNext ] }; + key { [ XF86AudioRecord ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86AudioMute ] }; + key { [ XF86Close ] }; + key { [ XF86Calculator ] }; + key { [ Help ] }; + key { [ XF86Mail ] }; + key { [ XF86WWW ] }; +}; + + +// Apple keyboards (macbooks, powerbooks, powermac G5, etc) +partial alphanumeric_keys +xkb_symbols "apple" { +// Really brightness up/down + key { [ XF86BrightnessAdjust ] }; + key { [ XF86BrightnessAdjust ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86RotateWindows ] }; +// Really keyboard backlight off/up/down + key { [ XF86Launch0 ] }; + key { [ XF86Launch1 ] }; + key { [ XF86Launch2 ] }; + key { [ XF86PowerOff ] }; + key { [ F13 ] }; + key { [ F14 ] }; + key { [ F15 ] }; + key { [ XF86Eject ] }; + key { [ F16 ] }; + key { [ KP_Equal ] }; +}; + +partial alphanumeric_keys +xkb_symbols "cymotionlinux" { + include "inet(media_nav_acpi_common)" + key { [ Undo ] }; + key { [ Redo ] }; + key { [ XF86ScrollDown ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch1 ] }; + key { [ XF86MenuKB ] }; + key { [ XF86Launch3 ] }; + key { [ XF86Cut ] }; + key { [ XF86Copy ] }; + key { [ XF86Paste ] }; + key { [ XF86ScrollUp ] }; + key { [ XF86AudioMedia ] }; +}; + +partial alphanumeric_keys +xkb_symbols "silvercrest" { + include "inet(media_nav_acpi_common)" + key { [ XF86HomePage ] }; + key { [ XF86Launch2 ] }; + key { [ XF86Launch1 ] }; +}; + + +// eMachines + +partial alphanumeric_keys +xkb_symbols "emachines" { + include "inet(media_nav_acpi_common)" + key { [ XF86iTouch ] }; + key { [ KP_0 ] }; + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + key { [ KP_Add ] }; + key { [ KP_Decimal ] }; + key { [ KP_Divide ] }; + key { [ KP_Multiply ] }; + key { [ KP_Subtract ] }; +}; + + +// BenQ + +// BenQ X* (X730, X500, X800) +// +// To make the FN_LOCK and CONFIG key work on the BenQ X500 , use: +// setkeycodes e074 130 # KEY_PROPS from /usr/include/linux/input.h +// setkeycodes e075 171 # KEY_CONFIG from /usr/include/linux/input.h +partial alphanumeric_keys +xkb_symbols "benqx" { + include "inet(media_nav_acpi_common)" + key { [ XF86ModeLock ] }; + key { [ XF86WWW ] }; + key { [ XF86Go ] }; + key { [ XF86Calendar ] }; +}; + + +// Unitek + +partial alphanumeric_keys +xkb_symbols "unitekkb1925" { + include "inet(media_nav_common)" + key { [ XF86AudioMute ] }; + key { [ XF86PowerOff ] }; + key { [ XF86Sleep ] }; + key { [ XF86WakeUp ] }; + key { [ XF86Search ] }; + key { [ XF86Reload ] }; +}; + + +// Creative + +// Creative Desktop Wireless 7000 +partial alphanumeric_keys +xkb_symbols "creativedw7000" { + include "inet(media_nav_acpi_common)" + key { [ XF86Pictures ] }; +}; + + +// Compal + +// Compal FL90 +partial alphanumeric_keys +xkb_symbols "compalfl90" { + include "inet(media_nav_acpi_common)" + key { [ XF86MonBrightnessUp ] }; + key { [ XF86MonBrightnessDown ] }; +}; + +partial alphanumeric_keys +xkb_symbols "pc105" { + include "inet(media_nav_acpi_common)" +}; + +partial alphanumeric_keys +xkb_symbols "chromebook" { + include "level3(ralt_switch)" + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86Reload ] }; + key { [ F11 ] }; +// key { [ F5, F5, F5, F5 ] }; // Overview key + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ BackSpace, BackSpace, Delete ] }; + key { [ Up, Up, Prior, Up ] }; + key { [ Down, Down, Next, Down ] }; + key { [ Left, Left, Home, Left ] }; + key { [ Right, Right, End, Right ] }; + key { [ Super_L, Super_L, Caps_Lock, Super_L ] }; +}; + +partial alphanumeric_keys +xkb_symbols "teck227" { + include "inet(media_nav_common)" + key { [ Hiragana ] }; +}; + +partial alphanumeric_keys +xkb_symbols "teck229" { + include "inet(teck227)" +}; + + +// Pinephone + +// Pinephone Keyboard +partial alphanumeric_keys +xkb_symbols "ppkb" { + + key {[ 1, exclam, bar ]}; + key {[ 2, at, backslash ]}; + key {[ 3, numbersign, sterling ]}; + key {[ 4, dollar, EuroSign ]}; + key {[ 5, percent, asciitilde ]}; + key {[ 6, asciicircum, grave ]}; + key {[ 7, ampersand, minus ]}; + key {[ 8, asterisk, equal ]}; + key {[ 9, parenleft, underscore ]}; + key {[ 0, parenright, plus ]}; +}; diff --git a/nixos/xkb/symbols/iq b/nixos/xkb/symbols/iq new file mode 100644 index 00000000..675bef42 --- /dev/null +++ b/nixos/xkb/symbols/iq @@ -0,0 +1,31 @@ +// Keyboard layouts for Iraq. + +default partial alphanumeric_keys +xkb_symbols "basic" { + include "ara(basic)" + name[Group1]= "Arabic (Iraq)"; +}; + +partial alphanumeric_keys +xkb_symbols "ku" { + include "tr(ku)" + name[Group1]= "Kurdish (Iraq, Latin Q)"; +}; + +partial alphanumeric_keys +xkb_symbols "ku_f" { + include "tr(ku_f)" + name[Group1]= "Kurdish (Iraq, F)"; +}; + +partial alphanumeric_keys +xkb_symbols "ku_alt" { + include "tr(ku_alt)" + name[Group1]= "Kurdish (Iraq, Latin Alt-Q)"; +}; + +partial alphanumeric_keys +xkb_symbols "ku_ara" { + include "ir(ku_ara)" + name[Group1]= "Kurdish (Iraq, Arabic-Latin)"; +}; diff --git a/nixos/xkb/symbols/ir b/nixos/xkb/symbols/ir new file mode 100644 index 00000000..3591d2e1 --- /dev/null +++ b/nixos/xkb/symbols/ir @@ -0,0 +1,283 @@ +// Keyboard layouts for Iran. + +// Standard Persian layout, based on ISIRI 9147 (1st Edition), +// "Layout of Persian Letters and Symbols on Computer Keyboards" +// by the Institute of Standards and Industrial Research of Iran. +// (http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147) +// https://persian-computing.org/archives/ISIRI/ISIRI-9147.pdf +// +// The standard is extended with ASCII digits on the fourth level of the top row, +// and the letter He with Ye above (U+06C0) on the third level of the AC05 key. +// +// Original author: Behnam Esfahbod + +default partial alphanumeric_keys +xkb_symbols "pes" { + name[Group1]= "Persian"; + + // Persian and ASCII digits + key { [ Farsi_1, exclam, grave, 1 ] }; + key { [ Farsi_2, U066C, at, 2 ] }; + key { [ Farsi_3, U066B, numbersign, 3 ] }; + key { [ Farsi_4, UFDFC, dollar, 4 ] }; // Rial sign + key { [ Farsi_5, U066A, percent, 5 ] }; + key { [ Farsi_6, multiply, asciicircum, 6 ] }; + key { [ Farsi_7, Arabic_comma, ampersand, 7 ] }; + key { [ Farsi_8, asterisk, enfilledcircbullet, 8 ] }; + key { [ Farsi_9, parenright, U200E, 9 ] }; // LRM + key { [ Farsi_0, parenleft, U200F, 0 ] }; // RLM + + // Persian letters and symbols + key { [ Arabic_dad, Arabic_sukun, degree ] }; + key { [ Arabic_sad, Arabic_dammatan, none ] }; + key { [ Arabic_theh, Arabic_kasratan, EuroSign ] }; + key { [ Arabic_qaf, Arabic_fathatan, none ] }; + key { [ Arabic_feh, Arabic_damma, none ] }; + key { [ Arabic_ghain, Arabic_kasra, none ] }; + key { [ Arabic_ain, Arabic_fatha, none ] }; + key { [ Arabic_heh, Arabic_shadda, U202D ] }; // LRO + key { [ Arabic_khah, bracketright, U202E ] }; // RLO + key { [ Arabic_hah, bracketleft, U202C ] }; // PDF + key { [ Arabic_jeem, braceright, U202A ] }; // LRE + key { [ Arabic_tcheh, braceleft, U202B ] }; // RLE + + key { [ Arabic_sheen, Arabic_hamzaonwaw, none ] }; + key { [ Arabic_seen, Arabic_hamzaonyeh, none ] }; + key { [ Farsi_yeh, Arabic_yeh, Arabic_alefmaksura ] }; + key { [ Arabic_beh, Arabic_hamzaunderalef, none ] }; + key { [ Arabic_lam, Arabic_hamzaonalef, U06C0 ] }; + key { [ Arabic_alef, Arabic_maddaonalef, U0671 ] }; + key { [ Arabic_teh, Arabic_tehmarbuta, none ] }; + key { [ Arabic_noon, guillemotright, UFD3E ] }; + key { [ Arabic_meem, guillemotleft, UFD3F ] }; + key { [ Arabic_keheh, colon, semicolon ] }; + key { [ Arabic_gaf, Arabic_semicolon, quotedbl ] }; + + key { [ Arabic_zah, Arabic_kaf, none ] }; + key { [ Arabic_tah, U0653, none ] }; + key { [ Arabic_zain, Arabic_jeh, none ] }; + key { [ Arabic_ra, Arabic_superscript_alef,U0656 ] }; + key { [ Arabic_thal, U200C, U200D ] }; // ZWNJ, ZWJ + key { [ Arabic_dal, Arabic_hamza_above, Arabic_hamza_below ] }; + key { [ Arabic_peh, Arabic_hamza, ellipsis ] }; + key { [ Arabic_waw, greater, comma ] }; + key { [ period, less, apostrophe ] }; + key { [ slash, Arabic_question_mark, question ] }; + + key { [ U200D, division, asciitilde ] }; // ZWJ + key { [ minus, Arabic_tatweel, underscore ] }; + key { [ equal, plus, U2212 ] }; // figure dash + key { [ backslash, bar, U2010 ] }; // hyphen + + include "nbsp(zwnj2nb3nnb4)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "pes_keypad" { + + include "ir(pes)" + + name[Group1]= "Persian (with Persian keypad)"; + + // Persian digits and Mathematical operators + key { [ division, XF86_Ungrab ] }; + key { [ multiply, XF86_ClearGrab ] }; + key { [ U2212, XF86_Prev_VMode ] }; // minus sign + key { [ plus, XF86_Next_VMode ] }; + + key { [ KP_Enter ] }; + key { [ equal ] }; + + key { [ KP_Home, Farsi_7 ] }; + key { [ KP_Up, Farsi_8 ] }; + key { [ KP_Prior, Farsi_9 ] }; + + key { [ KP_Left, Farsi_4 ] }; + key { [ KP_Begin, Farsi_5 ] }; + key { [ KP_Right, Farsi_6 ] }; + + key { [ KP_End, Farsi_1 ] }; + key { [ KP_Down, Farsi_2 ] }; + key { [ KP_Next, Farsi_3 ] }; + + key { [ KP_Insert, Farsi_0 ] }; + key { [ KP_Delete, U066B ] }; // Arabic decimal separator +}; + + +// The legacy Windows layout that Iranian users are accustomed to, +// extended with Farsi digits on the third level of the top row. + +partial alphanumeric_keys +xkb_symbols "winkeys" { + + name[Group1]= "Persian (Windows)"; + + key { [ division, multiply ] }; + key { [ 1, exclam, Farsi_1, U200D ] }; // ZWJ + key { [ 2, at, Farsi_2, U200C ] }; // ZWNJ + key { [ 3, numbersign, Farsi_3, U200E ] }; // LRM + key { [ 4, dollar, Farsi_4, U200F ] }; // RLM + key { [ 5, percent, Farsi_5 ] }; + key { [ 6, asciicircum, Farsi_6 ] }; + key { [ 7, ampersand, Farsi_7 ] }; + key { [ 8, asterisk, Farsi_8 ] }; + key { [ 9, parenright, Farsi_9 ] }; + key { [ 0, parenleft, Farsi_0 ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + key { [ Arabic_dad, Arabic_fathatan ] }; + key { [ Arabic_sad, Arabic_dammatan ] }; + key { [ Arabic_theh, Arabic_kasratan ] }; + key { [ Arabic_qaf, UFDFC ] }; // Rial sign + key { [ Arabic_feh, Arabic_comma ] }; + key { [ Arabic_ghain, Arabic_semicolon ] }; + key { [ Arabic_ain, comma ] }; + key { [ Arabic_heh, bracketright ] }; + key { [ Arabic_khah, bracketleft ] }; + key { [ Arabic_hah, backslash ] }; + key { [ Arabic_jeem, braceright ] }; + key { [ Arabic_tcheh, braceleft ] }; + + key { [ Arabic_sheen, Arabic_fatha ] }; + key { [ Arabic_seen, Arabic_damma ] }; + key { [ Farsi_yeh, Arabic_kasra ] }; + key { [ Arabic_beh, Arabic_shadda ] }; + key { [ Arabic_lam, U06C0 ] }; + key { [ Arabic_alef, Arabic_maddaonalef ] }; + key { [ Arabic_teh, Arabic_tatweel ] }; + key { [ Arabic_noon, guillemotleft ] }; + key { [ Arabic_meem, guillemotright ] }; + key { [ Arabic_keheh, colon ] }; + key { [ Arabic_gaf, quotedbl ] }; + key { [ Arabic_peh, bar ] }; + + key { [ Arabic_peh, bar ] }; + key { [ Arabic_zah, Arabic_tehmarbuta ] }; + key { [ Arabic_tah, Arabic_yeh ] }; + key { [ Arabic_zain, Arabic_jeh ] }; + key { [ Arabic_ra, Arabic_hamzaonwaw ] }; + key { [ Arabic_thal, Arabic_hamzaonalef ] }; + key { [ Arabic_dal, Arabic_hamzaunderalef ] }; + key { [ Arabic_hamzaonyeh, Arabic_hamza ] }; + key { [ Arabic_waw, less ] }; + key { [ period, greater ] }; + key { [ slash, Arabic_question_mark ] }; + + include "level3(ralt_switch)" +}; + + +// Symbols definition for South Azerbaijani keyboard layout. +// 2022 - Alborz Jafari + +partial alphanumeric_keys +xkb_symbols "azb" +{ + include "ir(pes)" + name[Group1]= "Azerbaijani (Iran)"; + + // Letters and symbols for South Azerbaijani + key { [ Arabic_dad, U06C7, degree ] }; // ۇ + key { [ Arabic_sad, U06C6, Arabic_dammatan ] }; // ۆ + key { [ Farsi_yeh, U063D, Arabic_alefmaksura ] }; // ؽ + key { [ Arabic_zah, Arabic_sukun, none ] }; + key { [ Arabic_thal, Arabic_dammatan, none ] }; +}; + + +// Kurdish layouts + +partial alphanumeric_keys +xkb_symbols "ku" { + include "tr(ku)" + name[Group1]= "Kurdish (Iran, Latin Q)"; +}; + +partial alphanumeric_keys +xkb_symbols "ku_f" { + include "tr(ku_f)" + name[Group1]= "Kurdish (Iran, F)"; +}; + +partial alphanumeric_keys +xkb_symbols "ku_alt" { + include "tr(ku_alt)" + name[Group1]= "Kurdish (Iran, Latin Alt-Q)"; +}; + +// Kurdish Soranî Bahdînî (Arabic) keyboard layout, +// based on the Kurdî Soranî Bahdînî keyboard from KurdITGroup +// which is based on National Iranian Keyboard Standard (ISIRI 2901:1994), +// with additions. +// +// Copyright (C) 2006 Erdal Ronahî, published under the GPL v2 +// +// Special copyright note: author explicitly permitted to license this +// layout under MIT/X11 license, for details see +// https://bugs.freedesktop.org/show_bug.cgi?id=9541 +// +// Author: Erdal Ronahî +// +// Kurdish Arabic-Latin Layout for Soranî + +partial alphanumeric_keys +xkb_symbols "ku_ara" { + name[Group1]= "Kurdish (Iran, Arabic-Latin)"; + + key { [ U200D, division, asciitilde ] }; // ZWJ + key { [ Arabic_1, exclam, 1, grave ] }; + key { [ Arabic_2, at, 2, at ] }; + key { [ Arabic_3, numbersign, 3, U066B ] }; + key { [ Arabic_4, dollar, 4, UFDFC ] }; // Rial sign + key { [ Arabic_5, percent, 5, U066A ] }; + key { [ Arabic_6, asciicircum, 6, multiply ] }; + key { [ Arabic_7, ampersand, 7, Arabic_comma ] }; + key { [ Arabic_8, asterisk, 8, enfilledcircbullet ] }; + key { [ Arabic_9, parenright, 9, U200E ] }; // LRM + key { [ Arabic_0, parenleft, 0, U200F ] }; // RLM + key { [ minus, Arabic_tatweel, underscore ] }; + key { [ equal, plus, U2212 ] }; // minus sign + + key { [ Arabic_qaf, X, q, Q ] }; + key { [ Arabic_waw, X, w, W ] }; + key { [ U06D5, Arabic_heh, e, E ] }; + key { [ Arabic_ra, U0695, r, R ] }; + key { [ Arabic_teh, Arabic_tah, t, T ] }; + key { [ U06CC, U06CE, y, Y ] }; + key { [ Arabic_hamzaonyeh, Arabic_hamza, u, U ] }; + key { [ Arabic_hah, Arabic_ain, i, I ] }; + key { [ U06C6, Arabic_hamzaonwaw, o, O ] }; + key { [ U067E, Arabic_theh, p, P ] }; + key { [ bracketright,braceright, ucircumflex, Ucircumflex ] }; + key { [ bracketleft, braceleft, scedilla, Scedilla ] }; + + key { [ Arabic_alef, Arabic_maddaonalef, a, A ] }; + key { [ Arabic_seen, Arabic_sheen, s, S ] }; + key { [ Arabic_dal, Arabic_thal, d, D ] }; + key { [ Arabic_feh, Arabic_hamzaunderalef, f, F ] }; + key { [ U06AF, Arabic_ghain, g, G ] }; + key { [ Arabic_heh, U200C, h, H ] }; // ZWNJ + key { [ U0698, Arabic_hamzaonalef, j, J ] }; + key { [ U06A9, Arabic_kaf, k, K ] }; + key { [ Arabic_lam, U06B5, l, L ] }; + key { [ Arabic_semicolon, colon, ecircumflex, Ecircumflex ] }; + key { [ apostrophe, quotedbl, icircumflex, Icircumflex ] }; + key { [ backslash, bar, ccedilla, Ccedilla ] }; + + key { [ Arabic_zain, Arabic_dad, z, Z ] }; + key { [ Arabic_khah, Arabic_sad, x, X ] }; + key { [ Arabic_jeem, U0686, c, C ] }; + key { [ U06A4, Arabic_zah, v, V ] }; + key { [ Arabic_beh, U0649, b, B ] }; + key { [ Arabic_noon, Arabic_tehmarbuta, n, N ] }; + key { [ Arabic_meem, Arabic_tatweel, m, M ] }; + key { [ Arabic_comma,greater, comma ] }; + key { [ period, less, apostrophe ] }; + key { [ slash, Arabic_question_mark, question ] }; + + include "nbsp(zwnj2nb3)" + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/is b/nixos/xkb/symbols/is new file mode 100644 index 00000000..2559ea7e --- /dev/null +++ b/nixos/xkb/symbols/is @@ -0,0 +1,190 @@ +// Keyboard layouts for Iceland. + +// Icelandic keyboard layout, by Hrafnkell Eiriksson - hkelle@rhi.hi.is +// Fixes by Olafur Osvaldsson - oli@isnic.is - and Bjarni Ingi Gislason. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin(type4)" + + name[Group1]="Icelandic"; + + key { [dead_abovering, dead_diaeresis, notsign, hyphen ] }; + key { [ 2, quotedbl, twosuperior, oneeighth ] }; + key { [ 4, dollar, onequarter, currency ] }; + key { [odiaeresis, Odiaeresis, backslash, questiondown ] }; + key { [ minus, underscore, dead_cedilla, dead_ogonek ] }; + + key { [ p, P, bar, Greek_pi ] }; + key { [ eth, ETH, dead_diaeresis, dead_abovering ] }; + key { [apostrophe, question, asciitilde, dead_macron ] }; + + key { [ d, D, U201e, U201c ] }; + key { [ ae, AE, asciicircum, dead_doubleacute ] }; + key { [dead_acute, dead_acute, dead_circumflex, dead_caron ] }; + key { [ plus, asterisk, grave, dead_breve ] }; + + key { [ thorn, THORN, dead_belowdot, dead_abovedot ] }; + + include "level3(ralt_switch)" +}; + +// Copied from macintosh_vndr/is. +// Copyright (C) 2004, 2006 Ævar Arnfjörð Bjarmason +xkb_symbols "mac_legacy" { + name[Group1]= "Icelandic (Macintosh, legacy)"; + + key { [ sterling, section, UF8FF, apostrophe ] }; // Apple logo + key { [ 1, exclam, exclamdown, VoidSymbol ] }; + key { [ 2, quotedbl, at, VoidSymbol ] }; + key { [ 3, numbersign, U2122, sterling ] }; + key { [ 4, dollar, cent, EuroSign ] }; + key { [ 5, percent, permille, infinity ] }; + key { [ 6, ampersand, asciicircum, U2044 ] }; + key { [ 7, slash, backslash, division ] }; + key { [ 8, parenleft, bracketleft, braceleft ] }; + key { [ 9, parenright, bracketright, braceright ] }; + key { [ 0, equal, U2260, U2248 ] }; + key { [ odiaeresis, Odiaeresis, oslash, Oslash ] }; + key { [ minus, underscore, endash, emdash ] }; + + key { [ q, Q, paragraph, VoidSymbol ] }; + key { [ w, W, U2211, VoidSymbol ] }; + key { [ e, E, dead_grave, VoidSymbol ] }; + key { [ r, R, registered, VoidSymbol ] }; + key { [ t, T, degree, VoidSymbol ] }; + key { [ y, Y, yen, VoidSymbol ] }; + key { [ u, U, dead_diaeresis, VoidSymbol ] }; + key { [ i, I, idotless, ordfeminine] }; + key { [ o, O, dead_circumflex, masculine ] }; + key { [ p, P, Greek_pi, Greek_PI ] }; + key { [ eth, ETH, U201e, U201c ] }; + key { [ apostrophe, question, questiondown, periodcentered] }; + + key { [ a, A, aring, Aring ] }; + key { [ s, S, ssharp, abovedot ] }; + key { [ d, D, U2202, U02DA ] }; + key { [ f, F, function, macron ] }; + key { [ g, G, copyright, breve ] }; + key { [ h, H, bar, VoidSymbol ] }; + key { [ j, J, U2206, doubleacute] }; + key { [ k, K, notsign, VoidSymbol ] }; + key { [ l, L, U2026, caron ] }; + key { [ ae, AE, oe, OE ] }; + key { [ dead_acute, dead_diaeresis, U201A, U2018 ] }; + key { [ plus, asterisk, U2022, plusminus ] }; + + key { [ less, greater, section, UF8FF ] }; // Apple logo + key { [ z, Z, Greek_OMEGA, VoidSymbol ] }; + key { [ x, X, asciitilde, VoidSymbol ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, U221A, U25CA ] }; + key { [ b, B, U222B, VoidSymbol ] }; + key { [ n, N, dead_tilde, VoidSymbol ] }; + key { [ m, M, mu, VoidSymbol ] }; + key { [ comma, semicolon, lessthanequal, guillemotleft ] }; + key { [ period, colon, greaterthanequal, guillemotright ] }; + key { [ thorn, THORN, U2019, U201d ] }; + + include "level3(ralt_switch)" +}; + +// Layout for newer Apple laptop and Aluminium keyboards (A1243/A1255 and later). +// Copyright (C) 2013 Ævar Arnfjörð Bjarmason +partial alphanumeric_keys +xkb_symbols "mac" { + name[Group1]= "Icelandic (Macintosh)"; + + key { [ degree, dead_diaeresis, oslash, Oslash ] }; + key { [ 1, exclam, exclamdown, VoidSymbol ] }; + key { [ 2, quotedbl, at, VoidSymbol ] }; + key { [ 3, numbersign, trademark, sterling ] }; + key { [ 4, dollar, cent, EuroSign ] }; + key { [ 5, percent, permille, infinity ] }; + key { [ 6, ampersand, asciicircum, U2044 ] }; + key { [ 7, slash, braceleft, division ] }; + key { [ 8, parenleft, bracketleft, braceleft ] }; + key { [ 9, parenright, bracketright, braceright ] }; + key { [ 0, equal, braceright, approxeq ] }; + key { [ odiaeresis, Odiaeresis, backslash, U2260 ] }; + key { [ minus, underscore, endash, emdash ] }; + + key { [ q, Q, at, paragraph ] }; + key { [ w, W, U2211, section ] }; + key { [ e, E, U20AC, questiondown ] }; + key { [ r, R, registered, VoidSymbol ] }; + key { [ t, T, degree, U2022 ] }; + key { [ y, Y, yen, VoidSymbol ] }; + key { [ u, U, dead_diaeresis, VoidSymbol ] }; + key { [ i, I, idotless, ordfeminine ] }; + key { [ o, O, dead_circumflex, masculine ] }; + key { [ p, P, Greek_pi, Greek_PI ] }; + key { [ eth, ETH, doublelowquotemark, leftdoublequotemark ] }; + key { [ apostrophe, question, asciitilde, periodcentered ] }; + + key { [ a, A, aring, Aring ] }; + key { [ s, S, ssharp, abovedot ] }; + key { [ d, D, partialderivative, U02DA ] }; + key { [ f, F, function, macron ] }; + key { [ g, G, copyright, breve ] }; + key { [ h, H, bar, cedilla ] }; + key { [ j, J, U2206, doubleacute ] }; + key { [ k, K, notsign, ogonek ] }; + key { [ l, L, ellipsis, caron ] }; + key { [ ae, AE, oe, OE ] }; + key { [ dead_acute, dead_acute, asciicircum, leftsinglequotemark ] }; + key { [ plus, asterisk, grave, plusminus ] }; + + key { [ less, greater, bar, UF8FF ] }; // Apple logo + key { [ z, Z, Greek_OMEGA, VoidSymbol ] }; + key { [ x, X, asciitilde, VoidSymbol ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, radical, U25CA ] }; + key { [ b, B, integral, VoidSymbol ] }; + key { [ n, N, dead_tilde, VoidSymbol ] }; + key { [ m, M, mu, VoidSymbol ] }; + key { [ comma, semicolon, lessthanequal, guillemotleft ] }; + key { [ period, colon, greaterthanequal, guillemotright ] }; + key { [ thorn, THORN, rightsinglequotemark, rightdoublequotemark ] }; + + include "level3(ralt_switch)" +}; + +// This is a modified version of the English Dvorak layout that allows +// you to type all Icelandic letters under X. It's not a full attempt at +// nationalizing the layout as e.g. the Norwegian, Swedish and French +// layouts which modify the primary keys of the basic Dvorak layout +// extensively. + +// Rather it's a simple modification of 5 keys of the US Dvorak layout, +// it adds Germanic/Icelandic style quotation marks („“), eth (ðÐ), ae +// (æÆ), endash and emdash (–—), thorn (þÞ), EuroSign (€) and the German +// Sharp S (ßẞ). These keys aren't used in the US version, making the +// Icelandic version a superset of it. + +// Maybe someone else will make a "full" attempt at an Icelandic layout +// but I was mostly interested in continuing to type English comfortably +// as a primary function while being able to type the full Icelandic +// alphabet as a secondary function. +// -- Ævar Arnfjörð Bjarmason + +// Icelandic Dvorak +partial alphanumeric_keys +xkb_symbols "dvorak" { + + include "us(dvorak)" + include "eurosign(4)" + + name[Group1]= "Icelandic (Dvorak)"; + + key { [ slash, question, U201e, U201c ] }; + key { [ o, O, odiaeresis, Odiaeresis ] }; + key { [ d, D, eth, ETH ] }; + key { [ s, S, ae, AE ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ b, B, ssharp, U1E9E ] }; + key { [ z, Z, thorn, THORN ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/it b/nixos/xkb/symbols/it new file mode 100644 index 00000000..0b0b4d3a --- /dev/null +++ b/nixos/xkb/symbols/it @@ -0,0 +1,405 @@ +// Keyboard layouts for Italy. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin(type4)" + + name[Group1]="Italian"; + + key {[ backslash, bar, notsign, brokenbar ]}; + + key {[ 2, quotedbl, twosuperior, dead_doubleacute]}; + key {[ 3, sterling, threesuperior, dead_tilde ]}; + key {[ 4, dollar, onequarter, oneeighth ]}; + + key {[ 0, equal, braceright, dead_ogonek ]}; + key {[apostrophe, question, grave, questiondown ]}; + key {[ igrave, asciicircum, asciitilde, dead_circumflex ]}; + + key {[ egrave, eacute, bracketleft, braceleft ]}; + key {[ plus, asterisk, bracketright, braceright ]}; + + key {[ ograve, ccedilla, at, dead_cedilla ]}; + key {[ agrave, degree, numbersign, dead_abovering ]}; + key {[ ugrave, section, dead_grave, dead_breve ]}; + + key {[ less, greater, guillemotleft, guillemotright ]}; + key {[ v, V, leftdoublequotemark, leftsinglequotemark ]}; + key {[ b, B, rightdoublequotemark, rightsinglequotemark ]}; + key {[ n, N, ntilde, Ntilde ]}; + key {[ comma, semicolon, dead_acute, multiply ]}; + key {[ period, colon, periodcentered, dead_diaeresis ]}; + key {[ minus, underscore, dead_macron, division ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "it(basic)" + + name[Group1]="Italian (no dead keys)"; + + key {[ 2, quotedbl, twosuperior, doubleacute ]}; + key {[ 3, sterling, threesuperior, asciitilde ]}; + + key {[ 0, equal, braceright, ogonek ]}; + key {[ igrave, asciicircum, asciitilde, asciicircum ]}; + + key {[ j, J, ezh, EZH ]}; + key {[ ograve, ccedilla, at, cedilla ]}; + key {[ agrave, degree, numbersign, degree ]}; + key {[ ugrave, section, grave, breve ]}; + + key {[ comma, semicolon, acute, multiply ]}; + key {[ period, colon, periodcentered, diaeresis ]}; + key {[ minus, underscore, macron, division ]}; +}; + +partial alphanumeric_keys +xkb_symbols "winkeys" { + + include "it(basic)" + name[Group1]="Italian (Windows)"; + include "eurosign(5)" +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + name[Group1]= "Italian (Macintosh)"; + + key {[ at, numbersign, periodcentered ]}; + key {[ ampersand, 1, guillemotleft, guillemotright ]}; + key {[ quotedbl, 2 ]}; + key {[ apostrophe, 3 ]}; + key {[ parenleft, 4, braceleft, bracketleft ]}; + key {[ ccedilla, 5, Ccedilla, Iacute ]}; + key {[ egrave, 6, paragraph, periodcentered ]}; + key {[ parenright, 7, braceright, bracketright ]}; + key {[ sterling, 8, infinity ]}; + key {[ agrave, 9, acute, Ocircumflex ]}; + key {[ eacute, 0, grave, Oacute ]}; + key {[ minus, underscore ]}; + key {[ equal, plus, notequal, plusminus ]}; + + key {[ q, Q ]}; + key {[ z, Z ]}; + key {[ e, E, EuroSign ]}; + key {[ r, R, registered ]}; + key {[ t, T ]}; + key {[ y, Y, Uacute, ydiaeresis ]}; + key {[ u, U ]}; + key {[ i, I, icircumflex, idiaeresis ]}; + key {[ o, O ]}; + key {[ p, P ]}; + key {[ igrave, asciicircum ]}; + key {[ dollar, asterisk ]}; + + key {[ a, A, aring, Aring ]}; + key {[ s, S, ssharp, U1E9E ]}; + key {[ d, D ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ h, H, Igrave, Icircumflex ]}; + key {[ j, J, Idiaeresis, Iacute ]}; + key {[ k, K, Egrave, Ediaeresis ]}; + key {[ l, L, ssharp, bar ]}; + key {[ m, M, mu, Oacute ]}; + key {[ ugrave, percent, ae, AE ]}; + key {[ section, degree, at, numbersign ]}; + + key {[ less, greater ]}; + key {[ w, W ]}; + key {[ x, X ]}; + key {[ c, C, copyright, copyright ]}; + key {[ v, V ]}; + key {[ b, B ]}; + key {[ n, N, dead_tilde ]}; + key {[ comma, question, questiondown ]}; + key {[ semicolon, period ]}; + key {[ colon, slash, bar, backslash ]}; + key {[ ograve, exclam, exclamdown ]}; + + include "kpdl(dot)" + include "level3(ralt_switch)" +}; + +// Layout for Georgian people in Italy, +// originally by Vladimer Sichinava. +partial alphanumeric_keys +xkb_symbols "geo" { + + include "it(basic)" + include "ge(basic)" + + name[Group1]= "Georgian (Italy)"; + + key {[ backslash, bar, notsign, brokenbar ]}; + key {[ 1, exclam, onesuperior ]}; + key {[ 2, quotedbl, twosuperior, dead_doubleacute ]}; + key {[ 3, sterling, threesuperior, dead_tilde ]}; + key {[ 4, dollar, onequarter, oneeighth ]}; + key {[ 5, percent, onehalf ]}; + key {[ 6, ampersand ]}; + key {[ 7, slash, braceleft ]}; + key {[ 8, parenleft, bracketleft ]}; + key {[ 9, parenright ]}; + key {[ 0, equal, braceright, dead_ogonek ]}; + key {[ apostrophe, question, grave, questiondown ]}; + key {[ igrave, asciicircum, asciitilde, dead_circumflex ]}; + + key {[ Georgian_en, E, EuroSign ]}; + key {[ egrave, eacute, bracketleft, braceleft ]}; + key {[ plus, asterisk, bracketright, braceright ]}; + + key {[ ograve, ccedilla, at, dead_cedilla ]}; + key {[ agrave, degree, numbersign, degree ]}; + key {[ ugrave, section, dead_grave, dead_breve ]}; + + key {[ less, greater ]}; + key {[ comma, semicolon ]}; + key {[ period, colon ]}; + key {[ minus, underscore ]}; +}; + +xkb_symbols "olpc" { + + include "it(basic)" + + key {[ igrave, asciicircum, asciitilde, dead_tilde ]}; + key {[ ugrave, section, Egrave, dead_breve ]}; + key {[ less, greater, guillemotleft, guillemotright ]}; +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "us" { + + include "us(basic)" + + name[Group1]= "Italian (US)"; + + key {[ grave, asciitilde, dead_grave, dead_tilde ]}; + key {[ 1, exclam, onesuperior ]}; + key {[ 2, at, twosuperior ]}; + key {[ 3, numbersign, threesuperior ]}; + key {[ 5, percent, EuroSign ]}; + key {[ 6,asciicircum, dead_circumflex ]}; + key {[ 0, parenright, degree ]}; + key {[ minus, underscore, dead_macron ]}; + + key {[ e, E, egrave, Egrave ]}; + key {[ r, R, registered ]}; + key {[ u, U, ugrave, Ugrave ]}; + key {[ i, I, igrave, Igrave ]}; + key {[ o, O, ograve, Ograve ]}; + + key {[ a, A, agrave, Agrave ]}; + key {[ d, D, eacute, Eacute ]}; + key {[ j, J, uacute, Uacute ]}; + key {[ k, K, iacute, Iacute ]}; + key {[ l, L, oacute, Oacute ]}; + key {[ semicolon, colon, dead_diaeresis, dead_diaeresis ]}; + key {[apostrophe, quotedbl, dead_acute ]}; + + key {[ z, Z, aacute, Aacute ]}; + key {[ c, C, copyright ]}; + key {[ n, N, ntilde, Ntilde ]}; + key {[ comma, less, guillemotleft ]}; + key {[ period, greater, guillemotright ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "ibm" { + + include "us" + + name[Group1]="Italian (IBM 142)"; + + key {[ backslash, bar ]}; + + key {[ 2, quotedbl ]}; + key {[ 3, sterling, numbersign ]}; + key {[ 6, ampersand ]}; + key {[ 7, slash, braceleft ]}; + key {[ 8, parenleft, bracketleft ]}; + key {[ 9, parenright, bracketright ]}; + key {[ 0, equal, braceright ]}; + key {[apostrophe, question ]}; + key {[ igrave, asciicircum ]}; + + key {[ q, Q, at ]}; + key {[ e, E, EuroSign ]}; + key {[ egrave, eacute ]}; + key {[ plus, asterisk, asciitilde ]}; + + key {[ ograve, ccedilla ]}; + key {[ agrave, degree ]}; + key {[ ugrave, section, grave ]}; + + key {[ less, greater ]}; + key {[ comma, semicolon ]}; + key {[ period, colon ]}; + key {[ minus, underscore ]}; + + include "level3(ralt_switch)" + include "kpdl(comma)" +}; + +// Layout for Friulian (a language in northeastern Italy). +// Originally by Fabio Tomat , 2017. +partial alphanumeric_keys +xkb_symbols "fur" { + + include "latin(type4)" + + name[Group1] = "Friulian (Italy)"; + + key {[ backslash, bar, notsign, brokenbar ]}; + + key {[ 2, quotedbl, twosuperior,dead_doubleacute]}; + key {[ 3, sterling, threesuperior, U1D49 ]}; + key {[ 4, dollar, onequarter, oneeighth ]}; + key {[ 5, percent, EuroSign, onehalf ]}; + key {[ 0, equal, braceright, dead_ogonek ]}; + key {[apostrophe, question, grave, questiondown ]}; + key {[ igrave, asciicircum, asciitilde,dead_circumflex]}; + + key {[ e, E, ecircumflex, Ecircumflex ]}; + key {[ t, T, U1D57, U1D40 ]}; + key {[ u, U, ucircumflex, NoSymbol ]}; + key {[ i, I, icircumflex, Icircumflex ]}; + key {[ o, O, ocircumflex, Ocircumflex ]}; + key {[ egrave, eacute, bracketleft, braceleft ]}; + key {[ plus, asterisk, bracketright, braceright ]}; + + key {[ a, A, acircumflex, Acircumflex ]}; + key {[ d, D, U1D48 ]}; + key {[ f, F, U1DA0, ordfeminine ]}; + key {[ ograve, ccedilla, at, dead_cedilla ]}; + key {[ agrave, degree, numbersign,dead_abovering ]}; + key {[ ugrave, section, dead_grave, dead_breve ]}; + + key {[ less, greater, guillemotleft,guillemotright ]}; + key {[ c, C, U1D9C, copyright ]}; + key {[ v, V, leftdoublequotemark, leftsinglequotemark ]}; + key {[ b, B, rightdoublequotemark, rightsinglequotemark ]}; + key {[ n, N, U207F, Ntilde ]}; + key {[ m, M, U1D50, mu ]}; + key {[ comma, semicolon, dead_acute, multiply ]}; + key {[ period, colon,periodcentered,dead_diaeresis ]}; + key {[ minus, underscore, dead_macron, division ]}; + + include "level3(ralt_switch)" +}; + +// Layout for Sicilian, by Cademia Siciliana , 2023. +partial alphanumeric_keys +xkb_symbols "scn" { + + include "it(basic)" + + name[Group1] = "Sicilian"; + + key {[ w, W, schwa, SCHWA ]}; // ə Ə + key {[ e, E, EuroSign, ecircumflex ]}; + key {[ r, R, ediaeresis, Ediaeresis ]}; + key {[ u, U, ucircumflex, Ucircumflex ]}; + key {[ i, I, icircumflex, Icircumflex ]}; + key {[ o, O, ocircumflex, Ocircumflex ]}; + + key {[ a, A, acircumflex, Acircumflex ]}; + key {[ s, S, scaron, Scaron ]}; + key {[ d, D, U1E0D, U1E0C ]}; // ḍ Ḍ + key {[ f, F, dstroke, Dstroke ]}; + key {[ agrave, degree, numbersign, U1D58 ]}; // # ᵘ + + key {[ x, X, Greek_chi, Greek_CHI ]}; + // The uppercase Ccedilla (Ç) can be reached by using CapsLock. + key {[ c, C, ccedilla, copyright ]}; +}; + + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/it(sun_type6)" +}; + +partial alphanumeric_keys +xkb_symbols "lld" { + + include "it(basic)" + + name[Group1] = "Ladin (Italian keyboard)"; + + key {[ i, I, idiaeresis, Idiaeresis ]}; + key {[ p, P, ediaeresis, Ediaeresis ]}; + + key {[ a, A, aacute, Aacute ]}; + key {[ s, S, sacute, Sacute ]}; + + key {[ c, C, cacute, Cacute ]}; +}; + +partial alphanumeric_keys +xkb_symbols "lldde" { + + include "de(basic)" + + name[Group1] = "Ladin (German keyboard)"; + + key {[ p, P, ediaeresis, Ediaeresis ]}; +}; + +// Dvorak layout for Italian. +// Based on https://web.archive.org/web/20170331132815/http://idvorak.altervista.org/. +partial alphanumeric_keys +xkb_symbols "dvorak" { + + include "it(basic)" + + name[Group1]= "Italian (Dvorak)"; + + key {[ agrave, degree, numbersign ]}; + key {[ comma, semicolon ]}; + key {[ period, colon ]}; + key {[ p, P ]}; + key {[ y, Y ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ c, C ]}; + key {[ r, R ]}; + key {[ l, L ]}; + key {[ egrave, eacute, bracketleft ]}; + key {[ plus, asterisk, bracketright ]}; + + key {[ a, A ]}; + key {[ o, O ]}; + key {[ e, E ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ d, D ]}; + key {[ h, H ]}; + key {[ t, T ]}; + key {[ n, N ]}; + key {[ s, S ]}; + key {[ minus, underscore ]}; + key {[ ugrave, section ]}; + + key {[ ograve, ccedilla, at ]}; + key {[ q, Q ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ x, X ]}; + key {[ b, B ]}; + key {[ m, M ]}; + key {[ w, W ]}; + key {[ v, V ]}; + key {[ z, Z ]}; +}; diff --git a/nixos/xkb/symbols/jolla_vndr/sbj b/nixos/xkb/symbols/jolla_vndr/sbj new file mode 100644 index 00000000..1212925d --- /dev/null +++ b/nixos/xkb/symbols/jolla_vndr/sbj @@ -0,0 +1,54 @@ +// Instructions +// +// 1. Set basic layout by: +// setxkbmap -rules evdev -model jollasbj -layout cz +// +// 2. Set variant by: +// setxkbmap -rules evdev -model jollasbj -layout cz -variant qwerty +// +// 3. Set multilayout by: +// setxkbmap -rules evdev -model jollasbj -layout "us,cz" -variant ",qwerty" -option grp:ctrl_shift_toggle +// This sets the basic us layout active. You can switch to qwerty +// variant of cz layout by pressing ctrl+shift. +// +// Pitfalls +// +// 1. Many to one mappings +// +// Higher level input method components don't necessarily handle many to +// one mappings correctly. They may assume that there exists only a one +// to one mapping between a hardware key and a symbol. Therefore you +// should take care not to introduce many to one mappings for keys that +// are going to be reverse mapped from a symbol to a hardware key. +// +// Currently at least the modifier keys are affected. Clients may set +// states, such as autorepeat, for hardware keys by reverse mapping a +// modifier symbol to a hardware key and then setting the state for the +// first hardware key that maps to the symbol. The correct way would be +// to modify the state of all hardware keys mapping to a given symbol. +// +// We are nice and keep the mappings one to one for clients that don't +// choose to handle many to one mappings. + + + +default partial alphanumeric_keys +xkb_symbols "common" { + include "pc(pc105)" + include "jolla_vndr/sbj(common-keys)" + + // This section should not be included by any other section. It's + // referenced only once by rule file to allow multiple layout + // configurations. +}; + +partial hidden alphanumeric_keys +xkb_symbols "common-keys" { + + // These keycodes are beyond the X11 255 limit value so it would + // only be valid for the use with SW which supports extended keycodes, + // like xkbcommon. + + // generated from the headset, must always be in the map. + key { [ XF86Phone ] }; +}; diff --git a/nixos/xkb/symbols/jp b/nixos/xkb/symbols/jp new file mode 100644 index 00000000..e581ec56 --- /dev/null +++ b/nixos/xkb/symbols/jp @@ -0,0 +1,282 @@ +// Keyboard layouts for Japan. + +// Layout for Japanese 106-key keyboards. +// Original author: tsuka@kawalab.dnj.ynu.ac.jp +default partial alphanumeric_keys +xkb_symbols "106" { + + include "jp(common)" + + name[Group1]= "Japanese"; + + key {[ 0, asciitilde ]}; + key {[ backslash, bar ]}; +}; + +partial alphanumeric_keys +xkb_symbols "OADG109A" { + + include "jp(common)" + + name[Group1]= "Japanese (OADG 109A)"; + + key {[ 0 ]}; + key {[ yen, bar ]}; +}; + +// Keys that are common to 106-key and 109-key keyboards. +hidden partial alphanumeric_keys +xkb_symbols "common" { + + key {[ Zenkaku_Hankaku, Kanji ], type[group1]="PC_ALT_LEVEL2" }; + + key {[ 1, exclam ]}; + key {[ 2, quotedbl ]}; + key {[ 3, numbersign ]}; + key {[ 4, dollar ]}; + key {[ 5, percent ]}; + key {[ 6, ampersand ]}; + key {[ 7, apostrophe ]}; + key {[ 8, parenleft ]}; + key {[ 9, parenright ]}; + key {[ minus, equal ]}; + key {[ asciicircum, asciitilde ]}; + + key {[ q, Q ]}; + key {[ w, W ]}; + key {[ e, E ]}; + key {[ r, R ]}; + key {[ t, T ]}; + key {[ y, Y ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ o, O ]}; + key {[ p, P ]}; + key {[ at, grave ]}; + key {[ bracketleft, braceleft ]}; + + key {[ Eisu_toggle, Caps_Lock ]}; + + key {[ a, A ]}; + key {[ s, S ]}; + key {[ d, D ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ h, H ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ l, L ]}; + key {[ semicolon, plus ]}; + key {[ colon, asterisk ]}; + key {[ bracketright, braceright ]}; + + key {[ z, Z ]}; + key {[ x, X ]}; + key {[ c, C ]}; + key {[ v, V ]}; + key {[ b, B ]}; + key {[ n, N ]}; + key {[ m, M ]}; + key {[ comma, less ]}; + key {[ period, greater ]}; + key {[ slash, question ]}; + key {[ backslash, underscore ]}; + + key {[ Muhenkan ]}; + key {[ Henkan, Mode_switch ], type[group1]="PC_ALT_LEVEL2" }; + key {[ Hiragana_Katakana, Romaji ], type[group1]="PC_ALT_LEVEL2" }; + + key {[ Print, Execute ], type[group1]="PC_ALT_LEVEL2" }; +}; + +// 86 keys with kana map +partial alphanumeric_keys +xkb_symbols "kana86" { + + include "jp(kana)" + include "jp(OADG109A)" + + name[Group1]= "Japanese (Kana 86)"; + + // For compatibility with other keyboards connected at the same time: + key {[ Super_R ]}; + key {[ Control_R ]}; + + include "keypad(numoperdecsep)" + include "altwin(menu)" +}; + +partial alphanumeric_keys +xkb_symbols "kana" { + + name[Group1]= "Japanese (Kana)"; + + key {[ Zenkaku_Hankaku, Kanji ], type[group1]="PC_ALT_LEVEL2" }; + + key {[ kana_NU ]}; + key {[ kana_FU ]}; + key {[ kana_A, kana_a ]}; + key {[ kana_U, kana_u ]}; + key {[ kana_E, kana_e ]}; + key {[ kana_O, kana_o ]}; + key {[ kana_YA, kana_ya ]}; + key {[ kana_YU, kana_yu ]}; + key {[ kana_YO, kana_yo ]}; + key {[ kana_WA, kana_WO ]}; + key {[ kana_HO ]}; + key {[ kana_HE ]}; + key {[ prolongedsound ]}; + + key {[ kana_TA ]}; + key {[ kana_TE ]}; + key {[ kana_I, kana_i ]}; + key {[ kana_SU ]}; + key {[ kana_KA ]}; + key {[ kana_N ]}; + key {[ kana_NA ]}; + key {[ kana_NI ]}; + key {[ kana_RA ]}; + key {[ kana_SE ]}; + key {[ voicedsound ]}; + key {[ semivoicedsound, kana_openingbracket ]}; + + key {[ Eisu_toggle, Caps_Lock ]}; + + key {[ kana_CHI ]}; + key {[ kana_TO ]}; + key {[ kana_SHI ]}; + key {[ kana_HA ]}; + key {[ kana_KI ]}; + key {[ kana_KU ]}; + key {[ kana_MA ]}; + key {[ kana_NO ]}; + key {[ kana_RI ]}; + key {[ kana_RE ]}; + key {[ kana_KE ]}; + key {[ kana_MU, kana_closingbracket ]}; + + key {[ kana_TSU, kana_tsu ]}; + key {[ kana_SA ]}; + key {[ kana_SO ]}; + key {[ kana_HI ]}; + key {[ kana_KO ]}; + key {[ kana_MI ]}; + key {[ kana_MO ]}; + key {[ kana_NE, kana_comma ]}; + key {[ kana_RU, kana_fullstop ]}; + key {[ kana_ME, kana_conjunctive ]}; + key {[ kana_RO ]}; + + key {[ Muhenkan ]}; + key {[ Henkan, Mode_switch ], type[group1]="PC_ALT_LEVEL2" }; + key {[ Hiragana_Katakana, Romaji ], type[group1]="PC_ALT_LEVEL2" }; + + key {[ Print, Execute ], type[group1]="PC_ALT_LEVEL2" }; +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + include "jp(kana)" + + name[Group1]= "Japanese (Macintosh)"; + + replace key {[ Caps_Lock ]}; +}; + +partial alphanumeric_keys +xkb_symbols "dvorak" { + + include "jp(OADG109A)" + + name[Group1]= "Japanese (Dvorak)"; + + key {[ at, grave ]}; + + key {[ colon, asterisk ]}; + key {[ comma, less ]}; + key {[ period, greater ]}; + key {[ p, P ]}; + key {[ y, Y ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ c, C ]}; + key {[ r, R ]}; + key {[ l, L ]}; + key {[ slash, question ]}; + + key {[ o, O ]}; + key {[ e, E ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ d, D ]}; + key {[ h, H ]}; + key {[ t, T ]}; + key {[ n, N ]}; + key {[ s, S ]}; + key {[ minus, equal ]}; + + key {[ semicolon, plus ]}; + key {[ q, Q ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ x, X ]}; + key {[ b, B ]}; + key {[ w, W ]}; + key {[ v, V ]}; + key {[ z, Z ]}; +}; + + +// Kludge for overriding the XF86AudioMedia symbol for non-evdev machines. +partial alphanumeric_keys +xkb_symbols "henkan" { + key {[ Henkan, Mode_switch ], type[group1]="PC_ALT_LEVEL2" }; +}; + +// Option for a Nicola-F-style Backspace key. +partial alphanumeric_keys +xkb_symbols "nicola_f_bs" { + key {[ 0, underscore ]}; + + key {[ colon, asterisk ]}; + + key {[ BackSpace, BackSpace ]}; + key {[ Escape ]}; + key {[ bracketright, braceright ]}; + + key {[ at, grave ]}; +}; + +partial alphanumeric_keys +xkb_symbols "hztg_escape" { + replace key {[ Escape ]}; +}; + + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6_suncompat" { + include "sun_vndr/jp(sun_type6_suncompat)" +}; + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/jp(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "sun_type7_suncompat" { + include "sun_vndr/jp(sun_type7_suncompat)" +}; + +partial alphanumeric_keys + xkb_symbols "suncompat" { + include "sun_vndr/jp(suncompat)" +}; + +partial alphanumeric_keys + xkb_symbols "sun_type7" { + include "sun_vndr/jp(sun_type7)" +}; diff --git a/nixos/xkb/symbols/ke b/nixos/xkb/symbols/ke new file mode 100644 index 00000000..f402572e --- /dev/null +++ b/nixos/xkb/symbols/ke @@ -0,0 +1,63 @@ +// Keyboard layouts for Kenya. + +default partial alphanumeric_keys +xkb_symbols "swa" { + + include "us" + + name[Group1]= "Swahili (Kenya)"; + + key {[ grave, asciitilde, U0300, U0303 ]}; //COMBINING GRAVE ACCENT, COMBINING TILDE + key {[ 6, asciicircum, U0302 ]}; //COMBINING CIRCUMFLEX ACCENT + key {[ 8, asterisk, U0307, U0323 ]}; //COMBINING DOT ABOVE, COMBINING DOT BELOW + key {[ 9, parenleft, U0306 ]}; //COMBINING BREVE + key {[ 0, parenright, U030c ]}; //COMBINING CARON + key {[ minus, underscore, U0304, U0331 ]}; //COMBINING MACRON,COMBINING MACRON BELOW + + key {[ semicolon, colon, U0324, U0324 ]}; //COMBINING DIAERESIS BELOW + key {[ apostrophe, quotedbl, U0301, U0308 ]}; //COMBINING ACUTE ACCENT, COMBINING DIAERESIS + + include "level3(ralt_switch)" +}; + + +// Kikuyu (Gĩkũyũ) keyboard +// Based on Kasahorow keyboard layout +// https://code.google.com/archive/p/africakeyboards/ +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ~ ¸ │ ! ¡ │ @ ⅛ │ # £ │ $ $ │ % ⅜ │ ^ ⅝ │ & ⅞ │ * ™ │ ( ± │ ) ° │ _ ¿ │ + ˛ ┃Backspace┃ +// │ ` │ 1 ¹ │ 2 @ │ 3 ³ │ 4 ¼ │ 5 ½ │ 6 ¬ │ 7 { │ 8 [ │ 9 ] │ 0 } │ - \ │ = ¸ ┃ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ Ĩ Q │ W Ł │ E ¢ │ R ® │ T Ŧ │ Y ¥ │ U ↑ │ I ı │ O Ø │ P Þ │ { ° │ } ¯ ┃ Enter ┃ +// ┃Tab ┃ ĩ q │ w ł │ e € │ r ¶ │ t ŧ │ y ← │ u ↓ │ i → │ o ø │ p þ │ [ ¨ │ ] ~ ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ A Æ │ S § │ D Ð │ F ª │ G Ŋ │ H Ħ │ J X │ K & │ L Ŀ │ : ˝ │ " ˇ │ | ˘ ┃ ┃ +// ┃CAPS ┃ a æ │ s ß │ d ð │ f đ │ g ŋ │ h ħ │ j x │ k ĸ │ l ŀ │ ; ´ │ ' ^ │ \ ` ┃ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ ┃ > ¦ │ Z < │ Ũ > │ C © │ V ‚ │ B ‘ │ N ’ │ M º │ < × │ > ÷ │ ? ˙ ┃ ┃ +// ┃Shift ⇧┃ < | │ z « │ ũ » │ c ¢ │ v „ │ b “ │ n ” │ m µ │ , • │ . · │ / ̣ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ Space ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial alphanumeric_keys +xkb_symbols "kik" { + + include "latin(basic)" + + name[Group1]= "Kikuyu"; + + key {[ 2, at, at ]}; + key {[ 6, asciicircum, notsign ]}; + + key {[ itilde, Itilde, q, Q ]}; + key {[ e, E, EuroSign, cent ]}; + + key {[ j, J, x, X ]}; + + key {[ utilde, Utilde ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/keypad b/nixos/xkb/symbols/keypad new file mode 100644 index 00000000..c35d8d16 --- /dev/null +++ b/nixos/xkb/symbols/keypad @@ -0,0 +1,629 @@ +default hidden partial keypad_keys +xkb_symbols "x11" { + + include "keypad(operators)" + + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + + key { [ KP_Left, KP_4 ] }; + key { [ KP_Begin, KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Enter ] }; + key { [ KP_Equal ] }; + + key { [ KP_Insert, KP_0 ] }; + key { [ KP_Delete, KP_Decimal ] }; + key { [ KP_Decimal, KP_Decimal ] }; +}; + +hidden partial keypad_keys +xkb_symbols "overlay" { + include "keypad(overlay1)" +}; + +hidden partial keypad_keys +xkb_symbols "overlay1" { + + key { [ KP_Home ], overlay1= }; + key { [ KP_Up ], overlay1= }; + key { [ KP_Prior ], overlay1= }; + + key { [ KP_Left ], overlay1= }; + key { [ KP_Begin ], overlay1= }; + key { [ KP_Right ], overlay1= }; + + key { [ KP_End ], overlay1= }; + key { [ KP_Down ], overlay1= }; + key { [ KP_Next ], overlay1= }; + + key { [ KP_Insert ], overlay1= }; + key { [ KP_Delete ], overlay1= }; + + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; +}; + +hidden partial keypad_keys +xkb_symbols "overlay2" { + + key { [ KP_Home ], overlay2= }; + key { [ KP_Up ], overlay2= }; + key { [ KP_Prior ], overlay2= }; + + key { [ KP_Left ], overlay2= }; + key { [ KP_Begin ], overlay2= }; + key { [ KP_Right ], overlay2= }; + + key { [ KP_End ], overlay2= }; + key { [ KP_Down ], overlay2= }; + key { [ KP_Next ], overlay2= }; + + key { [ KP_Insert ], overlay2= }; + key { [ KP_Delete ], overlay2= }; + + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; +}; + +hidden partial keypad_keys +xkb_symbols "operators" { + // Puts some commands to control the X server on + // the fifth level of the keypad's operator keys. + key { + type="CTRL+ALT", // Ungrab cancels server/keyboard/pointer grabs + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ] + }; + key { + type="CTRL+ALT", // ClsGrb kills whichever client has a grab in effect + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ] + }; + key { + type="CTRL+ALT", // -VMode switches to the previous video mode + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ] + }; + key { + type="CTRL+ALT", // +VMode switches to the next video mode + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode ] + }; +}; + +// Legacy PC keypad definition +// Copyright © 2006-2007 Nicolas Mailhot +keypad_keys +xkb_symbols "legacy" { + + include "keypad(core)" + include "keypad(legacymath)" + include "keypad(legacynumber)" + include "kpdl(dot)" +}; + + +// Legacy Wang 725-3771-ae and 725-3771-uk keypad definition +// Copyright © 2006-2007 Nicolas Mailhot +keypad_keys +xkb_symbols "legacy_wang" { + + include "keypad(core)" + include "keypad(legacymath)" + include "keypad(legacynumber_wang)" + include "kpdl(dot)" +}; + + +// Complete new keypad definition +// Copyright © 2006-2007 Nicolas Mailhot +keypad_keys +xkb_symbols "oss" { + + include "keypad(core)" + include "keypad(ossmath)" + include "keypad(ossnumber)" + include "kpdl(dotoss)" +}; + + +// Latin9 restriction of new keypad definition +// Copyright © 2006-2007 Nicolas Mailhot +keypad_keys +xkb_symbols "oss_latin9" { + + include "keypad(core)" + include "keypad(ossmath_latin9)" + include "keypad(legacynumber)" + include "kpdl(dotoss_latin9)" +}; + + +// Wang 725-3771-ae and 725-3771-uk keypad variant of oss keypad +// Copyright © 2006-2007 Nicolas Mailhot +keypad_keys +xkb_symbols "oss_wang" { + + include "keypad(core)" + include "keypad(ossmath)" + include "keypad(ossnumber_wang)" + include "kpdl(dotoss)" +}; + + +// Forward-looking keypad definition +// Won't work with applications that make ASCII assumptions +// Copyright © 2007 Nicolas Mailhot +keypad_keys +xkb_symbols "future" { + + include "keypad(core)" + include "keypad(futuremath)" + include "keypad(ossnumber)" + include "kpdl(commaoss)" +}; + + +// Forward-looking keypad definition +// Won't work with applications that make ASCII assumptions +// Copyright © 2007 Nicolas Mailhot +keypad_keys +xkb_symbols "future_wang" { + + include "keypad(core)" + include "keypad(futuremath)" + include "keypad(ossnumber_wang)" + include "kpdl(commaoss)" +}; + + +// Keypad keys nobody changes +// Copyright © 2006 Nicolas Mailhot +partial keypad_keys +xkb_symbols "core" { + + modifier_map Mod2 { Num_Lock }; + + key { [ Num_Lock ] }; + key { [ KP_Enter ] }; + key { [ KP_Equal ] }; +}; + + +// Legacy keypad math area +// Copyright © 2006 Nicolas Mailhot +// +// ┏━━━━━┱─────┬─────┬─────┐ +// ┃Num ┃ ₁ │ ₂ │ ₃ │ ₁ +// ┃Lock⇭┃ / │ * │ - │ ₂ +// ┡━━━━━╃─────┼─────┼─────┤ ₃ +// │ ₄ │ ₄ +// │ │ +// ┤ │ 1 None +// │ │ 2 Ctrl+Alt +// │ + │ +// ╆━━━━━┪ +partial keypad_keys +xkb_symbols "legacymath" { + + key.type[Group1]="CTRL+ALT" ; + + key { [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ] }; // / + key { [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ] }; // * + key { [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ] }; // - + + key { [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode ] }; // + +}; + + +// Keypad math area with non-CS operators +// Copyright © 2006 Nicolas Mailhot +// +// ┏━━━━━┱─────┬─────┬─────┐ +// ┃Num ┃ ∕ ₁ │ . ₂ │ − ₃ │ ₁ +// ┃Lock⇭┃ / ÷ │ * × │ - − │ ₂ +// ┡━━━━━╃─────┼─────┼─────┤ ₃ +// │ + ₄ │ ₄ +// │ │ +// ┤ │ 1 None +// │ │ 2 Level3 ⇮ +// │ + + │ 3 Shift+Level3 ⇧⇮ +// ╆━━━━━┪ 4 Ctrl+Alt +partial keypad_keys +xkb_symbols "ossmath" { + + key.type[Group1]="CTRL+ALT" ; + + key { [ KP_Divide, 0x1002215, 0x10000F7, VoidSymbol, XF86_Ungrab ] }; // / ∕ ÷ + key { [ KP_Multiply, 0x10022C5, 0x10000D7, VoidSymbol, XF86_ClearGrab ] }; // * ⋅ × + key { [ KP_Subtract, 0x1002212, 0x1002212, VoidSymbol, XF86_Prev_VMode ] }; // - − − + + key { [ KP_Add, 0x100002B, 0x100002B, VoidSymbol, XF86_Next_VMode ] }; // + + + +}; + + +// Keypad math area with non-CS operators in first levels +// As demanded by users not interested in legacy pre-unicode junk +// Copyright © 2007 Nicolas Mailhot +// +// ┏━━━━━┱─────┬─────┬─────┐ +// ┃Num ┃ / ₁ │ * ₂ │ - ₃ │ ₁ +// ┃Lock⇭┃ ∕ ÷ │ . × │ − − │ ₂ +// ┡━━━━━╃─────┼─────┼─────┤ ₃ +// │ + ₄ │ ₄ +// │ │ +// ┤ │ 1 None +// │ │ 2 Level3 ⇮ +// │ + + │ 3 Shift+Level3 ⇧⇮ +// ╆━━━━━┪ 4 Ctrl+Alt +partial keypad_keys +xkb_symbols "futuremath" { + + key.type[Group1]="FOUR_LEVEL_X" ; + + key { [ 0x1002215, KP_Divide, 0x10000F7, XF86_Ungrab ] }; // ∕ / ÷ + key { [ 0x10022C5, KP_Multiply, 0x10000D7, XF86_ClearGrab ] }; // ⋅ * × + key { [ 0x1002212, KP_Subtract, 0x1002212, XF86_Prev_VMode ] }; // − - − + + key { [ 0x100002B, KP_Add, 0x100002B, XF86_Next_VMode ] }; // + + + +}; + + +// Keypad math area with non-CS operators, restricted to latin9 +// Copyright © 2006 Nicolas Mailhot +// +// ┏━━━━━┱─────┬─────┬─────┐ +// ┃Num ┃ / ₁ │ · ₂ │ - ₃ │ ₁ +// ┃Lock⇭┃ / ÷ │ * × │ - - │ ₂ +// ┡━━━━━╃─────┼─────┼─────┤ ₃ +// │ + ₄ │ ₄ +// │ │ +// ┤ │ 1 None +// │ │ 2 Level3 ⇮ +// │ + + │ 3 Shift+Level3 ⇧⇮ +// ╆━━━━━┪ 4 Ctrl+Alt +partial keypad_keys +xkb_symbols "ossmath_latin9" { + + key.type[Group1]="FOUR_LEVEL_X"; + + key { [ KP_Divide, slash, division, XF86_Ungrab ] }; // / / ÷ + key { [ KP_Multiply, periodcentered, multiply, XF86_ClearGrab ] }; // * · × + key { [ KP_Subtract, minus, minus, XF86_Prev_VMode ] }; // - - - + + key { [ KP_Add, plus, plus, XF86_Next_VMode ] }; // + + + +}; + + +// Legacy keypad number area +// Copyright © 2006 Nicolas Mailhot +// +// ┏━━━━━┱ +// ┃Num ┃ ⇱ Home +// ┃Lock⇭┃ ⇲ End +// ┡━━━━━╃─────┼─────┼ ⇞ Page up +// │ 7 │ 8 │ 9 │ ⇟ Page down +// │ ⇱ │ ⇧ │ ⇞ │ ⎀ Insert +// ├─────┼─────┼─────┤ ␥ Delete +// │ 4 │ 5 │ 6 │ ⇦⇧⇨⇩ Directions +// │ ⇦ │ │ ⇨ │ +// ├─────┼─────┼─────╆ +// │ 1 │ 2 │ 3 ┃ +// │ ⇲ │ ⇩ │ ⇟ ┃ 1 None +// ├─────┴─────┼─────┨ 2 Num Lock ⇭ +// │ 0 │ +// │ ⎀ │ +// └───────────┴ +partial keypad_keys +xkb_symbols "legacynumber" { + + key.type[Group1]="KEYPAD" ; + + key { [ KP_Home, KP_7 ] }; // 7 + key { [ KP_Up, KP_8 ] }; // 8 + key { [ KP_Prior, KP_9 ] }; // 9 + + key { [ KP_Left, KP_4 ] }; // 4 + key { [ KP_Begin, KP_5 ] }; // 5 + key { [ KP_Right, KP_6 ] }; // 6 + + key { [ KP_End, KP_1 ] }; // 1 + key { [ KP_Down, KP_2 ] }; // 2 + key { [ KP_Next, KP_3 ] }; // 3 + + key { [ KP_Insert, KP_0 ] }; // 0 +}; + + +// Legacy Wang 725-3771-ae and 725-3771-uk keypad number area +// Copyright © 2007 Nicolas Mailhot +// This is actually a three-level keypad, declared as four-level +// to avoid defining a new type +// +// ┏━━━━━┱ +// ┃Num ┃ ⇱ Home +// ┃Lock⇭┃ ⇲ End +// ┡━━━━━╃─────┼─────┼ ⇞ Page up +// │ 7 │ 8 │ 9 │ ⇟ Page down +// │ ⇱ < │ ⇧ > │ ⇞ ^ │ ⎀ Insert +// ├─────┼─────┼─────┤ ␥ Delete +// │ 4 │ 5 │ 6 │ ⇦⇧⇨⇩ Directions +// │ ⇦ [ │ ] │ ⇨ $ │ +// ├─────┼─────┼─────╆ +// │ 1 │ 2 │ 3 ┃ +// │ ⇲ & │ ⇩ @ │ ⇟ # ┃ 1 None +// ├─────┴─────┼─────┨ 2 Num Lock ⇭ +// │ 0 │ 3 Level3 ⇮ +// │ ⎀ │ +// └───────────┴ +partial keypad_keys +xkb_symbols "legacynumber_wang" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Home, KP_7, less ] }; // 7 < + key { [ KP_Up, KP_8, greater ] }; // 8 > + key { [ KP_Prior, KP_9, asciicircum ] }; // 9 ^ + + key { [ KP_Left, KP_4, bracketleft ] }; // 4 [ + key { [ KP_Begin, KP_5, bracketright ] }; // 5 ] + key { [ KP_Right, KP_6, dollar ] }; // 6 $ + + key { [ KP_End, KP_1, ampersand ] }; // 1 & + key { [ KP_Down, KP_2, at ] }; // 2 @ + key { [ KP_Next, KP_3, numbersign ] }; // 3 # + + key { [ KP_Insert, KP_0, apostrophe ] }; // 0 ' +}; + + +// Keypad number area with arrow symbols +// Copyright © 2006 Nicolas Mailhot +// +// ┏━━━━━┱ +// ┃Num ┃ ⇱ Home +// ┃Lock⇭┃ ⇲ End +// ┡━━━━━╃─────┼─────┼ ⇞ Page up +// │ 7 ⇖ │ 8 ⇑ │ 9 ⇗ │ ⇟ Page down +// │ ⇱ ↖ │ ⇧ ↑ │ ⇞ ↗ │ ⎀ Insert +// ├─────┼─────┼─────┤ ␥ Delete +// │ 4 ⇐ │ 5 ⇔ │ 6 ⇒ │ ⇦⇧⇨⇩ Directions +// │ ⇦ ← │ ↔ │ ⇨ → │ ⍽ narrow no-break space +// ├─────┼─────┼─────╆ +// │ 1 ⇙ │ 2 ⇓ │ 3 ⇘ ┃ +// │ ⇲ ↙ │ ⇩ ↓ │ ⇟ ↘ ┃ 1 None +// ├─────┴─────┼─────┨ 2 Num Lock ⇭ +// │ 0 ⇕ │ 3 Level3 ⇮ +// │ ⎀ ↕ │ 4 Shift+Level3 ⇧⇮ +// └───────────┴ +partial keypad_keys +xkb_symbols "ossnumber" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Home, KP_7, 0x1002196, 0x10021D6 ] }; // 7 ↖ ⇖ + key { [ KP_Up, KP_8, 0x1002191, 0x10021D1 ] }; // 8 ↑ ⇑ + key { [ KP_Prior, KP_9, 0x1002197, 0x10021D7 ] }; // 9 ↗ ⇗ + + key { [ KP_Left, KP_4, 0x1002190, 0x10021D0 ] }; // 4 ← ⇐ + key { [ KP_Begin, KP_5, 0x1002194, 0x10021D4 ] }; // 5 ↔ ⇔ + key { [ KP_Right, KP_6, 0x1002192, 0x10021D2 ] }; // 6 → ⇒ + + key { [ KP_End, KP_1, 0x1002199, 0x10021D9 ] }; // 1 ↙ ⇙ + key { [ KP_Down, KP_2, 0x1002193, 0x10021D3 ] }; // 2 ↓ ⇓ + key { [ KP_Next, KP_3, 0x1002198, 0x10021D8 ] }; // 3 ↘ ⇘ + + key { [ KP_Insert, KP_0, 0x1002195, 0x10021D5 ] }; // 0 ↕ ⇕ +}; + + +// Wang 725-3771-ae and 725-3771-uk keypad number area with additional arrow symbols +// Copyright © 2007 Nicolas Mailhot +// +// ┏━━━━━┱ +// ┃Num ┃ ⇱ Home +// ┃Lock⇭┃ ⇲ End +// ┡━━━━━╃─────┼─────┼ ⇞ Page up +// │ 7 ↖ │ 8 ↑ │ 9 ↗ │ ⇟ Page down +// │ ⇱ < │ ⇧ > │ ⇞ ^ │ ⎀ Insert +// ├─────┼─────┼─────┤ ␥ Delete +// │ 4 ← │ 5 ↔ │ 6 → │ ⇦⇧⇨⇩ Directions +// │ ⇦ [ │ ] │ ⇨ $ │ ⍽ narrow no-break space +// ├─────┼─────┼─────╆ +// │ 1 ↙ │ 2 ↓ │ 3 ↘ ┃ +// │ ⇲ & │ ⇩ @ │ ⇟ # ┃ 1 None +// ├─────┴─────┼─────┨ 2 Num Lock ⇭ +// │ 0 ↕ │ 3 Level3 ⇮ +// │ ⎀ ' │ 4 Shift+Level3 ⇧⇮ +// └───────────┴ +partial keypad_keys +xkb_symbols "ossnumber_wang" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Home, KP_7, less, 0x1002196 ] }; // 7 < ↖ + key { [ KP_Up, KP_8, greater, 0x1002191 ] }; // 8 > ↑ + key { [ KP_Prior, KP_9, asciicircum, 0x1002197 ] }; // 9 ^ ↗ + + key { [ KP_Left, KP_4, bracketleft, 0x1002190 ] }; // 4 [ ← + key { [ KP_Begin, KP_5, bracketright, 0x1002194 ] }; // 5 ] ↔ + key { [ KP_Right, KP_6, dollar, 0x1002192 ] }; // 6 $ → + + key { [ KP_End, KP_1, ampersand, 0x1002199 ] }; // 1 & ↙ + key { [ KP_Down, KP_2, at, 0x1002193 ] }; // 2 @ ↓ + key { [ KP_Next, KP_3, numbersign, 0x1002198 ] }; // 3 # ↘ + + key { [ KP_Insert, KP_0, apostrophe, 0x1002195 ] }; // 0 ' ↕ +}; + +// Standard base "pc" layout only contains cursor keys, and then gets +// augmented with the digits later. If you define your own layout for +// the numpad you can inherit the cursors, but you'll have to define +// the digits yourself. This module can be included in the rules to +// define math operators; these are the variants used in computer +// languages that are based on ASCII. NoSymbol does not mean that +// nothing is bound to the key but that no assignment is done here. +// srvr_ctrl(stdkeypad) and keypad(x11) declare the operator keys to +// be of type CTRL+ALT in order to assign server control events to +// them, but it uses the second level which is overwritten if we have +// more than one definition (shift state) for the key. Instead, here +// the commands are put at the 4th lever. +partial keypad_keys +xkb_symbols "ops" { + key { [ NoSymbol, slash, NoSymbol, XF86_Ungrab ] }; + key { [ NoSymbol, asterisk, NoSymbol, XF86_ClearGrab ] }; + key { [ NoSymbol, minus, NoSymbol, XF86_Prev_VMode ] }; + key { [ NoSymbol, plus, NoSymbol, XF86_Next_VMode ] }; + key { [ NoSymbol, equal ] }; +}; + +// Hexadecimal Numpad, by Roland Kaufmann +// License: BSD (also covers variant with ATM digit order) +// Third-level gives the letters used in hexadecimal numbers, or +// columns in small spreadsheets. As a bonus, having 'e' available at +// the center of the keyboard makes it easy to enter floating point +// numbers in scientific notation. +// Equal is added to start formulas (most numpads on PCs don't have +// their own equal key), comma as a list separator (as most +// programming languages wants period as a decimal separator) and +// colon to enter times and ranges. Someone also may want to represent +// multiplication and division in prose using x and colon. +// Two first levels are specified as NoSymbol to not override any +// previous specification. Combine this with another keypad specifier, +// e.g. "legacy". +partial keypad_keys +xkb_symbols "hex" { + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + include "keypad(ops)" + + // None NumLock AltGr + // symbol row + key { [ NoSymbol, NoSymbol, parenleft ] }; + key { [ NoSymbol, NoSymbol, parenright ] }; + key { [ NoSymbol, NoSymbol, dollar ] }; + + // upper row + key { [ NoSymbol, NoSymbol, a ] }; + key { [ NoSymbol, NoSymbol, b ] }; + key { [ NoSymbol, NoSymbol, c ] }; + + // home row + key { [ NoSymbol, NoSymbol, d ] }; + key { [ NoSymbol, NoSymbol, e ] }; + key { [ NoSymbol, NoSymbol, f ] }; + key { [ NoSymbol, NoSymbol, comma ] }; + + // lower row + key { [ NoSymbol, NoSymbol, equal ] }; + key { [ NoSymbol, NoSymbol, x ] }; + key { [ NoSymbol, NoSymbol, colon ] }; + + // decimal row + key { [ NoSymbol, NoSymbol, backslash ] }; +}; + +// Main numbers follows the traditions from ATMs and phones with +// numbers increasing downwards to the right. (It is easier to +// change the keyboard layout than to reprogram your local ATM; +// also cell-phones are becoming more common while calculators are +// becoming more rare). +// First level is left unspecified, so it may be combined with another +// layout, e.g. "legacy". +partial keypad_keys +xkb_symbols "atm" { + include "keypad(ops)" + include "keypad(hex)" + + // upper row + key { [ NoSymbol, KP_1 ] }; + key { [ NoSymbol, KP_2 ] }; + key { [ NoSymbol, KP_3 ] }; + + // lower row + key { [ NoSymbol, KP_7 ] }; + key { [ NoSymbol, KP_8 ] }; + key { [ NoSymbol, KP_9 ] }; +}; + + +partial modifier_keys +xkb_symbols "pointerkeys" { + key { [ Num_Lock, Pointer_EnableKeys ] }; +}; + + +// Only numbers, operators and decimal separator, +// as seen on keypad overlay on Japanese keyboard. +// ┌───┬───┬───┬───┐ +// │ 7 │ 8 │ 9 │ * │ +// ├───┼───┼───┼───┤ +// │ 4 │ 5 │ 6 │ - │ +// ├───┼───┼───┼───┤ +// │ 1 │ 2 │ 3 │ + │ +// ├───┼───┼───┼───┤ +// │ 0 │ │ · │ / │ +// └───┴───┴───┴───┘ +partial keypad_keys +xkb_symbols "numoperdecsep" { + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; +// ClsGrb kills whichever client has a grab in effect + key { + type="CTRL+ALT", + symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ] + }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; +// -VMode switches to the previous video mode + key { + type="CTRL+ALT", + symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ] + }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; +// +VMode switches to the next video mode + key { + type="CTRL+ALT", + symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode ] + }; + + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; +// Ungrab cancels server/keyboard/pointer grabs + key { + type="CTRL+ALT", + symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ] + }; +}; diff --git a/nixos/xkb/symbols/kg b/nixos/xkb/symbols/kg new file mode 100644 index 00000000..a20e122d --- /dev/null +++ b/nixos/xkb/symbols/kg @@ -0,0 +1,135 @@ +// Keyboard layouts for Kyrgyzstan. + +// Standard : Phonetic +// _____________ _____________ +// ё1234567890өң ё1234567890яю +// Ё!"№;%:?*()ӨҢ Ё!"№;%:?-()ЯЮ +// +// йцукенгшщзхъү өүертыуиопчшъ +// фывапролджэ асдфгңйклэь +// ячсмитьбю.(,) зхжвбнмцщ.(,) + +// Authors: +// Timur Jamakeev +// Ilyas Bakirov +// Yury Fedorov +// Emil Asanov +// Ulan Melisbek + + +// Kyrgyz standard layout. +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Kyrgyz"; + + key {[ Cyrillic_io, Cyrillic_IO ]}; + key {[ 1, exclam ]}; + key {[ 2, quotedbl ]}; + key {[ 3, numerosign ]}; + key {[ 4, semicolon ]}; + key {[ 5, percent ]}; + key {[ 6, colon ]}; + key {[ 7, question ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ Cyrillic_o_bar, Cyrillic_O_bar ]}; + key {[Cyrillic_en_descender,Cyrillic_EN_descender]}; + + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[Cyrillic_hardsign,Cyrillic_HARDSIGN]}; + + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_e, Cyrillic_E ]}; + key {[Cyrillic_u_straight,Cyrillic_U_straight]}; + + key {[ slash, bar ]}; + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[Cyrillic_softsign,Cyrillic_SOFTSIGN]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + key {[ period, comma ]}; +}; + +// Kyrgyz phonetic layout. +partial alphanumeric_keys +xkb_symbols "phonetic" { + + name[Group1]="Kyrgyz (phonetic)"; + + key {[ Cyrillic_io, Cyrillic_IO ]}; + key {[ 1, exclam ]}; + key {[ 2, quotedbl ]}; + key {[ 3, numerosign ]}; + key {[ 4, semicolon ]}; + key {[ 5, percent ]}; + key {[ 6, colon ]}; + key {[ 7, question ]}; + key {[ 8, minus ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + + key {[ Cyrillic_o_bar, Cyrillic_O_bar ]}; + key {[Cyrillic_u_straight, Cyrillic_U_straight]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[Cyrillic_en_descender,Cyrillic_EN_descender]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_e, Cyrillic_E ]}; + key {[Cyrillic_softsign, Cyrillic_SOFTSIGN]}; + key {[Cyrillic_hardsign, Cyrillic_HARDSIGN]}; + + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ period, comma ]}; +}; diff --git a/nixos/xkb/symbols/kh b/nixos/xkb/symbols/kh new file mode 100644 index 00000000..97f42458 --- /dev/null +++ b/nixos/xkb/symbols/kh @@ -0,0 +1,89 @@ +// Keyboard layouts for Cambodia. + +// Khmer Unicode standard keyboard layout as designed by the National +// Information Communications Technology Development Authority (NiDa) +// of Cambodia -- http://www.nida.gov.kh/. +// +// Origial author: Jens Herden (jens at khmeros.info), 2005. +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Khmer (Cambodia)"; + +// Four levels: normal Shift right Alt Shift+right Alt + + key {[guillemotleft,guillemotright, U200d, none ]}; + key {[ U17e1, exclam, U200c, U17f1 ]}; + key {[ U17e2, U17d7, at, U17f2 ]}; + key {[ U17e3, quotedbl, U17d1, U17f3 ]}; + key {[ U17e4, U17db, dollar, U17f4 ]}; + key {[ U17e5, percent, EuroSign, U17f5 ]}; + key {[ U17e6, U17cd, U17d9, U17f6 ]}; + key {[ U17e7, U17d0, U17da, U17f7 ]}; + key {[ U17e8, U17cf, asterisk, U17f8 ]}; + key {[ U17e9, parenleft, braceleft, U17f9 ]}; + key {[ U17e0, parenright, braceright, U17f0 ]}; + key {[ U17a5, U17cc, x, none ]}; + key {[ U17b2, equal, U17ce, none ]}; + + key {[ U1786, U1788, U17dc, U19e0 ]}; + key {[ U17b9, U17ba, U17dd, U19e1 ]}; + key {[ U17c1, U17c2, U17af, U19e2 ]}; + key {[ U179a, U17ac, U17ab, U19e3 ]}; + key {[ U178f, U1791, U17a8, U19e4 ]}; + key {[ U1799, U17bd, none, U19e5 ]}; + key {[ U17bb, U17bc, none, U19e6 ]}; + key {[ U17b7, U17b8, U17a6, U19e7 ]}; + key {[ U17c4, U17c5, U17b1, U19e8 ]}; + key {[ U1795, U1797, U17b0, U19e9 ]}; + key {[ U17c0, U17bf, U17a9, U19ea ]}; + key {[ U17aa, U17a7, U17b3, U19eb ]}; + + key {[ U17b6, U17ff, none, U19ec ]}; + key {[ U179f, U17c3, none, U19ed ]}; + key {[ U178a, U178c, none, U19ee ]}; + key {[ U1790, U1792, none, U19ef ]}; + key {[ U1784, U17a2, none, U19f0 ]}; + key {[ U17a0, U17c7, none, U19f1 ]}; + key {[ U17d2, U1789, none, U19f2 ]}; + key {[ U1780, U1782, U179d, U19f3 ]}; + key {[ U179b, U17a1, none, U19f4 ]}; + key {[ U17be, U17fe, U17d6, U19f5 ]}; + key {[ U17cb, U17c9, U17c8, U19f6 ]}; + key {[ U17ae, U17ad, backslash, none ]}; + + key {[ U178b, U178d, none, U19f7 ]}; + key {[ U1781, U1783, none, U19f8 ]}; + key {[ U1785, U1787, none, U19f9 ]}; + key {[ U179c, U17fd, none, U19fa ]}; + key {[ U1794, U1796, U179e, U19fb ]}; + key {[ U1793, U178e, none, U19fc ]}; + key {[ U1798, U17c6, none, U19fd ]}; + key {[ U17fc, U17fb, comma, U19fe ]}; + key {[ U17d4, U17d5, period, U19ff ]}; + key {[ U17ca, question, slash, none ]}; + + key {[ U200b, space, nobreakspace, none ]}; + + // Third and fourth level with right Alt key (AltGr): + include "level3(ralt_switch)" +}; + + +partial alphanumeric_keys +xkb_symbols "olpc" { + + include "kh(basic)" + + // contact: Walter@laptop.org + + key {[ U17e1, U200c, exclam, U17f1 ]}; + key {[ U17e3, U17d1, quotedbl, U17f3 ]}; + key {[ U17e5, EuroSign, percent, U17f5 ]}; + key {[ U17b2, U17ce, equal, none ]}; + + key {[ U17be, U17c8, U17d6, U19f5 ]}; + + // Language key: + include "group(olpc)" +}; diff --git a/nixos/xkb/symbols/kpdl b/nixos/xkb/symbols/kpdl new file mode 100644 index 00000000..968dbd2d --- /dev/null +++ b/nixos/xkb/symbols/kpdl @@ -0,0 +1,102 @@ +// The key is a mess. +// It was probably originally meant to be a decimal separator. +// Except since it was declared by USA people it didn't use the original +// SI separator "," but a "." (since then the USA managed to f-up the SI +// by making "." an accepted alternative, but standards still use "," as +// default) +// As a result users of SI-abiding countries expect either a "." or a "," +// or a "decimal_separator" which may or may not be translated in one of the +// above depending on applications. +// It's not possible to define a default per-country since user expectations +// depend on the conflicting choices of their most-used applications, +// operating system, etc. Therefore it needs to be a configuration setting +// Copyright © 2007 Nicolas Mailhot + + +// Legacy #1 +// This assumes KP_Decimal will be translated in a dot +partial keypad_keys +xkb_symbols "dot" { + + key.type[Group1]="KEYPAD" ; + + key { [ KP_Delete, KP_Decimal ] }; // +}; + + +// Legacy #2 +// This assumes KP_Separator will be translated in a comma +partial keypad_keys +xkb_symbols "comma" { + + key.type[Group1]="KEYPAD" ; + + key { [ KP_Delete, KP_Separator ] }; // +}; + + +// Period , usual keyboard serigraphy in most countries +partial keypad_keys +xkb_symbols "dotoss" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Delete, period, comma, 0x100202F ] }; // . , ⍽ (narrow no-break space) +}; + + +// Period , usual keyboard serigraphy in most countries, latin-9 restriction +partial keypad_keys +xkb_symbols "dotoss_latin9" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Delete, period, comma, nobreakspace ] }; // . , ⍽ (no-break space) +}; + + +// Comma , what most non anglo-saxon people consider the real separator +partial keypad_keys +xkb_symbols "commaoss" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Delete, comma, period, 0x100202F ] }; // , . ⍽ (narrow no-break space) +}; + + +// Momayyez : Bahrain, Iran, Iraq, Kuwait, Oman, Qatar, Saudi Arabia, Syria, UAE +partial keypad_keys +xkb_symbols "momayyezoss" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Delete, 0x100066B, comma, 0x100202F ] }; // ? , ⍽ (narrow no-break space) +}; + + +// Abstracted , pray everything will work out (it usually does not) +partial keypad_keys +xkb_symbols "kposs" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ KP_Delete, KP_Decimal, KP_Separator, 0x100202F ] }; // ? ? ⍽ (narrow no-break space) +}; + +// Spreadsheets may be configured to use the dot as decimal +// punctuation, comma as a thousands separator and then semi-colon as +// the list separator. Of these, dot and semi-colon is most important +// when entering data by the keyboard; the comma can then be inferred +// and added to the presentation afterwards. Using semi-colon as a +// general separator may in fact be preferred to avoid ambiguities +// in data files. Most times a decimal separator is hard-coded, it +// seems to be period, probably since this is the syntax used in +// (most) programming languages. +partial keypad_keys +xkb_symbols "semi" { + + key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; + + key { [ NoSymbol, NoSymbol, semicolon ] }; +}; diff --git a/nixos/xkb/symbols/kr b/nixos/xkb/symbols/kr new file mode 100644 index 00000000..842762a3 --- /dev/null +++ b/nixos/xkb/symbols/kr @@ -0,0 +1,61 @@ +// Keyboard layouts for Korea. + +default alphanumeric_keys +xkb_symbols "kr106" { + include "us" + name[Group1]= "Korean"; + include "kr(hw_keys)" +}; + +alphanumeric_keys +xkb_symbols "kr104" { + include "us" + name[Group1]= "Korean (101/104-key compatible)"; + include "kr(ralt_hangul)" + include "kr(rctrl_hanja)" +}; + +partial function_keys +xkb_symbols "hw_keys" { + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; +}; + +partial function_keys +xkb_symbols "ralt_hangul" { + replace key { + type[Group1] = "ONE_LEVEL", + symbols[Group1]= [ Hangul ] + }; +}; + +partial function_keys +xkb_symbols "rctrl_hangul" { + replace key { + type[Group1] = "ONE_LEVEL", + symbols[Group1]= [ Hangul ] + }; +}; + +partial function_keys +xkb_symbols "ralt_hanja" { + replace key { + type[Group1] = "ONE_LEVEL", + symbols[Group1]= [ Hangul_Hanja ] + }; +}; + +partial function_keys +xkb_symbols "rctrl_hanja" { + replace key { + type[Group1] = "ONE_LEVEL", + symbols[Group1]= [ Hangul_Hanja ] + }; +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/kr(sun_type6)" +}; diff --git a/nixos/xkb/symbols/kz b/nixos/xkb/symbols/kz new file mode 100644 index 00000000..de0d7546 --- /dev/null +++ b/nixos/xkb/symbols/kz @@ -0,0 +1,305 @@ +// Keyboard layouts for Kazachstan. + +// Based on http://www.sci.kz/~sairan/keyboard/kzkbd.html +// Baurzhan Ismagulov + +// TODO: +// 1. AltGr with TLDE and LSGT. +// 2. Dead key for ruskaz and kazrus. +// 3. Ctrl + . +// 4. Alt-Tab. + +// RST KazSSR 903-90 +// levels 3 and 4 are non-standard extensions +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1] = "Kazakh"; + +key.type[group1] = "FOUR_LEVEL"; + + key { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] }; + key { [ quotedbl, exclam ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ backslash, slash ] }; + key { [ numerosign, question ] }; + key { [ less, greater, bar, brokenbar ] }; + +key.type[group1] = "ALPHABETIC"; + + key { [ Cyrillic_schwa, Cyrillic_SCHWA ] }; + key { [ Ukrainian_i, Ukrainian_I ] }; + key { [ Cyrillic_en_descender, Cyrillic_EN_descender ] }; + key { [ Cyrillic_ghe_bar, Cyrillic_GHE_bar ] }; + key { [ Cyrillic_u_straight, Cyrillic_U_straight ] }; + key { [ Cyrillic_u_straight_bar, Cyrillic_U_straight_bar ] }; + key { [ Cyrillic_ka_descender, Cyrillic_KA_descender ] }; + key { [ Cyrillic_o_bar, Cyrillic_O_bar ] }; + key { [ Cyrillic_shha, Cyrillic_SHHA ] }; + + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_e, Cyrillic_E ] }; + key { [ Cyrillic_ya, Cyrillic_YA ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_yu, Cyrillic_YU ] }; +}; + +// Kikkarin KZ1 +partial alphanumeric_keys +xkb_symbols "ruskaz" { + + name[Group1] = "Russian (Kazakhstan, with Kazakh)"; + +key.type[group1] = "FOUR_LEVEL"; + + key { [ 1, exclam ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, numerosign, numbersign ] }; + key { [ 4, semicolon, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, colon, asciicircum ] }; + key { [ 7, question, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ backslash, slash, bar ] }; + key { [ period, comma, slash, question ] }; + key { [ less, greater, bar, brokenbar ] }; + +key.type[group1] = "FOUR_LEVEL_ALPHABETIC"; + + key { [ Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_u_straight_bar, Cyrillic_U_straight_bar ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_u, Cyrillic_U, Cyrillic_u_straight, Cyrillic_U_straight ] }; + key { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender, Cyrillic_KA_descender ] }; + key { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_en, Cyrillic_EN, Cyrillic_en_descender, Cyrillic_EN_descender ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, Cyrillic_ghe_bar, Cyrillic_GHE_bar ] }; + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_a, Cyrillic_A, Cyrillic_schwa, Cyrillic_SCHWA ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_e, Cyrillic_E ] }; + key { [ Cyrillic_ya, Cyrillic_YA ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_yu, Cyrillic_YU ] }; +}; + +// Kikkarin KZ2 +partial alphanumeric_keys +xkb_symbols "kazrus" { + + name[Group1] = "Kazakh (with Russian)"; + +key.type[group1] = "FOUR_LEVEL"; + + key { [ 1, exclam ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, numerosign, numbersign ] }; + key { [ 4, semicolon, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, colon, asciicircum ] }; + key { [ 7, question, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ backslash, slash, bar ] }; + key { [ period, comma, slash, question ] }; + key { [ less, greater, bar, brokenbar ] }; + +key.type[group1] = "FOUR_LEVEL_ALPHABETIC"; + + key { [ Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_en_descender, Cyrillic_EN_descender, Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender, Cyrillic_KA_descender ] }; + key { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_ghe_bar, Cyrillic_GHE_bar, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA ] }; + key { [ Cyrillic_u_straight_bar, Cyrillic_U_straight_bar, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { [ Cyrillic_o_bar, Cyrillic_O_bar, Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ka_descender, Cyrillic_KA_descender, Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_schwa, Cyrillic_SCHWA, Cyrillic_e, Cyrillic_E ] }; + key { [ Cyrillic_ya, Cyrillic_YA ] }; + key { [ Ukrainian_i, Ukrainian_I, Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_u_straight, Cyrillic_U_straight, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_yu, Cyrillic_YU ] }; +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + +// Contact: Walter Bender + +// We moved the Cyrillic IO off of the Tilde Key as an Alt-GR character +// and moved it onto the Backslash key, making Backslash and Bar available +// through the Latin side of the keyboard. + + include "kz(basic)" + + key { [ parenleft, parenright ] }; + key { [ Cyrillic_io, Cyrillic_IO ] }; + + include "group(olpc)" +}; + +partial alphanumeric_keys +xkb_symbols "ext" { + +// Levels 3 and 4 represent main keyboard's numeric part of US layout, +// parens are duplicated for consistency. + + include "kz(basic)" + name[Group1] = "Kazakh (extended)"; + +key.type[group1] = "FOUR_LEVEL_ALPHABETIC"; + + key { [ Cyrillic_io, Cyrillic_IO, grave, asciitilde ] }; + key { [ quotedbl, exclam, 1, exclam ] }; + key { [ Cyrillic_schwa, Cyrillic_SCHWA, 2, at ] }; + key { [ Ukrainian_i, Ukrainian_I, 3, numbersign ] }; + key { [ Cyrillic_en_descender, Cyrillic_EN_descender, 4, dollar ] }; + key { [ Cyrillic_ghe_bar, Cyrillic_GHE_bar, 5, percent ] }; + key { [ comma, semicolon, 6, asciicircum ] }; + key { [ period, colon, 7, ampersand ] }; + key { [ Cyrillic_u_straight, Cyrillic_U_straight, 8, asterisk ] }; + key { [ Cyrillic_u_straight_bar, Cyrillic_U_straight_bar, 9, parenleft ] }; + key { [ Cyrillic_ka_descender, Cyrillic_KA_descender, 0, parenright ] }; + key { [ Cyrillic_o_bar, Cyrillic_O_bar, minus, underscore ] }; + key { [ Cyrillic_shha, Cyrillic_SHHA, equal, plus ] }; + key { [ backslash, slash, bar, brokenbar ] }; + key { [ Cyrillic_ha, Cyrillic_HA, bracketleft, braceleft ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright, braceright ] }; + key { [ Cyrillic_e, Cyrillic_E, apostrophe ] }; + key { [ Cyrillic_be, Cyrillic_BE, less ] }; + key { [ Cyrillic_yu, Cyrillic_YU, greater ] }; + + include "level3(ralt_switch)" +}; + +// Kazakh Latin (based on Kazakh alphabet version of 2018) +// levels 3 and 4 are non-standard extensions +partial alphanumeric_keys +xkb_symbols "latin" { + +// Contact: Galym Kerimbekov + + name[Group1] = "Kazakh (Latin)"; + +key.type[group1] = "FOUR_LEVEL"; + + key { [ parenleft, parenright ] }; + key { [ quotedbl, exclam ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ backslash, slash ] }; + key { [ numerosign, question ] }; + key { [ less, greater, bar, brokenbar ] }; + +key.type[group1] = "ALPHABETIC"; + + key { [ aacute, Aacute ] }; + key { [ iacute, Iacute ] }; + key { [ nacute, Nacute ] }; + key { [ U01F5, U01F4 ] }; // gG with acute + key { [ uacute, Uacute ] }; + key { [ yacute, Yacute ] }; + key { [ oacute, Oacute ] }; + key { [ sacute, Sacute ] }; + key { [ cacute, Cacute ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, M ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; +}; diff --git a/nixos/xkb/symbols/la b/nixos/xkb/symbols/la new file mode 100644 index 00000000..2a22a78c --- /dev/null +++ b/nixos/xkb/symbols/la @@ -0,0 +1,130 @@ +// Keyboard layouts for Laos. + +// This layout is (kind of) widely used in Laos. +// Original author: Anousak Souphavanh +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Lao"; + + key {[ U200d ]}; // ZWJ + key {[ U0ea2, U0ed1 ]}; + key {[ U0ea2, U0ed1 ]}; + key {[ U0e9f, U0ed2 ]}; + key {[ U0ec2, U0ed3 ]}; + key {[ U0e96, U0ed4 ]}; + key {[ U0eb8, U0ecc ]}; + key {[ U0eb9, U0ebc ]}; + key {[ U0e84, U0ed5 ]}; + key {[ U0e95, U0ed6 ]}; + key {[ U0e88, U0ed7 ]}; + key {[ U0e82, U0ed8 ]}; + key {[ U0e8a, U0ed9 ]}; + key {[ U0ecd ]}; + + key {[ U0ebb ]}; + key {[ U0ec4, U0ed0 ]}; + key {[ U0eb3 ]}; + key {[ U0e9e, underscore ]}; + key {[ U0eb0, plus ]}; + key {[ U0eb4 ]}; + key {[ U0eb5 ]}; + key {[ U0ea3, U0eae ]}; + key {[ U0e99 ]}; + key {[ U0e8d, U0ebd ]}; + key {[ U0e9a, minus ]}; + key {[ U0ea5, braceright ]}; + key {[ U0edc, U0edd ]}; + + key {[ U0eb1 ]}; + key {[ U0eab, semicolon ]}; + key {[ U0e81, period ]}; + key {[ U0e94, comma ]}; + key {[ U0ec0, colon ]}; + key {[ U0ec9, U0eca ]}; + key {[ U0ec8, U0ecb ]}; + key {[ U0eb2, exclam ]}; + key {[ U0eaa, question ]}; + key {[ U0ea7, percent ]}; + key {[ U0e87, equal ]}; + + key {[ U0e9c, U20ad ]}; + key {[ U0e9b, parenleft ]}; + key {[ U0ec1, U0eaf ]}; + key {[ U0ead ]}; + key {[ U0eb6 ]}; + key {[ U0eb7 ]}; + key {[ U0e97, U0ec6 ]}; + key {[ U0ea1, grave ]}; + key {[ U0ec3, dollar ]}; + key {[ U0e9d, parenright ]}; +}; + + +partial +xkb_symbols "stea" { + + // This keymap describes the standard Lao keyboard proposed + // by the Science Technology and Environment Agency of Laos. + // Caveat: assigning multiple codepoints to a single key + // does not work in XKB. Therefore the combined codepoint + // assignments have been omitted. + + name[Group1]= "Lao (STEA)"; + + key {[quotedbl, apostrophe ]}; + key {[ U0ea2, 1, U0ed1 ]}; + key {[ U0e9f, 2, U0ed2 ]}; + key {[ U0ec2, 3, U0ed3 ]}; + key {[ U0e96, 4, U0ed4 ]}; + key {[ U0eb8, U0ecc, U0ed5 ]}; + key {[ U0eb9, U0ebc, U0ed6 ]}; + key {[ U0e84, 5, U0ed7 ]}; + key {[ U0e95, 6, U0ed8 ]}; + key {[ U0e88, 7, U0ed9 ]}; + key {[ U0e82, 8, U0ed0 ]}; + key {[ U0e8a, 9 ]}; + key {[ U0ecd ]}; + + key {[ U0ebb ]}; + key {[ U0ec4, 0 ]}; + key {[ U0eb3, asterisk ]}; + key {[ U0e9e, underscore ]}; + key {[ U0eb0, plus ]}; + key {[ U0eb4 ]}; + key {[ U0eb5 ]}; + key {[ U0eae, U0ea3 ]}; + key {[ U0e99, U0edc ]}; + key {[ U0e8d, U0ebd ]}; + key {[ U0e9a, minus ]}; + key {[ U0ea5 ]}; + key {[ slash, backslash ]}; + + key {[ U0eb1 ]}; + key {[ U0eab, semicolon ]}; + key {[ U0e81, period ]}; + key {[ U0e94, comma ]}; + key {[ U0ec0, colon ]}; + key {[ U0ec9, U0eca ]}; + key {[ U0ec8, U0ecb ]}; + key {[ U0eb2, exclam ]}; + key {[ U0eaa, question ]}; + key {[ U0ea7, percent ]}; + key {[ U0e87, equal ]}; + + key {[ U0e9c, U20ad ]}; + key {[ U0e9b, parenleft ]}; + key {[ U0ec1, U0eaf ]}; + key {[ U0ead, x ]}; + key {[ U0eb6 ]}; + key {[ U0eb7 ]}; + key {[ U0e97, U0ec6 ]}; + key {[ U0ea1, U0edd ]}; + key {[ U0ec3, dollar ]}; + key {[ U0e9d, parenright ]}; + + key {[ space, nobreakspace, nobreakspace ]}; + + key {[ comma, period ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/latam b/nixos/xkb/symbols/latam new file mode 100644 index 00000000..5f517eb2 --- /dev/null +++ b/nixos/xkb/symbols/latam @@ -0,0 +1,176 @@ +// Modified for a real Latin American keyboard by Fabian Mandelbaum. +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin(type4)" + + name[Group1]="Spanish (Latin American)"; + + key {[ bar, degree, notsign, notsign ]}; + key {[ 1, exclam, bar, exclamdown ]}; + key {[ 3, numbersign, periodcentered, sterling ]}; + key {[ 4, dollar, asciitilde, dollar ]}; + key {[ 6, ampersand, notsign, fiveeighths ]}; + key {[ apostrophe, question, backslash, questiondown ]}; + key {[questiondown, exclamdown, dead_cedilla, dead_ogonek ]}; + + key {[ dead_acute,dead_diaeresis, dead_diaeresis, dead_abovering ]}; + key {[ plus, asterisk, asciitilde, dead_macron ]}; + + key {[ ntilde, Ntilde, asciitilde, dead_doubleacute ]}; + key {[ braceleft, bracketleft, dead_circumflex, braceleft ]}; + key {[ braceright, bracketright, dead_grave, braceright ]}; + + key {[ less, greater, backslash, bar ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "latam(basic)" + + name[Group1]="Spanish (Latin American, no dead keys)"; + + key {[questiondown, exclamdown, cedilla, ogonek ]}; + key {[ grave, asciicircum, bracketleft, degree ]}; + key {[ plus, asterisk, bracketright, macron ]}; + key {[ j, J, ezh, EZH ]}; + key {[ ntilde, Ntilde, asciitilde, doubleacute ]}; + key {[ acute, diaeresis, braceleft, braceleft ]}; + key {[ ccedilla, Ccedilla, braceright, breve ]}; + key {[ minus, underscore, ellipsis, abovedot ]}; +}; + +partial alphanumeric_keys +xkb_symbols "deadtilde" { + + include "latam(basic)" + + name[Group1]="Spanish (Latin American, dead tilde)"; + + key {[ plus, asterisk, dead_tilde, dead_macron ]}; +}; + +// Latin American Spanish Dvorak mapping (note R-H exchange). +partial alphanumeric_keys +xkb_symbols "dvorak" { + + name[Group1]="Spanish (Latin American, Dvorak)"; + + key {[ bar, degree, notsign, notsign ]}; + key {[ 1, exclam, bar, exclamdown ]}; + key {[ 2, quotedbl, at, oneeighth ]}; + key {[ 3, numbersign, periodcentered, sterling ]}; + key {[ 4, dollar, asciitilde, dollar ]}; + key {[ 5, percent, onehalf, threeeighths ]}; + key {[ 6, ampersand, notsign, fiveeighths ]}; + key {[ 7, slash, braceleft, seveneighths ]}; + key {[ 8, parenleft, bracketleft, trademark ]}; + key {[ 9, parenright, bracketright, plusminus ]}; + key {[ 0, equal, braceright, degree ]}; + key {[ apostrophe, question, backslash, questiondown ]}; + key {[ questiondown, exclamdown, dead_cedilla, dead_ogonek ]}; + + key {[ period, colon, at ]}; + key {[ comma, semicolon ]}; + key {[ ntilde, Ntilde, lstroke, Lstroke ]}; + key {[ p, P, paragraph ]}; + key {[ y, Y, yen ]}; + key {[ f, F, tslash, Tslash ]}; + key {[ g, G, dstroke, Dstroke ]}; + key {[ c, C, cent, copyright ]}; + key {[ h, H, hstroke, Hstroke ]}; + key {[ l, L, sterling ]}; + key {[ dead_acute,dead_diaeresis,dead_diaeresis,dead_abovering]}; + key {[ plus, asterisk, asciitilde, dead_macron ]}; + + key {[ a, A, ae, AE ]}; + key {[ o, O, oslash, Oslash ]}; + key {[ e, E, EuroSign ]}; + key {[ u, U, aring, Aring ]}; + key {[ i, I, oe, OE ]}; + key {[ d, D, eth, ETH ]}; + key {[ r, R, registered, trademark ]}; + key {[ t, T, thorn, THORN ]}; + key {[ n, N, eng, ENG ]}; + key {[ s, S, ssharp, section ]}; + key {[ braceleft, bracketleft, dead_circumflex, braceleft ]}; + key {[ braceright, bracketright, dead_grave, braceright ]}; + + key {[ less, greater, guillemotleft,guillemotright]}; + key {[ minus, underscore, hyphen, macron ]}; + key {[ q, Q, currency ]}; + key {[ j, J ]}; + key {[ k, K, kra ]}; + key {[ x, X, multiply, division ]}; + key {[ b, B ]}; + key {[ m, M, mu ]}; + key {[ w, W ]}; + key {[ v, V ]}; + key {[ z, Z ]}; + + include "level3(ralt_switch)" +}; + +// Latin American Spanish Colemak mapping (inspired by DreymaR) +partial alphanumeric_keys +xkb_symbols "colemak" { + + name[Group1]="Spanish (Latin American, Colemak)"; + + key {[ bar, degree, notsign, notsign ]}; + key {[ 1, exclam, bar, exclamdown ]}; + key {[ 2, quotedbl, at, oneeighth ]}; + key {[ 3, numbersign, periodcentered, sterling ]}; + key {[ 4, dollar, asciitilde, dollar ]}; + key {[ 5, percent, onehalf, threeeighths ]}; + key {[ 6, ampersand, notsign, fiveeighths ]}; + key {[ 7, slash, braceleft, seveneighths ]}; + key {[ 8, parenleft, bracketleft, trademark ]}; + key {[ 9, parenright, bracketright, plusminus ]}; + key {[ 0, equal, braceright, degree ]}; + key {[ apostrophe, question, backslash, questiondown ]}; + key {[ questiondown, exclamdown, dead_cedilla, dead_ogonek ]}; + + key {[ q, Q, U201A, U201E ]}; + key {[ w, W, U2018, U201C ]}; + key {[ f, F, U2019, U201D ]}; + key {[ p, P, U2293, paragraph ]}; + key {[ g, G, eng, ENG ]}; + key {[ j, J, U222B, U03A3 ]}; + key {[ l, L, lstroke, Lstroke ]}; + key {[ u, U, U2039, guillemotleft ]}; + key {[ y, Y, U203A, guillemotright ]}; + key {[ ntilde, Ntilde, asciitilde, U02EE ]}; + key {[ dead_acute,dead_diaeresis,dead_diaeresis,dead_abovering]}; + key {[ plus, asterisk, asciitilde, dead_macron ]}; + + key {[ a, A, ae, AE ]}; + key {[ r, R, registered, trademark ]}; + key {[ s, S, ssharp, section ]}; + key {[ t, T, thorn, THORN ]}; + key {[ d, D, eth, ETH ]}; + key {[ h, H, hstroke, Hstroke ]}; + key {[ n, N, hyphen, U2190 ]}; + key {[ e, E, EuroSign, U2191 ]}; + key {[ i, I, U2015, U2192 ]}; + key {[ o, O, U00BA, U00AA ]}; + key {[ braceleft, bracketleft, dead_circumflex, braceleft ]}; + key {[ braceright, bracketright, dead_grave, braceright ]}; + + key {[ less, greater, bar, U00A6 ]}; + key {[ z, Z, ezh, EZH ]}; + key {[ x, X, U2020, U2021 ]}; + key {[ c, C, cent, copyright ]}; + key {[ v, V, division, U03B3 ]}; + key {[ b, B, U2022, U03B2 ]}; + key {[ k, K, U00E7, U00C7 ]}; + key {[ m, M, multiply, U2193 ]}; + key {[ comma, semicolon, hyphen, multiply ]}; + key {[ period, colon, U0323, division ]}; + key {[ minus, underscore ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/latin b/nixos/xkb/symbols/latin new file mode 100644 index 00000000..d1742c1f --- /dev/null +++ b/nixos/xkb/symbols/latin @@ -0,0 +1,255 @@ +// Common Latin alphabet layout + +default partial +xkb_symbols "basic" { + + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ 2, at, twosuperior, oneeighth ] }; + key { [ 3, numbersign, threesuperior, sterling ] }; + key { [ 4, dollar, onequarter, dollar ] }; + key { [ 5, percent, onehalf, threeeighths ] }; + key { [ 6, asciicircum, threequarters, fiveeighths ] }; + key { [ 7, ampersand, braceleft, seveneighths ] }; + key { [ 8, asterisk, bracketleft, trademark ] }; + key { [ 9, parenleft, bracketright, plusminus ] }; + key { [ 0, parenright, braceright, degree ] }; + key { [ minus, underscore, backslash, questiondown ] }; + key { [ equal, plus, dead_cedilla, dead_ogonek ] }; + + key { [ q, Q, at, Greek_OMEGA ] }; + key { [ w, W, U017F, section ] }; + key { [ e, E, e, E ] }; + key { [ r, R, paragraph, registered ] }; + key { [ t, T, tslash, Tslash ] }; + key { [ y, Y, leftarrow, yen ] }; + key { [ u, U, downarrow, uparrow ] }; + key { [ i, I, rightarrow, idotless ] }; + key { [ o, O, oslash, Oslash ] }; + key { [ p, P, thorn, THORN ] }; + key { [bracketleft, braceleft, dead_diaeresis, dead_abovering ] }; + key { [bracketright, braceright, dead_tilde, dead_macron ] }; + + key { [ a, A, ae, AE ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ d, D, eth, ETH ] }; + key { [ f, F, dstroke, ordfeminine ] }; + key { [ g, G, eng, ENG ] }; + key { [ h, H, hstroke, Hstroke ] }; + key { [ j, J, dead_hook, dead_horn ] }; + key { [ k, K, kra, ampersand ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ semicolon, colon, dead_acute, dead_doubleacute ] }; + key { [apostrophe, quotedbl, dead_circumflex, dead_caron ] }; + key { [ grave, asciitilde, notsign, notsign ] }; + + key { [ backslash, bar, dead_grave, dead_breve ] }; + key { [ z, Z, guillemotleft, less ] }; + key { [ x, X, guillemotright, greater ] }; + key { [ c, C, cent, copyright ] }; + key { [ v, V, doublelowquotemark, singlelowquotemark ] }; + key { [ b, B, leftdoublequotemark, leftsinglequotemark ] }; + key { [ n, N, rightdoublequotemark, rightsinglequotemark ] }; + key { [ m, M, mu, masculine ] }; + key { [ comma, less, U2022, multiply ] }; // bullet + key { [ period, greater, periodcentered, division ] }; + key { [ slash, question, dead_belowdot, dead_abovedot ] }; +}; + +// Northern Europe ( Danish, Finnish, Norwegian, Swedish) common layout + +partial +xkb_symbols "type2" { + + include "latin" + + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, quotedbl, at, twosuperior ] }; + key { [ 3, numbersign, sterling, threesuperior] }; + key { [ 4, currency, dollar, onequarter ] }; + key { [ 5, percent, onehalf, cent ] }; + key { [ 6, ampersand, yen, fiveeighths ] }; + key { [ 7, slash, braceleft, division ] }; + key { [ 8, parenleft, bracketleft, guillemotleft] }; + key { [ 9, parenright, bracketright, guillemotright] }; + key { [ 0, equal, braceright, degree ] }; + + key { [ e, E, EuroSign, cent ] }; + key { [ r, R, registered, registered ] }; + key { [ t, T, thorn, THORN ] }; + key { [ o, O, oe, OE ] }; + key { [ aring, Aring, dead_diaeresis, dead_abovering ] }; + key { [dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ] }; + + key { [ a, A, ordfeminine, masculine ] }; + + key { [ c, C, copyright, copyright ] }; + key { [ comma, semicolon, dead_cedilla, dead_ogonek ] }; + key { [ period, colon, periodcentered, dead_abovedot ] }; + key { [ minus, underscore, dead_belowdot, dead_abovedot ] }; +}; + +// Slavic Latin ( Albanian, Croatian, Polish, Slovene, Yugoslav) +// common layout + +partial +xkb_symbols "type3" { + + include "latin" + + key { [ q, Q, backslash, Greek_OMEGA ] }; + key { [ w, W, bar, section ] }; + key { [ z, Z, leftarrow, yen ] }; + + key { [ f, F, bracketleft, ordfeminine ] }; + key { [ g, G, bracketright, ENG ] }; + key { [ k, K, lstroke, ampersand ] }; + + key { [ y, Y, guillemotleft, less ] }; + key { [ v, V, at, grave ] }; + key { [ b, B, braceleft, apostrophe ] }; + key { [ n, N, braceright, acute ] }; + key { [ m, M, section, masculine ] }; + key { [ comma, semicolon, less, multiply ] }; + key { [ period, colon, greater, division ] }; +}; + +// Another common Latin layout +// (German, Estonian, Spanish, Icelandic, Italian, Latin American, Portuguese) + +partial +xkb_symbols "type4" { + + include "latin" + + key { [ 2, quotedbl, at, oneeighth ] }; + key { [ 6, ampersand, notsign, fiveeighths ] }; + key { [ 7, slash, braceleft, seveneighths ] }; + key { [ 8, parenleft, bracketleft, trademark ] }; + key { [ 9, parenright, bracketright, plusminus ] }; + key { [ 0, equal, braceright, degree ] }; + + key { [ e, E, EuroSign, cent ] }; + + key { [ comma, semicolon, U2022, multiply ] }; // bullet + key { [ period, colon, periodcentered, division ] }; + key { [ minus, underscore, dead_belowdot, dead_abovedot ] }; +}; + +partial +xkb_symbols "nodeadkeys" { + + key { [ equal, plus, cedilla, ogonek ] }; + key { [bracketleft, braceleft, diaeresis, degree ] }; + key { [bracketright, braceright, asciitilde, macron ] }; + key { [ j, J, ezh, EZH ] }; + key { [ semicolon, colon, acute, doubleacute ] }; + key { [apostrophe, quotedbl, asciicircum, caron ] }; + key { [ backslash, bar, grave, breve ] }; + key { [ slash, question, ellipsis, abovedot ] }; +}; + +partial +xkb_symbols "type2_nodeadkeys" { + + include "latin(nodeadkeys)" + + key { [ aring, Aring, diaeresis, degree ] }; + key { [ diaeresis, asciicircum, asciitilde, caron ] }; + key { [ comma, semicolon, cedilla, ogonek ] }; + key { [ period, colon, periodcentered, abovedot ] }; + key { [ minus, underscore, ellipsis, abovedot ] }; +}; + +partial +xkb_symbols "type3_nodeadkeys" { + + include "latin(nodeadkeys)" +}; + +partial +xkb_symbols "type4_nodeadkeys" { + + include "latin(nodeadkeys)" + + key { [ minus, underscore, ellipsis, abovedot ] }; +}; + +// Added 2008.03.05 by Marcin Woliński +// See http://marcinwolinski.pl/keyboard/ for a description. +// Used by pl(intl) +// +// ┌─────┐ +// │ 2 4 │ 2 = Shift, 4 = Level3 + Shift +// │ 1 3 │ 1 = Normal, 3 = Level3 +// └─────┘ +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ~ ~ │ ! ' │ @ " │ # ˝ │ $ ¸ │ % ˇ │ ^ ^ │ & ˘ │ * ̇ │ ( ̣ │ ) ° │ _ ¯ │ + ˛ ┃ ⌫ Back- ┃ +// │ ` ` │ 1 ¡ │ 2 © │ 3 • │ 4 § │ 5 € │ 6 ¢ │ 7 − │ 8 × │ 9 ÷ │ 0 ° │ - – │ = — ┃ space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { « │ } » ┃ Enter ┃ +// ┃Tab ↹ ┃ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ ‹ │ ] › ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ A │ S │ D │ F │ G │ H │ J │ K │ L │ : “ │ " ” │ | ¶ ┃ ┃ +// ┃Caps ⇬ ┃ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; ‘ │ ' ’ │ \ ┃ ┃ +// ┣━━━━━━━━┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ │ Z │ X │ C │ V │ B │ N │ M │ < „ │ > · │ ? ¿ ┃ ┃ +// ┃Shift ⇧ │ z │ x │ c │ v │ b │ n │ m │ , ‚ │ . … │ / ⁄ ┃Shift ⇧ ┃ +// ┣━━━━━━━┳━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ␣ ⍽ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Space ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial +xkb_symbols "intl" { + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 1, exclam, exclamdown, dead_acute ] }; + key { [ 2, at, copyright, dead_diaeresis ] }; + key { [ 3, numbersign, U2022, dead_doubleacute ] }; // U+2022 is bullet (the name bullet does not work) + key { [ 4, dollar, section, dead_cedilla ] }; + key { [ 5, percent, EuroSign, dead_caron ] }; + key { [ 6, asciicircum, cent, dead_circumflex ] }; + key { [ 7, ampersand, U2212, dead_breve ] }; // U+2212 is MINUS SIGN + key { [ 8, asterisk, multiply, dead_abovedot ] }; + key { [ 9, parenleft, division, dead_belowdot ] }; + key { [ 0, parenright, degree, dead_abovering ] }; + key { [ minus, underscore, endash, dead_macron ] }; + key { [ equal, plus, emdash, dead_ogonek ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [bracketleft, braceleft, U2039, guillemotleft ] }; + key { [bracketright, braceright, U203A, guillemotright ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon, leftsinglequotemark, leftdoublequotemark ] }; + key { [apostrophe, quotedbl, rightsinglequotemark, rightdoublequotemark ] }; + + key { [ backslash, bar, NoSymbol, paragraph ] }; + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, less, singlelowquotemark, doublelowquotemark ] }; + key { [ period, greater, ellipsis, periodcentered ] }; + key { [ slash, question, U2044, questiondown ] }; // U+2044 is FRACTION SLASH +}; diff --git a/nixos/xkb/symbols/level2 b/nixos/xkb/symbols/level2 new file mode 100644 index 00000000..3eb08640 --- /dev/null +++ b/nixos/xkb/symbols/level2 @@ -0,0 +1,6 @@ +// The Less/Greater key (while pressed) chooses the second level. +partial modifier_keys +xkb_symbols "lsgt_switch" { + key {[ Shift_L ], type[group1]="ONE_LEVEL" }; + modifier_map Shift { }; +}; diff --git a/nixos/xkb/symbols/level3 b/nixos/xkb/symbols/level3 new file mode 100644 index 00000000..95d02a36 --- /dev/null +++ b/nixos/xkb/symbols/level3 @@ -0,0 +1,132 @@ +// These variants assign ISO_Level3_Shift to various keys +// so that levels 3 and 4 can be reached. + +// The default behaviour: +// the right Alt key (AltGr) chooses the third symbol engraved on a key. +default partial modifier_keys +xkb_symbols "ralt_switch" { + key {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The right Alt key never chooses the third level. +// This option attempts to undo the effect of a layout's inclusion of +// 'ralt_switch'. You may want to also select another level3 option +// to map the level3 shift to some other key. +partial modifier_keys +xkb_symbols "ralt_alt" { + key {[ Alt_R, Meta_R ], type[group1]="TWO_LEVEL" }; + modifier_map Mod1 { }; +}; + +// The right Alt key (while pressed) chooses the third shift level, +// and Compose is mapped to its second level. +partial modifier_keys +xkb_symbols "ralt_switch_multikey" { + key {[ ISO_Level3_Shift, Multi_key ], type[group1]="TWO_LEVEL" }; +}; + +// Either Alt key (while pressed) chooses the third shift level. +// (To be used mostly to imitate Mac OS functionality.) +partial modifier_keys +xkb_symbols "alt_switch" { + include "level3(lalt_switch)" + include "level3(ralt_switch)" +}; + +// The left Alt key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "lalt_switch" { + key {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The right Ctrl key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "switch" { + key {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The Menu key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "menu_switch" { + key {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// Either Win key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "win_switch" { + include "level3(lwin_switch)" + include "level3(rwin_switch)" +}; + +// The left Win key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "lwin_switch" { + key {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The right Win key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "rwin_switch" { + key {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The Enter key on the kepypad (while pressed) chooses the third shift level. +// (This is especially useful for Mac laptops which miss the right Alt key.) +partial modifier_keys +xkb_symbols "enter_switch" { + key {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The CapsLock key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "caps_switch" { + key {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The Backslash key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "bksl_switch" { + key {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The Less/Greater key (while pressed) chooses the third shift level. +partial modifier_keys +xkb_symbols "lsgt_switch" { + key {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The CapsLock key (while pressed) chooses the third shift level, +// and latches when pressed together with another third-level chooser. +partial modifier_keys +xkb_symbols "caps_switch_latch" { + key {[ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ], + type[group1]="THREE_LEVEL" }; +}; + +// The Backslash key (while pressed) chooses the third shift level, +// and latches when pressed together with another third-level chooser. +partial modifier_keys +xkb_symbols "bksl_switch_latch" { + key {[ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ], + type[group1]="THREE_LEVEL" }; +}; + +// The Less/Greater key (while pressed) chooses the third shift level, +// and latches when pressed together with another third-level chooser. +partial modifier_keys +xkb_symbols "lsgt_switch_latch" { + key {[ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ], + type[group1]="THREE_LEVEL" }; +}; + +// Top-row digit key 4 chooses third shift level when pressed alone. +partial modifier_keys +xkb_symbols "4_switch_isolated" { + override key {[ ISO_Level3_Shift ]}; +}; + +// Top-row digit key 9 chooses third shift level when pressed alone. +partial modifier_keys +xkb_symbols "9_switch_isolated" { + override key {[ ISO_Level3_Shift ]}; +}; diff --git a/nixos/xkb/symbols/level5 b/nixos/xkb/symbols/level5 new file mode 100644 index 00000000..e9cd7516 --- /dev/null +++ b/nixos/xkb/symbols/level5 @@ -0,0 +1,109 @@ +// These variants assign ISO_Level5_Shift to various keys +// so that levels 5 to 8 can be reached. + +// The right Ctrl key (while pressed) chooses the fifth shift level. +partial modifier_keys +xkb_symbols "rctrl_switch" { + key {[ ISO_Level5_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The Less/Greater key (while pressed) chooses the fifth shift level. +partial modifier_keys +xkb_symbols "lsgt_switch" { + key {[ ISO_Level5_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The right Alt key (while pressed) chooses the fifth shift level. +partial modifier_keys +xkb_symbols "ralt_switch" { + key {[ ISO_Level5_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The CapsLock key (while pressed) chooses the fifth shift level. +partial modifier_keys +xkb_symbols "caps_switch" { + key {[ ISO_Level5_Shift ], type[group1]="ONE_LEVEL" }; +}; + +// The Menu key (while pressed) chooses the fifth shift level. +partial modifier_keys +xkb_symbols "menu_switch" { + key {[ ISO_Level5_Shift ], type[group1]="ONE_LEVEL" }; +}; + + +// This adds the definitions needed to create a level5-locking behaviour, +// using the virtual modifier NumLock (mapped to Mod2) as lock indicator. +// See also types/level5 (EIGHT_LEVEL_WITH_LEVEL5_LOCK) and compat/level5 (level5_lock). +partial modifier_keys +xkb_symbols "lock" { + replace key {[ NoSymbol ], type[group1] = "ONE_LEVEL", virtualMods = NumLock, + actions[group1] = [ SetMods(modifiers=NumLock) ]}; + modifier_map Mod2 { }; +}; + +// Below are eight variants for assigning extra keys for choosing/locking the fifth level. + +partial modifier_keys +xkb_symbols "lsgt_switch_lock" { + include "level5(lock)" + key {[ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ], + type[group1] = "EIGHT_LEVEL" }; +}; + +partial modifier_keys +xkb_symbols "lwin_switch_lock" { + include "level5(lock)" + key {[ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ], + type[group1] = "EIGHT_LEVEL" }; +}; + +partial modifier_keys +xkb_symbols "ralt_switch_lock" { + include "level5(lock)" + key {[ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ], + type[group1] = "EIGHT_LEVEL" }; +}; + +partial modifier_keys +xkb_symbols "rwin_switch_lock" { + include "level5(lock)" + key {[ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ], + type[group1] = "EIGHT_LEVEL" }; +}; + +partial modifier_keys +xkb_symbols "lsgt_switch_lock_cancel" { + include "level5(lock)" + key {[ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ], + type[group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK" }; +}; + +partial modifier_keys +xkb_symbols "lwin_switch_lock_cancel" { + include "level5(lock)" + key {[ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ], + type[group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK" }; +}; + +partial modifier_keys +xkb_symbols "ralt_switch_lock_cancel" { + include "level5(lock)" + key {[ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ], + type[group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK" }; +}; + +partial modifier_keys +xkb_symbols "rwin_switch_lock_cancel" { + include "level5(lock)" + key {[ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, + ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ], + type[group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK" }; +}; diff --git a/nixos/xkb/symbols/lk b/nixos/xkb/symbols/lk new file mode 100644 index 00000000..5960ce5d --- /dev/null +++ b/nixos/xkb/symbols/lk @@ -0,0 +1,180 @@ +// Keyboard layouts for Sri Lanka. + +// Phonetic mapping of Sinhala for a standard US Qwerty keyboard. +// Maintainer: Harshula Jayasuriya +// https://www.nongnu.org/sinhala/doc/keymaps/sinhala-keyboard_3.html + +// Repaya, Rakaransaya and Yansaya aren't inserted with AltGr+r, R and Y, +// respectively. The problem lies with the XKB infrastructure which +// only allows a one-to-one mapping of keycodes to Unicode codepoints. +// Unfortunately, the 3 mentioned glyphs actually consists of 3 +// Unicode codepoints each. The result is that the user must +// manually construct the glyph by typing each of the 3 codepoints. +// AltGr+, represents the 'JOIN' key, it requires +// two codepoints, hence it also has to be manually constructed. +// Similarly, AltGr+/ representing the 'TOUCH' key requires +// two codepoints. + +// Repaya = rayanna,AL,ZWJ +// Rakaransaya = AL,ZWJ,rayanna +// Yansaya = AL,ZWJ,yayanna +// JOIN = AL,ZWJ +// TOUCH = ZWJ,AL + +// Where, +// AL = Al Lakuna = AltGr+a +// ZWJ = Zero Width Joiner = AltGr+/ + +default partial alphanumeric_keys +xkb_symbols "sin_phonetic" { + + include "us" + name[Group1] = "Sinhala (phonetic)"; + key.type[Group1] = "FOUR_LEVEL"; + + // q - p + key { [ Sinh_ri, Sinh_rii, Sinh_ru2, Sinh_ruu2 ] }; + key { [ Sinh_ae, Sinh_aee, Sinh_ae2, Sinh_aee2 ] }; + key { [ Sinh_e, Sinh_ee, Sinh_e2, Sinh_ee2 ] }; + key { [ Sinh_ra, Sinh_al, Sinh_ra, none ] }; + key { [ Sinh_tha, Sinh_thha, Sinh_tta, Sinh_ttha ] }; + key { [ Sinh_ya, Sinh_al, none, none ] }; + key { [ Sinh_u, Sinh_uu, Sinh_u2, Sinh_uu2 ] }; + key { [ Sinh_i, Sinh_ii, Sinh_i2, Sinh_ii2 ] }; + key { [ Sinh_o, Sinh_oo, Sinh_o2, Sinh_oo2 ] }; + key { [ Sinh_pa, Sinh_pha, none, none ] }; + + // a - l + key { [ Sinh_a, Sinh_aa, Sinh_al, Sinh_aa2 ] }; + key { [ Sinh_sa, Sinh_sha, Sinh_ssha, none ] }; + key { [ Sinh_dha, Sinh_dhha, Sinh_dda, Sinh_ddha ] }; + key { [ Sinh_fa, none, Sinh_ai2, Sinh_ai ] }; + key { [ Sinh_ga, Sinh_gha, Sinh_nga, none ] }; + key { [ Sinh_ha, Sinh_h2, Sinh_au2, Sinh_au ] }; + key { [ Sinh_ja, Sinh_jha, Sinh_nja, none ] }; + key { [ Sinh_ka, Sinh_kha, Sinh_lu, Sinh_luu ] }; + key { [ Sinh_la, Sinh_lla, Sinh_lu2, Sinh_luu2 ] }; + + // z - ? + key { [ Sinh_nya, Sinh_jnya, none, none ] }; + key { [ Sinh_ndha, Sinh_ndda, none, none ] }; + key { [ Sinh_ca, Sinh_cha, none, none ] }; + key { [ Sinh_va, none, none, none ] }; + key { [ Sinh_ba, Sinh_bha, none, none ] }; + key { [ Sinh_na, Sinh_nna, Sinh_ng, Sinh_ng2 ] }; + key { [ Sinh_ma, Sinh_mba, none, none ] }; + key { [ any, any, Sinh_al, none ] }; + key { [ any, any, Sinh_kunddaliya, none ] }; + key { [ any, any, U200d, none ] }; // ZWJ + + key { [ space, nobreakspace, U200c, any ] }; // ZWNJ + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "tam_unicode" { + include "in(tamilnet)" + name[Group1]= "Tamil (Sri Lanka, TamilNet '99)"; +}; + +partial alphanumeric_keys +xkb_symbols "tam_TAB" { + include "in(tamilnet_TAB)" + name[Group1]= "Tamil (Sri Lanka, TamilNet '99, TAB encoding)"; +}; + +// SINHALA - US, SUBSTITUTES SOME AND ADDS SOME +// ============================================= +// +// This started as an upgrade to the first romanized version of +// Sinhala called PTS Pali created in the 1860s. PTS requires +// dots and bars on letters that are rare in fonts, and impossible +// to type. Its singular purpose was to print Tripitaka, the +// collection of Buddhist discourses. +// +// This version covers the entire newer Sinhala phoneme chart +// (Hodiya) that became standard just before the end of the 19th +// century. All the phonemes map to the SBCS. It is easy and +// faster than English to type. It overcomes the setback of +// Unicode Sinhala that it is not compatible with Pali and +// Sanskrit because it encodes two ligatures as base letters and +// the SLS1134 specification matching shape and morpheme sets +// violating Sanskrit orthography. +// +// Most importantly, this romanized version of Sinhala has a +// companion orthographic font that displays the text in the +// native script and a JavaScript converts it to Unicode Sinhala +// and back, dramatically increasing Sinhala seen on the web due +// to its ease of use. +// +// Dedication: +// Thomas William Rhys Davids, Ven. Udagama Sumangala +// Rev. Fr. A. M. Gunasekara, Rev. Fr. Theodore G. Perera +// Ven. Mettavihari +// +// Maintainer: +// JC Ahangama - sing@ahangama.com +// +partial alphanumeric_keys modifier_keys +xkb_symbols "us" { + include "us(basic)" + name[Group1]= "Sinhala (US)"; + +// plain, Shift, AltGr +// ----------------------------------------- + key {[ grave, asciitilde, none ]}; + key {[ 1, exclam, dead_macron ]}; + key {[ 2, at, dead_belowdot ]}; + key {[ 3, numbersign, dead_abovedot ]}; + key {[ 4, dollar, currency ]}; + key {[ 5, percent, degree ]}; + key {[ 6, asciicircum, onequarter ]}; + key {[ 7, ampersand, onehalf ]}; + key {[ 8, asterisk, threequarters ]}; + key {[ 9, parenleft, none ]}; + key {[ 0, parenright, none ]}; + key {[ minus, underscore, emdash ]}; + key {[ equal, plus, none ]}; + + key {[ d, D, q ]}; + key {[ ae, acute, none ]}; + key {[ e, eacute, ediaeresis ]}; + key {[ r, ucircumflex, none ]}; + key {[ t, none, none ]}; + key {[ y, none, none ]}; + key {[ u, uacute, udiaeresis ]}; + key {[ i, iacute, idiaeresis ]}; + key {[ o, oacute, odiaeresis ]}; + key {[ p, none, none ]}; + key {[ bracketleft, braceleft, none ]}; + key {[ bracketright, braceright, none ]}; + key {[ backslash, bar, none ]}; + + key {[ a, aacute, adiaeresis ]}; + key {[ s, none, none ]}; + key {[ eth, ETH, none ]}; + key {[ thorn, f, none ]}; + key {[ g, G, none ]}; + key {[ h, none, none ]}; + key {[ j, ccedilla, none ]}; + key {[ k, none, none ]}; + key {[ l, L, ocircumflex ]}; + key {[ semicolon, colon, none ]}; + key {[ apostrophe, quotedbl, none ]}; + + key {[ z, none, none ]}; + key {[ x, none, none ]}; + key {[ c, ccedilla, none ]}; + key {[ v, none, none ]}; + key {[ b, B, none ]}; + key {[ n, N, ntilde ]}; + key {[ m, none, none ]}; + key {[ comma, less, guillemotleft ]}; + key {[ period, greater,guillemotright ]}; + key {[ slash, question, U200C ]}; // ZWJ + + key {[ space, nobreakspace, none ]}; + + include "level3(alt_switch)" +}; diff --git a/nixos/xkb/symbols/lt b/nixos/xkb/symbols/lt new file mode 100644 index 00000000..765e507c --- /dev/null +++ b/nixos/xkb/symbols/lt @@ -0,0 +1,364 @@ +// Keyboard layouts for Lithuania. + +// Lithuanian Numeric layout -- Lithuanian letters on the numeric row. +// Based on the Lithuanian keymap by Ričardas Čepas . +// Third and fourth levels added by Mantas Kriaučiūnas , 2004. +// Minor modifications and cleanup by Rimas Kudelis , 2010. +default partial alphanumeric_keys modifier_keys +xkb_symbols "basic" { + + include "latin" + + name[Group1]="Lithuanian"; + + key {[ grave, asciitilde, acute ]}; + key {[ aogonek, Aogonek, 1, exclam ]}; + key {[ ccaron, Ccaron, 2, at ]}; + key {[ eogonek, Eogonek, 3, numbersign ]}; + key {[ eabovedot, Eabovedot, 4, dollar ]}; + key {[ iogonek, Iogonek, 5, percent ]}; + key {[ scaron, Scaron, 6, asciicircum ]}; + key {[ uogonek, Uogonek, 7, ampersand ]}; + key {[ umacron, Umacron, 8, asterisk ]}; + key {[ doublelowquotemark, parenleft, 9, parenleft ]}; + key {[ leftdoublequotemark, parenright, 0, parenright ]}; + key {[ minus, underscore, endash ]}; + key {[ zcaron, Zcaron, equal, plus ]}; + + key {[ NoSymbol, NoSymbol, EuroSign, sterling ]}; + + key {[ endash, EuroSign ]}; + + include "level3(ralt_switch)" +}; + +// Similar to the above, but with the Lithuanian letters on 3rd and 4th levels. +partial alphanumeric_keys modifier_keys +xkb_symbols "us" { + + include "latin" + + name[Group1]="Lithuanian (US)"; + + key {[ grave, asciitilde, acute ]}; + key {[ 1, exclam, aogonek, Aogonek ]}; + key {[ 2, at, ccaron, Ccaron ]}; + key {[ 3, numbersign, eogonek, Eogonek ]}; + key {[ 4, dollar, eabovedot, Eabovedot ]}; + key {[ 5, percent, iogonek, Iogonek ]}; + key {[ 6, asciicircum, scaron, Scaron ]}; + key {[ 7, ampersand, uogonek, Uogonek ]}; + key {[ 8, asterisk, umacron, Umacron ]}; + key {[ 9, parenleft, doublelowquotemark ]}; + key {[ 0, parenright, leftdoublequotemark ]}; + key {[ minus, underscore, endash ]}; + key {[ equal, plus, zcaron, Zcaron ]}; + + key {[ NoSymbol, NoSymbol, EuroSign, sterling ]}; + + key {[ endash, EuroSign ]}; + + include "level3(ralt_switch)" +}; + +// Lithuanian keymap LST 1582:2000 (described at http://ims.mii.lt/klav/). +// Extensions: B01 L3 is "<", B02 L3 is ">", and B03 L3 is endash, to make +// this layout usable with pc101 and pc104 keyboards. +// +// Made by Gediminas Paulauskas +// Minor modifications by Ričardas Čepas and Rimas Kudelis + +partial alphanumeric_keys modifier_keys +xkb_symbols "std" { + + include "latin" + + name[Group1]="Lithuanian (standard)"; + + key {[ grave, asciitilde, acute ]}; + key {[ exclam, 1, at ]}; + key {[ minus, 2, underscore ]}; + key {[ slash, 3, numbersign ]}; + key {[ semicolon, 4, dollar ]}; + key {[ colon, 5, section ]}; + key {[ comma, 6, asciicircum ]}; + key {[ period, 7, ampersand ]}; + key {[ equal, 8, asterisk ]}; + key {[ parenleft, 9, bracketleft ]}; + key {[ parenright, 0, bracketright ]}; + key {[ question, plus, apostrophe ]}; + key {[ x, X, percent ]}; + + key {[ aogonek, Aogonek ]}; + key {[ zcaron, Zcaron ]}; + key {[ e, E, EuroSign ]}; + key {[ iogonek, Iogonek, braceleft ]}; + key {[ w, W, braceright ]}; + + key {[ scaron, Scaron ]}; + key {[ uogonek, Uogonek ]}; + key {[ eabovedot, Eabovedot, quotedbl ]}; + key {[ q, Q, bar ]}; + + key {[ less, greater, endash ]}; + key {[ z, Z, less ]}; + key {[ umacron, Umacron, greater ]}; + key {[ c, C, endash ]}; + key {[ ccaron, Ccaron, doublelowquotemark ]}; + key {[ f, F, leftdoublequotemark ]}; + key {[ eogonek, Eogonek, backslash ]}; + + key {[ space, space, nobreakspace ]}; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +// Lithuanian keymap based on the old LST 1205-92 standard (also known as IBM layout). +// https://web.archive.org/web/20060629123341/http://www.kada.lt/litwin/Kbdlta.gif +// "Programmer mode" is implemented partially: just the symbols that are missing on +// the first two levels are available via AltGr (instead of via a dead tilde key). +// Originally by Piter PUNK , 2006. +partial alphanumeric_keys modifier_keys +xkb_symbols "ibm" { + + include "latin" + + name[Group1]="Lithuanian (IBM)"; + + key {[ grave, asciitilde, acute ]}; + key {[ exclam, 1 ]}; + key {[ quotedbl, 2, at ]}; + key {[ slash, 3, numbersign ]}; + key {[ semicolon, 4, dollar ]}; + key {[ colon, 5, percent ]}; + key {[ comma, 6, asciicircum ]}; + key {[ period, 7, ampersand ]}; + key {[ question, 8, asterisk ]}; + key {[ parenleft, 9, braceleft ]}; + key {[ parenright, 0, braceright ]}; + key {[ underscore, minus, endash ]}; + key {[ plus, equal ]}; + + key {[ aogonek, Aogonek, q, Q ]}; + key {[ zcaron, Zcaron, w, W ]}; + key {[ e, E, EuroSign ]}; + key {[ iogonek, Iogonek, bracketleft, braceleft ]}; + key {[ doublelowquotemark, leftdoublequotemark, bracketright, braceright ]}; + + key {[ uogonek, Uogonek, semicolon, colon ]}; + key {[ eabovedot, Eabovedot, apostrophe, quotedbl ]}; + + key {[ less, greater, endash ]}; + key {[ z, Z, guillemotleft, guillemotright]}; + key {[ umacron, Umacron, x, X ]}; + key {[ ccaron, Ccaron, comma, less ]}; + key {[ scaron, Scaron, period, greater ]}; + key {[ eogonek, Eogonek, slash, question ]}; + + key {[ space, space, nobreakspace, none ]}; + + include "level3(ralt_switch)" +}; + +// LEKP and LEKPa layouts 1.0 +// For more info visit http://lekp.info +// Created by Tautrimas Pajarskas, 2007 +// Made by Ernestas Lukoševičius, 2007 +// Minor cleanup by Rimas Kudelis, 2010 +partial alphanumeric_keys modifier_keys +xkb_symbols "lekp" { + + name[Group1]="Lithuanian (LEKP)"; + + key {[ grave, asciitilde, acute ]}; + key {[ slash, numbersign, bar ]}; + key {[ backslash, at, section ]}; + key {[ period, braceleft ]}; + key {[ comma, braceright ]}; + key {[ f, F ]}; + key {[ exclam, endash ]}; + key {[ w, W ]}; + key {[ uogonek, Uogonek ]}; + key {[ iogonek, Iogonek ]}; + key {[ parenleft, doublelowquotemark, registered ]}; + key {[ parenright, leftdoublequotemark, copyright ]}; + key {[ colon, ampersand, trademark ]}; + + key {[ q, Q, EuroSign ]}; + key {[ g, G, 7 ]}; + key {[ r, R, 8 ]}; + key {[ l, L, 9 ]}; + key {[ d, D, percent ]}; + key {[ ccaron, Ccaron ]}; + key {[ j, J ]}; + key {[ u, U, period ]}; + key {[ eabovedot, Eabovedot, minus ]}; + key {[ eogonek, Eogonek, slash ]}; + key {[ question, bracketleft, division ]}; + key {[ equal, bracketright ]}; + + key {[ a, A, 0 ]}; + key {[ k, K, 4 ]}; + key {[ s, S, 5 ]}; + key {[ t, T, 6 ]}; + key {[ m, M, dollar ]}; + key {[ p, P ]}; + key {[ n, N ]}; + key {[ e, E, comma ]}; + key {[ i, I, plus ]}; + key {[ o, O, asterisk ]}; + key {[ y, Y, multiply ]}; + key {[ apostrophe, underscore ]}; + + key {[ semicolon, quotedbl, sterling ]}; + key {[ z, Z, asciicircum ]}; + key {[ x, X, 1 ]}; + key {[ c, C, 2 ]}; + key {[ v, V, 3 ]}; + key {[ zcaron, Zcaron ]}; + key {[ scaron, Scaron ]}; + key {[ b, B, degree ]}; + key {[ umacron, Umacron, less ]}; + key {[ aogonek, Aogonek, greater ]}; + key {[ h, H ]}; + + include "capslock(backspace)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "lekpa" { + + include "lt(lekp)" + + name[Group1]="Lithuanian (LEKPa)"; + + key {[ slash, quotedbl, bar ]}; + key {[ period, braceleft, numbersign ]}; + key {[ comma, braceright, sterling ]}; + key {[ f, F, ampersand ]}; + key {[ colon, semicolon, trademark ]}; + + key {[ less, greater, bar ]}; +}; + +// Samogitian (žemaiťiu/žemaičių) layout, based on the Lithuanian standard layout. +// Long vowels are made by combining: pressing the grave key (`) after the vowel. +// Special letters (ëůȧťď and Latvian ģŗļķ) are obtained with AltGr plus the base letter. +// +// Added by Arnas Udovičius , 2020. +partial alphanumeric_keys modifier_keys +xkb_symbols "sgs" { + + include "lt(basic)" + + name[Group1]="Samogitian"; + + key {[ U0304, asciitilde, grave, acute ]}; + key {[ q, Q, ediaeresis, Ediaeresis ]}; + key {[ w, W, U016F, U016E ]}; + key {[ r, R, rcedilla, Rcedilla ]}; + key {[ t, T, tcaron, Tcaron ]}; + key {[ a, A, U0227, U0226 ]}; + key {[ d, D, dcaron, Dcaron ]}; + key {[ g, G, gcedilla, Gcedilla ]}; + key {[ k, K, kcedilla, Kcedilla ]}; + key {[ l, L, lcedilla, Lcedilla ]}; +}; + +// Lithuanian "Ratise" keymap, by Algirdas Buckus . +// Last changed on 2020-12-24. +partial alphanumeric_keys modifier_keys +xkb_symbols "ratise" { + + name[Group1]="Lithuanian (Ratise)"; + + key { [ plus, section, grave, acute ] }; + key { [ exclam, currency, rightsinglequotemark, exclamdown ] }; + key { [ colon, at, 0x10027E8, 0x1002190 ] }; // MATHEMATICAL LEFT ANGLE BRACKET; LEFTWARDS ARROW + key { [ period, numbersign, 0x10027E9, 0x1002192 ] }; // MATHEMATICAL RIGHT ANGLE BRACKET; RIGHTWARDS ARROW + key { [ asterisk, dollar, rightdoublequotemark, sterling ] }; + key { [ underscore, percent, ellipsis, permille ] }; + key { [ emdash, bar, asciicircum, brokenbar ] }; + key { [ equal, ampersand, 7, notequal ] }; + key { [ comma, less, 8, lessthanequal ] }; + key { [ semicolon, greater, 9, greaterthanequal ] }; + key { [ slash, backslash, division, 0x1002016 ] }; // DOUBLE VERTICAL LINE + key { [ w, W, Greek_OMEGA, ssharp ] }; + key { [ question, asciitilde, 0x1002248, questiondown ] }; // ALMOST EQUAL TO + + key { [ Tab,ISO_Left_Tab, Multi_key ] }; // AltGr+Tab is Compose + + key { [ umacron, Umacron, leftsinglequotemark, 0x100203A ] }; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + key { [ eabovedot, Eabovedot, bracketleft, dead_abovering ] }; + key { [ y, Y, bracketright, dead_circumflex ] }; + key { [ o, O, leftdoublequotemark, guillemotright ] }; + key { [ q, Q, 0x1000301, 0x1002191 ] }; // COMBINING ACUTE ACCENT; UPWARDS ARROW + key { [ j, J, EuroSign, yen ] }; + key { [ n, N, 4, notsign ] }; + key { [ k, K, 5, dagger ] }; + key { [ g, G, 6, enfilledcircbullet ] }; + key { [ b, B, multiply, infinity ] }; + key { [ c, C, cent, copyright ] }; + key { [ f, F, 0x1002044, trademark ] }; // FRACTION SLASH + + key { [ u, U, apostrophe, dead_macron ] }; + key { [ e, E, parenleft, dead_grave ] }; + key { [ i, I, parenright, dead_acute ] }; + key { [ a, A, quotedbl, dead_diaeresis ] }; + key { [ h, H, 0x1000303, dead_tilde ] }; // COMBINING TILDE ACCENT + key { [ l, L, lstroke, Lstroke ] }; + key { [ r, R, 1, onesuperior ] }; + key { [ t, T, 2, twosuperior ] }; + key { [ s, S, 3, threesuperior ] }; + key { [ p, P, 0x1002212, paragraph ] }; // MINUS SIGN + key { [ zcaron, Zcaron, minus, dead_cedilla ] }; + key { [ z, Z, degree, registered ] }; + + key { [ minus, endash, 0x1000307, 0x1002011 ] }; // COMBINING DOT ABOVE, NON-BREAKING HYPHEN + key { [ uogonek, Uogonek, singlelowquotemark, 0x1002039 ] }; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK + key { [ eogonek, Eogonek, braceleft, dead_breve ] }; + key { [ iogonek, Iogonek, braceright, dead_caron ] }; + key { [ aogonek, Aogonek, doublelowquotemark, guillemotleft ] }; + key { [ x, X, 0x1000300, 0x1002193 ] }; // COMBINING GRAVE ACCENT; DOWNWARDS ARROW + key { [ v, V, squareroot, 0x10025CA ] }; // LOZENGE + key { [ m, M, 0, mu ] }; + key { [ d, D, period, doubledagger ] }; + key { [ scaron, Scaron, comma, periodcentered ] }; + key { [ ccaron, Ccaron, plus, plusminus ] }; + + key { [ space, space, space, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + + +// EXTRAS: + +partial alphanumeric_keys modifier_keys +xkb_symbols "us_dvorak" { + + include "us(dvorak)" + + name[Group1]="Lithuanian (Dvorak)"; + + key {[ 1, exclam, aogonek, Aogonek ]}; + key {[ 2, at, ccaron, Ccaron ]}; + key {[ 3, numbersign, eogonek, Eogonek ]}; + key {[ 4, dollar, eabovedot, Eabovedot ]}; + key {[ 5, percent, iogonek, Iogonek ]}; + key {[ 6, asciicircum, scaron, Scaron ]}; + key {[ 7, ampersand, uogonek, Uogonek ]}; + key {[ 8, asterisk, umacron, Umacron ]}; + key {[ 9, parenleft, doublelowquotemark, parenleft ]}; + key {[ 0, parenright, leftdoublequotemark, parenright ]}; + key {[ equal, plus, zcaron, Zcaron ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/lt(sun_type6)" +}; diff --git a/nixos/xkb/symbols/lv b/nixos/xkb/symbols/lv new file mode 100644 index 00000000..8cc7dd0d --- /dev/null +++ b/nixos/xkb/symbols/lv @@ -0,0 +1,557 @@ +// Keyboard layouts for Latvia. + +// Latvian keymap version 1.3 +// Copyright (C) Dmitry Golubev , 2003-2004 +// +// Permission to use, copy, modify, distribute, and sell this software and its +// documentation for any purpose is hereby granted without fee, provided that +// the above copyright notice appear in all copies and that both that +// copyright notice and this permission notice appear in supporting +// documentation, and that the name of the copyright holder(s) not be used in +// advertising or publicity pertaining to distribution of the software without +// specific, written prior permission. The copyright holder(s) makes no +// representations about the suitability of this software for any purpose. It +// is provided "as is" without express or implied warranty. +// +// THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +// INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +// EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR +// CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. +default partial alphanumeric_keys modifier_keys +xkb_symbols "basic" { + + name[Group1]= "Latvian"; + + key {[ grave, asciitilde, acute, asciitilde ]}; + key {[ 1, exclam, onesuperior, exclamdown ]}; + key {[ 2, at, twosuperior, oneeighth ]}; + key {[ 3, numbersign, threesuperior, sterling ]}; + key {[ 4, dollar, EuroSign, cent ]}; + key {[ 5, percent, onehalf, threeeighths ]}; + key {[ 6, asciicircum, threequarters, fiveeighths ]}; + key {[ 7, ampersand, braceleft, seveneighths ]}; + key {[ 8, asterisk, bracketleft, trademark ]}; + key {[ 9, parenleft, bracketright, plusminus ]}; + key {[ 0, parenright, braceright, degree ]}; + key {[ minus, underscore, backslash, questiondown ]}; + key {[ equal, plus, endash, emdash ]}; + + key {[ q, Q, q, Q ]}; + key {[ w, W, w, W ]}; + key {[ e, E, emacron, Emacron ]}; + key {[ r, R, rcedilla, Rcedilla ]}; + key {[ t, T, t, T ]}; + key {[ y, Y, y, Y ]}; + key {[ u, U, umacron, Umacron ]}; + key {[ i, I, imacron, Imacron ]}; + key {[ o, O, omacron, Omacron ]}; + key {[ p, P, p, P ]}; + key {[ bracketleft, braceleft, guillemotleft, leftdoublequotemark ]}; + key {[ bracketright, braceright, guillemotright, rightdoublequotemark ]}; + + key {[ a, A, amacron, Amacron ]}; + key {[ s, S, scaron, Scaron ]}; + key {[ d, D, d, D ]}; + key {[ f, F, f, F ]}; + key {[ g, G, gcedilla, Gcedilla ]}; + key {[ h, H, h, H ]}; + key {[ j, J, j, J ]}; + key {[ k, K, kcedilla, Kcedilla ]}; + key {[ l, L, lcedilla, Lcedilla ]}; + key {[ semicolon, colon, semicolon, colon ]}; + key {[ apostrophe, quotedbl, leftdoublequotemark, doublelowquotemark ]}; + + key {[ z, Z, zcaron, Zcaron ]}; + key {[ x, X, x, X ]}; + key {[ c, C, ccaron, Ccaron ]}; + key {[ v, V, v, V ]}; + key {[ b, B, b, B ]}; + key {[ n, N, ncedilla, Ncedilla ]}; + key {[ m, M, m, M ]}; + key {[ comma, less, U2022, multiply ]}; // bullet + key {[ period, greater, periodcentered, division ]}; + key {[ slash, question, slash, abovedot ]}; + key {[ backslash, bar, grave, breve ]}; + + key {[ space, space, space, space ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "apostrophe" { + + include "lv(basic)" + + name[Group1]= "Latvian (apostrophe)"; + + key {[ISO_Level3_Latch, quotedbl, apostrophe, quotedbl]}; + key {[space, space, apostrophe]}; + modifier_map Mod5 { }; +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "apostrophe-deadquotes" { + + include "lv(basic)" + + name[Group1]= "Latvian (apostrophe, dead quotes)"; + + key {[ISO_Level3_Latch, ISO_Level3_Latch, apostrophe, quotedbl]}; + key {[space, space, apostrophe, quotedbl]}; + modifier_map Mod5 { }; +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "tilde" { + + include "lv(basic)" + + name[Group1]= "Latvian (tilde)"; + + key {[ISO_Level3_Latch, asciitilde, grave, acute]}; + key {[space, space, asciitilde]}; + modifier_map Mod5 { }; +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "fkey" { + + include "lv(basic)" + + name[Group1]= "Latvian (F)"; + + key {[ISO_Level3_Latch, ISO_Level3_Latch, f, F]}; + key {[space, space, f, F]}; + modifier_map Mod5 { }; +}; + + +// Four somewhat ergonomic layouts. +// See https://odo.lv/LatvianKeyboard +// and https://odo.lv/LatvianKeyboard5. + +// Latvian Adapted keyboard layout by Valdis Vītoliņš. +// https://odo.lv/xwiki/bin/download/Main/LatvianKeyboard/Adapted.png +partial alphanumeric_keys modifier_keys +xkb_symbols "adapted" { + + include "lv(basic)" + + name[Group1]= "Latvian (adapted)"; + + key {[ 2, Ccaron, at, twosuperior ]}; + key {[ 3, ccaron, numbersign, threesuperior ]}; + key {[ 4, Zcaron, dollar, EuroSign ]}; + key {[ 5, zcaron, percent, onehalf ]}; + + key {[ scaron, Scaron, q, Q ]}; + key {[ emacron, Emacron, w, W ]}; + key {[ e, E, e, E ]}; + + key {[ amacron, Amacron, y, Y ]}; + key {[ u, U, u, U ]}; + key {[ i, I, i, I ]}; + key {[ umacron, Umacron, bracketleft, braceleft ]}; + key {[ ncedilla, Ncedilla, bracketright, braceright ]}; + + key {[ a, A, a, A ]}; + key {[ s, S, s, S ]}; + key {[ g, G, g, G ]}; + + key {[ k, K, k, K ]}; + key {[ l, L, l, L ]}; + key {[ imacron, Imacron, semicolon, colon ]}; + + key {[ z, Z, z, Z ]}; + key {[ kcedilla, Kcedilla, x, X ]}; + key {[ c, C, c, C ]}; + + key {[ n, N, n, N ]}; + + key {[ comma, gcedilla, less, multiply ]}; + key {[ period, Gcedilla, greater, division ]}; + key {[ lcedilla, Lcedilla, slash, question ]}; +}; + +// Latvian Ergonomic (ŪGJRMV) keyboard layout by Valdis Vītoliņš. +// https://odo.lv/xwiki/bin/download/Main/LatvianKeyboard/Ergonomic.png +partial alphanumeric_keys modifier_keys +xkb_symbols "ergonomic" { + + include "lv(apostrophe)" + + name[Group1]= "Latvian (ergonomic, ŪGJRMV)"; + + key {[ 2, at, gcedilla, Gcedilla ]}; + + key {[ minus, underscore, endash, emdash ]}; + key {[ f, F, equal, plus ]}; + + key {[ umacron, Umacron, q, Q ]}; + key {[ g, G, g, G ]}; + key {[ j, J, j, J ]}; + key {[ r, R, rcedilla, Rcedilla ]}; + key {[ m, M, m, M ]}; + key {[ v, V, w, W ]}; + key {[ n, N, y, Y ]}; + key {[ z, Z, z, Z ]}; + key {[ emacron, Emacron, emacron, Emacron ]}; + key {[ ccaron, Ccaron, ccaron, Ccaron ]}; + key {[ zcaron, Zcaron, bracketleft, braceleft ]}; + key {[ h, H, bracketright, braceright ]}; + + key {[ scaron, Scaron, scaron, Scaron ]}; + key {[ u, U, u, U ]}; + key {[ s, S, s, S ]}; + key {[ i, I, i, I ]}; + key {[ l, L, l, L ]}; + key {[ d, D, d, D ]}; + key {[ a, A, a, A ]}; + key {[ t, T, t, T ]}; + key {[ e, E, e, E ]}; + key {[ c, C, c, C ]}; + key {[ ISO_Level3_Latch, quotedbl, apostrophe, quotedbl ]}; + key {[ kcedilla, Kcedilla, slash, backslash ]}; + + key {[ gcedilla, Gcedilla, gcedilla, Gcedilla ]}; + key {[ ncedilla, Ncedilla, ncedilla, Ncedilla ]}; + key {[ b, B, x, X ]}; + key {[ imacron, Imacron, imacron, Imacron ]}; + key {[ k, K, k, K ]}; + key {[ p, P, p, P ]}; + key {[ o, O, omacron, Omacron ]}; + key {[ amacron, Amacron, amacron, Amacron ]}; + key {[ comma, semicolon, less, multiply ]}; + key {[ period, colon, greater, division ]}; + key {[ lcedilla, Lcedilla, question, slash ]}; +}; + +// Latvian Modern keyboard layout by Valdis Vītoliņš. +// https://odo.lv/xwiki/bin/download/Recipes/LatvianKeyboard/Modern.png +partial alphanumeric_keys modifier_keys +xkb_symbols "modern" { + + name[Group1]= "Latvian (Modern Latin)"; + + key {[ grave, asciitilde, acute, copyright ]}; + key {[ 1, exclam, onesuperior, exclamdown ]}; + key {[ 2, at, twosuperior, oneeighth ]}; + key {[ 3, numbersign, threesuperior, sterling ]}; + key {[ 4, dollar, EuroSign, cent ]}; + key {[ 5, percent, onehalf, threeeighths ]}; + key {[ 6, asciicircum, threequarters, fiveeighths ]}; + key {[ 7, ampersand, braceleft, seveneighths ]}; + key {[ 8, asterisk, bracketleft, trademark ]}; + key {[ 9, parenleft, bracketright, plusminus ]}; + key {[ 0, parenright, braceright, degree ]}; + key {[ minus, underscore, backslash, questiondown ]}; + key {[ equal, plus, endash, emdash ]}; + + key {[ emacron, Emacron, emacron, Emacron ]}; + key {[ o, O, omacron, Omacron ]}; + key {[ amacron, Amacron, amacron, Amacron ]}; + key {[ p, P, question, P ]}; + key {[ b, B, exclam, B ]}; + key {[ j, J, emdash, J ]}; + key {[ d, D, endash, D ]}; + key {[ imacron, Imacron, imacron, Imacron ]}; + key {[ l, L, lcedilla, Lcedilla ]}; + key {[ g, G, gcedilla, Gcedilla ]}; + key {[ bracketleft, braceleft, guillemotleft, leftdoublequotemark ]}; + key {[ bracketright, braceright, guillemotright, rightdoublequotemark ]}; + + key {[ e, E, e, E ]}; + key {[ u, U, umacron, Umacron ]}; + key {[ a, A, a, A ]}; + key {[ n, N, ncedilla, Ncedilla ]}; + key {[ k, K, kcedilla, Kcedilla ]}; + key {[ ISO_Level3_Latch, quotedbl, apostrophe, quotedbl ]}; + key {[ s, S, scaron, Scaron ]}; + key {[ i, I, i, I ]}; + key {[ t, T, t, T ]}; + key {[ r, R, rcedilla, Rcedilla ]}; + key {[ m, M, m, M ]}; + key {[ slash, question, backslash, bar ]}; + + key {[ q, Q, q, Q ]}; + key {[ x, X, q, Q ]}; + key {[ z, Z, zcaron, Zcaron ]}; + key {[ c, C, ccaron, Ccaron ]}; + key {[ v, V, bar, V ]}; + key {[ w, W, backslash, W ]}; + key {[ f, F, period, F ]}; + key {[ y, Y, U0233, U0232 ]}; + key {[ h, H, U1E29, U1E28 ]}; + key {[ comma, semicolon, less, multiply ]}; + key {[ period, colon, greater, division ]}; + key {[ space, space, apostrophe ]}; + + modifier_map Mod5 { }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "modern-cyr" { + + name[Group1]= "Latvian (Modern Cyrillic)"; + + key {[ grave, asciitilde, acute, copyright ]}; + key {[ 1, exclam, onesuperior, exclamdown ]}; + key {[ 2, at, twosuperior, oneeighth ]}; + key {[ 3, numbersign, threesuperior, sterling ]}; + key {[ 4, dollar, EuroSign, cent ]}; + key {[ 5, percent, onehalf, threeeighths ]}; + key {[ 6, asciicircum, threequarters, fiveeighths ]}; + key {[ 7, ampersand, braceleft, seveneighths ]}; + key {[ 8, asterisk, bracketleft, trademark ]}; + key {[ 9, parenleft, bracketright, plusminus ]}; + key {[ 0, parenright, braceright, degree ]}; + key {[ minus, underscore, backslash, questiondown ]}; + key {[ equal, plus, endash, emdash ]}; + + key {[ U044D, U042D, U0454, U0404 ]}; + key {[ U043E, U041E ]}; + key {[ U044F, U042F, U0458, U0408 ]}; + key {[ U043F, U041F, question ]}; + key {[ U0431, U0411, exclam ]}; + key {[ U0439, U0419, emdash ]}; + key {[ U0434, U0414, U0452, U0402 ]}; + key {[ U0456, U0406, U0457, U0407 ]}; + key {[ U043B, U041B, U0459, U0409 ]}; + key {[ U0433, U0413, U0491, U0490 ]}; + key {[ bracketleft, braceleft, guillemotleft, leftdoublequotemark ]}; + key {[ bracketright, braceright, guillemotright, rightdoublequotemark ]}; + + key {[ U0435, U0415, U0451, U0401 ]}; + key {[ U0443, U0423, U044E, U042E ]}; + key {[ U0430, U0410 ]}; + key {[ U043D, U041D, U045A, U040A ]}; + key {[ U043A, U041A, U045C, U040C ]}; + key {[ ISO_Level3_Latch, quotedbl, apostrophe, quotedbl ]}; + key {[ U0441, U0421, U0448, U0428 ]}; + key {[ U0438, U0418 ]}; + key {[ U0442, U0422, U045B, U040B ]}; + key {[ U0440, U0420, U0453, U0403 ]}; + key {[ U043C, U041C ]}; + key {[ slash, question, backslash, bar ]}; + + key {[ U0457, U0407, U0458, U0408 ]}; + key {[ U044C, U042C, U044A, U042A ]}; + key {[ U0437, U0417, U0436, U0416 ]}; + key {[ U0446, U0426, U0447, U0427 ]}; + key {[ U0432, U0412, U0455, U0405 ]}; + key {[ U0449, U0429, U045F, U040F ]}; + key {[ U0444, U0424, U0301 ]}; + key {[ U044B, U042B, U045E, U040E ]}; + key {[ U0445, U0425, U04BB, U04BA ]}; + key {[ comma, semicolon, less, multiply ]}; + key {[ period, colon, greater, division ]}; + key {[ space, space, apostrophe ]}; + + modifier_map Mod5 { }; + + include "level3(ralt_switch)" +}; + + +// EXTRAS: + +// The US-Dvorak and US-Colemak-compatible layouts were +// added by Aldis Berjoza , April 2011. + +// US Dvorak-compatible Latvian layout +// https://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard +partial alphanumeric_keys modifier_keys +xkb_symbols "dvorak" { + + name[Group1]= "Latvian (Dvorak)"; + + key {[ asciitilde, grave, acute, asciitilde ]}; + key {[ 1, exclam, onesuperior, exclamdown ]}; + key {[ 2, at, twosuperior, oneeighth ]}; + key {[ 3, numbersign, threesuperior, sterling ]}; + key {[ 4, dollar, EuroSign, cent ]}; + key {[ 5, percent, onehalf, threeeighths ]}; + key {[ 6, asciicircum, threequarters, fiveeighths ]}; + key {[ 7, ampersand, braceleft, seveneighths ]}; + key {[ 8, asterisk, bracketleft, trademark ]}; + key {[ 9, parenleft, bracketright, plusminus ]}; + key {[ 0, parenright, braceright, degree ]}; + key {[ bracketleft, braceleft, leftdoublequotemark, guillemotleft ]}; + key {[ bracketright, braceright, rightdoublequotemark, guillemotright ]}; + + key {[ apostrophe, quotedbl, leftdoublequotemark, doublelowquotemark ]}; + key {[ comma, less, guillemotleft, multiply ]}; + key {[ period, greater, guillemotright, division ]}; + key {[ p, P, p, P ]}; + key {[ y, Y, y, Y ]}; + key {[ f, F, f, F ]}; + key {[ g, G, gcedilla, Gcedilla ]}; + key {[ c, C, ccaron, Ccaron ]}; + key {[ r, R, rcedilla, Rcedilla ]}; + key {[ l, L, lcedilla, Lcedilla ]}; + key {[ slash, question, slash, abovedot ]}; + key {[ equal, plus, endash, emdash ]}; + + key {[ a, A, amacron, Amacron ]}; + key {[ o, O, omacron, Omacron ]}; + key {[ e, E, emacron, Emacron ]}; + key {[ u, U, umacron, Umacron ]}; + key {[ i, I, imacron, Imacron ]}; + key {[ d, D, d, D ]}; + key {[ h, H, h, H ]}; + key {[ t, T, t, T ]}; + key {[ n, N, ncedilla, Ncedilla ]}; + key {[ s, S, scaron, Scaron ]}; + key {[ minus, underscore, backslash, questiondown ]}; + + key {[ semicolon, colon, semicolon, colon ]}; + key {[ q, Q, q, Q ]}; + key {[ j, J, j, J ]}; + key {[ k, K, kcedilla, Kcedilla ]}; + key {[ x, X, x, X ]}; + key {[ b, B, b, B ]}; + key {[ m, M, m, M ]}; + key {[ w, W, w, W ]}; + key {[ v, V, v, V ]}; + key {[ z, Z, zcaron, Zcaron ]}; + + key {[ backslash, bar, grave, breve ]}; + + key {[ space, space, space, space ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "ykeydvorak" { + + include "lv(dvorak)" + + name[Group1]= "Latvian (Dvorak, with Y)"; + + key {[ISO_Level3_Latch, ISO_Level3_Latch, y, Y]}; + key {[space, space, y, Y]}; + modifier_map Mod5 { }; +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "minuskeydvorak" { + + include "lv(dvorak)" + + name[Group1]= "Latvian (Dvorak, with minus)"; + + key {[ISO_Level3_Latch, ISO_Level3_Latch, minus, underscore]}; + key {[space, space, minus, underscore]}; + modifier_map Mod5 { }; +}; + +// US Programmer Dvorak-compatible Latvian layout +// https://www.kaufmann.no/roland/dvorak/ +partial alphanumeric_keys modifier_keys +xkb_symbols "dvorakprogr" { + + include "lv(dvorak)" + + name[Group1]= "Latvian (programmer Dvorak)"; + + key {[ dollar, asciitilde, EuroSign, cent ]}; + key {[ ampersand, percent, acute, asciitilde ]}; + key {[ bracketleft, 7, onesuperior, twosuperior ]}; + key {[ braceleft, 5, guillemotleft, leftdoublequotemark ]}; + key {[ braceright, 3, guillemotright, rightdoublequotemark ]}; + key {[ parenleft, 1, onehalf, threeeighths ]}; + key {[ equal, 9, threequarters, fiveeighths ]}; + key {[ asterisk, 0, degree, copyright ]}; + key {[ parenright, 2, endash, emdash ]}; + key {[ plus, 4, plusminus, section ]}; + key {[ bracketright, 6, registered, trademark ]}; + key {[ exclam, 8, exclam, exclamdown ]}; + key {[ numbersign, grave, Greek_alpha, Greek_beta ]}; + + key {[ semicolon, colon, semicolon, colon ]}; + key {[ at, asciicircum, at, asciicircum ]}; + + key {[ apostrophe, quotedbl, leftdoublequotemark, doublelowquotemark ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "ykeydvorakprogr" { + + include "lv(dvorakprogr)" + + name[Group1]= "Latvian (programmer Dvorak, with Y)"; + + key {[ISO_Level3_Latch, ISO_Level3_Latch, y, Y]}; + key {[space, space, y, Y]}; + modifier_map Mod5 { }; +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "minuskeydvorakprogr" { + + include "lv(dvorakprogr)" + + name[Group1]= "Latvian (programmer Dvorak, with minus)"; + + key {[ISO_Level3_Latch, ISO_Level3_Latch, minus, underscore]}; + key {[space, space, minus, underscore]}; + modifier_map Mod5 { }; +}; + +// Colemak-compatible Latvian layout +// https://colemak.com/ +partial alphanumeric_keys modifier_keys +xkb_symbols "colemak" { + + include "lv(basic)" + + name[Group1]= "Latvian (Colemak)"; + + key {[ f, F, f, F ]}; + key {[ p, P, p, P ]}; + key {[ g, G, gcedilla, Gcedilla ]}; + key {[ j, J, j, J ]}; + key {[ l, L, lcedilla, Lcedilla ]}; + key {[ u, U, umacron, Umacron ]}; + key {[ y, Y, y, Y ]}; + key {[ semicolon, colon, semicolon, colon ]}; + + key {[ r, R, rcedilla, Rcedilla ]}; + key {[ s, S, scaron, Scaron ]}; + key {[ t, T, t, T ]}; + key {[ d, D, d, D ]}; + key {[ n, N, ncedilla, Ncedilla ]}; + key {[ e, E, emacron, Emacron ]}; + key {[ i, I, imacron, Imacron ]}; + key {[ o, O, omacron, Omacron ]}; + + key {[ k, K, kcedilla, Kcedilla ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys modifier_keys +xkb_symbols "apostrophecolemak" { + + include "lv(colemak)" + + name[Group1]= "Latvian (Colemak, with apostrophe)"; + + key {[ISO_Level3_Latch, quotedbl, apostrophe, quotedbl]}; + key {[space, space, apostrophe]}; + modifier_map Mod5 { }; +}; + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/lv(sun_type6)" +}; diff --git a/nixos/xkb/symbols/ma b/nixos/xkb/symbols/ma new file mode 100644 index 00000000..4132cf3c --- /dev/null +++ b/nixos/xkb/symbols/ma @@ -0,0 +1,356 @@ +// Keyboard layouts for Morocco. + +// Arabic AZERTY with modern Latin digits +default partial alphanumeric_keys +xkb_symbols "arabic" { + include "ara(azerty)" + + name[Group1]="Arabic (Morocco)"; +}; + +// French AZERTY keyboard used when typing French +partial alphanumeric_keys +xkb_symbols "french" { + include "fr(basic)" + + name[Group1]="French (Morocco)"; +}; + +// Clavier unicode tifinaghe de base réalisé par l'IRCAM (Institut Royal de la Culture Amazighe du Maroc) http://www.ircam.ma/ +// Support des lettres unicode tifinaghe-IRCAM, néotifinaghes & touarègues. +// Les caractères tifinaghes sont accessibles en SHIFT positions pour le niveau 2, en ALTGR positions pour le niveau 3 +// Polices tifinaghes Unicode à télécharger depuis : +// http://www.ircam.ma/documents/policesclavierunicode/hapaxber.ttf (licence non libre, libre téléchargement et distribution uniquement) +// Minihowto ici: http://perso.menara.ma/~kebdani/tamazgha/gnu_amazigh.html + +partial alphanumeric_keys +xkb_symbols "tifinagh" { + + name[Group1]="Berber (Morocco, Tifinagh)"; + + key { [ twosuperior, NoSymbol ] }; + key { [ ampersand, 1 ] }; + key { [ NoSymbol, 2, asciitilde ] }; + key { [ quotedbl, 3, numbersign ] }; + key { [apostrophe, 4, braceleft ] }; + key { [ parenleft, 5, bracketleft ] }; + key { [ minus, 6, bar ] }; + key { [ NoSymbol , 7 ] }; + key { [underscore, 8, backslash ] }; + key { [NoSymbol, 9, asciicircum ] }; + key { [ NoSymbol , 0, at ] }; + key { [parenright, degree, bracketright ] }; + key { [ equal, plus, braceright ] }; + + key { [ 0x1002d30 ] }; + key { [ 0x1002d63, 0x1002d65 ] }; + key { [ 0x1002d3b, NoSymbol,0x10020ac ] }; + key { [ 0x1002d54, 0x1002d55 ] }; + key { [ 0x1002d5c, 0x1002d5f ] }; + key { [ 0x1002d62 ] }; + key { [ 0x1002d53 ] }; + key { [ 0x1002d49 ] }; + key { [ 0x1002d44 ] }; + key { [ 0x1002d43 ] }; + key { [ 0x1002d6f ] }; + key { [ dollar, sterling, currency ] }; + + key { [ 0x1002d47 ] }; + key { [ 0x1002d59, 0x1002d5a ] }; + key { [ 0x1002d37, 0x1002d39 ] }; + key { [ 0x1002d3c ] }; + key { [ 0x1002d33, 0x1002d33] }; + key { [ 0x1002d40 ] }; + key { [ 0x1002d4a ] }; + key { [ 0x1002d3d, 0x1002d3d ] }; + key { [ 0x1002d4d ] }; + key { [ 0x1002d4e ] }; + key { [ NoSymbol , percent ] }; + key { [ asterisk, mu ] }; + + key { [ 0x1002d61 ] }; + key { [ 0x1002d45 ] }; + key { [ 0x1002d5b ] }; + key { [ 0x1002d56 ] }; + key { [ 0x1002d31 ] }; + key { [ 0x1002d4f ] }; + key { [ comma, question ] }; + key { [ semicolon, period ] }; + key { [ colon, slash ] }; + key { [ exclam, section ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "tifinagh-phonetic" { + + include "ma(tifinagh)" + + name[Group1]="Berber (Morocco, Tifinagh phonetic)"; + + key {[ U2d30 ]}; + key {[ U2d63, U2d65 ]}; + key {[ U2d3b, any, U20ac ]}; + key {[ U2d54, U2d55 ]}; + key {[ U2d5c, U2d5f ]}; + key {[ U2d62 ]}; + key {[ U2d53 ]}; + key {[ U2d49 ]}; + key {[ U2d44 ]}; + key {[ U2d43 ]}; + + key {[ U2d47 ]}; + key {[ U2d59, U2d5a ]}; + key {[ U2d37, U2d39 ]}; + key {[ U2d3c ]}; + key {[ U2d33 ]}; + key {[ U2d40 ]}; + key {[ U2d4a ]}; + key {[ U2d3d ]}; + key {[ U2d4d ]}; + key {[ U2d4e ]}; + + key {[ U2d61, U2d6f ]}; + key {[ U2d45 ]}; + key {[ U2d5b ]}; + key {[ U2d56 ]}; + key {[ U2d31 ]}; + key {[ U2d4f ]}; + + include "level3(ralt_switch)" +}; + +// Clavier unicode tifinaghe étendu réalisé par l'IRCAM (Institut Royal de la Culture Amazighe du Maroc) http://www.ircam.ma/ +// Support des lettres unicode tifinaghe-IRCAM, néotifinaghes & touarègues. +// Les caractères tifinaghes sont accessibles en SHIFT positions pour le niveau 2, en ALTGR positions pour le niveau 3 +// Polices tifinaghes Unicode à télécharger depuis : +// http://www.ircam.ma/documents/policesclavierunicode/hapaxber.ttf (licence non libre, libre téléchargement et distribution uniquement) +// Minihowto ici: http://perso.menara.ma/~kebdani/tamazgha/gnu_amazigh.html + +partial alphanumeric_keys +xkb_symbols "tifinagh-extended" { + + name[Group1]="Berber (Morocco, Tifinagh extended)"; + + key { [ twosuperior,0x100200C ] }; + key { [ ampersand, 1 ] }; + key { [0x1002d52, 2, asciitilde ] }; + key { [ quotedbl, 3, numbersign ] }; + key { [apostrophe, 4, braceleft ] }; + key { [ parenleft, 5, bracketleft ] }; + key { [ minus, 6, bar ] }; + key { [ 0x1002d64 , 7 ] }; + key { [underscore, 8, backslash ] }; + key { [ 0x1002014, 9, asciicircum ] }; + key { [ 0x100200d, 0, at ] }; + key { [parenright, degree, bracketright ] }; + key { [ equal, plus, braceright ] }; + + key { [ 0x1002d30, 0x1002d36 ] }; + key { [ 0x1002d63, 0x1002d65 ] }; + key { [ 0x1002d3b, 0x1002d57, 0x10020ac ] }; + key { [ 0x1002d54, 0x1002d55 ] }; + key { [ 0x1002d5c, 0x1002d5f ] }; + key { [ 0x1002d62, 0x1002d42 ] }; + key { [ 0x1002d53, 0x1002d4c ] }; + key { [ 0x1002d49, 0x1002d58 ] }; + key { [ 0x1002d44, 0x1002d5d ] }; + key { [ 0x1002d43, 0x1002d5e ] }; + key { [ 0x1002d6f, 0x1002d60 ] }; + key { [ dollar, sterling, currency ] }; + + key { [ 0x1002d47, 0x1002d48 ] }; + key { [ 0x1002d59, 0x1002d5a ] }; + key { [ 0x1002d37, 0x1002d39 ] }; + key { [ 0x1002d3c, 0x1002d35 ] }; + key { [ 0x1002d33, 0x1002d33 ] }; + key { [ 0x1002d40, 0x1002d41 ] }; + key { [ 0x1002d4a, 0x1002d4b ] }; + key { [ 0x1002d3d, 0x1002d3d ] }; + key { [ 0x1002d4d, 0x1002d38 ] }; + key { [ 0x1002d4e, 0x1002d3a ] }; + key { [ 0x1002d51, percent ] }; + key { [ asterisk, mu ] }; + + key { [ 0x1002d61, 0x1002d3e ] }; + key { [ 0x1002d45, 0x1002d46 ] }; + key { [ 0x1002d5b, 0x1002d3f ] }; + key { [ 0x1002d56, 0x1002d34 ] }; + key { [ 0x1002d31, 0x1002d32 ] }; + key { [ 0x1002d4f, 0x1002d50 ] }; + key { [ comma, question ] }; + key { [ semicolon, period ] }; + key { [ colon, slash ] }; + key { [ exclam, section ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "tifinagh-extended-phonetic" { + + include "ma(tifinagh-extended)" + + name[Group1]="Berber (Morocco, Tifinagh extended phonetic)"; + + key {[ U2d30 ]}; + key {[ U2d63, U2d65 ]}; + key {[ U2d3b, any, U20ac ]}; + key {[ U2d54, U2d55 ]}; + key {[ U2d5c, U2d5f ]}; + key {[ U2d62 ]}; + key {[ U2d53 ]}; + key {[ U2d49 ]}; + key {[ U2d44 ]}; + key {[ U2d43 ]}; + + key {[ U2d47 ]}; + key {[ U2d59, U2d5a ]}; + key {[ U2d37, U2d39 ]}; + key {[ U2d3c ]}; + key {[ U2d33 ]}; + key {[ U2d40 ]}; + key {[ U2d4a ]}; + key {[ U2d3d ]}; + key {[ U2d4d ]}; + key {[ U2d4e ]}; + + key {[ U2d61 ]}; + key {[ U2d45 ]}; + key {[ U2d5b ]}; + key {[ U2d56 ]}; + key {[ U2d31 ]}; + key {[ U2d4f ]}; + + include "level3(ralt_switch)" +}; + +// Tifinagh keyboard; improved from the IRCAM layout to make all +// tifinagh chars in unicode accessible (in shift positions for most +// touareg letters; in altgr position for spirants. + +partial alphanumeric_keys +xkb_symbols "tifinagh-alt" { + + name[Group1]="Berber (Morocco, Tifinagh alt.)"; + + key { [ twosuperior, asciitilde ] }; + key { [ ampersand, 1 ] }; + key { [asciitilde, 2, asciitilde ] }; + key { [ quotedbl, 3, numbersign ] }; + key { [apostrophe, 4, braceleft ] }; + key { [ parenleft, 5, bracketleft ] }; + key { [ minus, 6, bar ] }; + key { [ grave, 7, grave ] }; + key { [underscore, 8, backslash ] }; + key { [asciicircum, 9, asciicircum ] }; + key { [ at, 0, at ] }; + key { [parenright, degree, bracketright ] }; + key { [ equal, plus, braceright ] }; + + key { [ 0x1002d30 ] }; + key { [ 0x1002d63, 0x1002d65, 0x1002d64 ] }; + key { [ 0x1002d3b ] }; + key { [ 0x1002d54, 0x1002d55 ] }; + key { [ 0x1002d5c, 0x1002d5f, 0x1002d5d ] }; + key { [ 0x1002d62 ] }; + key { [ 0x1002d53 ] }; + key { [ 0x1002d49 ] }; + key { [ 0x1002d44 ] }; + key { [ 0x1002d43, 0x1002d52 ] }; + key { [ dead_circumflex ] }; + key { [ dollar, sterling ] }; + + key { [ 0x1002d47, 0x1002d48 ] }; + key { [ 0x1002d59, 0x1002d5a ] }; + key { [ 0x1002d37, 0x1002d39, 0x1002d38, 0x1002d3a ] }; + key { [ 0x1002d3c ] }; + key { [ 0x1002d33, 0x1002d36, 0x1002d34, 0x1002d35 ] }; + key { [ 0x1002d40, 0x1002d42, 0x1002d41 ] }; + key { [ 0x1002d4a, 0x1002d4c, 0x1002d4b ] }; + key { [ 0x1002d3d, 0x1002d3e, 0x1002d3f ] }; + key { [ 0x1002d4d ] }; + key { [ 0x1002d4e ] }; + key { [ percent ] }; + key { [ asterisk, mu ] }; + + key { [ 0x1002d61, 0x1002d6f, 0x1002d60 ] }; + key { [ 0x1002d45, 0x1002d46 ] }; + key { [ 0x1002d5b, 0x1002d5e ] }; + key { [ 0x1002d56, 0x1002d57, 0x1002d58 ] }; + key { [ 0x1002d31, 0x1002d31, 0x1002d32 ] }; + key { [ 0x1002d4f, 0x1002d50, 0x1002d51 ] }; + key { [ comma, question ] }; + key { [ semicolon, period ] }; + key { [ colon, slash ] }; + key { [ exclam, section ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "tifinagh-alt-phonetic" { + + include "ma(tifinagh-alt)" + + name[Group1]="Berber (Morocco, Tifinagh phonetic, alt.)"; + + key {[ U2d30 ]}; + key {[ U2d63, U2d65, U2d64 ]}; + key {[ U2d3b ]}; + key {[ U2d54, U2d55 ]}; + key {[ U2d5c, U2d5f, U2d5d ]}; + key {[ U2d62 ]}; + key {[ U2d53 ]}; + key {[ U2d49 ]}; + key {[ U2d44 ]}; + key {[ U2d43, U2d52 ]}; + + key {[ U2d47, U2d48 ]}; + key {[ U2d59, U2d5a ]}; + key {[ U2d37, U2d39, U2d38, U2d3a ]}; + key {[ U2d3c ]}; + key {[ U2d33, U2d36, U2d34, U2d35 ]}; + key {[ U2d40, U2d42, U2d41 ]}; + key {[ U2d4a, U2d4c, U2d4b ]}; + key {[ U2d3d, U2d3e, U2d3f ]}; + key {[ U2d4d ]}; + key {[ U2d4e ]}; + + key {[ U2d61, U2d6f, U2d60 ]}; + key {[ U2d45, U2d46 ]}; + key {[ U2d5b, U2d5e ]}; + key {[ U2d56, U2d57, U2d58 ]}; + key {[ U2d31, U2d31, U2d32 ]}; + key {[ U2d4f, U2d50, U2d51 ]}; + + include "level3(ralt_switch)" +}; + +// Latin Tarifit keyboard. Used by the riffian community +// Tarifit characters are accessed using ALTGR + + +partial alphanumeric_keys +xkb_symbols "rif" { + // Tarifit keyboard (QWERTY varient) + // By Ilyahoo Proshel 2021 + // Only "ʷ ɛ ṭ ḍ γ ḥ ẓ ṣ" are supported by Rif Community. + + include "us" + + name[Group1]= "Tarifit"; + + key {[ w, W, U02B7 ]}; // ʷ + key {[ e, E, U025B, U0190 ]}; // e E ɛ Ɛ + key {[ t, T, U1E6D, U1E6C ]}; // t T ṭ Ṭ + key {[ s, S, U1E63, U1E62 ]}; // s S ṣ Ṣ + key {[ d, D, U1E0D, U1E0C ]}; // d D ḍ Ḍ + key {[ g, G, U0263, U0194 ]}; // g G ɣ Ɣ + key {[ h, H, U1E25, U1E24 ]}; // h H ḥ Ḥ + key {[ z, Z, U1E93, U1E92 ]}; // z Z ẓ Ẓ + + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/apple b/nixos/xkb/symbols/macintosh_vndr/apple new file mode 100644 index 00000000..d3f2d1b9 --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/apple @@ -0,0 +1,151 @@ +// +// Keyboard modification for Apple keyboards +// + +default partial modifier_keys +xkb_symbols "extended" { + + key { [ KP_Equal ] }; + +// The key in the PC's Insert position is sometimes engraved Help (at least +// in Switzerland and Great Britain), with Insert sometimes above. But in the +// US and Canada, it remains Insert. So this should probably be an XkbOption, +// but I have to do more research. +// Perhaps Help should be the primary symbol with Insert in the 1st shift-level +// key { [ Help, Insert ] }; +// The keys next to F12, labeled F13, F14, & F15 generate codes that XFree86 +// claims not to generate. I think they should be equivalent to the PC keys +// Print Screen / SysRq, Scroll Lock, and Pause. Linux kernel bug? +// key { [ F13 ] }; // should be keycode 93 or +// key { [ F13 ] }; // should be keycode 118 +// key { [ F14 ] }; // should be keycode 123 or +// key { [ F14 ] }; // should be keycode 119 +// key { [ F15 ] }; // should be keycode 127 or +// key { [ F15 ] }; // should be keycode 120 +}; + +partial modifier_keys +xkb_symbols "laptop" { + + include "macintosh_vndr/apple(extended)" + + // The real numlock key on the iBook (shared with F5) works internally to + // the keyboard. It illuminates the Num_Lock led and locks the fn-key to + // type only the keypad keys on the letter keys (U=4, I=5, O=6, P=*, etc.). + // The key in the Num_lock position is engraved with Clear. + override key { [ Clear ] }; + // The key engraved Delete sends BKSP. To get Delete, use Shift-Delete + override key { [ BackSpace, Delete ] }; + // These keyboards only generate a when pressing fn+Alt. This makes + // it impossible to get to the third shift level on keys that are on + // the fn-keypad, so use the Enter key (right of ) for Mode_switch, + // and use fn+Enter (Apple's code for Menu) for KP_Enter. + replace key { [ ISO_Level3_Shift ] }; + modifier_map Mod5 { ISO_Level3_Shift }; + // Linux kernel bug with Menu on macs means this does not work yet +// replace key { [ KP_Enter ] }; // should be keycode 117 +}; + +partial modifier_keys +xkb_symbols "laptop_bad_switch" { + // Kept for backward compatibility + include "macintosh_vndr/apple(laptop)" +}; + +// Long Aluminium Keyboards +partial function_keys +xkb_symbols "alukbd" { + // The base is a inet PC keyboard + include "pc" + + // Additional Fxx keys + key { [ F13 ] }; + key { [ F14 ] }; + key { [ F15 ] }; + key { [ F16 ] }; + key { [ F17 ] }; + key { [ F18 ] }; + key { [ F19 ] }; + + // On aluminium keyboards, Num_Lock is replace by Clear + replace key { [ Clear ] }; + // CAPS key is always Caps_Lock, even for JIS keyboards + replace key { [ Caps_Lock ] }; + + // F1..F12 are multimedia keys when used with the 'Fn' key + // Make those multimedia actions available via ISO_Level3_Shift too, + // it is useful when the Fn key is remapped to something else (e.g. Insert) + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86KbdBrightnessDown, NoSymbol, XF86_Switch_VT_1 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86KbdBrightnessUp, NoSymbol, XF86_Switch_VT_2 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_3 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_4 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_5 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_6 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioPrev, NoSymbol, XF86_Switch_VT_7 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioPlay, NoSymbol, XF86_Switch_VT_8 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioNext, NoSymbol, XF86_Switch_VT_9 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioMute, NoSymbol, XF86_Switch_VT_10 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioLowerVolume, NoSymbol, XF86_Switch_VT_11 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioRaiseVolume, NoSymbol, XF86_Switch_VT_12 ] + }; +}; + +// Aluminium Keyboard: make F13, F14, F15 PC-ish (Print, Scroll_Lock, Pause) +partial function_keys keypad_keys +xkb_symbols "alupckeys" { + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { [ Scroll_Lock ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + override key { [ Num_Lock, Pointer_EnableKeys ] }; +}; + +partial +xkb_symbols "jp_oadg109a" { + replace key { [ backslash, underscore ] }; +}; + +partial +xkb_symbols "jp_pc106" { + replace key { [ backslash, bar ] }; +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/ch b/nixos/xkb/symbols/macintosh_vndr/ch new file mode 100644 index 00000000..b127123a --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/ch @@ -0,0 +1,96 @@ +// +// 03.01.2003 +// Andreas Tobler +// modified for Swiss German Apple Extended Keyboard II + +default +partial alphanumeric_keys +xkb_symbols "extended" { + + name[Group1]= "Switzerland - German, Mac"; + + key { [ 1, plus, plusminus, infinity ] }; + key { [ 2, quotedbl, leftdoublequotemark, rightdoublequotemark ] }; + key { [ 3, asterisk, numbersign, less ] }; + key { [ 4, ccedilla, Ccedilla, slash ] }; + key { [ 5, percent, bracketleft ] }; + key { [ 6, ampersand, bracketright ] }; + key { [ 7, slash, bar, backslash ] }; + key { [ 8, parenleft, braceleft, Ograve ] }; + key { [ 9, parenright, braceright, Ocircumflex ] }; + key { [ 0, equal, notequal, Uacute ] }; + key { [ apostrophe, question, questiondown, NoSymbol ] }; + key { [ dead_circumflex,dead_grave, dead_acute, asciicircum ] }; + key { [ q, Q, oe, OE ] }; + key { [ w, W, Greek_SIGMA, Aacute ] }; + key { [ e, E, EuroSign, Ediaeresis ] }; + key { [ r, R, registered, Egrave ] }; + key { [ t, T, dagger, Icircumflex ] }; + key { [ z, Z, Greek_OMEGA, Iacute ] }; + key { [ u, U, degree, Ugrave ] }; + key { [ i, I, exclamdown, idotless ] }; + key { [ o, O, oslash, Oslash ] }; + key { [ p, P, Greek_pi, Greek_PI ] }; + key { [ udiaeresis, egrave, section, ydiaeresis ] }; + key { [ dead_diaeresis, exclam, grave, apostrophe ] }; + key { [ a, A, aring, Aring ] }; + key { [ s, S, ssharp, U1E9E ] }; + // ligature fl + key { [ d, D, Greek_sigma, NoSymbol ] }; + // partialderivative is not available here att + key { [ f, F, function, doubledagger ] }; + key { [ g, G, at, comma ] }; + key { [ h, H, ordfeminine, periodcentered ] }; + key { [ j, J, masculine, eth ] }; + key { [ k, K, Greek_DELTA, macron ] }; + key { [ l, L, notsign, caret ] }; + key { [ odiaeresis, eacute, cent, breve ] }; + key { [ adiaeresis, agrave, ae, AE ] }; + key { [ y, Y, yen, Ydiaeresis ] }; + key { [ x, X, similarequal, trademark ] }; + key { [ c, C, copyright, NoSymbol ] }; + key { [ v, V, radical, diamond ] }; + key { [ b, B, integral, NoSymbol ] }; + key { [ n, N, dead_tilde, enopencircbullet ] }; + // to be fixed att + key { [ m, M, mu, dead_abovering ] }; + // not sure att + key { [ comma, semicolon, guillemotleft, guillemotright ] }; + key { [ period, colon, ellipsis, division ] }; + key { [ minus, underscore, hyphen, emdash ] }; + key { [ section, degree, NoSymbol, NoSymbol ] }; + // ligature fi // per mille + key { [ space, nobreakspace, nobreakspace ] }; + key { [ less, greater, lessthanequal, greaterthanequal ] }; + key { [ dollar, sterling, paragraph, enfilledcircbullet ] }; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "de" { + include "macintosh_vndr/ch(extended)" +}; + +partial alphanumeric_keys +xkb_symbols "fr" { + + include "macintosh_vndr/ch(extended)" + name[Group1]= "Switzerland - French, Mac"; + + override key { + [ egrave, udiaeresis, bracketleft ] + }; + override key { + [ eacute, odiaeresis ] + }; + override key { + [ agrave, adiaeresis, braceleft ] + }; +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + include "macintosh_vndr/ch(fr)" // for consistent naming +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/de b/nixos/xkb/symbols/macintosh_vndr/de new file mode 100644 index 00000000..34c6af13 --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/de @@ -0,0 +1,94 @@ +// olh@suse.de very close to MacOS map + +default partial alphanumeric_keys +xkb_symbols "basic" { + + // Describes the differences between a very simple US/ASCII + // keyboard and a simple German keyboard. + + include "latin" + name[Group1]= "Germany - Mac"; + + key { [ dead_circumflex, degree, notsign ] }; + key { [ 1, exclam, exclamdown, at ] }; + key { [ 2, quotedbl, twosuperior ] }; + key { [ 3, section, threesuperior,sterling ] }; + key { [ 4, dollar, onequarter, currency ] }; + key { [ 5, percent, bracketleft ] }; + key { [ 6, ampersand, bracketright ] }; + key { [ 7, slash, bar, backslash ] }; + key { [ 8, parenleft, braceleft, asciitilde ] }; + key { [ 9, parenright, braceright ] }; + key { [ 0, equal, braceright, degree ] }; + key { [ ssharp, question, backslash, questiondown ] }; + key { [ dead_acute, dead_grave, dead_cedilla ] }; + + key { [ q, Q, guillemotleft,guillemotright ] }; + key { [ e, E, EuroSign ] }; + key { [ r, R, registered ] }; + key { [ t, T ] }; + key { [ z, Z ] }; + key { [ u, U, diaeresis, Aacute ] }; + key { [ i, I, slash, Ucircumflex ] }; + key { [ o, O, oslash, Oslash ] }; + key { [ udiaeresis, Udiaeresis, periodcentered, degree ] }; + key { [ plus, asterisk, asciitilde ] }; + key { [ a, A, aring, Aring ] }; + key { [ f, F ] }; + key { [ g, G, copyright ] }; + key { [ h, H, ordfeminine ] }; + key { [ l, L, at ] }; + key { [ odiaeresis, Odiaeresis, dead_acute ] }; + key { [ adiaeresis, Adiaeresis, dead_circumflex ] }; + + key { [ less, greater, bar ] }; + key { [ y, Y, guillemotleft, less ] }; + key { [ v, V, doublelowquotemark, leftsinglequotemark ] }; + key { [ b, B, rightdoublequotemark, leftdoublequotemark ] }; + key { [ n, N, asciitilde ] }; + key { [ m, M, mu ] }; + key { [ comma, semicolon ] }; + key { [ period, colon, periodcentered, division ] }; + key { [ minus, underscore ] }; + key { [ numbersign, apostrophe, dead_grave ] }; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "Sundeadkeys" { + // modify the default German layout to use Sun dead keys + include "macintosh_vndr/de(basic)" + name[Group1]= "Germany - Mac, Sun dead keys"; + + key {[ dead_circumflex, degree, notsign ]}; + key {[ dead_acute, dead_grave, dead_cedilla ]}; + key {[ udiaeresis, Udiaeresis, dead_diaeresis ]}; + key {[ plus, asterisk, dead_tilde, dead_macron ]}; + key {[ odiaeresis, Odiaeresis, dead_acute ]}; + key {[ adiaeresis, Adiaeresis, dead_circumflex ]}; + + key {[ numbersign, acute, dead_grave ]}; +}; + +partial alphanumeric_keys +xkb_symbols "sundeadkeys" { + include "macintosh_vndr/de(Sundeadkeys)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + // modify the default German layout to not have any dead keys + include "macintosh_vndr/de(basic)" + name[Group1]= "Germany - Mac, no dead keys"; + + key { [ asciicircum, degree, notsign ] }; + key { [ acute, grave, cedilla ] }; + key { [ udiaeresis, Udiaeresis, diaeresis ] }; + key { [ plus, asterisk, asciitilde, macron ] }; + key { [ odiaeresis, Odiaeresis, acute ] }; + key { [ adiaeresis, Adiaeresis, asciicircum ] }; + + key { [ numbersign, apostrophe, grave ] }; +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/dk b/nixos/xkb/symbols/macintosh_vndr/dk new file mode 100644 index 00000000..cdff44fb --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/dk @@ -0,0 +1,66 @@ +default partial alphanumeric_keys +xkb_symbols "basic" { + + // Describes the differences between a very simple en_US + // keyboard and a Danish keyboard with dead key support + // and all of ISO-8859-1 characters available. + + include "latin" + name[Group1]= "Denmark - Mac"; + + key { [ onehalf, section, threequarters, paragraph ]}; + key { [ less, greater, backslash, notsign ]}; + key { [ space, space, nobreakspace, nobreakspace ]}; + key { [ 1, exclam, exclamdown, onesuperior ]}; + key { [ 2, quotedbl, at, twosuperior ]}; + key { [ 3, numbersign, sterling, threesuperior ]}; + key { [ 4, EuroSign, dollar, onequarter ]}; + key { [ 5, percent, NoSymbol, cent ]}; + key { [ 6, ampersand, yen, NoSymbol ]}; + key { [ 7, slash, braceleft, division ]}; + key { [ 8, parenleft, bracketleft, guillemotleft ]}; + key { [ 9, parenright, bracketright, guillemotright ]}; + key { [ 0, equal, braceright, degree ]}; + key { [ plus, question, plusminus, questiondown ]}; + key { [ dead_acute, dead_grave, bar, brokenbar ]}; + key { [ c, C, copyright, NoSymbol ]}; + key { [ comma, semicolon, dead_cedilla, dead_ogonek ]}; + key { [ period, colon, periodcentered, dead_abovedot ]}; + key { [ minus, underscore, hyphen, macron ]}; + key { [ a, A, ordfeminine, masculine ]}; + key { [ d, D, eth, ETH ]}; + key { [ ae, AE ]}; + key { [ oslash, Oslash ]}; + key { [ e, E, EuroSign, cent ]}; + key { [ r, R, registered, NoSymbol ]}; + key { [ t, T, thorn, THORN ]}; + key { [ i, I, NoSymbol, NoSymbol ]}; + key { [ o, O, oe, OE ]}; + key { [ aring, Aring ]}; + key { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ]}; + key { [ apostrophe, asterisk, dead_doubleacute, multiply ]}; + + include "eurosign(e)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + include "macintosh_vndr/dk(basic)" + name[Group1]= "Denmark - Mac, no dead keys"; + + key { [ acute, grave, bar, ogonek ] }; + key { [ diaeresis, asciicircum, asciitilde, dead_macron ] }; +}; + +partial alphanumeric_keys +xkb_symbols "macbookpro" { + + include "level3(win_switch)" + include "macintosh_vndr/dk(basic)" + + name[Group1]= "Denmark - Mac, MacBook Pro"; + + key { [apostrophe, asterisk, at, at ] }; + key { [ dollar, section, dollar, dollar ] }; +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/fi b/nixos/xkb/symbols/macintosh_vndr/fi new file mode 100644 index 00000000..fee2601e --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/fi @@ -0,0 +1,11 @@ +default partial alphanumeric_keys +xkb_symbols "basic" { + include "macintosh_vndr/se(basic)" // for consistent naming + name[Group1]= "Finland - Mac"; +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + include "macintosh_vndr/se(basic)" // for consistent naming + name[Group1]= "Finland - Mac, no dead keys"; +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/fr b/nixos/xkb/symbols/macintosh_vndr/fr new file mode 100644 index 00000000..c2e38875 --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/fr @@ -0,0 +1,102 @@ +// Marc.Shapiro@inria.fr 19-sep-1998 +// modifications : Etienne Herlent june 2000 +// adapted to the new input layer : +// Martin Costabel 3-jan-2001 +////////////////////////////////////////////////////////////////// +// Petites Modification le juillet 2005 par Bin Zhang : +// 1) La ligne 83 : remplacer les deux "VoidSymbol" par oe et OE +// 2) La ligne 89 : remplacer "VoidSymbol" par "EuroSign" +// ( 1) et 2) fonctionnent sous UTF-8, mais pas sous iso-8859-1. ) +// 3) Remplacer la ligne 148 par la ligne 149 pour que la touche Alt_L +// (la touche Apple-Pomme) fonctionne correctement sous Xorg, une idée +// motivée par http://www.linux-france.org/macintosh/clavier_gentoo.html +////////////////////////////////////////////////////////////////// +// This map is an almost-complete mapping of the standard French +// MacIntosh keyboard under Xwindows. I tried to remain as faithful +// as possible to the Mac meaning of each key. I did this entirely by +// hand and by intuition, relying on the Clavier (Keyboard?) Desktop +// Accessory for the Mac meaning of keys, and on reading keysymdef.h +// to intuit the corresponding X names. Lacking proper documentation, +// I may have made some mistakes. + +// Entries marked CHECK are particularly uncertain + +// Entries marked MISSING mark Mac characters for which I was unable +// to find a corresponding keysym. (Some for sure don't: e.g. the +// Apple mark and the oe/OE character; others I may have simply not +// found.) + +default +xkb_symbols "extended" { + + name[Group1]= "France - Mac"; + + key { [ at, numbersign, periodcentered, ydiaeresis ] }; + key { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple + key { [ eacute, 2, ediaeresis, Eacute ] }; + key { [ quotedbl, 3, leftdoublequotemark, rightdoublequotemark ] }; + key { [ apostrophe, 4, leftsinglequotemark, rightsinglequotemark ] }; + key { [ parenleft, 5, braceleft, bracketleft ] }; + key { [ section, 6, paragraph, aring ] }; + key { [ egrave, 7, guillemotleft, guillemotright] }; + key { [ exclam, 8, exclamdown, Ucircumflex ] }; + key { [ ccedilla, 9, Ccedilla, Aacute ] }; + key { [ agrave, 0, oslash, Oslash ] }; + key { [ parenright, degree, braceright, bracketright ] }; + key { [ minus, underscore, emdash, endash ] }; + + key { [ a, A, ae, AE ] }; + key { [ z, Z, Acircumflex, Aring ] }; + key { [ e, E, ecircumflex, Ecircumflex ] }; + key { [ r, R, registered, currency ] }; + key { [ t, T, dagger, trademark ] }; + key { [ y, Y, Uacute, Ydiaeresis ] }; + key { [ u, U, masculine, ordfeminine ] }; + key { [ i, I, icircumflex, idiaeresis ] }; + key { [ o, O, oe, OE ] }; + key { [ p, P, Greek_pi, Greek_PI ] }; + key { [dead_circumflex,dead_diaeresis,ocircumflex, Ocircumflex ] }; + key { [ dollar, asterisk, EuroSign, yen ] }; + + key { [ q, Q, doubledagger, Greek_OMEGA ] }; + key { [ s, S, Ograve, Greek_SIGMA ] }; + key { [ d, D, Greek_delta, Greek_DELTA ] }; + key { [ f, F, U0192, periodcentered ] }; // ƒ · + key { [ g, G, UFB01, UFB02 ] }; // fi fl + key { [ h, H, Igrave, Icircumflex ] }; + key { [ j, J, Idiaeresis, Iacute ] }; + key { [ k, K, Egrave, Ediaeresis ] }; + key { [ l, L, notsign, bar ] }; + key { [ m, M, mu, Oacute ] }; + key { [ ugrave, percent, Ugrave, permille ] }; + key { [ dead_grave, sterling, at, numbersign ] }; + + key { [ less, greater, lessthanequal, greaterthanequal] }; + key { [ w, W, U2039, U203A ] }; // ‹ › + key { [ x, X, similarequal, U2044 ] }; // ≃ ⁄ + key { [ c, C, copyright, cent ] }; + key { [ v, V, diamond, radical ] }; // CHECK diamond + key { [ b, B, ssharp, integral ] }; + key { [ n, N, dead_tilde, asciitilde ] }; + key { [ comma, question, infinity, questiondown ] }; + key { [ semicolon, period, ellipsis, periodcentered ] }; + key { [ colon, slash, division, backslash ] }; + key { [ equal, plus, notequal, plusminus ] }; + + key { [ space, space, nobreakspace, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + + + +xkb_symbols "nodeadkeys" { +include "macintosh_vndr/fr(extended)" + name[Group1]= "France - Mac, no dead keys"; + + key { [ ampersand, 1, VoidSymbol, acute ] }; // MISSING: Apple + key { [asciicircum,diaeresis,ocircumflex, Ocircumflex ] }; + key { [ grave, sterling, at, numbersign ] }; + + key { [ n, N, asciitilde, dead_tilde ] }; +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/gb b/nixos/xkb/symbols/macintosh_vndr/gb new file mode 100644 index 00000000..5ba10500 --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/gb @@ -0,0 +1,17 @@ +default partial alphanumeric_keys +xkb_symbols "basic" { + + // Describes the differences between a very simple en_US + // keyboard and a very simple U.K. keyboard layout + + include "macintosh_vndr/us" + + name[Group1]= "United Kingdom - Mac"; + + key { [ 2, at, EuroSign ] }; + key { [ 3, sterling, numbersign ] }; + key { [ section, plusminus ] }; + key { [ grave, asciitilde ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/is b/nixos/xkb/symbols/macintosh_vndr/is new file mode 100644 index 00000000..a30c8a66 --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/is @@ -0,0 +1,127 @@ +// +// This file describes the differences between a Macintosh US Extended +// keymap and an Icelandic keyboard layout in the style of Mac OS and Mac OS X +// +// Copyright (C) 2004, 2006 Ævar Arnfjörð Bjarmason +// +// Permission to use, copy, modify, distribute, and sell this software and its +// documentation for any purpose is hereby granted without fee, provided that +// the above copyright notice appear in all copies and that both that +// copyright notice and this permission notice appear in supporting +// documentation. +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder shall +// not be used in advertising or otherwise to promote the sale, use or +// other dealings in this Software without prior written authorization of +// the copyright holder. +// +// = HISTORY +// * 2004-09-28: +// Initial cleanroom writing of the keymap, I just booted Mac OS X, opened +// TextEdit.app and wrote down what the value produced by each key was when I +// pressed it, a for a, A for shift + a, å for lalt + a etc and made the +// keymap from that information +// +// * 2006-01-14: +// Revised the comments in the file +// +// = NOTES +// * 20 characters in this keymap have no named character defined in +// include/keysymdef.h and as a result their Unicode code points in +// hexadecimal are listed here, these can be generated with the following +// perl command: +// $ perl -CA -e 'printf "U%x\n", ord shift' Æ +// and converted back like: +// $ perl -CO -le '$_=shift;s/[^a-f0-9]//ig;print chr hex' Uc6 +// * The Apple logo appears twice on this keymap like the Mac OS and Mac OS X +// keymaps. In the MacRoman encoding it has the code point 0xF0 (240) but it +// has no assigned code point in Unicode, the code point Apple uses for it is +// U+F8FF (63743) which is in the BMP's Private Use Area (U+E000–U+F8FF) +// * This keymap has only been tested on a PowerBook6,5 (iBook G4) but it +// should work on other Apple laptop models which use the same keyboard +// layout. It will probably work on standard sized keyboards with little or +// no modification but it might not support them fully, please report if +// you're able to get it running with such a keyboard + +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Iceland - Mac"; + + //-- Row 5 (E) --// + key { [ sterling, section, UF8FF, apostrophe ] }; + key { [ 1, exclam, exclamdown, VoidSymbol ] }; + key { [ 2, quotedbl, at, VoidSymbol ] }; + key { [ 3, numbersign, U2122, sterling ] }; + key { [ 4, dollar, U00A2, EuroSign ] }; + key { [ 5, percent, permille, infinity ] }; + key { [ 6, ampersand, asciicircum, U2044 ] }; + key { [ 7, slash, backslash, U00F7 ] }; + key { [ 8, parenleft, bracketleft, braceleft ] }; + key { [ 9, parenright, bracketright, braceright ] }; + key { [ 0, equal, U2260, U2248 ] }; + key { [ odiaeresis, Odiaeresis, oslash, Oslash ] }; + key { [ minus, underscore, endash, emdash ] }; + + + //-- Row 4 (D) --// + key { [ q, Q, paragraph, VoidSymbol ] }; + key { [ w, W, U2211, VoidSymbol ] }; + key { [ e, E, dead_grave, VoidSymbol ] }; + key { [ r, R, registered, VoidSymbol ] }; + key { [ t, T, degree, VoidSymbol ] }; + key { [ y, Y, yen, VoidSymbol ] }; + key { [ u, U, dead_diaeresis, VoidSymbol ] }; + key { [ i, I, U0131, U00AA ] }; + key { [ o, O, dead_circumflex,U00BA ] }; + key { [ p, P, Greek_pi, Greek_PI ] }; + key { [ eth, ETH, U201e, U201c ] }; + key { [ apostrophe, question, questiondown, U00B7 ] }; + + + //-- Row 3 (C) --// + key { [ a, A, aring, Aring ] }; + key { [ s, S, ssharp, abovedot ] }; + key { [ d, D, U2202, U2DA ] }; + key { [ f, F, U192, macron ] }; + key { [ g, G, copyright, breve ] }; + key { [ h, H, bar, VoidSymbol ] }; + key { [ j, J, U2206, U2dd ] }; + key { [ k, K, U00AC, VoidSymbol ] }; + key { [ l, L, U2026, caron ] }; + key { [ ae, AE, oe, OE ] }; + key { [ dead_acute, dead_diaeresis, U201A, U2018 ] }; + key { [ plus, asterisk, U2022, plusminus ] }; + + + //-- Row 2 (B) --// + key { [ less, greater, section, UF8FF ] }; + key { [ z, Z, U3A9, VoidSymbol ] }; + key { [ x, X, asciitilde, VoidSymbol ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, U221A, U25CA ] }; + key { [ b, B, U222B, VoidSymbol ] }; + key { [ n, N, dead_tilde, VoidSymbol ] }; + key { [ m, M, U00B5, VoidSymbol ] }; + key { [ comma, semicolon, lessthanequal, guillemotleft ] }; + key { [ period, colon, greaterthanequal,guillemotright ] }; + key { [ thorn, THORN, U2019, U201d ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + include "macintosh_vndr/is(basic)" // for consistent naming + name[Group1]= "Iceland - Mac, no dead keys"; +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/it b/nixos/xkb/symbols/macintosh_vndr/it new file mode 100644 index 00000000..14ad5398 --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/it @@ -0,0 +1,60 @@ +default +xkb_symbols "extended" { + + name[Group1]= "Italy - Mac"; + + key { [ less, greater ] }; + key { [ at, numbersign, periodcentered ] }; + key { [ ampersand, 1, guillemotleft,guillemotright ] }; + key { [ quotedbl, 2 ] }; + key { [ apostrophe, 3 ] }; + key { [ parenleft, 4, braceleft, bracketleft ] }; + key { [ ccedilla, 5, Ccedilla, Iacute ] }; + key { [ egrave, 6, paragraph, periodcentered] }; + key { [ parenright, 7, braceright, bracketright ] }; + key { [ sterling, 8, infinity ] }; + key { [ agrave, 9, acute, Ocircumflex ] }; + key { [ eacute, 0, grave, Oacute ] }; + key { [ minus, underscore ] }; + key { [ equal, plus, notequal, plusminus ] }; + + key { [ q, Q ] }; + key { [ z, Z ] }; + key { [ e, E, EuroSign ] }; + key { [ r, R, registered ] }; + key { [ t, T ] }; + key { [ y, Y, Uacute, ydiaeresis ] }; + key { [ u, U ] }; + key { [ i, I, icircumflex, idiaeresis ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [ igrave, asciicircum ] }; + key { [ dollar, asterisk ] }; + key { [ section, degree, at, numbersign ] }; + + key { [ a, A, aring, Aring ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H, Igrave, Icircumflex ] }; + key { [ j, J, Idiaeresis, Iacute ] }; + key { [ k, K, Egrave, Ediaeresis ] }; + key { [ l, L, ssharp, bar ] }; + key { [ m, M, mu, Oacute ] }; + key { [ ugrave, percent, ae, AE ] }; + + key { [ w, W ] }; + key { [ x, X ] }; + key { [ c, C, copyright, copyright ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N, dead_tilde ] }; + key { [ comma, question, questiondown ] }; + key { [ semicolon, period ] }; + key { [ colon, slash, bar, backslash ] }; + key { [ ograve, exclam, exclamdown ] }; + + include "kpdl(dot)" + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/jp b/nixos/xkb/symbols/macintosh_vndr/jp new file mode 100644 index 00000000..b7225842 --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/jp @@ -0,0 +1,27 @@ +// JIS symbol mapping for Apple Aluminium +// (Damien Ciabrini ) +// +// The JIS version of the Aluminium Keyboard is made of +// QWERTY-like map for the latin part +// PC98-like map for the kana part +// EISU and KANA keys found on other Apple keyboards + +default partial alphanumeric_keys +xkb_symbols "usmac" { + name[Group1] = "Japan - Macintosh, US map"; + include "jp(common)" + + key { [ KP_Separator ] }; + key { [ yen, bar ] }; + replace key { [ 0 ] }; + replace key { [ underscore ] }; + replace key { [ Caps_Lock ] }; +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + name[Group1] = "Japan - Macintosh"; + include "jp(kana)" + + replace key { [ Caps_Lock ] }; +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/latam b/nixos/xkb/symbols/macintosh_vndr/latam new file mode 100644 index 00000000..70d70b1f --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/latam @@ -0,0 +1,35 @@ +default partial alphanumeric_keys +xkb_symbols "basic" { + + // Describes the differences between a very simple mac_US + // keyboard and a very simple Spanish keyboard. + + include "latin" + name[Group1]= "Latin American - Mac"; + + key { [ bracketleft, bracketright, braceleft, braceright ] }; + key { [ less, greater, bracketleft, braceleft ] }; + key { [ 1, exclamdown ] }; + key { [ 2, exclam, at, oneeighth ] }; + key { [ 3, numbersign, guillemotleft, guillemotright ] }; + key { [ 4, dollar, yen, Icircumflex ] }; + key { [ 5, percent ] }; + key { [ 6, slash, backslash, Idiaeresis ] }; + key { [ 7, ampersand, bar, Iacute ] }; + key { [ 8, asterisk, degree ] }; + key { [ 9, parenleft, sterling, Ocircumflex ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus, plusminus ] }; + key { [ dead_grave, degree ] }; + key { [ dead_acute, dead_diaeresis, bar ] }; + + key { [ comma, questiondown ] }; + key { [ period, question ] }; + key { [ ccedilla, Ccedilla ] }; + key { [ ntilde, Ntilde, asciitilde, dead_doubleacute ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/nl b/nixos/xkb/symbols/macintosh_vndr/nl new file mode 100644 index 00000000..e2f01910 --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/nl @@ -0,0 +1,9 @@ +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin" + + name[Group1]= "Netherlands - Mac"; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/no b/nixos/xkb/symbols/macintosh_vndr/no new file mode 100644 index 00000000..66fe682f --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/no @@ -0,0 +1,48 @@ +default partial alphanumeric_keys +xkb_symbols "basic" { + + // Describes the differences between a very simple en_US + // keyboard and a very simple Norwegian keyboard. + + include "latin" + + name[Group1]= "Norway - Mac"; + + key { [ bar, section ] }; + key { [ 2, quotedbl, at, oneeighth ] }; + key { [ 3, numbersign, sterling, sterling ] }; + key { [ 4, currency, dollar, dollar ] }; + key { [ 6, ampersand ] }; + key { [ 7, slash, bar, backslash ] }; + key { [ 8, parenleft, bracketleft, braceleft ] }; + key { [ 9, parenright, bracketright, braceright ] }; + key { [ 0, equal ] }; + key { [ plus, question ] }; + key { [ dead_grave, dead_acute, acute, dead_ogonek ] }; + + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + key { [ oslash, Oslash, odiaeresis, Odiaeresis ] }; + key { [ ae, AE ] }; + key { [ aring, Aring ] }; + key { [ diaeresis, asciicircum, asciitilde, dead_macron ] }; + key { [ at, asterisk ] }; + key { [ less, greater ] }; + + include "eurosign(e)" + include "level3(ralt_switch)" +}; + + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + // Modifies the basic Norwegian layout to no dead keys + include "macintosh_vndr/no(basic)" + name[Group1]= "Norway - Mac, no dead keys"; + + key { [ grave, acute, acute, ogonek ] }; + key { [ diaeresis, asciicircum, asciitilde, macron ] }; + +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/pt b/nixos/xkb/symbols/macintosh_vndr/pt new file mode 100644 index 00000000..76147abf --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/pt @@ -0,0 +1,60 @@ +// mac version from Ricardo Cabral + +default partial alphanumeric_keys +xkb_symbols "basic" { + + // Describes the differences between a very simple en_US + // keyboard and a very simple Portuguese keyboard. + + include "latin" + + name[Group1]= "Portugal - Mac"; + + key { [ less, greater, bar, brokenbar ] }; + key { [ 2, quotedbl, at, oneeighth ] }; + key { [ 3, numbersign, sterling, sterling ] }; + key { [ 4, dollar, section, dollar ] }; + key { [ 6, ampersand ] }; + key { [ 7, slash ] }; + key { [ 8, parenleft, bracketleft, braceleft ] }; + key { [ 9, parenright, bracketright, braceright ] }; + key { [ 0, equal ] }; + key { [ apostrophe, question ] }; + key { [ plus, asterisk, dead_diaeresis ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + key { [ ccedilla, Ccedilla ] }; + key { [ dead_tilde, dead_circumflex ] }; + key { [ backslash, bar ] }; + key { [ masculine, ordfeminine ] }; + key { [ dead_acute, dead_grave ] }; + + include "eurosign(e)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "Sundeadkeys" { + include "macintosh_vndr/pt(basic)" // for consistent naming + name[Group1]= "Portugal - Mac, Sun dead keys"; + + key {[ plus, asterisk, dead_diaeresis, dead_diaeresis ]}; + key {[ dead_tilde, dead_circumflex ]}; + key {[ dead_acute, dead_grave ]}; +}; + +partial alphanumeric_keys +xkb_symbols "sundeadkeys" { + include "macintosh_vndr/pt(Sundeadkeys)" // for consistent naming +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + include "macintosh_vndr/pt(basic)" // for consistent naming + name[Group1]= "Portugal - Mac, no dead keys"; + + key { [ plus, asterisk, quotedbl, quotedbl ] }; + key { [ asciitilde, asciicircum ] }; + key { [ acute, grave ] }; +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/se b/nixos/xkb/symbols/macintosh_vndr/se new file mode 100644 index 00000000..e47d1d11 --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/se @@ -0,0 +1,44 @@ +default partial alphanumeric_keys +xkb_symbols "basic" { + + // Describes the differences between a very simple en_US + // keyboard and a very simple Swedish(Sweden) keyboard. + + include "latin" + + name[Group1]= "Sweden - Mac"; + + key { [ section, degree ] }; + + key { [ 1, exclam, copyright, exclamdown ] }; + key { [ 2, quotedbl, at, oneeighth ] }; + key { [ 3, numbersign, sterling, yen ] }; + key { [ 4, currency, dollar, cent ] }; + key { [ 6, ampersand ] }; + key { [ 7, slash, bar, backslash ] }; + key { [ 8, parenleft, bracketleft, braceleft ] }; + key { [ 9, parenright, bracketright, braceright ] }; + key { [ comma, semicolon ] }; + key { [ 0, equal ] }; + key { [ plus, question ] }; + key { [ acute, grave ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + key { [ odiaeresis, Odiaeresis, oslash, Oslash ] }; + key { [ adiaeresis, Adiaeresis, ae, AE ] }; + key { [ aring, Aring ] }; + key { [ diaeresis, asciicircum, asciitilde ] }; + key { [ apostrophe, asterisk, at ] }; + key { [ less, greater, bar, brokenbar ] }; + + include "kpdl(comma)" + include "eurosign(e)" + include "level3(ralt_switch)" +}; + + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + include "macintosh_vndr/se(basic)" // for consistent naming + name[Group1]= "Sweden - Mac, no dead keys"; +}; diff --git a/nixos/xkb/symbols/macintosh_vndr/us b/nixos/xkb/symbols/macintosh_vndr/us new file mode 100644 index 00000000..ccd008e6 --- /dev/null +++ b/nixos/xkb/symbols/macintosh_vndr/us @@ -0,0 +1,66 @@ +// Symbol definitions for Macintosh "Extended" keyboards. + +default xkb_symbols "extended" { + + name[Group1]= "USA"; + + key { [ Escape ] }; + + key { [ grave, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ backslash, bar ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + key { [ space ] }; + + include "eurosign(e)" + include "keypad(overlay)" + + key { [ equal ] }; +}; diff --git a/nixos/xkb/symbols/md b/nixos/xkb/symbols/md new file mode 100644 index 00000000..47fc0ce7 --- /dev/null +++ b/nixos/xkb/symbols/md @@ -0,0 +1,88 @@ +// Keyboard layouts for Moldova. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "ro" + + name[Group1]="Moldavian"; +}; + + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ~ │ ! │ " │ # │ ; │ % │ : │ ? │ * │ ( │ ) │ - │ + ┃ ⌫ Back ┃ +// │ ` │ 1 │ 2 @ │ 3 │ 4 $ │ 5 € │ 6 ^ │ 7 & │ 8 │ 9 │ 0 │ - │ = ┃ space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ Ţ Q │ Ê W │ E │ R │ T │ Y │ U │ İ │ O │ P │ Ö { │ Ü } ┃ Enter ┃ +// ┃Tab ↹ ┃ ţ q │ ê w │ e │ r │ t │ y │ u │ i │ o │ p │ ö [ │ ü ] ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ş │ I │ | ┃ ┃ +// ┃Caps ⇬ ┃ a │ s │ d │ f │ g │ h │ j │ k │ l │ ş │ ı ' │ \ ┃ ┃ +// ┣━━━━━━━━┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ │ Z │ Ç X │ C │ V │ B │ N │ M │ Ä │ < │ > ┃ ┃ +// ┃Shift ⇧ │ z │ ç x │ c │ v │ b │ n │ m │ ä │ , │ . / ┃Shift ⇧ ┃ +// ┣━━━━━━━┳━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ␣ ⍽ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Space ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +// A, Ä, B, C, Ç, D, E, Ê, F, G, H, I, İ, J, K, L, M, N, O, Ö, P, R, S, Ş, T, Ţ, U, Ü, V, Y, Z. + +partial alphanumeric_keys +xkb_symbols "gag" { + + name[Group1]="Gagauz (Moldova)"; + + key {[ grave, asciitilde ]}; + key {[ 1, exclam ]}; + key {[ 2, quotedbl, at ]}; + key {[ 3, numbersign ]}; + key {[ 4, semicolon, dollar ]}; + key {[ 5, percent, EuroSign, cent ]}; + key {[ 6, colon, asciicircum ]}; + key {[ 7, question, ampersand ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ tcedilla, Tcedilla, q, Q ]}; + key {[ ecircumflex, Ecircumflex, w, W ]}; + key {[ e, E ]}; + key {[ r, R ]}; + key {[ t, T ]}; + key {[ y, Y ]}; + key {[ u, U ]}; + key {[ i, Iabovedot, i, I ]}; + key {[ o, O ]}; + key {[ p, P ]}; + key {[ odiaeresis, Odiaeresis, bracketleft, braceleft ]}; + key {[ udiaeresis, Udiaeresis, bracketright, braceright ]}; + + key {[ a, A ]}; + key {[ s, S ]}; + key {[ d, D ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ h, H ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ l, L ]}; + key {[ scedilla, Scedilla ]}; + key {[ idotless, I, apostrophe ]}; + key {[ backslash, bar ]}; + + key {[ z, Z ]}; + key {[ ccedilla, Ccedilla, x, X ]}; + key {[ c, C ]}; + key {[ v, V ]}; + key {[ b, B ]}; + key {[ n, N ]}; + key {[ m, M ]}; + key {[ adiaeresis, Adiaeresis ]}; + key {[ comma, less ]}; + key {[ period, greater, slash ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/me b/nixos/xkb/symbols/me new file mode 100644 index 00000000..41be1c6f --- /dev/null +++ b/nixos/xkb/symbols/me @@ -0,0 +1,63 @@ +// Keyboard layouts for Montenegro. + +default partial alphanumeric_keys +xkb_symbols "basic" { + include "rs(latin)" + name[Group1]= "Montenegrin"; + + key { [ any, any, zacute, Zacute ] }; // z + key { [ any, any, sacute, Sacute ] }; // s +}; + +partial alphanumeric_keys +xkb_symbols "cyrillic" { + include "rs(basic)" + name[Group1]= "Montenegrin (Cyrillic)"; +}; + +partial alphanumeric_keys +xkb_symbols "cyrillicyz" { + include "rs(yz)" + name[Group1]= "Montenegrin (Cyrillic, ZE and ZHE swapped)"; +}; + +partial alphanumeric_keys +xkb_symbols "latinunicode" { + include "rs(latinunicode)" + name[Group1]= "Montenegrin (Latin, Unicode)"; + + key { [ any, any, zacute, Zacute ] }; // z + key { [ any, any, sacute, Sacute ] }; // s +}; + +partial alphanumeric_keys +xkb_symbols "latinyz" { + include "rs(latinyz)" + name[Group1]= "Montenegrin (Latin, QWERTY)"; + + key { [ any, any, zacute, Zacute ] }; // z + key { [ any, any, sacute, Sacute ] }; // s +}; + +partial alphanumeric_keys +xkb_symbols "latinunicodeyz" { + include "rs(latinunicodeyz)" + name[Group1]= "Montenegrin (Latin, Unicode, QWERTY)"; + + key { [ any, any, zacute, Zacute ] }; // z + key { [ any, any, sacute, Sacute ] }; // s +}; + +xkb_symbols "cyrillicalternatequotes" { + include "rs(alternatequotes)" + name[Group1]= "Montenegrin (Cyrillic, with guillemets)"; +}; + +xkb_symbols "latinalternatequotes" { + include "rs(latinalternatequotes)" + name[Group1]= "Montenegrin (Latin, with guillemets)"; + + key { [ any, any, zacute, Zacute ] }; // z + key { [ any, any, sacute, Sacute ] }; // s + key { [ any, any, guillemotleft, guillemotright ] }; // < +}; diff --git a/nixos/xkb/symbols/mk b/nixos/xkb/symbols/mk new file mode 100644 index 00000000..e1b715e9 --- /dev/null +++ b/nixos/xkb/symbols/mk @@ -0,0 +1,65 @@ +// Keyboard layouts for North Macedonia. + +// Author: Damjan Georgievski +// Revision: 1.5 +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Macedonian"; + + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_lje, Cyrillic_LJE ] }; + key { [ Cyrillic_nje, Cyrillic_NJE ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_dzhe, Cyrillic_DZHE ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Macedonia_dse, Macedonia_DSE ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_je, Cyrillic_JE ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Macedonia_kje, Macedonia_KJE ] }; + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Macedonia_gje, Macedonia_GJE ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ equal, plus ] }; + key { [ minus, underscore ] }; + key { [ dead_grave, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, doublelowquotemark ] }; + key { [ 3, leftdoublequotemark ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ slash, question ] }; + + include "kpdl(comma)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + include "mk(basic)" + name[Group1]= "Macedonian (no dead keys)"; + key { [ grave, asciitilde ] }; +}; diff --git a/nixos/xkb/symbols/ml b/nixos/xkb/symbols/ml new file mode 100644 index 00000000..06db31ca --- /dev/null +++ b/nixos/xkb/symbols/ml @@ -0,0 +1,65 @@ +// Keyboard layouts for Mali. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "fr(basic)" + + name[Group1]="Bambara"; + + key {[ z, Z, U017E, U017D ]}; // ž Ž + key {[ e, E, U025B, U0190 ]}; // ɛ Ɛ + + key {[ s, S, U0161, U0160 ]}; // š Š + key {[ g, G, U0254, U0186 ]}; // ɔ Ɔ + key {[ m, M, U014B, U014A ]}; // ŋ Ŋ + + key {[ v, V, leftdoublequotemark, leftsinglequotemark ]}; // “ ‘ + key {[ b, B, rightdoublequotemark, rightsinglequotemark ]}; // ” ’ + key {[ n, N, U0272, U019D ]}; // ɲ Ɲ +}; + +partial alphanumeric_keys +xkb_symbols "fr-oss" { + + include "fr(oss)" + + name[Group1]="French (Mali, alt.)"; + + key {[ z, Z, U017E, U017D ]}; // ž Ž + key {[ r, R, U025B, U0190 ]}; // ɛ Ɛ + key {[ p, P, U0254, U0186 ]}; // ɔ Ɔ + key {[ d, D, U0161, U0160 ]}; // š Š + key {[ j, J, U0272, U019D ]}; // ɲ Ɲ + key {[ m, M, U014B, U014A ]}; // ŋ Ŋ +}; + +partial alphanumeric_keys +xkb_symbols "us-mac" { + + include "us(mac)" + + name[Group1]="English (Mali, US, Macintosh)"; + + key {[ o, O, U0254, U0186 ]}; // ɔ Ɔ + key {[ a, A, U025B, U0190 ]}; // ɛ Ɛ + key {[ s, S, U0161, U0160 ]}; // š Š + key {[ j, J, U0272, U019D ]}; // ɲ Ɲ + key {[ k, K, U014B, U014A ]}; // ŋ Ŋ + key {[ z, Z, U017E, U017D ]}; // ž Ž +}; + +partial alphanumeric_keys +xkb_symbols "us-intl" { + + include "us(intl)" + + name[Group1]="English (Mali, US, intl.)"; + + key {[ w, W, U025B, U0190 ]}; // ɛ Ɛ + key {[ o, O, U0254, U0186 ]}; // ɔ Ɔ + key {[ s, S, U0161, U0160 ]}; // š Š + key {[ h, H, U0272, U019D ]}; // ɲ Ɲ + key {[ j, J, U014B, U014A ]}; // ŋ Ŋ + key {[ x, X, U017E, U017D ]}; // ž Ž +}; diff --git a/nixos/xkb/symbols/mm b/nixos/xkb/symbols/mm new file mode 100644 index 00000000..4cb7d1a5 --- /dev/null +++ b/nixos/xkb/symbols/mm @@ -0,0 +1,358 @@ +// Keyboard layouts for Myanmar. + +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Burmese"; + + key {[ grave, U100E, grave, asciitilde ]}; + key {[ U1041, U100D, 1, exclam ]}; + key {[ U1042, U1052, 2, at ]}; + key {[ U1043, U100B, 3, numbersign ]}; + key {[ U1044, dollar, 4, dollar ]}; + key {[ U1045, percent, 5, percent ]}; + key {[ U1046, asciicircum, 6, asciicircum ]}; + key {[ U1047, U101B, 7, ampersand ]}; + key {[ U1048, asterisk, 8, asterisk ]}; + key {[ U1049, parenleft, 9, parenleft ]}; + key {[ U1040, parenright, 0, parenright ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ U1006, U1008, q, Q ]}; + key {[ U1010, U101D, w, W ]}; + key {[ U1014, U1023, e, E ]}; + key {[ U1019, U104E, r, R ]}; + key {[ U1021, U1024, t, T ]}; + key {[ U1015, U104C, y, Y ]}; + key {[ U1000, U1025, u, U ]}; + key {[ U1004, U104D, i, I ]}; + key {[ U101E, U103F, o, O ]}; + key {[ U1005, U100F, p, P ]}; + key {[ U101F, U1027, bracketleft, braceleft ]}; + key {[ U1029, U102A, bracketright, braceright ]}; + + key {[ U1031, U1017, a, A ]}; + key {[ U103B, U103E, s, S ]}; + key {[ U102D, U102E, d, D ]}; + key {[ U103A, U1039, f, F ]}; + key {[ U102B, U103D, g, G ]}; + key {[ U1037, U1036, h, H ]}; + key {[ U103C, U1032, j, J ]}; + key {[ U102F, U1012, k, K ]}; + key {[ U1030, U1013, l, L ]}; + key {[ U1038, U1002, semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + key {[ U104F, backslash, backslash, bar ]}; + + key {[ U1016, U1007, z, Z ]}; + key {[ U1011, U100C, x, X ]}; + key {[ U1001, U1003, c, C ]}; + key {[ U101C, U1020, v, V ]}; + key {[ U1018, U101A, b, B ]}; + key {[ U100A, U1009, n, N ]}; + key {[ U102C, U1026, m, M ]}; + key {[ comma, U104A, comma, less ]}; + key {[ period, U104B, period, greater ]}; + key {[ slash, question ]}; +}; + +partial alphanumeric_keys +xkb_symbols "zawgyi" { + + name[Group1]="Burmese (Zawgyi)"; + + include "mm(tilde_latch)" + + key {[ U1041, U100D, U100E, U106F ]}; + key {[ U1042, U1091, U106D ]}; + key {[ U1043, U100B, U106C ]}; + key {[ U1044, dollar, U104E, U1023 ]}; + key {[ U1045, percent, U1029, U102A ]}; + key {[ U1046, asciicircum ]}; + key {[ U1047, U101B, U1090 ]}; + key {[ U1048, U1002, U1062 ]}; + key {[ U1049, parenleft, U1026 ]}; + key {[ U1040, parenright ]}; + key {[ minus, underscore, U1097 ]}; + key {[ equal, plus, U106E ]}; + + key {[ U1006, U103D, U1066, U1067 ]}; + key {[ U1010, U107D, U1071, U1072 ]}; + key {[ U1014, U108F, U1077, U1096 ]}; + key {[ U1019, U107D, U107C ]}; + key {[ U1021, U108A, U1024 ]}; + key {[ U1015, U1094, U1078, U104C ]}; + key {[ U1000, U1095, U1060, U1009 ]}; + key {[ U1004, U1088, U104D, U106A ]}; + key {[ U101E, U1025, U1086 ]}; + key {[ U1005, U100F, U1065, U1070 ]}; + key {[ U101F, U1027 ]}; + key {[ U104F, U1092 ]}; + + key {[ U1031, U1017, U1008, U107A ]}; + key {[ U103A, U103D ]}; + key {[ U102D, U102E, U108E, U108C ]}; + key {[ U1039, U1064 ]}; + key {[ U102B, U103C ]}; + key {[ U1037, U1036 ]}; + key {[ U103B, U1032, U1083, U1084 ]}; + key {[ U102F, U1033, U1089 ]}; + key {[ U1030, U1034, U108D, U108B ]}; + key {[ U1038, U105A ]}; + key {[ U1012, U1013, U1075, U1076 ]}; + key {[ U104F, U1092 ]}; + + key {[ U1016, U1007, U1079, U1068 ]}; + key {[ U1011, U100C, U1073, U1074 ]}; + key {[ U1001, U1003, U1061, U1063 ]}; + key {[ U101C, U1020, U1085 ]}; + key {[ U1018, U1080, U1093 ]}; + key {[ U100A, U107F, U106B, U1069 ]}; + key {[ U102C, U107E, U1081, U1082 ]}; + key {[ U101A, U101D ]}; + key {[ period, U1008 ]}; + key {[ U104B, U104A ]}; + + include "level3(ralt_switch)" +}; + +// This fragment creates the "Tilde key" phenomenon. +partial modifier_keys +xkb_symbols "tilde_latch" { + key {[ ISO_Level3_Latch, asciitilde, grave ]}; + modifier_map Mod5 { ISO_Level3_Latch }; +}; + + +partial alphanumeric_keys +xkb_symbols "mnw" { + name[Group1]= "Mon"; + + key {[ U105D, U100E, grave, asciitilde ]}; + key {[ U1041, U100D, 1, exclam ]}; + key {[ U1042, U1052, 2, at ]}; + key {[ U1043, U100B, 3, numbersign ]}; + key {[ U1044, U1053, 4, dollar ]}; + key {[ U1045, percent, 5, percent ]}; + key {[ U1046, U1035, 6, asciicircum ]}; + key {[ U1047, U101B, 7, ampersand ]}; + key {[ U1048, U1002, 8, asterisk ]}; + key {[ U1049, parenleft, 9, parenleft ]}; + key {[ U1040, parenright, 0, parenright ]}; + key {[ minus, multiply, underscore, none ]}; + key {[ equal, plus, division, none ]}; + + key {[ U1006, U105B, q, Q ]}; + key {[ U1010, U101D, w, W ]}; + key {[ U1014, U1023, e, E ]}; + key {[ U1019, U105F, r, R ]}; + key {[ U1021, U1033, t, T ]}; + key {[ U1015, U1060, y, Y ]}; + key {[ U1000, U1025, u, U ]}; + key {[ U105A, U104E, i, I ]}; + key {[ U101E, U103F, o, O ]}; + key {[ U1005, U100F, p, P ]}; + key {[ U101F, U1028, bracketleft, braceleft ]}; + key {[ U1029, slash, bracketright, braceright ]}; + + key {[ U1031, U1017, a, A ]}; + key {[ U103B, U103E, s, S ]}; + key {[ U102D, U102E, d, D ]}; + key {[ U103A, U1039, f, F ]}; + key {[ U102B, U103D, g, G ]}; + key {[ U1034, U1036, h, H ]}; + key {[ U103C, U1032, j, J ]}; + key {[ U102F, U1012, k, K ]}; + key {[ U1030, U1013, l, L ]}; + key {[ U1038, colon, semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + key {[ U1051, bar, backslash, bar ]}; + + key {[ U1016, U1007, z, Z ]}; + key {[ U1011, U100C, x, X ]}; + key {[ U1001, U1003, c, C ]}; + key {[ U101C, U1020, v, V ]}; + key {[ U1018, U1050, b, B ]}; + key {[ U100A, U1009, n, N ]}; + key {[ U102C, U1054, m, M ]}; + key {[ U101A, U105E, comma, less ]}; + key {[ U105C, U1055, period, greater ]}; + key {[ U104B, U104A, slash, question ]}; +}; + + +// Mon A1 layout, by Tao Mon Lae, (tamonlae@gmail.com), 12-August-2021 + +partial alphanumeric_keys +xkb_symbols "mnw-a1" { + name[Group1]= "Mon (A1)"; + + key {[ grave, asciitilde ]}; + key {[ U1041, exclam ]}; + key {[ U1042, at ]}; + key {[ U1043, U1053 ]}; + key {[ U1044, U1029 ]}; + key {[ U1045, percent ]}; + key {[ U1046, U1050 ]}; + key {[ U1047, U1051 ]}; + key {[ U1048, asterisk ]}; + key {[ U1049, parenleft ]}; + key {[ U1040, parenright ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ U101E, U103F ]}; + key {[ U101D, U103D ]}; + key {[ U1031, U1035 ]}; + key {[ U101B, U103C ]}; + key {[ U1010, U1011 ]}; + key {[ U101A, U103B ]}; + key {[ U102F, U1030 ]}; + key {[ U102D, U1033 ]}; + key {[ U1032, U1034 ]}; + key {[ U1015, U100F ]}; + key {[ U100D, U1028 ]}; + key {[ U100E, U1054 ]}; + + key {[ U1021, U1023 ]}; + key {[ U1005, U1006 ]}; + key {[ U1012, U1013 ]}; + key {[ U1016, U1039 ]}; + key {[ U1002, U1003 ]}; + key {[ U101F, U103E ]}; + key {[ U103A, U102E ]}; + key {[ U1000, U1001 ]}; + key {[ U101C, U1060 ]}; + key {[ U1025, U1020 ]}; + key {[ apostrophe, quotedbl ]}; + key {[ U105C, U105D ]}; + + key {[ U1007, U105B ]}; + key {[ U100B, U100C ]}; + key {[ U105A, U104E ]}; + key {[ U100A, U1009 ]}; + key {[ U1017, U1018 ]}; + key {[ U1014, U105E ]}; + key {[ U1019, U105F ]}; + key {[ U1036, U1038 ]}; + key {[ U102C, U102B ]}; + key {[ U104A, U104B ]}; +}; + + +partial alphanumeric_keys +xkb_symbols "shn" { + name[Group1]= "Shan"; + + key {[ grave, asciitilde ]}; + key {[ 1, exclam ]}; + key {[ 2, at ]}; + key {[ 3, numbersign ]}; + key {[ 4, dollar ]}; + key {[ 5, percent ]}; + key {[ 6, asciicircum ]}; + key {[ 7, ampersand ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ U1078, UAA61, q, Q ]}; + key {[ U1010, U107B, w, W ]}; + key {[ U107C, UA9E3, e, E ]}; + key {[ U1019, U109E, r, R ]}; + key {[ U1022, U103C, t, T ]}; + key {[ U1015, U107F, y, Y ]}; + key {[ U1075, U1077, u, U ]}; + key {[ U1004, U101B, i, I ]}; + key {[ U101D, U101E, o, O ]}; + key {[ U1081, U1080, p, P ]}; + key {[ bracketleft, braceleft ]}; + key {[ bracketright, braceright ]}; + + key {[ U1031, U1035, a, A ]}; + key {[ U1084, U1085, s, S ]}; + key {[ U102D, U102E, d, D ]}; + key {[ U103A, U1082, f, F ]}; + key {[ U103D, U1082, g, G ]}; + key {[ U1089, U1037, h, H ]}; + key {[ U1087, U1086, j, J ]}; + key {[ U102F, U1012, k, K ]}; + key {[ U1030, U108A, l, L ]}; + key {[ U1088, U1038, semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + key {[ backslash, bar ]}; + + key {[ U107D, U107E, z, Z ]}; + key {[ U1011, UAA6A, x, X ]}; + key {[ U1076, UA9E0, c, C ]}; + key {[ U101C, UAA6E, v, V ]}; + key {[ U101A, U103B, b, B ]}; + key {[ U107A, U109F, n, N ]}; + key {[ U1062, U1083, m, M ]}; + key {[ comma, U104A, comma, less ]}; + key {[ period, U104B, period, greater ]}; + key {[ slash, question ]}; +}; + + +partial alphanumeric_keys +xkb_symbols "zgt" { + + name[Group1]="Shan (Zawgyi)"; + + include "mm(tilde_latch)" + + key {[ U1041, U100D, U100E, U106F ]}; + key {[ U1042, U1091, U106D ]}; + key {[ U1043, U100B, U106C ]}; + key {[ U1044, dollar, U104E, U1023 ]}; + key {[ U1045, percent, U1029, U102A ]}; + key {[ U1046, asciicircum ]}; + key {[ U1047, U101B, U1090 ]}; + key {[ U1048, U1002, U1062 ]}; + key {[ U1049, parenleft, U1026 ]}; + key {[ U1040, parenright ]}; + key {[ minus, underscore, U1097 ]}; + key {[ equal, plus, U106E ]}; + + key {[ U1006, U103D, U1066, U1067 ]}; + key {[ U1010, U107D, U1071, U1072 ]}; + key {[ U1014, U108F, U1077, U1096 ]}; + key {[ U1019, U107D, U107C ]}; + key {[ U1021, U108A, U1024 ]}; + key {[ U1015, U1094, U1078, U104C ]}; + key {[ U1000, U1095, U1060, U1009 ]}; + key {[ U1004, U1088, U104D, U106A ]}; + key {[ U101E, U1025, U1086 ]}; + key {[ U1005, U100F, U1065, U1070 ]}; + key {[ U101F, U1027 ]}; + key {[ U104F, U1092 ]}; + + key {[ U1031, U1017, U1008, U107A ]}; + key {[ U103A, U103D ]}; + key {[ U102D, U102E, U108E, U108C ]}; + key {[ U1039, U1064 ]}; + key {[ U102B, U103C ]}; + key {[ U1037, U1036 ]}; + key {[ U103B, U1032, U1083, U1084 ]}; + key {[ U102F, U1033, U1089 ]}; + key {[ U1030, U1034, U108D, U108B ]}; + key {[ U1038, U105A ]}; + key {[ U1012, U1013, U1075, U1076 ]}; + key {[ U104F, U1092 ]}; + + key {[ U1016, U1007, U1079, U1068 ]}; + key {[ U1011, U100C, U1073, U1074 ]}; + key {[ U1001, U1003, U1061, U1063 ]}; + key {[ U101C, U1020, U1085 ]}; + key {[ U1018, U1080, U1093 ]}; + key {[ U100A, U107F, U106B, U1069 ]}; + key {[ U102C, U107E, U1081, U1082 ]}; + key {[ U101A, U101D ]}; + key {[ period, U1008 ]}; + key {[ U104B, U104A ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/mn b/nixos/xkb/symbols/mn new file mode 100644 index 00000000..d5280960 --- /dev/null +++ b/nixos/xkb/symbols/mn @@ -0,0 +1,81 @@ +// Keyboard layouts for Mongolia. + +// Based on the Mongolian standard keyboard. +// Author Sanlig Badral +// 2002/12/7 Version 1.0 + +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Mongolian"; + + key { [ equal, plus, degree ] }; + key { [ 1, numerosign, multiply ] }; + key { [ 2, minus, division ] }; + key { [ 3, quotedbl, plusminus ] }; + key { [ 4, U20ae, notsign ] }; // Tugrik sign + key { [ 5, colon, NoSymbol ] }; + key { [ 6, period, notequal ] }; + key { [ 7, underscore, ampersand ] }; + key { [ 8, comma, asterisk ] }; + key { [ 9, percent, bracketleft ] }; + key { [ 0, question, bracketright ] }; + key { [ Cyrillic_ie, Cyrillic_IE, X ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA, L ] }; + + key { [ Cyrillic_ef, Cyrillic_EF, apostrophe ] }; + key { [ Cyrillic_tse, Cyrillic_TSE, grave ] }; + key { [ Cyrillic_u, Cyrillic_U, EuroSign ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, registered ] }; + key { [ Cyrillic_e, Cyrillic_E, trademark ] }; + key { [ Cyrillic_en, Cyrillic_EN, yen ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, doublelowquotemark ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, leftdoublequotemark ] }; + key { [ Cyrillic_u_straight,Cyrillic_U_straight,rightdoublequotemark] }; + key { [ Cyrillic_ze, Cyrillic_ZE, NoSymbol ] }; + key { [ Cyrillic_ka, Cyrillic_KA, braceleft ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, braceright ] }; + + key { [ Cyrillic_shorti, Cyrillic_SHORTI, mu ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU, sterling ] }; + key { [ Cyrillic_be, Cyrillic_BE, dollar ] }; + key { [ Cyrillic_o_bar, Cyrillic_O_bar, rightdoublequotemark ] }; + key { [ Cyrillic_a, Cyrillic_A, Cyrillic_yeru ] }; + key { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_YERU ] }; + key { [ Cyrillic_er, Cyrillic_ER, Cyrillic_e ] }; + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_E ] }; + key { [ Cyrillic_el, Cyrillic_EL, numerosign ] }; + key { [ Cyrillic_de, Cyrillic_DE, section ] }; + key { [ Cyrillic_pe, Cyrillic_PE, ellipsis ] }; + key { [ exclam, bar, bar ] }; + + key { [ parenleft, parenright, NoSymbol ] }; + key { [ Cyrillic_ya, Cyrillic_YA, emdash ] }; + key { [ Cyrillic_che, Cyrillic_CHE, endash ] }; + key { [ Cyrillic_io, Cyrillic_IO, copyright ] }; + key { [ Cyrillic_es, Cyrillic_ES, NoSymbol ] }; + key { [ Cyrillic_em, Cyrillic_EM, NoSymbol ] }; + key { [ Cyrillic_i, Cyrillic_I, less ] }; + key { [ Cyrillic_te, Cyrillic_TE, greater ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, guillemotleft ] }; + key { [ Cyrillic_ve, Cyrillic_VE, guillemotright ] }; + key { [ Cyrillic_yu, Cyrillic_YU, backslash ] }; + + key { [ space, space, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + +// Contact: Walter Bender + + include "mn(basic)" + + key { [ 7, semicolon, ampersand ] }; + + key { [ backslash, bar, exclam ] }; + + include "group(olpc)" +}; diff --git a/nixos/xkb/symbols/mt b/nixos/xkb/symbols/mt new file mode 100644 index 00000000..f7fa4dd1 --- /dev/null +++ b/nixos/xkb/symbols/mt @@ -0,0 +1,136 @@ +// Keyboard layouts for Malta. + +// Maltese keyboard map (based on MSA Standard DMS100) +// by Ramon Casha (ramon.casha@linux.org.mt) + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin" + + name[Group1]="Maltese"; + + // Copied from GB layout + key { [ 2, quotedbl, twosuperior, oneeighth ] }; + key { [ 4, dollar, EuroSign, onequarter ] }; + key { [apostrophe, at, dead_circumflex, dead_caron ] }; + key { [numbersign, asciitilde, dead_grave, dead_breve ] }; + + // The four additional letters + key { [ cabovedot, Cabovedot, grave, notsign ] }; + key { [ gabovedot, Gabovedot, bracketleft, braceleft ] }; + key { [ hstroke, Hstroke, bracketright, braceright ] }; + key { [ zabovedot, Zabovedot, backslash, bar ] }; + + // An extra Euro symbol + key { [ 3, EuroSign, sterling ] }; + + // A dead key for the long accent + key { [ 6, asciicircum, dead_circumflex, dead_circumflex ] }; + + // The vowels with normal accents + key { [ e, E, egrave, Egrave ] }; + key { [ u, U, ugrave, Ugrave ] }; + key { [ i, I, igrave, Igrave ] }; + key { [ o, O, ograve, Ograve ] }; + key { [ a, A, agrave, Agrave ] }; + + include "level3(ralt_switch)" +}; + +// Maltese keyboard map (based on MSA Standard DMS100, annex A) +// by Ramon Casha (ramon.casha@linux.org.mt) + +partial alphanumeric_keys +xkb_symbols "us" { + + include "latin" + + name[Group1]="Maltese (US)"; + + key { [ cabovedot, Cabovedot, grave, asciitilde ] }; + key { [ gabovedot, Gabovedot, bracketleft, braceleft ] }; + key { [ hstroke, Hstroke, bracketright, braceright ] }; + key { [ zabovedot, Zabovedot, backslash, bar ] }; + key { [ zabovedot, Zabovedot, backslash, bar ] }; + + key { [ 3, EuroSign, numbersign ] }; + + key { [ 6, asciicircum, dead_circumflex, dead_circumflex ] }; + + key { [ e, E, egrave, Egrave ] }; + key { [ u, U, ugrave, Ugrave ] }; + key { [ i, I, igrave, Igrave ] }; + key { [ o, O, ograve, Ograve ] }; + key { [ a, A, agrave, Agrave ] }; + + include "level3(ralt_switch)" +}; + +// Alternative Maltese keyboard map (US-based layout using AltGr) +// by Johann A. Briffa (johann.briffa@um.edu.mt) + +partial alphanumeric_keys +xkb_symbols "alt-us" { + + include "us(basic)" + + name[Group1]="Maltese (US, with AltGr overrides)"; + + // Currency symbols + key { [ 3, numbersign, sterling, NoSymbol ] }; + key { [ 4, dollar, EuroSign, NoSymbol ] }; + + // Maltese characters + key { [ g, G, gabovedot, Gabovedot ] }; + key { [ h, H, hstroke, Hstroke ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ c, C, cabovedot, Cabovedot ] }; + + // Maltese accented vowels + key { [ e, E, egrave, Egrave ] }; + key { [ u, U, ugrave, Ugrave ] }; + key { [ i, I, igrave, Igrave ] }; + key { [ o, O, ograve, Ograve ] }; + key { [ a, A, agrave, Agrave ] }; + + // Other accents (dead-key) + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 6, asciicircum, NoSymbol, dead_circumflex ] }; + key { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; + + include "level3(ralt_switch)" +}; + +// Alternative Maltese keyboard map (UK-based layout using AltGr) +// by Johann A. Briffa (johann.briffa@um.edu.mt) + +partial alphanumeric_keys +xkb_symbols "alt-gb" { + + include "gb(basic)" + + name[Group1]="Maltese (UK, with AltGr overrides)"; + + key { [ 3, sterling, numbersign, NoSymbol ] }; + key { [ 4, dollar, EuroSign, NoSymbol ] }; + + key { [ g, G, gabovedot, Gabovedot ] }; + key { [ h, H, hstroke, Hstroke ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ c, C, cabovedot, Cabovedot ] }; + + key { [ e, E, egrave, Egrave ] }; + key { [ u, U, ugrave, Ugrave ] }; + key { [ i, I, igrave, Igrave ] }; + key { [ o, O, ograve, Ograve ] }; + key { [ a, A, agrave, Agrave ] }; + + key { [ grave, notsign, dead_grave, NoSymbol ] }; + key { [ 2, quotedbl, NoSymbol, dead_diaeresis ] }; + key { [ 6, asciicircum, NoSymbol, dead_circumflex ] }; + key { [ apostrophe, at, dead_acute, NoSymbol ] }; + key { [numbersign, asciitilde, NoSymbol, dead_tilde ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/mv b/nixos/xkb/symbols/mv new file mode 100644 index 00000000..c2cb8619 --- /dev/null +++ b/nixos/xkb/symbols/mv @@ -0,0 +1,60 @@ +// Keyboard layout for the Maldives. + +// Layout for the Thaana script (for the Dhivehi language). +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]="Dhivehi"; + + key {[ grave, asciitilde ]}; + key {[ 1, exclam ]}; + key {[ 2, at ]}; + key {[ 3, numbersign ]}; + key {[ 4, dollar ]}; + key {[ 5, percent ]}; + key {[ 6, asciicircum ]}; + key {[ 7, ampersand ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ U07B0, U07A4 ]}; + key {[ U0787, U07A2 ]}; + key {[ U07AC, U07AD ]}; + key {[ U0783, U079C ]}; + key {[ U078C, U0793 ]}; + key {[ U0794, U07A0 ]}; + key {[ U07AA, U07AB ]}; + key {[ U07A8, U07A9 ]}; + key {[ U07AE, U07AF ]}; + key {[ U0795, division ]}; + key {[ bracketleft, braceleft ]}; + key {[ bracketright, braceright ]}; + + key {[ U07A6, U07A7 ]}; + key {[ U0790, U0781 ]}; + key {[ U078B, U0791 ]}; + key {[ U078A, Ufdf2 ]}; + key {[ U078E, U07A3 ]}; + key {[ U0780, U0799 ]}; + key {[ U0796, U079B ]}; + key {[ U0786, U079A ]}; + key {[ U078D, U0785 ]}; + key {[ semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + key {[ backslash, bar ]}; + + key {[ bar, brokenbar ]}; + key {[ U0792, U07A1 ]}; + key {[ multiply, U0798 ]}; + key {[ U0797, U079D ]}; + key {[ U0788, U07A5 ]}; + key {[ U0784, U079E ]}; + key {[ U0782, U078F ]}; + key {[ U0789, U079F ]}; + key {[ Arabic_comma, less ]}; + key {[ period, greater ]}; + key {[ slash, Arabic_question_mark ]}; +}; diff --git a/nixos/xkb/symbols/my b/nixos/xkb/symbols/my new file mode 100644 index 00000000..ee4bcc22 --- /dev/null +++ b/nixos/xkb/symbols/my @@ -0,0 +1,116 @@ +// Keyboard layouts for Malaysia. + +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Malay (Jawi, Arabic Keyboard)"; + + key {[ U0661, exclam, 1 ]}; + key {[ U0662, at, 2 ]}; + key {[ U0663, numbersign, 3 ]}; + key {[ U0664, dollar, 4 ]}; + key {[ U0665, Arabic_percent, 5 ]}; + key {[ U0666, asciicircum, 6 ]}; + key {[ U0667, ampersand, 7 ]}; + key {[ U0668, asterisk, 8 ]}; + key {[ U0669, parenright, 9 ]}; + key {[ U0660, parenleft, 0 ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ Arabic_dad, U0686 ]}; + key {[ Arabic_sad, U06A0 ]}; + key {[ Arabic_theh, U06AC ]}; + key {[ Arabic_qaf, U0640 ]}; + key {[ Arabic_feh, UFEF9, U06A4 ]}; + key {[ Arabic_ghain,Arabic_hamzaunderalef]}; + key {[ Arabic_ain, grave ]}; + key {[ Arabic_ha, division ]}; + key {[ Arabic_khah, multiply ]}; + key {[ U06A9,Arabic_semicolon]}; + key {[ Arabic_jeem, less, U0686 ]}; + key {[ Arabic_dal, greater ]}; + + key {[ Arabic_sheen, U06CF ]}; + key {[ Arabic_seen, U06A8 ]}; + key {[ Arabic_yeh, bracketright ]}; + key {[ Arabic_beh, bracketleft, U067E ]}; + key {[ Arabic_lam, UFEF7 ]}; + key {[ Arabic_alef, Arabic_hamzaonalef ]}; + key {[ Arabic_teh, Arabic_tatweel ]}; + key {[ Arabic_noon, Arabic_comma ]}; + key {[ Arabic_meem, slash ]}; + key {[ U06A9, colon, U06AF ]}; + key {[ Arabic_tah, quotedbl ]}; + + key {[ bar, brokenbar ]}; + key {[ Arabic_hamzaonyeh, asciitilde, guillemotright ]}; + key {[ Arabic_hamza, U06BD, guillemotleft ]}; + key {[ Arabic_hamzaonwaw, braceright ]}; + key {[ Arabic_ra, braceleft ]}; + key {[ UFEFB, UFEF5 ]}; + key {[Arabic_alefmaksura, Arabic_maddaonalef]}; + key {[ Arabic_tehmarbuta, apostrophe ]}; + key {[ Arabic_waw, U200C, comma ]}; + key {[ Arabic_zain, period ]}; + key {[ Arabic_zah, Arabic_question_mark]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "phonetic" +{ + name[Group1] = "Malay (Jawi, phonetic)"; + + key {[ U0661, exclam, 1 ]}; + key {[ U0662, Arabic_hamza, 2 ]}; + key {[ U0663, Arabic_hamzaonalef, 3 ]}; + key {[ U0664, Arabic_maddaonalef, 4 ]}; + key {[ U0665, Arabic_hamzaunderalef, 5 ]}; + key {[ U0666, Arabic_hamzaonyeh, 6 ]}; + key {[ U0667, Arabic_hamzaonwaw, 7 ]}; + key {[ U0668, NoSymbol, 8 ]}; + key {[ U0669, parenright, 9 ]}; + key {[ U0660, parenleft, 0 ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ Arabic_qaf, Arabic_veh ]}; + key {[ Arabic_waw, Arabic_shadda ]}; + key {[ Arabic_ain, Arabic_ghain ]}; + key {[ Arabic_ra, Arabic_ghain ]}; + key {[ Arabic_teh, Arabic_tehmarbuta ]}; + key {[ Arabic_yeh, Arabic_alefmaksura ]}; + key {[ Arabic_waw, Arabic_tah ]}; + key {[ Arabic_yeh, Arabic_tatweel ]}; + key {[ Arabic_ain, U200C ]}; // ZWNJ + key {[ Arabic_veh, Arabic_teh ]}; + key {[bracketright, braceright ]}; + key {[ bracketleft, braceleft ]}; + + key {[ Arabic_alef, Arabic_maddaonalef ]}; + key {[ Arabic_seen, Arabic_sheen ]}; + key {[ Arabic_dal, Arabic_dad ]}; + key {[ Arabic_feh, Arabic_veh ]}; + key {[ U06AC, U06A0 ]}; + key {[ Arabic_ha, Arabic_hah ]}; + key {[ Arabic_jeem, Arabic_tcheh ]}; + key {[ Arabic_kaf, Arabic_qaf ]}; + key {[ Arabic_lam, UFEFB ]}; + key {[Arabic_semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + + key {[ bar, brokenbar ]}; + key {[ Arabic_zain, Arabic_thal ]}; + key {[ Arabic_khah, Arabic_hah ]}; + key {[Arabic_tcheh, UFEB9 ]}; + key {[ U06CF, Arabic_zah ]}; + key {[ Arabic_beh, Arabic_peh ]}; + key {[ Arabic_noon, U06BD ]}; + key {[ Arabic_meem, Arabic_maddaonalef ]}; + key {[Arabic_comma, greater ]}; + key {[ period, less ]}; + key {[ slash, Arabic_question_mark]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/nbsp b/nixos/xkb/symbols/nbsp new file mode 100644 index 00000000..313cafb2 --- /dev/null +++ b/nixos/xkb/symbols/nbsp @@ -0,0 +1,108 @@ +// Let Space key provide No-Break Space (NBSP), Narrow No-Break Space (NNBSP), +// Zero-Width Non-Joiner (ZWNJ), and Zero-Width Joiner (ZWJ) for the desired +// levels. + + +// --- Just Space. + +partial +xkb_symbols "none" { + key {[ space ], type[group1]="ONE_LEVEL" }; +}; + + +// --- Plus No-Break Space. + +partial +xkb_symbols "level2" { + key {[ space, nobreakspace ], type[group1]="TWO_LEVEL" }; +}; + +partial +xkb_symbols "level3" { + key {[ space, space, nobreakspace ], type[group1]="FOUR_LEVEL" }; +}; + +// Experience has shown that users accidently type non-breaking spaces when +// NBSP is on level 3, so having it on level 4 is the safe default nowadays. +partial +xkb_symbols "level4" { + key {[ space, space, space, nobreakspace ], type[group1]="FOUR_LEVEL" }; +}; + + +// --- Plus Narrow No-Break Space + +partial +xkb_symbols "level3n" { + key {[ space, space, nobreakspace, U202F ], type[group1]="FOUR_LEVEL" }; +}; + +// NNBSP on level 6 (needing a level5 chooser). +partial +xkb_symbols "level4n" { + key {[ space, space, space, nobreakspace, space, U202F, any, any ], + type[group1]="EIGHT_LEVEL" }; +}; + +// NNBSP on level 6 (accessed with Ctrl+Shift). +partial +xkb_symbols "level4nl" { + key {[ space, space, space, nobreakspace, space, U202F, any, any ], + type[group1]="EIGHT_LEVEL_BY_CTRL" }; +}; + + +// Zero-Width Non-Joiner (ZWNJ) and Zero-Width Joiner (ZWJ) are widely used +// in Persian, Kurdish, Pashto, Uzbek, and other languages in their area. + +// ZWNJ on level 2 +partial +xkb_symbols "zwnj2" { + key {[ space, U200c ], type[group1]="TWO_LEVEL" }; +}; + +// ZWNJ on level 2 +// ZWJ on level 3 +partial +xkb_symbols "zwnj2zwj3" { + key {[ space, U200c, U200d ], type[group1]="FOUR_LEVEL" }; +}; + +// ZWNJ on level 2 +// ZWJ on level 3 +// NBSP on level 4 +partial +xkb_symbols "zwnj2zwj3nb4" { + key {[ space, U200c, U200d, nobreakspace ], type[group1]="FOUR_LEVEL" }; +}; + +// ZWNJ on level 2 +// NBSP on level 3 +partial +xkb_symbols "zwnj2nb3" { + key {[ space, U200c, nobreakspace ], type[group1]="FOUR_LEVEL" }; +}; + +// ZWNJ on level 2 +// NBSP on level 3 +// ZWJ on level 4 +partial +xkb_symbols "zwnj2nb3zwj4" { + key {[ space, U200c, nobreakspace, U200d ], type[group1]="FOUR_LEVEL" }; +}; + +// ZWNJ on level 2 +// NBSP on level 3 +// NNBSP on level 4 +partial +xkb_symbols "zwnj2nb3nnb4" { + key {[ space, U200c, nobreakspace, U202F ], type[group1]="FOUR_LEVEL" }; +}; + +// ZWNJ on level 3 +// ZWJ on level 4 +partial +xkb_symbols "zwnj3zwj4" { + key {[ space, space, U200c, U200d ], type[group1]="FOUR_LEVEL" }; +}; diff --git a/nixos/xkb/symbols/nec_vndr/jp b/nixos/xkb/symbols/nec_vndr/jp new file mode 100644 index 00000000..28b51bee --- /dev/null +++ b/nixos/xkb/symbols/nec_vndr/jp @@ -0,0 +1,161 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +// symbols for a NEC PC98 keyboard +default xkb_symbols "pc98" { + + key { [ Escape ] }; + + // Alphanumeric section + key { [ 1, exclam ], [ kana_NU ] }; + key { [ 2, quotedbl ], [ kana_FU ] }; + key { [ 3, numbersign ], [ kana_A, kana_a ] }; + key { [ 4, dollar ], [ kana_U, kana_u ] }; + key { [ 5, percent ], [ kana_E, kana_e ] }; + key { [ 6, ampersand ], [ kana_O, kana_o ] }; + key { [ 7, apostrophe ], [ kana_YA, kana_ya ] }; + key { [ 8, parenleft ], [ kana_YU, kana_yu ] }; + key { [ 9, parenright ], [ kana_YO, kana_yo ] }; + key { [ 0 ], [ kana_WA, kana_WO ] }; + key { [ minus, equal ], [ kana_HO ] }; + key { [ asciicircum, grave ], [ kana_HE ] }; + key { [ backslash, bar ], [ prolongedsound ] }; + key { [ BackSpace ] }; + + key { [ Tab, ISO_Left_Tab ] }; + key { [ q, Q ], [ kana_TA ] }; + key { [ w, W ], [ kana_TE ] }; + key { [ e, E ], [ kana_I, kana_i ] }; + key { [ r, R ], [ kana_SU ] }; + key { [ t, T ], [ kana_KA ] }; + key { [ y, Y ], [ kana_N ] }; + key { [ u, U ], [ kana_NA ] }; + key { [ i, I ], [ kana_NI ] }; + key { [ o, O ], [ kana_RA ] }; + key { [ p, P ], [ kana_SE ] }; + key { [ at, asciitilde ], [ voicedsound ] }; + key { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] }; + key { [ Return ] }; + + key { [ Control_L ] }; + key { [ Caps_Lock ] }; + key { [ a, A ], [ kana_CHI ] }; + key { [ s, S ], [ kana_TO ] }; + key { [ d, D ], [ kana_SHI ] }; + key { [ f, F ], [ kana_HA ] }; + key { [ g, G ], [ kana_KI ] }; + key { [ h, H ], [ kana_KU ] }; + key { [ j, J ], [ kana_MA ] }; + key { [ k, K ], [ kana_NO ] }; + key { [ l, L ], [ kana_RI ] }; + key { [ semicolon, plus ], [ kana_RE ] }; + key { [ colon, asterisk ], [ kana_KE ] }; + key { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] }; + + key { [ Shift_L ] }; + key { [ z, Z ], [ kana_TSU, kana_tsu ] }; + key { [ x, X ], [ kana_SA ] }; + key { [ c, C ], [ kana_SO ] }; + key { [ v, V ], [ kana_HI ] }; + key { [ b, B ], [ kana_KO ] }; + key { [ n, N ], [ kana_MI ] }; + key { [ m, M ], [ kana_MO ] }; + key { [ comma, less ], [ kana_NE, kana_comma ] }; + key { [ period, greater ], [ kana_RU, kana_fullstop ] }; + key { [ slash, question ], [ kana_ME, kana_middledot ] }; + key { [ NoSymbol, underscore ], [ kana_RO ] }; +// key { [ Shift_R ] }; + + key { [ Mode_switch ] }; + key { [ Alt_L ] }; + key { [ Muhenkan ] }; + key { [ space ] }; + key { [ Henkan, Kanji ] }; + // End alphanumeric section + + // Begin "Function" section + key { [ Break ] }; + key { [ Print ] }; + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ F11 ] }; + key { [ F12 ] }; + key { [ F13 ] }; + key { [ F14 ] }; + key { [ F15 ] }; + // End "Function" section + + // Begin "Editing" section + key { [ Insert ] }; + key { [ Delete ] }; + key { [ Prior ] }; + key { [ Next ] }; + key { [ Up ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ Down ] }; + // End "Editing" section + + // Begin "Keypad" section + key { [ Clear, Home ] }; + key { [ Help ] }; + key { [ KP_Subtract ] }; + key { [ KP_Divide ] }; + + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + key { [ KP_Multiply ] }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + key { [ KP_Add ] }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + key { [ KP_Equal ] }; + + key { [ KP_0 ] }; + key { [ KP_Separator ] }; + key { [ KP_Decimal ] }; +// key { [ KP_Enter ] }; + // End "Keypad" section + + modifier_map Shift { Shift_L }; + modifier_map Lock { Caps_Lock }; + modifier_map Control{ Control_L }; + modifier_map Mod1 { Alt_L }; + modifier_map Mod2 { Mode_switch }; +}; diff --git a/nixos/xkb/symbols/ng b/nixos/xkb/symbols/ng new file mode 100644 index 00000000..d8996aa6 --- /dev/null +++ b/nixos/xkb/symbols/ng @@ -0,0 +1,117 @@ +// Keyboard layouts for Nigeria. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "us" + + name[Group1]= "English (Nigeria)"; + + key {[ 4, U20A6, dollar, cent ]}; // ₦ + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "yoruba" { + include "ng(basic)" + + name[Group1]= "Yoruba"; + + key {[ U1EB9, U1EB8, q, Q ]}; // ẹ Ẹ + key {[ U1ECD, U1ECC, x, X ]}; // ọ Ọ + key {[ U1E63, U1E62, v, V ]}; // ṣ Ṣ +}; + +partial alphanumeric_keys +xkb_symbols "igbo" { + include "ng(basic)" + + name[Group1]= "Igbo"; + + key {[ U1ECB, U1ECA, q, Q ]}; // ị Ị + key {[ U1E45, U1E44, x, X ]}; // ṅ Ṅ + key {[ U1EE5, U1EE4, semicolon, colon ]}; // ụ Ụ + key {[ U1ECD, U1ECC, bracketleft, braceleft ]}; // ọ Ọ +}; + +partial alphanumeric_keys +xkb_symbols "hausa" { + include "ng(basic)" + + name[Group1]= "Hausa (Nigeria)"; + + key {[ q, Q, q, Q ]}; + key {[ udiaeresis, Udiaeresis, w, W ]}; + key {[ e, E, EuroSign, cent ]}; + key {[ U01B4, U01B3, bracketleft, braceleft ]}; // ƴ Ƴ + key {[ gcaron, Gcaron,bracketright, braceright ]}; + key {[ U0257, U018A, d, D ]}; // ɗ Ɗ + key {[ U0131, U0130, semicolon, colon ]}; // ı İ + key {[ U01DD, U018E, apostrophe, quotedbl ]}; // ǝ Ǝ + key {[ U0272, U019D, z, Z ]}; // ɲ Ɲ + key {[ ntilde, Ntilde, m, M ]}; + key {[ ccedilla, Ccedilla, period, greater ]}; + key {[ scedilla, Scedilla, slash, question ]}; +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + + include "ng(basic)" + + // OLPC West Africa keyboard layout + // See: http://wiki.laptop.org/go/Image:Nigeria-B3.png + + key {[ grave, asciitilde, exclamdown, exclamdown ]}; + key {[ 1, exclam, sterling, sterling ]}; + key {[ 2, at, EuroSign, EuroSign ]}; + key {[ 3, numbersign, dollar, dollar ]}; + key {[ 4, U20A6, U0301, U0301 ]}; // Naira, combining acute + key {[ 5, percent, U0300, U0300 ]}; // combining grave + key {[ 6,asciicircum, U030A, U030A ]}; // combining ring above + key {[ 7, ampersand, U0302, U0302 ]}; // combining circumflex above + key {[ 8, asterisk, U0324, U0324 ]}; // combining caron above + key {[ 9, parenleft, U0307, U0307 ]}; // combining dot above + key {[ 0, parenright, U0308, U0308 ]}; // combining diaeresis above + key {[ minus, underscore, U0304, U0304 ]}; // combining macron above + key {[ equal, plus, U0303, U0303 ]}; // combining tilde above + + key {[ w, W, U1EB9, U1EB8 ]}; // E with dot below + key {[ e, E, U01DD, U018E ]}; // reversed E + key {[ r, R, U01B4, U01B3 ]}; // Y with hook + key {[ t, T, U0327, U0327 ]}; // combining cedilla + key {[ y, Y, U0325, U0325 ]}; // combining ring below + key {[ u, U, U032D, U032D ]}; // combining circumflex below + key {[ i, I, U032C, U032C ]}; // combining caron below + key {[ o, O, U0323, U0323 ]}; // combining dot below + key {[ p, P, U0304, U0304 ]}; // combining diaeresis below + key {[ bracketleft, braceleft, U0331, U0331 ]}; // combining macron below + key {[bracketright, braceright, U0330, U0330 ]}; // combining tilde below + + key {[ a, A, Greek_iota, Greek_IOTA ]}; + key {[ s, S, U1E63, U1E62 ]}; // S with dot below + key {[ d, D, U0257, U018A ]}; // D with hook + key {[ f, F, U1E0D, U1E0C ]}; // D with dot below + key {[ g, G, U0272, U019D ]}; // N with left hook + key {[ h, H, U1EE5, U1EE4 ]}; // U with dot below + key {[ j, J, U1ECB, U1ECA ]}; // I with dot below + key {[ k, K, U0199, U0198 ]}; // K with hook + key {[ l, L, U1E37, U1E36 ]}; // L with dot below + key {[ semicolon, colon, masculine, ordfeminine ]}; + key {[apostrophe, quotedbl, currency, currency ]}; + key {[ backslash, bar, section, section ]}; + + key {[ c, C, U0254, U0186 ]}; // open O + key {[ v, V, U028B, U01B2 ]}; // V with hook + key {[ b, B, U0253, U0181 ]}; // B with hook + key {[ n, N, eng, ENG ]}; + key {[ m, M, U1E45, U1E44 ]}; // N with dot above + key {[ comma, less, guillemotleft, guillemotleft ]}; + key {[ period, greater, guillemotright, guillemotright ]}; + key {[ slash, question, questiondown, questiondown ]}; + + key {[ multiply, division, ISO_Next_Group, ISO_Prev_Group ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/nl b/nixos/xkb/symbols/nl new file mode 100644 index 00000000..1b83708e --- /dev/null +++ b/nixos/xkb/symbols/nl @@ -0,0 +1,139 @@ +// Keyboard layouts for the Netherlands. + +// Basic layout, based on converted file, from keytable file to xkb/symbols/ file +// with mk_xkb by root@linux.chanae.stben.be Tue Sep 30 00:53:29 MET DST 1997 +// +// Converted from the nl-latin.map of the Linux kbd package by +// Pablo Saratxaga +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin" + + name[Group1]="Dutch"; + + key { [ at, section, notsign, notsign ] }; + key { [ 2, quotedbl, twosuperior, oneeighth ] }; + key { [ 6, ampersand, threequarters, fiveeighths ] }; + key { [ 7, underscore, sterling, seveneighths ] }; + key { [ 8, parenleft, braceleft, bracketleft ] }; + key { [ 9, parenright, braceright, bracketright ] }; + key { [ 0, apostrophe, degree, trademark ] }; + key { [ slash, question, backslash, questiondown ] }; + key { [ degree, dead_tilde, dead_cedilla, dead_ogonek ] }; + + key { [ e, E, EuroSign, cent ] }; + key { [ t, T, thorn, THORN ] }; + key { [ y, Y, ydiaeresis, yen ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + key { [ i, I, idiaeresis, Idiaeresis ] }; + key { [ o, O, ograve, Ograve ] }; + key { [ p, P, paragraph, THORN ] }; + key { [dead_diaeresis, dead_circumflex, asciitilde, asciicircum] }; + key { [ asterisk, bar, dead_tilde, dead_macron ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ f, F, ordfeminine, ordfeminine ] }; + key { [ plus, plusminus, dead_acute, dead_doubleacute ] }; + key { [dead_acute, dead_grave, apostrophe, grave ] }; + key { [ less, greater, dead_grave, dead_breve ] }; + + key { [bracketright, bracketleft, bar, brokenbar ] }; + key { [ v, V, leftdoublequotemark, leftsinglequotemark ] }; + key { [ b, B, rightdoublequotemark, rightsinglequotemark ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ m, M, Greek_mu, masculine ] }; + key { [ comma, semicolon, cedilla, guillemotleft] }; + key { [ period, colon, periodcentered, guillemotright ] }; + key { [ minus, equal, hyphen, dead_abovedot] }; + + include "level3(ralt_switch)" +}; + + +// Official layout, by Benno Schulenberg , January 2007, +// based on ftp://ftp.software.ibm.com/software/globalization/keyboards/KBD143.pdf. +partial alphanumeric_keys +xkb_symbols "std" { + + name[Group1]= "Dutch (standard)"; + + key { [ at, section, notsign ] }; + key { [ 1, exclam, onesuperior ] }; + key { [ 2, quotedbl, twosuperior ] }; + key { [ 3, numbersign, threesuperior ] }; + key { [ 4, dollar, onequarter ] }; + key { [ 5, percent, onehalf ] }; + key { [ 6, ampersand, threequarters ] }; + key { [ 7, underscore, sterling ] }; + key { [ 8, parenleft, braceleft ] }; + key { [ 9, parenright, braceright ] }; + key { [ 0, apostrophe ] }; + key { [ slash, question, backslash ] }; + key { [ degree, dead_tilde, dead_cedilla ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E, EuroSign ] }; + key { [ r, R, paragraph ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [ dead_diaeresis, dead_circumflex ] }; + key { [ asterisk, bar ] }; + + key { [ a, A ] }; + key { [ s, S, ssharp ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ plus, plusminus ] }; + key { [ dead_acute, dead_grave ] }; + key { [ less, greater ] }; + + key { [ bracketright, bracketleft, brokenbar ] }; + key { [ z, Z, guillemotleft ] }; + key { [ x, X, guillemotright ] }; + key { [ c, C, cent ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M, mu ] }; + key { [ comma, semicolon ] }; + key { [ period, colon, periodcentered ] }; + key { [ minus, equal ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "us" { + include "us(euro)" + + name[Group1]= "Dutch (US)"; +}; + +// Copied from macintosh_vndr/nl +partial alphanumeric_keys +xkb_symbols "mac" { + + include "latin" + + name[Group1]= "Dutch (Macintosh)"; + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/nl(sun_type6)" +}; diff --git a/nixos/xkb/symbols/no b/nixos/xkb/symbols/no new file mode 100644 index 00000000..fb46bea7 --- /dev/null +++ b/nixos/xkb/symbols/no @@ -0,0 +1,282 @@ +// Keyboard layouts for Norway. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + // With dead-key support and all ISO-8859-1 characters available. + + include "latin(type2)" + + name[Group1]="Norwegian"; + + key { [ bar, section, brokenbar, paragraph ] }; + key { [ 5, percent, onehalf, permille ] }; + key { [ plus, question, plusminus, questiondown ] }; + key { [ backslash, dead_grave, dead_acute, notsign ] }; + + key { [ r, R, registered, trademark ] }; + key { [ p, P, Greek_pi, Greek_PI ] }; + + key { [ oslash, Oslash, dead_acute, dead_doubleacute ] }; + key { [ ae, AE, dead_circumflex, dead_caron] }; + key { [apostrophe, asterisk, dead_doubleacute, multiply ] }; + + key { [ less, greater, onehalf, threequarters] }; + key { [ period, colon, ellipsis, periodcentered ] }; + key { [ minus, underscore, endash, emdash ] }; + + include "nbsp(level3n)" + include "keypad(ossmath)" + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "no(basic)" + + name[Group1]="Norwegian (no dead keys)"; + + key { [ backslash, grave, acute, ogonek ] }; + key { [ aring, Aring, radical, dagger ] }; + key { [ diaeresis, asciicircum, asciitilde, macron ] }; + key { [ j, J, ezh, EZH ] }; + key { [ oslash, Oslash, acute, doubleacute ] }; + key { [ ae, AE, asciicircum, caron ] }; + key { [apostrophe, asterisk, ellipsis, multiply ] }; + key { [ comma, semicolon, cedilla, ogonek ] }; + key { [ period, colon, periodcentered, abovedot ] }; +}; + +partial alphanumeric_keys +xkb_symbols "winkeys" { + + include "no(basic)" + + name[Group1]="Norwegian (Windows)"; + + include "eurosign(5)" +}; + +// Norwegian Dvorak +partial alphanumeric_keys +xkb_symbols "dvorak" { + + include "us(dvorak)" + + name[Group1]="Norwegian (Dvorak)"; + + key { [ bar, section, brokenbar, paragraph ] }; + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, quotedbl, at, twosuperior ] }; + key { [ 3, numbersign, sterling, threesuperior ] }; + key { [ 4, currency, dollar, onequarter ] }; + key { [ 5, percent, onehalf, onehalf ] }; + key { [ 6, ampersand, threequarters, threequarters ] }; + key { [ 7, slash, braceleft, division ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, equal, braceright ] }; + key { [ plus, question, plusminus, questiondown ] }; + key { [ backslash, grave, dead_acute, dead_grave ] }; + + key { [ aring, Aring, braceright, bracketright ] }; + key { [ comma, semicolon, dead_cedilla, cedilla ] }; + key { [ period, colon, periodcentered ] }; + key { [ p, P, thorn, THORN ] }; + key { [ y, Y, yen ] }; + key { [ f, F, ordfeminine ] }; + key { [ c, C, ccedilla, copyright ] }; + key { [ r, R, registered ] }; + key { [ apostrophe, asterisk, dead_circumflex, acute ] }; + key { [dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ] }; + + key { [ e, E, EuroSign, cent ] }; + key { [ i, I, idotless, Iabovedot] }; + key { [ d, D, eth, ETH ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ minus, underscore, hyphen, diaeresis] }; + key { [ less, greater, guillemotleft, guillemotright ] }; + + key { [ oslash, Oslash, bar, backslash ] }; + key { [ ae, AE, braceleft, bracketleft] }; + key { [ x, X, multiply ] }; + key { [ m, M, mu ] }; + + key { [ space, space, nobreakspace, nobreakspace] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "smi" { + + // Northern Sami layout for Finland, Norway and Sweden. + // Originally implemented by Børre Gaup . + + name[Group1]= "Northern Saami (Norway)"; + + key { [ bar, section, grave, asciitilde ] }; + key { [ 1, exclam, U2022, exclamdown ] }; // bullet + key { [ 2, quotedbl, at, copyright ] }; + key { [ 3, numbersign, sterling, none ] }; + key { [ 4, currency, dollar, cent ] }; + key { [ 5, percent, EuroSign, permille ] }; + key { [ 6, ampersand, asciicircum, multiply ] }; + key { [ 7, slash, braceleft, division ] }; + key { [ 8, parenleft, bracketleft, lessthanequal ]}; + key { [ 9, parenright, bracketright, greaterthanequal ]}; + key { [ 0, equal, braceright, notequal ] }; + key { [ plus, question, plusminus, questiondown ] }; + key { [ backslash, dead_grave, dead_acute, notsign ] }; + + key { [ aacute, Aacute, q, Q ] }; + key { [ scaron, Scaron, w, W ] }; + key { [ e, E, EuroSign, none ] }; + key { [ r, R, registered, trademark ] }; + key { [ t, T, thorn, THORN ] }; + key { [ tslash, Tslash, y, Y ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + key { [ i, I, idiaeresis, Idiaeresis ] }; + key { [ o, O, otilde, Otilde ] }; + key { [ p, P, oe, OE ] }; + key { [ aring, Aring, dead_diaeresis, dead_circumflex ] }; + key { [ eng, ENG, dead_tilde, dead_caron ] }; + + key { [ a, A, acircumflex, Acircumflex ] }; + key { [ s, S, ssharp, U1E9E ] }; // ß ẞ + key { [ d, D, eth, ETH ] }; + key { [ f, F, none, ordfeminine ] }; + key { [ g, G, gcaron, Gcaron ] }; + key { [ h, H, U01E5, U01E4 ] }; // ǥ Ǥ + key { [ j, J, doublelowquotemark, singlelowquotemark ]}; // „ ‚ + key { [ k, K, U01E9, U01E8 ] }; // ǩ Ǩ + key { [ l, L, degree, hyphen ] }; + key { [ oslash, Oslash, odiaeresis, Odiaeresis ] }; + key { [ ae, AE, adiaeresis, Adiaeresis ] }; + key { [ dstroke, Dstroke, apostrophe, asterisk ] }; + + key { [ zcaron, Zcaron, U01EF, U01EE ] }; // ǯ Ǯ + key { [ z, Z, ezh, EZH ] }; // ʒ Ʒ + key { [ ccaron, Ccaron, x, X ] }; + key { [ c, C, leftdoublequotemark, leftsinglequotemark ]}; // “ ‘ + key { [ v, V, guillemotleft, U2039 ]}; // « ‹ + key { [ b, B, guillemotright, U203A ]}; // » › + key { [ n, N, rightdoublequotemark, rightsinglequotemark ]}; // ” ’ + key { [ m, M, mu, masculine ] }; + key { [ comma, semicolon, less, periodcentered ] }; + key { [ period, colon, greater, ellipsis ] }; + key { [ minus, underscore, endash, emdash ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "smi_nodeadkeys" { + + include "no(smi)" + + name[Group1]= "Northern Saami (Norway, no dead keys)"; + + key { [ backslash, grave, acute, ogonek ] }; +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + include "latin(type4)" + + name[Group1]= "Norwegian (Macintosh)"; + + key { [ bar, section ] }; + key { [ 3, numbersign, sterling, sterling ] }; + key { [ 4, currency, dollar, dollar ] }; + key { [ 6, ampersand, threequarters, fiveeighths ] }; + key { [ 7, slash, bar, backslash ] }; + key { [ 8, parenleft, bracketleft, braceleft ] }; + key { [ 9, parenright, bracketright, braceright ] }; + key { [ plus, question ] }; + key { [dead_grave, dead_acute, acute, dead_ogonek ] }; + + key { [ aring, Aring ] }; + key { [ diaeresis, asciicircum, asciitilde, dead_macron ] }; + + key { [ oslash, Oslash, odiaeresis, Odiaeresis ] }; + key { [ ae, AE ] }; + key { [ at, asterisk ] }; +}; + +partial alphanumeric_keys +xkb_symbols "mac_nodeadkeys" { + + include "no(mac)" + + name[Group1]= "Norwegian (Macintosh, no dead keys)"; + + key { [ grave, acute, acute, ogonek ] }; + key { [ diaeresis, asciicircum, asciitilde, macron ] }; +}; + +partial alphanumeric_keys +xkb_symbols "colemak" { + + include "no(basic)" + + name[Group1]= "Norwegian (Colemak)"; + + // See https://colemak.com/. + // Q W F P G J L U Y Ø Å ¨ + // A R S T D H N E I O Æ ' + // < Z X C V B K M , . - + + key { [ f, F, dstroke, ordfeminine ] }; + key { [ p, P, Greek_pi, Greek_PI ] }; + key { [ g, G, eng, ENG ] }; + key { [ j, J ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ u, U, downarrow, uparrow ] }; + key { [ y, Y, leftarrow, yen ] }; + key { [ oslash, Oslash, dead_acute, dead_doubleacute ] }; + + key { [ r, R, registered, trademark ] }; + key { [ s, S, ssharp, section ] }; + key { [ t, T, thorn, THORN ] }; + key { [ d, D, eth, ETH ] }; + key { [ n, N ] }; + key { [ e, E, EuroSign, cent ] }; + key { [ i, I, rightarrow, idotless ] }; + key { [ o, O, oe, OE ] }; + + key { [ k, K, kra, ampersand ] }; +}; + +// Having a Colemak-DH variant in the Norwegian layout provides validation for users that this layout is suitable for typing Norwegian text. +// Furthermore, staying true to the US layout gives interchangabilty benefits which far outperforms the benefits of providing a unique layout. +// You can use the referenced layout to type Norwegian characters. See: https://colemak.com/Multilingual#Norwegian_.28Norsk_bokm.C3.A5l.29 + +// Colemak-DH (ISO) symbols for xkb on X.Org Server 7.x +// 2014-10-25 by SteveP, https://colemakmods.github.io/mod-dh/ + +xkb_symbols "colemak_dh" { + + include "us(colemak_dh_iso)" + name[Group1]= "Norwegian (Colemak-DH)"; +}; + +// Colemak-DH (Wide ISO) symbols for xkb on X.Org Server 7.x +// https://colemakmods.github.io/mod-dh/ + +xkb_symbols "colemak_dh_wide" { + + include "us(colemak_dh_wide_iso)" + name[Group1]= "Norwegian (Colemak-DH Wide)"; +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/no(sun_type6)" +}; diff --git a/nixos/xkb/symbols/np b/nixos/xkb/symbols/np new file mode 100644 index 00000000..6fe8e232 --- /dev/null +++ b/nixos/xkb/symbols/np @@ -0,0 +1,121 @@ +// Keyboard layouts for Nepal. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Nepali"; + + key {[ 0x100093D, 0x100093C ]}; // ऽ ़ + key {[ 0x1000967, exclam ]}; // १ ! + key {[ 0x1000968, at ]}; // २ @ + key {[ 0x1000969, numbersign ]}; // ३ # + key {[ 0x100096A, dollar ]}; // ४ $ + key {[ 0x100096B, percent ]}; // ५ % + key {[ 0x100096C, asciicircum]}; // ६ ^ + key {[ 0x100096D, ampersand ]}; // ७ & + key {[ 0x100096e, asterisk ]}; // ८ * + key {[ 0x100096F, parenleft ]}; // ९ ( + key {[ 0x1000966, parenright ]}; // ० ) + key {[ minus, 0x1000952 ]}; // - ॒ + key {[ 0x100200D, 0x100200C ]}; // ZWJ ZWNJ + + key {[ 0x100091F, 0x1000920 ]}; // ट ठ + key {[ 0x100094C, 0x1000914 ]}; // ौ औ + key {[ 0x1000947, 0x1000948 ]}; // े ै + key {[ 0x1000930, 0x1000943 ]}; // र ृ + key {[ 0x1000924, 0x1000925 ]}; // त थ + key {[ 0x100092F, 0x100091E ]}; // य ञ + key {[ 0x1000941, 0x1000942 ]}; // ु ू + key {[ 0x100093F, 0x1000940 ]}; // ि ी + key {[ 0x100094B, 0x1000913 ]}; // ो ओ + key {[ 0x100092A, 0x100092B ]}; // प फ + key {[ 0x1000907, 0x1000908 ]}; // इ ई + key {[ 0x100090F, 0x1000910 ]}; // ए ऐ + + key {[ 0x100093E, 0x1000906 ]}; // ा आ + key {[ 0x1000938, 0x1000936 ]}; // स श + key {[ 0x1000926, 0x1000927 ]}; // द ध + key {[ 0x1000909, 0x100090A ]}; // उ ऊ + key {[ 0x1000917, 0x1000918 ]}; // ग घ + key {[ 0x1000939, 0x1000905 ]}; // ह अ + key {[ 0x100091C, 0x100091D ]}; // ज झ + key {[ 0x1000915, 0x1000916 ]}; // क ख + key {[ 0x1000932, 0x1000965 ]}; // ल ॥ + key {[ semicolon, colon ]}; // ; : + key {[ apostrophe, quotedbl ]}; // ' " + key {[ 0x1000950, 0x1000903 ]}; // ॐ ः + + key {[ 0x1000937, 0x100090B ]}; // ष ऋ + key {[ 0x1000921, 0x1000922 ]}; // ड ढ + key {[ 0x100091A, 0x100091B ]}; // च छ + key {[ 0x1000935, 0x1000901 ]}; // व ँ + key {[ 0x100092C, 0x100092D ]}; // ब भ + key {[ 0x1000928, 0x1000923 ]}; // न ण + key {[ 0x100092E, 0x1000902 ]}; // म ं + key {[ comma, 0x1000919 ]}; // , ङ + key {[ 0x1000964, period ]}; // । . + key {[ 0x100094D, question ]}; // ् ? +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + + // #HW-SPECIFIC + + // Contact: Walter Bender + + name[Group1]= "Nepali"; + + key {[ 0x100091E, 0x1000965 ]}; // NYA; double danda + key {[ 0x1000967, 0x10FFFFD ]}; // Nepali digit one; U091C+U094D+U091E + key {[ 0x1000968, 0x1000908 ]}; // Nepali digit two; + key {[ 0x1000969, 0x1000918 ]}; // Nepali digit three; + key {[ 0x100096A, 0x10FFFFC ]}; // Nepali digit four; U0926+U094D+U0927 + key {[ 0x100096B, 0x100091B ]}; // Nepali digit five + key {[ 0x100096C, 0x100091F ]}; // Nepali digit six + key {[ 0x100096D, 0x1000920 ]}; // Nepali digit seven + key {[ 0x100096e, 0x1000921 ]}; // Nepali digit eight + key {[ 0x100096F, 0x1000922 ]}; // Nepali digit nine + key {[ 0x1000966, 0x1000923 ]}; // Nepali digit zero + key {[ 0x1000914, 0x1000913 ]}; // O, AU + key {[ 0x100200C, 0x1000902 ]}; // ZERO-WIDTH-NON-JOINER (ZWNJ); SIGN ANUSVARA + key {[ 0x100094D, 0x100200D ]}; // SIGN VIRAMA; ZERO-WIDTH-JOINER (ZWJ) + + key {[ 0x10FFFFB, 0x10FFFFA ]}; // U0924+U094D+U0930; U0924+U094D+U0924 + key {[ 0x1000927, 0x10FFFF9 ]}; // DHA; U0921+U094D+U0922 + key {[ 0x100092D, 0x1000910 ]}; // BHA, AI + key {[ 0x100091A, 0x10FFFF8 ]}; // CA; U0926+U094D+U0935 + key {[ 0x1000924, 0x10FFFF7 ]}; // TA; U091F+U094D+U091F + key {[ 0x1000925, 0x10FFFF6 ]}; // THA; U0920+U094D+U0920 + key {[ 0x1000917, 0x100090A ]}; // GA, UU + key {[ 0x1000937, 0x10FFFF5 ]}; // SSA; U0915+U094D+U0937 + key {[ 0x100092F, 0x1000907 ]}; // YA, I + key {[ 0x1000909, 0x100090F ]}; // U, E + key {[ 0x10FFFF4, 0x1000943 ]}; // U0928+U094D+ZWJ; VOWEL SIGN VOCALIC R + key {[ 0x1000947, 0x1000948 ]}; // SIGN E; SIGN AI + + key {[ 0x100092C, 0x1000906 ]}; // BA, AA + key {[ 0x1000915, 0x10FFFF3 ]}; // KA; U0919+U094D+U0915 + key {[ 0x100092E, 0x10FFFF2 ]}; // MA; U0919+U094D+U0917 + key {[ 0x100093E, 0x1000901 ]}; // CANDRABINDU, VOWEL SIGN AA + key {[ 0x1000928, 0x10FFFF1 ]}; // NA; U0926+U094D+U0926 + key {[ 0x100091C, 0x100091D ]}; // JA, JHA + key {[ 0x1000935, 0x100094B ]}; // VA, VOWEL SIGN O + key {[ 0x100092A, 0x100092B ]}; // PA, PHA + key {[ 0x100093F, 0x1000940 ]}; // VOWEL SIGN I, VOWEL SIGN II + key {[ 0x1000938, 0x10FFFF0 ]}; // SA; U091F+U094D+U0920 + key {[ 0x1000941, 0x1000942 ]}; // VOWEL SIGN U, VOWEL SIGN UU + + key {[ 0x1000936, 0x10FFFEF ]}; // SHA; U0915+U094D+U0915 + key {[ 0x1000939, 0x10FFFEE ]}; // HA; U0939+U094D+U092F + key {[ 0x1000905, 0x100090B ]}; // A; U0909+U090B + key {[ 0x1000916, 0x1000950 ]}; // KHA, OM + key {[ 0x1000926, 0x100094C ]}; // DA, VOWEL SIGN AU + key {[ 0x1000932, 0x10FFFED ]}; // LA; U0926+U094D+U092F + key {[ 0x1000903, 0x10FFFEC ]}; // SIGN VISARGA; U0921+U094D+U0921 + key {[ 0x100093D, 0x1000919 ]}; // SIGN AVAGRHA; NGA + key {[ 0x1000964, 0x10FFFEB ]}; // DANDA; U0936+U094D+U0930 + key {[ 0x1000930, 0x10FFFEA ]}; // RA; U0930+U0941 + + include "group(olpc)" +}; diff --git a/nixos/xkb/symbols/nz b/nixos/xkb/symbols/nz new file mode 100644 index 00000000..6b2f5d19 --- /dev/null +++ b/nixos/xkb/symbols/nz @@ -0,0 +1,31 @@ +// Keyboard layouts for New Zealand. + +default +xkb_symbols "basic" { + + include "us(basic)" + + name[Group1]= "English (New Zealand)"; +}; + +xkb_symbols "mao" { + + // Adds the macrons needed for the Maori language to + // a simple US keyboard layout. + + include "latin" + + name[Group1]="Maori"; + + key { [ a, A, amacron, Amacron ] }; + key { [ e, E, emacron, Emacron ] }; + key { [ i, I, imacron, Imacron ] }; + + key { [ o, O, omacron, Omacron ] }; + key { [ u, U, umacron, Umacron ] }; + + key { type[Group1]="TWO_LEVEL", + [ ISO_Level3_Shift, Multi_key ] }; + + modifier_map Mod5 { }; +}; diff --git a/nixos/xkb/symbols/olpc b/nixos/xkb/symbols/olpc new file mode 100644 index 00000000..250e2c5d --- /dev/null +++ b/nixos/xkb/symbols/olpc @@ -0,0 +1,21 @@ +// +// Created by Bernardo Innocenti +// +// Additional symbol definitions for the OLPC keyboards +// + +alphanumeric_keys modifier_keys +xkb_symbols "olpc" { + include "pc(pc105)" + + modifier_map Mod1 { KP_Home }; // KP_Home is the "square" game key + modifier_map Mod3 { KP_End }; // KP_End is the "tick" game key + modifier_map Mod4 { KP_Prior }; // KP_Prior is the "O" game key + modifier_map Mod5 { KP_Next }; // KP_Next is the "X" game key + + key { [ XF86Search ] }; // search key (unpopulated on olpcm, harmless) + key { [ XF86Meeting ] }; // fn+search key (unpopulated on olpcm, harmless) + key { [ XF86Start ] }; // gear key (fn+space) + key { [ XF86TaskPane ] }; // frame key (the top-right key) (unpopulated on olpcm, harmless) + key { [ XF86Messenger ] }; // overlay key (next to frame key) (unpopulated on olpcm, harmless) +}; diff --git a/nixos/xkb/symbols/parens b/nixos/xkb/symbols/parens new file mode 100644 index 00000000..3123fba7 --- /dev/null +++ b/nixos/xkb/symbols/parens @@ -0,0 +1,8 @@ +// swap parentheses and square brackets +default partial +xkb_symbols "swap_brackets" { + replace key { [ 9, bracketleft ] }; + replace key { [ 0, bracketright ] }; + replace key { [ parenleft, braceleft ] }; + replace key { [ parenright, braceright ] }; +}; diff --git a/nixos/xkb/symbols/pc b/nixos/xkb/symbols/pc new file mode 100644 index 00000000..8560a961 --- /dev/null +++ b/nixos/xkb/symbols/pc @@ -0,0 +1,91 @@ +// The keys that are common to all standard layouts. +default partial alphanumeric_keys modifier_keys +xkb_symbols "pc105" { + + key {[ Escape ]}; + key {[ Tab, ISO_Left_Tab ]}; + key {[ Caps_Lock ]}; + + key {[ BackSpace, BackSpace ]}; + key {[ backslash, bar ]}; + key {[ Return ]}; + + // The extra key on many European keyboards: + key {[ less, greater, bar, brokenbar ]}; + + key {[ space ]}; + + key {[ Shift_L ]}; + key {[ Shift_R ]}; + key {[ Control_L ]}; + key {[ Control_R ]}; + key {[ Alt_L, Meta_L ]}; + key {[ Alt_R, Meta_R ]}; + key {[ Super_L ]}; + key {[ Super_R ]}; + + key {[ Menu ]}; + + modifier_map Shift { Shift_L, Shift_R }; + modifier_map Lock { Caps_Lock }; + modifier_map Control { Control_L, Control_R }; + modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R }; + modifier_map Mod2 { Num_Lock }; + modifier_map Mod4 { Super_L, Super_R }; + + // Six fake keys for virtual<->real modifiers mapping: + key {[ ISO_Level3_Shift ]}; + modifier_map Mod5 { }; + + key {[ ISO_Level5_Shift ]}; + modifier_map Mod3 { }; + + key {[ NoSymbol, Alt_L ]}; + modifier_map Mod1 { }; + + key {[ NoSymbol, Meta_L ]}; + modifier_map Mod1 { }; + + key {[ NoSymbol, Super_L ]}; + modifier_map Mod4 { }; + + key {[ NoSymbol, Hyper_L ]}; + modifier_map Mod4 { }; + + include "srvr_ctrl(fkey2vt)" + + key {[ Print, Sys_Req ], type="PC_ALT_LEVEL2" }; + key {[ Scroll_Lock ]}; + key {[ Pause, Break ], type="PC_CONTROL_LEVEL2" }; + + key {[ Insert ]}; + key {[ Delete ]}; + key {[ Home ]}; + key {[ End ]}; + key {[ Prior ]}; + key {[ Next ]}; + + key {[ Up ]}; + key {[ Down ]}; + key {[ Left ]}; + key {[ Right ]}; + + key {[ Num_Lock ]}; + include "keypad(x11)" + + // Extra Japanese keys: + key {[ Muhenkan ]}; + key {[ Henkan ]}; + key {[ Hiragana_Katakana ]}; + key {[ Hiragana ]}; // This key and the next are rare. + key {[ Katakana ]}; + + // Extra Korean keys: + key {[ Hangul ]}; + key {[ Hangul_Hanja ]}; + + key {[ XF86Display ]}; + key {[ XF86KbdLightOnOff ]}; + key {[ XF86KbdBrightnessDown ]}; + key {[ XF86KbdBrightnessUp ]}; +}; diff --git a/nixos/xkb/symbols/ph b/nixos/xkb/symbols/ph new file mode 100644 index 00000000..14250605 --- /dev/null +++ b/nixos/xkb/symbols/ph @@ -0,0 +1,996 @@ +// Keyboard layouts for the Philippines. + +//////////////////////////////////////////////////////////////////////////////// +// Philippines National Keyboard Layout v1.0.0 (2010-10-23) // +// http://laibcoms.com/sandbox/the-philippines-national-keyboard-layout // +// // +// Loosely based on ISO/IEC 9995-3:2009 // +// * glyphs that are not used in Philippine Languages and // +// Philippine English were not included // +// * Additions/Changes that are not part of ISO/IEC 9995-3:2009 // +// were added // +// // +// http://en.wikipedia.org/wiki/ISO/IEC_9995 // +// http://www.fileformat.info/info/unicode/char/20B1/index.htm // +// // +// By: Ubuntu Philippines LoCo Team // +// Site: http://ubuntu-ph.org // +// // +// Project Contact: JC John Sese Cuneta / 謝施洗 / ᜑᜓᜏᜈ᜔ ᜃᜓᜈᜒᜆ // +// XMPP/Jabber: jcjohn.sesecuneta@talkr.im // +// Email: jcjohn.sesecuneta@laibcoms.com // +//////////////////////////////////////////////////////////////////////////////// + +// QWERTY (Latin) version +// http://en.wikipedia.org/wiki/QWERTY +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ ~ ̃◌ │ ! ¡ │ @ ¤ │ # £ │ $ € │ % ° │ ^ ̂◌ │ & ← │ * → │ ( ↑ │ ) ↓ │ _ ◌͠ │ + ∓ ┃ ⌫ Bak ┃ +// │ ` ̀◌ │ 1 ¹ │ 2 ² │ 3 ³ │ 4 ¼ │ 5 ½ │ 6 ¾ │ 7 ⅛ │ 8 ⅜ │ 9 ⅝ │ 0 ⅞ │ - ¬ │ = ± ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ Q │ W │ E Œ │ R ¶ │ T │ Y │ U │ I İ │ O Ø │ P │ { │ } │ | Ə │ +// ┃Tab ↹ ┃ q │ w │ e œ │ r ® │ t ™ │ y ¥ │ u │ i ı │ o ø │ p ₱ │ [ │ ] │ \ ə │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ A Æ │ S │ D │ F ª │ G │ H │ J │ K │ L │ : │ " ̋◌ ┃ Enter ┃ +// ┃Caps ⇬ ┃ a æ │ s § │ d │ f │ g │ h │ j │ k │ l │ ; │ ' ́◌ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ ¦ │ Z » │ X · │ C ¢ │ V ‘ │ B ’ │ N Ñ │ M º │ < ̨◌ │ > ␣ │ ? ¿ ┃ ┃ +// ┃Shift ⇧┃ │ z « │ x × │ c © │ v “ │ b ” │ n ñ │ m µ │ , ̧◌ │ . … │ / ÷ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space Space ␣ ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space Space ␣ ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Filipino"; + +// ISO grouping: |--------- Group1 ---------| |--------- Group2 ---------| +// Level1 Level2 Level3 Level4 +// Base Shift AltGr AltGr+Shift + + // E row; Numerals row, left side + key { [ U0060, U007E, U0300, U0303 ] }; // ` ~ ̀◌ ̃◌ (combining grave accent) (combining tilde) + key { [ U0031, U0021, U00B9, U00A1 ] }; // 1 ! ¹ ¡ + key { [ U0032, U0040, U00B2, U00A4 ] }; // 2 @ ² ¤ + key { [ U0033, U0023, U00B3, U00A3 ] }; // 3 # ³ £ + key { [ U0034, U0024, U00BC, U20AC ] }; // 4 $ ¼ € + key { [ U0035, U0025, U00BD, U00B0 ] }; // 5 % ½ ° + // E row; Numerals row, right side + key { [ U0036, U005E, U00BE, U0302 ] }; // 6 ^ ¾ ̂◌ (combining circumflex accent) + key { [ U0037, U0026, U215B, U2190 ] }; // 7 & ⅛ ← + key { [ U0038, U002A, U215C, U2192 ] }; // 8 * ⅜ → + key { [ U0039, U0028, U215D, U2191 ] }; // 9 ( ⅝ ↑ + key { [ U0030, U0029, U215E, U2193 ] }; // 0 ) ⅞ ↓ + key { [ U002D, U005F, U00AC, U0360 ] }; // - _ ¬ ◌͠ + key { [ U003D, U002B, U00B1, U2213 ] }; // = + ± ∓ + + // D row; QWERTY row, left side + key { [ U0071, U0051, VoidSymbol, VoidSymbol ] }; // q Q + key { [ U0077, U0057, VoidSymbol, VoidSymbol ] }; // w W + key { [ U0065, U0045, U0153, U0152 ] }; // e E œ Œ + key { [ U0072, U0052, U00AE, U00B6 ] }; // r R ® ¶ + key { [ U0074, U0054, U2122, VoidSymbol ] }; // t T ™ + // D row; QWERTY row, right side + key { [ U0079, U0059, U00A5, VoidSymbol ] }; // y Y ¥ + key { [ U0075, U0055, VoidSymbol, VoidSymbol ] }; // u U + key { [ U0069, U0049, U0131, U0130 ] }; // i I ı İ + key { [ U006F, U004F, U00F8, U00D8 ] }; // o O ø Ø + key { [ U0070, U0050, U20B1, VoidSymbol ] }; // p P ₱ + key { [ U005B, U007B, VoidSymbol, VoidSymbol ] }; // [ { + key { [ U005D, U007D, VoidSymbol, VoidSymbol ] }; // ] } + key { [ U005C, U007C, U0259, U018F ] }; // \ | ə Ə + + // C row; Home row, left side + key { [ U0061, U0041, U00E6, U00C6 ] }; // a A æ Æ + key { [ U0073, U0053, U00A7, VoidSymbol ] }; // s S § + key { [ U0064, U0044, VoidSymbol, VoidSymbol ] }; // d D + key { [ U0066, U0046, VoidSymbol, U00AA ] }; // f F ª + key { [ U0067, U0047, VoidSymbol, VoidSymbol ] }; // g G + // C row; Home row, right side + key { [ U0068, U0048, VoidSymbol, VoidSymbol ] }; // h H + key { [ U006A, U004A, VoidSymbol, VoidSymbol ] }; // j J + key { [ U006B, U004B, VoidSymbol, VoidSymbol ] }; // k K + key { [ U006C, U004C, VoidSymbol, VoidSymbol ] }; // l L + key { [ U003B, U003A, VoidSymbol, VoidSymbol ] }; // ; : + key { [ U0027, U0022, U0301, U030B ] }; // ' " ́◌ ̋◌ (combining acute accent) (combining double-acute accent) + + // B row; Lower row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, U00A6 ] }; // ¦ + key { [ U007A, U005A, U00AB, U00BB ] }; // z Z « » + key { [ U0078, U0058, U00D7, U00B7 ] }; // x X × · + key { [ U0063, U0043, U00A9, U00A2 ] }; // c C © ¢ + key { [ U0076, U0056, U201C, U2018 ] }; // v V “ ‘ + key { [ U0062, U0042, U201D, U2019 ] }; // b B ” ’ + // B row; Lower row, right side + key { [ U006E, U004E, U00F1, U00D1 ] }; // n N ñ Ñ + key { [ U006D, U004D, U00B5, U00BA ] }; // m M µ º + key { [ U002C, U003C, U0327, U0328 ] }; // , < ̧◌ ̨◌ (combining cedilla) (combining ogonek) + key { [ U002E, U003E, U2026, U2423 ] }; // . > … ␣ + key { [ U002F, U003F, U00F7, U00BF ] }; // / ? ÷ ¿ + + // A row + key { [ U0020, U0020, U0020, U0020 ] }; // (space) (space) (space) (space) + + include "level3(ralt_switch)" +}; + + +// QWERTY (Baybayin) version +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ◌᜔ ┃ ⌫ Bak ┃ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ◌᜔ ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ │ │ ᜁ │ │ │ │ ᜂ │ ᜁ │ ᜂ │ │ │ │ │ +// ┃Tab ↹ ┃ │ ᜏ │ ◌ᜒ │ ᜍ │ ᜆ │ ᜌ │ ◌ᜓ │ ◌ᜒ │ ◌ᜓ │ ᜉ │ │ │ │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ Enter ┃ +// ┃Caps ⇬ ┃ ᜀ │ ᜐ │ ᜇ │ │ ᜄ │ ᜑ │ │ ᜃ │ ᜎ │ │ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ ᜅ │ │ │ │ ┃ ┃ +// ┃Shift ⇧┃ │ │ │ │ │ ᜊ │ ᜈ │ ᜋ │ ᜵ │ ᜶ │ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// +partial alphanumeric_keys +xkb_symbols "qwerty-bay" { + + name[Group1]= "Filipino (QWERTY, Baybayin)"; + +// ISO grouping: |--------- Group1 ---------| |--------- Group2 ---------| +// Level1 Level2 Level3 Level4 +// Base Shift AltGr AltGr+Shift + + // E row; Numerals row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + // E row; Numerals row, right side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1714, U1714, VoidSymbol, VoidSymbol ] }; // ◌᜔ (virama) ◌᜔ (virama) + + // D row; QWERTY row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U170F, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜏ (Wa) + key { [ U1712, U1701, VoidSymbol, VoidSymbol ] }; // ◌ᜒ (e/i) ᜁ (E/I) + key { [ U170D, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜍ (Ra) + key { [ U1706, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜆ (Ta) + // D row; QWERTY row, right side + key { [ U170C, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜌ (Ya) + key { [ U1713, U1702, VoidSymbol, VoidSymbol ] }; // ◌ᜓ (o/u) ᜂ (O/U) + key { [ U1712, U1701, VoidSymbol, VoidSymbol ] }; // ◌ᜒ (e/i) ᜁ (E/I) + key { [ U1713, U1702, VoidSymbol, VoidSymbol ] }; // ◌ᜓ (o/u) ᜂ (O/U) + key { [ U1709, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜉ (Pa) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // C row; Home row, left side + key { [ U1700, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜀ (A) + key { [ U1710, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜐ (Sa) + key { [ U1707, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜇ (Da) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1704, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜄ (Ga) + // C row; Home row, right side + key { [ U1711, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜑ (Ha) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1703, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜃ (Ka) + key { [ U170E, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜎ (La) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // B row; Lower row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U170A, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜊ (Ba) + // B row; Lower row, right side + key { [ U1708, U1705, VoidSymbol, VoidSymbol ] }; // ᜈ (Na) ᜅ (Nga) + key { [ U170B, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜋ (Ma) + key { [ U1735, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜵ (comma) + key { [ U1736, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜶ (period) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // A row + key { [ U0020, U0020, U0020, U0020 ] }; // (space) (space) (space) (space) + + include "level3(ralt_switch)" +}; + + +// Capewell-Dvorak (Latin) version +// http://www.michaelcapewell.com/projects/keyboard/index.htm#The_Capewell-Dvorak_Layout +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ ~ ̃◌ │ ! ¡ │ @ ¤ │ # £ │ $ € │ % ° │ ^ ̂◌ │ & → │ * → │ ( ↑ │ ) ↓ │ { │ } ┃ ⌫ Bak ┃ +// │ ` ̀◌ │ 1 ¹ │ 2 ² │ 3 ³ │ 4 ¼ │ 5 ½ │ 6 ¾ │ 7 ⅛ │ 8 ⅜ │ 9 ⅝ │ 0 ⅞ │ [ │ ] ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ " ̋◌ │ < ̨◌ │ > ␣ │ P │ Y │ Q │ F ª │ G │ R ¶ │ K │ ? ¿ │ + ∓ │ | Ə │ +// ┃Tab ↹ ┃ ' ́◌ │ , ̧◌ │ . … │ p ₱ │ y ¥ │ q │ f │ g │ r ® │ k │ / ÷ │ = ± │ \ ə │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ O Ø │ A Æ │ E Œ │ I İ │ U │ D │ H │ T │ N Ñ │ S │ _ ◌͠ ┃ Enter ┃ +// ┃Caps ⇬ ┃ o ø │ a æ │ e œ │ i ı │ u │ d │ h │ t ™ │ n ñ │ s § │ - ¬ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ ¦ │ Z » │ X · │ C ¢ │ V ‘ │ J │ L │ M º │ W │ B ’ │ : ┃ ┃ +// ┃Shift ⇧┃ │ z « │ x × │ c © │ v “ │ j │ l │ m µ │ w │ b ” │ ; ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space Space ␣ ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space Space ␣ ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// +partial alphanumeric_keys +xkb_symbols "capewell-dvorak" { + + name[Group1]= "Filipino (Capewell-Dvorak, Latin)"; + +// ISO grouping: |--------- Group1 ---------| |--------- Group2 ---------| +// Level1 Level2 Level3 Level4 +// Base Shift AltGr AltGr+Shift + + // E row; Numerals row, left side + key { [ U0060, U007E, U0300, U0303 ] }; // ` ~ ̀◌ ̃◌ (combining grave accent) (combining tilde) + key { [ U0031, U0021, U00B9, U00A1 ] }; // 1 ! ¹ ¡ + key { [ U0032, U0040, U00B2, U00A4 ] }; // 2 @ ² ¤ + key { [ U0033, U0023, U00B3, U00A3 ] }; // 3 # ³ £ + key { [ U0034, U0024, U00BC, U20AC ] }; // 4 $ ¼ € + key { [ U0035, U0025, U00BD, U00B0 ] }; // 5 % ½ ° + // E row; Numerals row, right side + key { [ U0036, U005E, U00BE, U0302 ] }; // 6 ^ ¾ ̂◌ (combining circumflex accent) + key { [ U0037, U0026, U215B, U2190 ] }; // 7 & ⅛ ← + key { [ U0038, U002A, U215C, U2192 ] }; // 8 * ⅜ → + key { [ U0039, U0028, U215D, U2191 ] }; // 9 ( ⅝ ↑ + key { [ U0030, U0029, U215E, U2193 ] }; // 0 ) ⅞ ↓ + key { [ U005B, U007B, VoidSymbol, VoidSymbol ] }; // [ { + key { [ U005D, U007D, VoidSymbol, VoidSymbol ] }; // ] } + + // D row; Upper row, left side + key { [ U0027, U0022, U0301, U030B ] }; // ' " ́◌ ̋◌ (combining acute accent) (combining double-acute accent) + key { [ U002C, U003C, U0327, U0328 ] }; // , < ̧◌ ̨◌ (combining cedilla) (combining ogonek) + key { [ U002E, U003E, U2026, U2423 ] }; // . > … ␣ + key { [ U0070, U0050, U20B1, VoidSymbol ] }; // p P ₱ + key { [ U0079, U0059, U00A5, VoidSymbol ] }; // y Y ¥ + // D row; Upper row, right side + key { [ U0071, U0051, VoidSymbol, VoidSymbol ] }; // q Q + key { [ U0066, U0046, VoidSymbol, U00AA ] }; // f F ª + key { [ U0067, U0047, VoidSymbol, VoidSymbol ] }; // g G + key { [ U0072, U0052, U00AE, U00B6 ] }; // r R ® ¶ + key { [ U006B, U004B, VoidSymbol, VoidSymbol ] }; // k K + key { [ U002F, U003F, U00F7, U00BF ] }; // / ? ÷ ¿ + key { [ U003D, U002B, U00B1, U2213 ] }; // = + ± ∓ + key { [ U005C, U007C, U0259, U018F ] }; // \ | ə Ə + + // C row; Home row, left side + key { [ U006F, U004F, U00F8, U00D8 ] }; // o O ø Ø + key { [ U0061, U0041, U00E6, U00C6 ] }; // a A æ Æ + key { [ U0065, U0045, U0153, U0152 ] }; // e E œ Œ + key { [ U0069, U0049, U0131, U0130 ] }; // i I ı İ + key { [ U0075, U0055, VoidSymbol, VoidSymbol ] }; // u U + // C row; Home row, right side + key { [ U0064, U0044, VoidSymbol, VoidSymbol ] }; // d D + key { [ U0068, U0048, VoidSymbol, VoidSymbol ] }; // h H + key { [ U0074, U0054, U2122, VoidSymbol ] }; // t T ™ + key { [ U006E, U004E, U00F1, U00D1 ] }; // n N ñ Ñ + key { [ U0073, U0053, U00A7, VoidSymbol ] }; // s S § + key { [ U002D, U005F, U00AC, U0360 ] }; // - _ ¬ ◌͠ + + // B row; Lower row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, U00A6 ] }; // ¦ + key { [ U007A, U005A, U00AB, U00BB ] }; // z Z « » + key { [ U0078, U0058, U00D7, U00B7 ] }; // x X × · + key { [ U0063, U0043, U00A9, U00A2 ] }; // c C © ¢ + key { [ U0076, U0056, U201C, U2018 ] }; // v V “ ‘ + key { [ U006A, U004A, VoidSymbol, VoidSymbol ] }; // j J + // B row; Lower row, right side + key { [ U006C, U004C, VoidSymbol, VoidSymbol ] }; // l L + key { [ U006D, U004D, U00B5, U00BA ] }; // m M µ º + key { [ U0077, U0057, VoidSymbol, VoidSymbol ] }; // w W + key { [ U0062, U0042, U201D, U2019 ] }; // b B ” ’ + key { [ U003B, U003A, VoidSymbol, VoidSymbol ] }; // ; : + + // A row + key { [ U0020, U0020, U0020, U0020 ] }; // (space) (space) (space) (space) + + include "level3(ralt_switch)" +}; + + +// Capewell-Dvorak (Baybayin) version +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ⌫ Bak ┃ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ◌᜔ │ │ +// ┃Tab ↹ ┃ │ ᜵ │ ᜶ │ ᜉ │ ᜌ │ │ │ ᜄ │ ᜍ │ ᜃ │ │ ◌᜔ │ │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ ᜂ │ │ ᜁ │ ᜁ │ ᜂ │ │ │ │ ᜅ │ │ ┃ Enter ┃ +// ┃Caps ⇬ ┃ ◌ᜓ │ ᜀ │ ◌ᜒ │ ◌ᜒ │ ◌ᜓ │ ᜇ │ ᜑ │ ᜆ │ ᜈ │ ᜐ │ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃Shift ⇧┃ │ │ │ │ │ │ ᜎ │ ᜋ │ ᜏ │ ᜊ │ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// +partial alphanumeric_keys +xkb_symbols "capewell-dvorak-bay" { + + name[Group1]= "Filipino (Capewell-Dvorak, Baybayin)"; + +// ISO grouping: |--------- Group1 ---------| |--------- Group2 ---------| +// Level1 Level2 Level3 Level4 +// Base Shift AltGr AltGr+Shift + + // E row; Numerals row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + // E row; Numerals row, right side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // D row; QWERTY row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1735, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜵ (comma) + key { [ U1736, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜶ (period) + key { [ U1709, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜉ (Pa) + key { [ U170C, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜌ (Ya) + // D row; QWERTY row, right side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1704, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜄ (Ga) + key { [ U170D, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜍ (Ra) + key { [ U1703, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜃ (Ka) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1714, U1714, VoidSymbol, VoidSymbol ] }; // ◌᜔ (virama) ◌᜔ (virama) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // C row; Home row, left side + key { [ U1713, U1702, VoidSymbol, VoidSymbol ] }; // ◌ᜓ (o/u) ᜂ (O/U) + key { [ U1700, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜀ (A) + key { [ U1712, U1701, VoidSymbol, VoidSymbol ] }; // ◌ᜒ (e/i) ᜁ (E/I) + key { [ U1712, U1701, VoidSymbol, VoidSymbol ] }; // ◌ᜒ (e/i) ᜁ (E/I) + key { [ U1713, U1702, VoidSymbol, VoidSymbol ] }; // ◌ᜓ (o/u) ᜂ (O/U) + // C row; Home row, right side + key { [ U1707, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜇ (Da) + key { [ U1711, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜑ (Ha) + key { [ U1706, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜆ (Ta) + key { [ U1708, U1705, VoidSymbol, VoidSymbol ] }; // ᜈ (Na) ᜅ (Nga) + key { [ U1710, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜐ (Sa) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // B row; Lower row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + // B row; Lower row, right side + key { [ U170E, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜎ (La) + key { [ U170B, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜋ (Ma) + key { [ U170F, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜏ (Wa) + key { [ U170A, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜊ (Ba) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // A row + key { [ U0020, U0020, U0020, U0020 ] }; // (space) (space) (space) (space) + + include "level3(ralt_switch)" +}; + + +// Capewell-QWERF 2006 (Latin) version +// http://www.michaelcapewell.com/projects/keyboard/index.htm#The_QWERF_Layout +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ ~ ̃◌ │ ! ¡ │ @ ¤ │ # £ │ $ € │ % ° │ ^ ̂◌ │ & → │ * → │ ( ↑ │ ) ↓ │ _ ◌͠ │ + ∓ ┃ ⌫ Bak ┃ +// │ ` ̀◌ │ 1 ¹ │ 2 ² │ 3 ³ │ 4 ¼ │ 5 ½ │ 6 ¾ │ 7 ⅛ │ 8 ⅜ │ 9 ⅝ │ 0 ⅞ │ - ¬ │ = ± ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ Q │ W │ E Œ │ R ¶ │ F ª │ J │ Y │ K │ L │ : │ { │ } │ | Ə │ +// ┃Tab ↹ ┃ q │ w │ e œ │ r ® │ f │ j │ y ¥ │ k │ l │ ; │ [ │ ] │ \ ə │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ A Æ │ S │ D │ T │ G │ H │ U │ I İ │ O Ø │ P │ " ̋◌ ┃ Enter ┃ +// ┃Caps ⇬ ┃ a æ │ s § │ d │ t ™ │ g │ h │ u │ i ı │ o ø │ p ₱ │ ' ́◌ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ ¦ │ Z » │ X · │ C ¢ │ V ‘ │ B ’ │ N Ñ │ M º │ < ̨◌ │ > ␣ │ ? ¿ ┃ ┃ +// ┃Shift ⇧┃ │ z « │ x × │ c © │ v “ │ b ” │ n ñ │ m µ │ , ̧◌ │ . … │ / ÷ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space Space ␣ ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space Space ␣ ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// +partial alphanumeric_keys +xkb_symbols "capewell-qwerf2k6" { + + name[Group1]= "Filipino (Capewell-QWERF 2006, Latin)"; + +// ISO grouping: |--------- Group1 ---------| |--------- Group2 ---------| +// Level1 Level2 Level3 Level4 +// Base Shift AltGr AltGr+Shift + + // E row; Numerals row, left side + key { [ U0060, U007E, U0300, U0303 ] }; // ` ~ ̀◌ ̃◌ (combining grave accent) (combining tilde) + key { [ U0031, U0021, U00B9, U00A1 ] }; // 1 ! ¹ ¡ + key { [ U0032, U0040, U00B2, U00A4 ] }; // 2 @ ² ¤ + key { [ U0033, U0023, U00B3, U00A3 ] }; // 3 # ³ £ + key { [ U0034, U0024, U00BC, U20AC ] }; // 4 $ ¼ € + key { [ U0035, U0025, U00BD, U00B0 ] }; // 5 % ½ ° + // E row; Numerals row, right side + key { [ U0036, U005E, U00BE, U0302 ] }; // 6 ^ ¾ ̂◌ (combining circumflex accent) + key { [ U0037, U0026, U215B, U2190 ] }; // 7 & ⅛ ← + key { [ U0038, U002A, U215C, U2192 ] }; // 8 * ⅜ → + key { [ U0039, U0028, U215D, U2191 ] }; // 9 ( ⅝ ↑ + key { [ U0030, U0029, U215E, U2193 ] }; // 0 ) ⅞ ↓ + key { [ U002D, U005F, U00AC, U0360 ] }; // - _ ¬ ◌͠ + key { [ U003D, U002B, U00B1, U2213 ] }; // = + ± ∓ + + // D row; Upper row, left side + key { [ U0071, U0051, VoidSymbol, VoidSymbol ] }; // q Q + key { [ U0077, U0057, VoidSymbol, VoidSymbol ] }; // w W + key { [ U0065, U0045, U0153, U0152 ] }; // e E œ Œ + key { [ U0072, U0052, U00AE, U00B6 ] }; // r R ® ¶ + key { [ U0066, U0046, VoidSymbol, U00AA ] }; // f F ª + // D row; Upper row, right side + key { [ U006A, U004A, VoidSymbol, VoidSymbol ] }; // j J + key { [ U0079, U0059, U00A5, VoidSymbol ] }; // y Y ¥ + key { [ U006B, U004B, VoidSymbol, VoidSymbol ] }; // k K + key { [ U006C, U004C, VoidSymbol, VoidSymbol ] }; // l L + key { [ U003B, U003A, VoidSymbol, VoidSymbol ] }; // ; : + key { [ U005B, U007B, VoidSymbol, VoidSymbol ] }; // [ { + key { [ U005D, U007D, VoidSymbol, VoidSymbol ] }; // ] } + key { [ U005C, U007C, U0259, U018F ] }; // \ | ə Ə + + // C row; Home row, left side + key { [ U0061, U0041, U00E6, U00C6 ] }; // a A æ Æ + key { [ U0073, U0053, U00A7, VoidSymbol ] }; // s S § + key { [ U0064, U0044, VoidSymbol, VoidSymbol ] }; // d D + key { [ U0074, U0054, U2122, VoidSymbol ] }; // t T ™ + key { [ U0067, U0047, VoidSymbol, VoidSymbol ] }; // g G + // C row; Home row, right side + key { [ U0068, U0048, VoidSymbol, VoidSymbol ] }; // h H + key { [ U0075, U0055, VoidSymbol, VoidSymbol ] }; // u U + key { [ U0069, U0049, U0131, U0130 ] }; // i I ı İ + key { [ U006F, U004F, U00F8, U00D8 ] }; // o O ø Ø + key { [ U0070, U0050, U20B1, VoidSymbol ] }; // p P ₱ + key { [ U0027, U0022, U0301, U030B ] }; // ' " ́◌ ̋◌ (combining acute accent) (combining double-acute accent) + + // B row; Lower row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, U00A6 ] }; // ¦ + key { [ U007A, U005A, U00AB, U00BB ] }; // z Z « » + key { [ U0078, U0058, U00D7, U00B7 ] }; // x X × · + key { [ U0063, U0043, U00A9, U00A2 ] }; // c C © ¢ + key { [ U0076, U0056, U201C, U2018 ] }; // v V “ ‘ + key { [ U0062, U0042, U201D, U2019 ] }; // b B ” ’ + // B row; Lower row, right side + key { [ U006E, U004E, U00F1, U00D1 ] }; // n N ñ Ñ + key { [ U006D, U004D, U00B5, U00BA ] }; // m M µ º + key { [ U002C, U003C, U0327, U0328 ] }; // , < ̧◌ ̨◌ (combining cedilla) (combining ogonek) + key { [ U002E, U003E, U2026, U2423 ] }; // . > … ␣ + key { [ U002F, U003F, U00F7, U00BF ] }; // / ? ÷ ¿ + + // A row + key { [ U0020, U0020, U0020, U0020 ] }; // (space) (space) (space) (space) + + include "level3(ralt_switch)" +}; + + +// Capewell-QWERF 2006 (Baybayin) version +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ◌᜔ ┃ ⌫ Bak ┃ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ◌᜔ ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ │ │ ᜁ │ │ │ │ │ │ │ │ │ │ │ +// ┃Tab ↹ ┃ │ ᜏ │ ◌ᜒ │ ᜍ │ │ │ ᜌ │ ᜃ │ ᜎ │ │ │ │ │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ │ │ │ │ │ │ ᜂ │ ᜁ │ ᜂ │ │ ┃ Enter ┃ +// ┃Caps ⇬ ┃ ᜀ │ ᜐ │ ᜇ │ ᜆ │ ᜄ │ ᜑ │ ◌ᜓ │ ◌ᜒ │ ◌ᜓ │ ᜉ │ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ ᜅ │ │ │ │ ┃ ┃ +// ┃Shift ⇧┃ │ │ │ │ │ ᜊ │ ᜈ │ ᜋ │ ᜵ │ ᜶ │ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// +partial alphanumeric_keys +xkb_symbols "capewell-qwerf2k6-bay" { + + name[Group1]= "Filipino (Capewell-QWERF 2006, Baybayin)"; + +// ISO grouping: |--------- Group1 ---------| |--------- Group2 ---------| +// Level1 Level2 Level3 Level4 +// Base Shift AltGr AltGr+Shift + + // E row; Numerals row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + // E row; Numerals row, right side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1714, U1714, VoidSymbol, VoidSymbol ] }; // ◌᜔ (virama) ◌᜔ (virama) + + // D row; QWERTY row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U170F, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜏ (Wa) + key { [ U1712, U1701, VoidSymbol, VoidSymbol ] }; // ◌ᜒ (e/i) ᜁ (E/I) + key { [ U170D, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜍ (Ra) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + // D row; QWERTY row, right side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U170C, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜌ (Ya) + key { [ U1703, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜃ (Ka) + key { [ U170E, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜎ (La) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // C row; Home row, left side + key { [ U1700, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜀ (A) + key { [ U1710, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜐ (Sa) + key { [ U1707, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜇ (Da) + key { [ U1706, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜆ (Ta) + key { [ U1704, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜄ (Ga) + // C row; Home row, right side + key { [ U1711, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜑ (Ha) + key { [ U1713, U1702, VoidSymbol, VoidSymbol ] }; // ◌ᜓ (o/u) ᜂ (O/U) + key { [ U1712, U1701, VoidSymbol, VoidSymbol ] }; // ◌ᜒ (e/i) ᜁ (E/I) + key { [ U1713, U1702, VoidSymbol, VoidSymbol ] }; // ◌ᜓ (o/u) ᜂ (O/U) + key { [ U1709, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜉ (Pa) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // B row; Lower row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U170A, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜊ (Ba) + // B row; Lower row, right side + key { [ U1708, U1705, VoidSymbol, VoidSymbol ] }; // ᜈ (Na) ᜅ (Nga) + key { [ U170B, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜋ (Ma) + key { [ U1735, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜵ (comma) + key { [ U1736, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜶ (period) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // A row + key { [ U0020, U0020, U0020, U0020 ] }; // (space) (space) (space) (space) + + include "level3(ralt_switch)" +}; + + +// Colemak (Latin) version +// http://colemak.com +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ ~ ̃◌ │ ! ¡ │ @ ¤ │ # £ │ $ € │ % ° │ ^ ̂◌ │ & → │ * → │ ( ↑ │ ) ↓ │ _ ◌͠ │ + ∓ ┃ ⌫ Bak ┃ +// │ ` ̀◌ │ 1 ¹ │ 2 ² │ 3 ³ │ 4 ¼ │ 5 ½ │ 6 ¾ │ 7 ⅛ │ 8 ⅜ │ 9 ⅝ │ 0 ⅞ │ - ¬ │ = ± ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ Q │ W │ F ª │ P │ G │ J │ L │ U │ Y │ : │ { │ } │ | Ə │ +// ┃Tab ↹ ┃ q │ w │ f │ p ₱ │ g │ j │ l │ u │ y ¥ │ ; │ [ │ ] │ \ ə │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ A Æ │ R ¶ │ S │ T │ D │ H │ N Ñ │ E Œ │ I İ │ O Ø │ " ̋◌ ┃ Enter ┃ +// ┃Caps ⇬ ┃ a æ │ r ® │ s § │ t ™ │ d │ h │ n ñ │ e œ │ i ı │ o ø │ ' ́◌ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ ¦ │ Z » │ X · │ C ¢ │ V ‘ │ B ’ │ K │ M º │ < ̨◌ │ > ␣ │ ? ¿ ┃ ┃ +// ┃Shift ⇧┃ │ z « │ x × │ c © │ v “ │ b ” │ k │ m µ │ , ̧◌ │ . … │ / ÷ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space Space ␣ ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space Space ␣ ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// +partial alphanumeric_keys +xkb_symbols "colemak" { + + name[Group1]= "Filipino (Colemak, Latin)"; + +// ISO grouping: |--------- Group1 ---------| |--------- Group2 ---------| +// Level1 Level2 Level3 Level4 +// Base Shift AltGr AltGr+Shift + + // E row; Numerals row, left side + key { [ U0060, U007E, U0300, U0303 ] }; // ` ~ ̀◌ ̃◌ (combining grave accent) (combining tilde) + key { [ U0031, U0021, U00B9, U00A1 ] }; // 1 ! ¹ ¡ + key { [ U0032, U0040, U00B2, U00A4 ] }; // 2 @ ² ¤ + key { [ U0033, U0023, U00B3, U00A3 ] }; // 3 # ³ £ + key { [ U0034, U0024, U00BC, U20AC ] }; // 4 $ ¼ € + key { [ U0035, U0025, U00BD, U00B0 ] }; // 5 % ½ ° + // E row; Numerals row, right side + key { [ U0036, U005E, U00BE, U0302 ] }; // 6 ^ ¾ ̂◌ (combining circumflex accent) + key { [ U0037, U0026, U215B, U2190 ] }; // 7 & ⅛ ← + key { [ U0038, U002A, U215C, U2192 ] }; // 8 * ⅜ → + key { [ U0039, U0028, U215D, U2191 ] }; // 9 ( ⅝ ↑ + key { [ U0030, U0029, U215E, U2193 ] }; // 0 ) ⅞ ↓ + key { [ U002D, U005F, U00AC, U0360 ] }; // - _ ¬ ◌͠ + key { [ U003D, U002B, U00B1, U2213 ] }; // = + ± ∓ + + // D row; Upper row, left side + key { [ U0071, U0051, VoidSymbol, VoidSymbol ] }; // q Q + key { [ U0077, U0057, VoidSymbol, VoidSymbol ] }; // w W + key { [ U0066, U0046, VoidSymbol, U00AA ] }; // f F ª + key { [ U0070, U0050, U20B1, VoidSymbol ] }; // p P ₱ + key { [ U0067, U0047, VoidSymbol, VoidSymbol ] }; // g G + // D row; Upper row, right side + key { [ U006A, U004A, VoidSymbol, VoidSymbol ] }; // j J + key { [ U006C, U004C, VoidSymbol, VoidSymbol ] }; // l L + key { [ U0075, U0055, VoidSymbol, VoidSymbol ] }; // u U + key { [ U0079, U0059, U00A5, VoidSymbol ] }; // y Y ¥ + key { [ U003B, U003A, VoidSymbol, VoidSymbol ] }; // ; : + key { [ U005B, U007B, VoidSymbol, VoidSymbol ] }; // [ { + key { [ U005D, U007D, VoidSymbol, VoidSymbol ] }; // ] } + key { [ U005C, U007C, U0259, U018F ] }; // \ | ə Ə + + // C row; Home row, left side + key { [ U0061, U0041, U00E6, U00C6 ] }; // a A æ Æ + key { [ U0072, U0052, U00AE, U00B6 ] }; // r R ® ¶ + key { [ U0073, U0053, U00A7, VoidSymbol ] }; // s S § + key { [ U0074, U0054, U2122, VoidSymbol ] }; // t T ™ + key { [ U0064, U0044, VoidSymbol, VoidSymbol ] }; // d D + // C row; Home row, right side + key { [ U0068, U0048, VoidSymbol, VoidSymbol ] }; // h H + key { [ U006E, U004E, U00F1, U00D1 ] }; // n N ñ Ñ + key { [ U0065, U0045, U0153, U0152 ] }; // e E œ Œ + key { [ U0069, U0049, U0131, U0130 ] }; // i I ı İ + key { [ U006F, U004F, U00F8, U00D8 ] }; // o O ø Ø + key { [ U0027, U0022, U0301, U030B ] }; // ' " ́◌ ̋◌ (combining acute accent) (combining double-acute accent) + + // B row; Lower row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, U00A6 ] }; // ¦ + key { [ U007A, U005A, U00AB, U00BB ] }; // z Z « » + key { [ U0078, U0058, U00D7, U00B7 ] }; // x X × · + key { [ U0063, U0043, U00A9, U00A2 ] }; // c C © ¢ + key { [ U0076, U0056, U201C, U2018 ] }; // v V “ ‘ + key { [ U0062, U0042, U201D, U2019 ] }; // b B ” ’ + // B row; Lower row, right side + key { [ U006B, U004B, VoidSymbol, VoidSymbol ] }; // k K + key { [ U006D, U004D, U00B5, U00BA ] }; // m M µ º + key { [ U002C, U003C, U0327, U0328 ] }; // , < ̧◌ ̨◌ (combining cedilla) (combining ogonek) + key { [ U002E, U003E, U2026, U2423 ] }; // . > … ␣ + key { [ U002F, U003F, U00F7, U00BF ] }; // / ? ÷ ¿ + + // A row + key { [ U0020, U0020, U0020, U0020 ] }; // (space) (space) (space) (space) + + include "level3(ralt_switch)" +}; + + +// Colemak (Baybayin) version +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ◌᜔ ┃ ⌫ Bak ┃ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ◌᜔ ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ │ │ │ │ │ │ │ ᜂ │ │ │ │ │ │ +// ┃Tab ↹ ┃ │ ᜏ │ │ ᜉ │ ᜄ │ │ ᜎ │ ◌ᜓ │ ᜌ │ │ │ │ │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ │ │ │ │ │ │ ᜅ │ ᜁ │ ᜁ │ ᜂ │ ┃ Enter ┃ +// ┃Caps ⇬ ┃ ᜀ │ ᜍ │ ᜐ │ ᜆ │ ᜇ │ ᜑ │ ᜈ │ ◌ᜒ │ ◌ᜒ │ ◌ᜓ │ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃Shift ⇧┃ │ │ │ │ │ ᜊ │ ᜃ │ ᜋ │ ᜵ │ ᜶ │ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// +partial alphanumeric_keys +xkb_symbols "colemak-bay" { + + name[Group1]= "Filipino (Colemak, Baybayin)"; + +// ISO grouping: |--------- Group1 ---------| |--------- Group2 ---------| +// Level1 Level2 Level3 Level4 +// Base Shift AltGr AltGr+Shift + + // E row; Numerals row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + // E row; Numerals row, right side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1714, U1714, VoidSymbol, VoidSymbol ] }; // ◌᜔ (virama) ◌᜔ (virama) + + // D row; QWERTY row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U170F, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜏ (Wa) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1709, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜉ (Pa) + key { [ U1704, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜄ (Ga) + // D row; QWERTY row, right side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U170E, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜎ (La) + key { [ U1713, U1702, VoidSymbol, VoidSymbol ] }; // ◌ᜓ (o/u) ᜂ (O/U) + key { [ U170C, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜌ (Ya) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // C row; Home row, left side + key { [ U1700, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜀ (A) + key { [ U170D, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜍ (Ra) + key { [ U1710, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜐ (Sa) + key { [ U1706, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜆ (Ta) + key { [ U1707, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜇ (Da) + // C row; Home row, right side + key { [ U1711, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜑ (Ha) + key { [ U1708, U1705, VoidSymbol, VoidSymbol ] }; // ᜈ (Na) ᜅ (Nga) + key { [ U1712, U1701, VoidSymbol, VoidSymbol ] }; // ◌ᜒ (e/i) ᜁ (E/I) + key { [ U1712, U1701, VoidSymbol, VoidSymbol ] }; // ◌ᜒ (e/i) ᜁ (E/I) + key { [ U1713, U1702, VoidSymbol, VoidSymbol ] }; // ◌ᜓ (o/u) ᜂ (O/U) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // B row; Lower row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U170A, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜊ (Ba) + // B row; Lower row, right side + key { [ U1703, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜃ (Ka) + key { [ U170B, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜋ (Ma) + key { [ U1735, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜵ (comma) + key { [ U1736, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜶ (period) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // A row + key { [ U0020, U0020, U0020, U0020 ] }; // (space) (space) (space) (space) + + include "level3(ralt_switch)" +}; + + +// Dvorak Simplified (Latin) version +// http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ ~ ̃◌ │ ! ¡ │ @ ¤ │ # £ │ $ € │ % ° │ ^ ̂◌ │ & → │ * → │ ( ↑ │ ) ↓ │ { │ } ┃ ⌫ Bak ┃ +// │ ` ̀◌ │ 1 ¹ │ 2 ² │ 3 ³ │ 4 ¼ │ 5 ½ │ 6 ¾ │ 7 ⅛ │ 8 ⅜ │ 9 ⅝ │ 0 ⅞ │ [ │ ] ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ " ̋◌ │ < ̨◌ │ > ␣ │ P │ Y │ F ª │ G │ C ¢ │ R ¶ │ L │ ? ¿ │ + ∓ │ | Ə │ +// ┃Tab ↹ ┃ ' ́◌ │ , ̧◌ │ . … │ p ₱ │ y ¥ │ f │ g │ c © │ r ® │ l │ / ÷ │ = ± │ \ ə │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ A Æ │ O Ø │ E Œ │ U │ I İ │ D │ H │ T │ N Ñ │ S │ _ ◌͠ ┃ Enter ┃ +// ┃Caps ⇬ ┃ a æ │ o ø │ e œ │ u │ i ı │ d │ h │ t ™ │ n ñ │ s § │ - ¬ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ ¦ │ : │ Q │ J │ K │ X · │ B ’ │ M º │ W │ V ‘ │ Z » ┃ ┃ +// ┃Shift ⇧┃ │ ; │ q │ j │ k │ x × │ b ” │ m µ │ w │ v “ │ z « ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space Space ␣ ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space Space ␣ ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// +partial alphanumeric_keys +xkb_symbols "dvorak" { + + name[Group1]= "Filipino (Dvorak, Latin)"; + +// ISO grouping: |--------- Group1 ---------| |--------- Group2 ---------| +// Level1 Level2 Level3 Level4 +// Base Shift AltGr AltGr+Shift + + // E row; Numerals row, left side + key { [ U0060, U007E, U0300, U0303 ] }; // ` ~ ̀◌ ̃◌ (combining grave accent) (combining tilde) + key { [ U0031, U0021, U00B9, U00A1 ] }; // 1 ! ¹ ¡ + key { [ U0032, U0040, U00B2, U00A4 ] }; // 2 @ ² ¤ + key { [ U0033, U0023, U00B3, U00A3 ] }; // 3 # ³ £ + key { [ U0034, U0024, U00BC, U20AC ] }; // 4 $ ¼ € + key { [ U0035, U0025, U00BD, U00B0 ] }; // 5 % ½ ° + // E row; Numerals row, right side + key { [ U0036, U005E, U00BE, U0302 ] }; // 6 ^ ¾ ̂◌ (combining circumflex accent) + key { [ U0037, U0026, U215B, U2190 ] }; // 7 & ⅛ ← + key { [ U0038, U002A, U215C, U2192 ] }; // 8 * ⅜ → + key { [ U0039, U0028, U215D, U2191 ] }; // 9 ( ⅝ ↑ + key { [ U0030, U0029, U215E, U2193 ] }; // 0 ) ⅞ ↓ + key { [ U005B, U007B, VoidSymbol, VoidSymbol ] }; // [ { + key { [ U005D, U007D, VoidSymbol, VoidSymbol ] }; // ] } + + // D row; Upper row, left side + key { [ U0027, U0022, U0301, U030B ] }; // ' " ́◌ ̋◌ (combining acute accent) (combining double-acute accent) + key { [ U002C, U003C, U0327, U0328 ] }; // , < ̧◌ ̨◌ (combining cedilla) (combining ogonek) + key { [ U002E, U003E, U2026, U2423 ] }; // . > … ␣ + key { [ U0070, U0050, U20B1, VoidSymbol ] }; // p P ₱ + key { [ U0079, U0059, U00A5, VoidSymbol ] }; // y Y ¥ + // D row; Upper row, right side + key { [ U0066, U0046, VoidSymbol, U00AA ] }; // f F ª + key { [ U0067, U0047, VoidSymbol, VoidSymbol ] }; // g G + key { [ U0063, U0043, U00A9, U00A2 ] }; // c C © ¢ + key { [ U0072, U0052, U00AE, U00B6 ] }; // r R ® ¶ + key { [ U006C, U004C, VoidSymbol, VoidSymbol ] }; // l L + key { [ U002F, U003F, U00F7, U00BF ] }; // / ? ÷ ¿ + key { [ U003D, U002B, U00B1, U2213 ] }; // = + ± ∓ + key { [ U005C, U007C, U0259, U018F ] }; // \ | ə Ə + + // C row; Home row, left side + key { [ U0061, U0041, U00E6, U00C6 ] }; // a A æ Æ + key { [ U006F, U004F, U00F8, U00D8 ] }; // o O ø Ø + key { [ U0065, U0045, U0153, U0152 ] }; // e E œ Œ + key { [ U0075, U0055, VoidSymbol, VoidSymbol ] }; // u U + key { [ U0069, U0049, U0131, U0130 ] }; // i I ı İ + // C row; Home row, right side + key { [ U0064, U0044, VoidSymbol, VoidSymbol ] }; // d D + key { [ U0068, U0048, VoidSymbol, VoidSymbol ] }; // h H + key { [ U0074, U0054, U2122, VoidSymbol ] }; // t T ™ + key { [ U006E, U004E, U00F1, U00D1 ] }; // n N ñ Ñ + key { [ U0073, U0053, U00A7, VoidSymbol ] }; // s S § + key { [ U002D, U005F, U00AC, U0360 ] }; // - _ ¬ ◌͠ + + // B row; Lower row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, U00A6 ] }; // ¦ + key { [ U003B, U003A, VoidSymbol, VoidSymbol ] }; // ; : + key { [ U0071, U0051, VoidSymbol, VoidSymbol ] }; // q Q + key { [ U006A, U004A, VoidSymbol, VoidSymbol ] }; // j J + key { [ U006B, U004B, VoidSymbol, VoidSymbol ] }; // k K + key { [ U0078, U0058, U00D7, U00B7 ] }; // x X × · + // B row; Lower row, right side + key { [ U0062, U0042, U201D, U2019 ] }; // b B ” ’ + key { [ U006D, U004D, U00B5, U00BA ] }; // m M µ º + key { [ U0077, U0057, VoidSymbol, VoidSymbol ] }; // w W + key { [ U0076, U0056, U201C, U2018 ] }; // v V “ ‘ + key { [ U007A, U005A, U00AB, U00BB ] }; // z Z « » + + // A row + key { [ U0020, U0020, U0020, U0020 ] }; // (space) (space) (space) (space) + + include "level3(ralt_switch)" +}; + + +// Dvorak Simplified (Baybayin) version +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ⌫ Bak ┃ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ◌᜔ │ │ +// ┃Tab ↹ ┃ │ ᜵ │ ᜶ │ ᜉ │ ᜌ │ │ ᜄ │ │ ᜍ │ ᜎ │ │ ◌᜔ │ │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ │ ᜂ │ ᜁ │ ᜂ │ ᜁ │ │ │ │ ᜅ │ │ ┃ Enter ┃ +// ┃Caps ⇬ ┃ ᜀ │ ◌ᜓ │ ◌ᜒ │ ◌ᜓ │ ◌ᜒ │ ᜇ │ ᜑ │ ᜆ │ ᜈ │ ᜐ │ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃Shift ⇧┃ │ │ │ │ ᜃ │ │ ᜊ │ ᜋ │ ᜏ │ │ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// +partial alphanumeric_keys +xkb_symbols "dvorak-bay" { + + name[Group1]= "Filipino (Dvorak, Baybayin)"; + +// ISO grouping: |--------- Group1 ---------| |--------- Group2 ---------| +// Level1 Level2 Level3 Level4 +// Base Shift AltGr AltGr+Shift + + // E row; Numerals row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + // E row; Numerals row, right side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // D row; QWERTY row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1735, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜵ (comma) + key { [ U1736, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜶ (period) + key { [ U1709, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜉ (Pa) + key { [ U170C, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜌ (Ya) + // D row; QWERTY row, right side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1704, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜄ (Ga) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U170D, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜍ (Ra) + key { [ U170E, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜎ (La) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1714, U1714, VoidSymbol, VoidSymbol ] }; // ◌᜔ (virama) ◌᜔ (virama) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // C row; Home row, left side + key { [ U1700, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜀ (A) + key { [ U1713, U1702, VoidSymbol, VoidSymbol ] }; // ◌ᜓ (o/u) ᜂ (O/U) + key { [ U1712, U1701, VoidSymbol, VoidSymbol ] }; // ◌ᜒ (e/i) ᜁ (E/I) + key { [ U1713, U1702, VoidSymbol, VoidSymbol ] }; // ◌ᜓ (o/u) ᜂ (O/U) + key { [ U1712, U1701, VoidSymbol, VoidSymbol ] }; // ◌ᜒ (e/i) ᜁ (E/I) + // C row; Home row, right side + key { [ U1707, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜇ (Da) + key { [ U1711, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜑ (Ha) + key { [ U1706, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜆ (Ta) + key { [ U1708, U1705, VoidSymbol, VoidSymbol ] }; // ᜈ (Na) ᜅ (Nga) + key { [ U1710, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜐ (Sa) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // B row; Lower row, left side + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ U1703, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜃ (Ka) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + // B row; Lower row, right side + key { [ U170A, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜊ (Ba) + key { [ U170B, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜋ (Ma) + key { [ U170F, VoidSymbol, VoidSymbol, VoidSymbol ] }; // ᜏ (Wa) + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + key { [ VoidSymbol, VoidSymbol, VoidSymbol, VoidSymbol ] }; // + + // A row + key { [ U0020, U0020, U0020, U0020 ] }; // (space) (space) (space) (space) + + include "level3(ralt_switch)" +}; + + +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━┓ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ⌫ Bak ┃ +// │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ Space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┯━━━━━┩ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ │ │ +// ┃Tab ↹ ┃ │ │ │ │ │ │ │ │ │ │ │ │ │ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┲━━━━┷━━━━━┪ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ Enter ┃ +// ┃Caps ⇬ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ⏎ ┃ +// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┻━━━━━━━━━━┫ +// ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ┃ +// ┃Shift ⇧┃ │ │ │ │ │ │ │ │ │ │ ┃Shift ⇧ ┃ +// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┷━┳━━━┻━━━┳━━━━━━━┫ +// ┃ ┃Win ┃ ┃ ␣ Space Space ␣ ┃ ┃Win ┃ ┃ ┃ +// ┃Ctrl ┃Super ┃Alt ┃ ␣ Space Space ␣ ┃AltGr ⇮┃Meta ┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹─────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛ +// diff --git a/nixos/xkb/symbols/pk b/nixos/xkb/symbols/pk new file mode 100644 index 00000000..4ec93b59 --- /dev/null +++ b/nixos/xkb/symbols/pk @@ -0,0 +1,436 @@ +// Keyboard layouts for Pakistan. + +// Urdu keymap, originally developed by Zaeem Arshad +// (Third-level symbols are yet to be put in. The unavailable symbols +// are those which do not have a corresponding glyph in Unicode.) +default partial alphanumeric_keys +xkb_symbols "urd-phonetic" { + + name[Group1]= "Urdu (Pakistan)"; + + key {[ U064B, U007E, U200C ]}; + key {[ 1, U0021 ]}; + key {[ 2, at ]}; + key {[ 3, U0023 ]}; + key {[ 4, U0024 ]}; + key {[ 5, U0025 ]}; + key {[ 6, U005E ]}; + key {[ 7, U0026 ]}; + key {[ 8, U002A ]}; + key {[ 9, U0029 ]}; + key {[ 0, U0028 ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ U0642, U0652, U200D ]}; + key {[ U0648, U0624, U200C ]}; + key {[ U0639, U0670 ]}; + key {[ U0631, U0691 ]}; + key {[ U062A, U0679 ]}; + key {[ U06D2, U064E ]}; + key {[ U0621, U0626 ]}; + key {[ U06CC, U0650 ]}; + key {[ U06C1, U06C3 ]}; + key {[ U067E, U064F ]}; + key {[ U005D, U007D ]}; + key {[ U005B, U007B ]}; + + key {[ U0627, U0622 ]}; + key {[ U0633, U0635 ]}; + key {[ U062F, U0688 ]}; + key {[ U0641, U0651 ]}; + key {[ U06AF, U063A ]}; + key {[ U062D, U06BE ]}; + key {[ U062C, U0636 ]}; + key {[ U06A9, U062E ]}; + key {[ U0644, U0654 ]}; + key {[ U061B, colon ]}; + key {[ U0027, U0022 ]}; + key {[ U005C, bar ]}; + + key {[ bar, brokenbar ]}; + key {[ U0632, U0630, U200E ]}; + key {[ U0634, U0698, U202A ]}; + key {[ U0686, U062B, U202D ]}; + key {[ U0637, U0638, U202C ]}; + key {[ U0628, period, U202E ]}; + key {[ U0646, U06BA, U202B ]}; + key {[ U0645, U0658, U200F ]}; + key {[ U060C, less ]}; + key {[ U06D4, greater ]}; + key {[ slash, U061F ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "urd-crulp" { + + name[Group1]= "Urdu (Pakistan, CRULP)"; + // www.crulp.org phonetic v1.1 + + key {[ U007E, U064B ]}; + key {[ U06F1, 1, U0021 ]}; + key {[ U06F2, 2, at ]}; + key {[ U06F3, 3, U0023 ]}; + key {[ U06F4, 4 ]}; + key {[ U06F5, 5, U066A ]}; + key {[ U06F6, 6 ]}; + key {[ U06F7, 7, U0026 ]}; + key {[ U06F8, 8, U002A ]}; + key {[ U06F9, 9, U0029 ]}; + key {[ U06F0, 0, U0028 ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ U0642, U0652 ]}; + key {[ U0648, U0651, U0602 ]}; + key {[ U0639, U0670, U0656 ]}; + key {[ U0631, U0691, U0613 ]}; + key {[ U062A, U0679, U0614 ]}; + key {[ U06D2, U064E, U0601 ]}; + key {[ U0621, U0626, U0654 ]}; + key {[ U06CC, U0650, U0611 ]}; + key {[ U06C1, U06C3 ]}; + key {[ U067E, U064F, U0657 ]}; + key {[ U005D, U007D ]}; + key {[ U005B, U007B ]}; + + key {[ U0627, U0622, UFDF2 ]}; + key {[ U0633, U0635, U0610 ]}; + key {[ U062F, U0688, UFDFA ]}; + key {[ U0641, U0651 ]}; + key {[ U06AF, U063A ]}; + key {[ U062D, U06BE, U0612 ]}; + key {[ U062C, U0636, UFDFB ]}; + key {[ U06A9, U062E ]}; + key {[ U0644, U0654 ]}; + key {[ U061B, colon ]}; + key {[ U0027, U0022 ]}; + key {[ U005C, bar ]}; + + key {[ bar, brokenbar ]}; + key {[ U0632, U0630, U060F ]}; + key {[ U0634, U0698, U060E ]}; + key {[ U0686, U062B, U0603 ]}; + key {[ U0637, U0638 ]}; + key {[ U0628, period, UFDFD ]}; + key {[ U0646, U06BA, U0600 ]}; + key {[ U0645, U0658 ]}; + key {[ U060C, less, less ]}; + key {[ U06D4, U066B, greater ]}; + key {[ slash, U061F ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "urd-nla" { + name[Group1]= "Urdu (Pakistan, NLA)"; + // www.nla.gov.pk + + key {[ U0060, U007E, U200C ]}; + key {[ 1, U0021 ]}; + key {[ 2, at ]}; + key {[ 3, U0023 ]}; + key {[ 4, U0024 ]}; + key {[ 5, U066A ]}; + key {[ 6, U005E ]}; + key {[ 7, U06D6 ]}; + key {[ 8, U066D ]}; + key {[ 9, U0029 ]}; + key {[ 0, U0028 ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ U0637, U0638, U200D ]}; + key {[ U0635, U0636, U200C ]}; + key {[ U06BE, U0630 ]}; + key {[ U062F, U0688 ]}; + key {[ U0679, U062B ]}; + key {[ U067E, U0651 ]}; + key {[ U062A, U06C3 ]}; + key {[ U0628, U0640 ]}; + key {[ U062C, U0686 ]}; + key {[ U062D, U062E ]}; + key {[ U005D, U007D ]}; + key {[ U005B, U007B ]}; + + key {[ U0645, U0698 ]}; + key {[ U0648, U0632 ]}; + key {[ U0631, U0691 ]}; + key {[ U0646, U06BA ]}; + key {[ U0644, U06C2 ]}; + key {[ U06C1, U0621 ]}; + key {[ U0627, U0622 ]}; + key {[ U06A9, U06AF ]}; + key {[ U06CC, U064A ]}; + key {[ U061B, colon ]}; + key {[ U0027, U0022 ]}; + key {[ U005C, bar ]}; + + key {[ bar, brokenbar ]}; + key {[ U0642, U200D, U200E ]}; + key {[ U0641, U200C, U202A ]}; + key {[ U06D2, U06D3, U202D ]}; + key {[ U0633, U200E, U202C ]}; + key {[ U0634, U0624, U202E ]}; + key {[ U063A, U0626, U202B ]}; + key {[ U0639, U200F, U200F ]}; + key {[ U060C, greater ]}; + key {[ U06D4, less ]}; + key {[ slash, U061F ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "snd" { + name[Group1]= "Sindhi"; + // www.bhurgri.com + + key {[ U2019, U2018 ]}; + key {[ 1, exclam, U0610 ]}; + key {[ 2, U0670, U0611 ]}; + key {[ 3, U0621, U0613 ]}; + key {[ 4, U0621, U0612 ]}; + key {[ 5, U0621, U2026 ]}; + key {[ 6, U0621, U2022 ]}; + key {[ 7, U06FD ]}; + key {[ 8, asterisk ]}; + key {[ 9,parenright ]}; + key {[ 0, parenleft ]}; + key {[ U068F,underscore, minus ]}; + key {[ U068C, plus, equal ]}; + + key {[ U0642, U064E, U064B ]}; + key {[ U0635, U0636, UFDFA ]}; + key {[ U064A, U0650, U0656 ]}; + key {[ U0631, U0699, UFDE6 ]}; + key {[ U062A, U067D, U0629 ]}; + key {[ U067F, U062B, UFDE5 ]}; + key {[ U0639, U063A, UFDE3 ]}; + key {[ U06B3, U06BE, UFDE4 ]}; + key {[ U0648, U064F, U0657 ]}; + key {[ U067E, U06A6 ]}; + key {[ U0687, U0683 ]}; + key {[ U0686, U0684 ]}; + + key {[ U0627, U0622, U0649 ]}; + key {[ U0633, U0634 ]}; + key {[ U062F, U068A ]}; + key {[ U0641, U06A6 ]}; + key {[ U06AF, U06AF ]}; + key {[ U0647, U062D, U06C1 ]}; + key {[ U062C, U062C, UFDFB ]}; + key {[ U06AA, U06E1 ]}; + key {[ U0644, colon ]}; + key {[ U06A9, U061B ]}; + key {[ U06B1, U0640 ]}; + key {[ U068D, U067A, bar ]}; + + key {[ U0632, U0630, U0652 ]}; + key {[ U062E, U0651, U200C ]}; + key {[ U0637, U0638, U200D ]}; + key {[ U0680, U0621, U0624 ]}; + key {[ U0628, U067B, UFDE1 ]}; + key {[ U0646, U06BB, U200E ]}; + key {[ U0645, U06FE, UFDF4 ]}; + key {[ U060C, U201C, U200F ]}; + key {[ period, U201D, U06D4 ]}; + key {[ U0626, U061F, slash ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "ara" { + name[Group1]= "Arabic (Pakistan)"; + + // There are also combined shadda diacritis in the AltGr position + // of the simple diacritics fatha, fathatan, damma, dammatan, + // kasra and kasratan. Should a third level be added? + + key {[ U064D, U064B ]}; + key {[ U06F1, U0021 ]}; + key {[ U06F2 ]}; + key {[ U06F3, slash ]}; + key {[ U06F4, U0626 ]}; + key {[ U06F5 ]}; + key {[ U06F6, U06D6 ]}; + key {[ U06F7, U0654 ]}; + key {[ U06F8, U064C ]}; + key {[ U06F9, U0029 ]}; + key {[ U06F0, U0028 ]}; + key {[ U0623, U0651 ]}; + key {[ U0624, U0622 ]}; + + key {[ U0642, U0652 ]}; + key {[ U0648, U00A3 ]}; + key {[ U0639, U00A5 ]}; + key {[ U0631, U0691 ]}; + key {[ U062A, U0679 ]}; + key {[ U06D2, U0601 ]}; + key {[ U0621, U060C ]}; + key {[ U06CC, U0670 ]}; + key {[ U06C1, U06C3 ]}; + key {[ U067E, U064F ]}; + key {[ U005D, U0670 ]}; + key {[ U005B, U0670 ]}; + + key {[ U0627, U0653 ]}; + key {[ U0633, U0635 ]}; + key {[ U062F, U0688 ]}; + key {[ U0641 ]}; + key {[ U06AF, U063A ]}; + key {[ U06BE, U062D ]}; + key {[ U062C, U0636 ]}; + key {[ U06A9, U062E ]}; + key {[ U0644, U0613 ]}; + key {[ U061B, colon ]}; + key {[ U0670, U0022 ]}; + key {[ U060E, U0614 ]}; + + key {[ bar, brokenbar ]}; + key {[ U0632, U0630 ]}; + key {[ U0634, U0698 ]}; + key {[ U0686, U062B ]}; + key {[ U0637, U0638 ]}; + key {[ U0628, U0612 ]}; + key {[ U0646, U06BA ]}; + key {[ U0645 ]}; + key {[ U060C, U0650 ]}; + key {[ U06D4, U064E ]}; + key {[ none, U061F ]}; +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + + // #HW-SPECIFIC + + // Contact: Walter Bender + + include "pk(ara)" + + name[Group1]= "Urdu (Pakistan)"; + + key {[ U0654, U064B ]}; + key {[ U06F1, U0603 ]}; + key {[ U06F2, U0602 ]}; + key {[ U06F3, U0601 ]}; + key {[ U06F4, U0600 ]}; + key {[ U06F5, U060F ]}; + key {[ U06F6, U060E ]}; + key {[ U06F7, U0614 ]}; + key {[ U06F8, U0612 ]}; + key {[ U06F9, U0611 ]}; + key {[ U06F0, U0613 ]}; + key {[ minus, U0610 ]}; + key {[ equal, plus ]}; + + key {[ U0642, U0652 ]}; + key {[ U0648, U0651 ]}; + key {[ U0639, U0670 ]}; + key {[ U0631, U0691 ]}; + key {[ U062A, U0679 ]}; + key {[ U06D2, U064E ]}; + key {[ U0621, U0626 ]}; + key {[ U06CC, U0650 ]}; + key {[ U06C1, U06C3 ]}; + key {[ U067E, U064F ]}; + key {[ UFDF2, UFDFB ]}; + key {[ UFDFD, UFDFA ]}; + + key {[ U0627, U0622 ]}; + key {[ U0633, U0635 ]}; + key {[ U062F, U0688 ]}; + key {[ U0641 ]}; + key {[ U06AF, U063A ]}; + key {[ U062D, U06BE ]}; + key {[ U062C, U0636 ]}; + key {[ U06A9, U062E ]}; + key {[ U0644, U0656 ]}; + key {[ U061B, colon ]}; + key {[apostrophe, quotedbl]}; + key {[ backslash, bar ]}; + + key {[ U0632, U0622 ]}; + key {[ U0634, U0635 ]}; + key {[ U0686, U0688 ]}; + key {[ U0637 ]}; + key {[ U0628, U063A ]}; + key {[ U0646, U06BE ]}; + key {[ U0645, U0636 ]}; + key {[ U060C, U062E ]}; + key {[ U06D4, U0656 ]}; + key {[ slash, U061F ]}; + + key {[ space ]}; + + include "group(olpc)" +}; + +// EXTRAS: + +// Navees, a phonetic keyboard layout for Urdu +// https://saadatm.github.io/navees +partial alphanumeric_keys +xkb_symbols "urd-navees" { + name[Group1]= "Urdu (Pakistan, Navees)"; + + key {[ U0060, U064B, U007E ]}; // GRAVE ACCENT, ARABIC FATHATAN, TILDE + key {[ U06F1, 1, U0021 ]}; // EXTENDED ARABIC-INDIC DIGIT ONE, DIGIT ONE, EXCLAMATION MARK + key {[ U06F2, 2, at ]}; // EXTENDED ARABIC-INDIC DIGIT TWO, DIGIT TWO, COMMERCIAL AT + key {[ U06F3, 3, U0023 ]}; // EXTENDED ARABIC-INDIC DIGIT THREE, DIGIT THREE, NUMBER SIGN + key {[ U06F4, 4, U0024 ]}; // EXTENDED ARABIC-INDIC DIGIT FOUR, DIGIT FOUR, DOLLAR SIGN + key {[ U06F5, 5, U066A ]}; // EXTENDED ARABIC-INDIC DIGIT FIVE, DIGIT FIVE, ARABIC PERCENT SIGN + key {[ U06F6, 6, U005E ]}; // EXTENDED ARABIC-INDIC DIGIT SIX, DIGIT SIX, CIRCUMFLEX ACCENT + key {[ U06F7, 7, U0026 ]}; // EXTENDED ARABIC-INDIC DIGIT SEVEN, DIGIT SEVEN, AMPERSAND + key {[ U06F8, 8, U002A ]}; // EXTENDED ARABIC-INDIC DIGIT EIGHT, DIGIT EIGHT, ASTERISK + key {[ U06F9, 9, U0029 ]}; // EXTENDED ARABIC-INDIC DIGIT NINE, DIGIT NINE, RIGHT PARENTHESIS + key {[ U06F0, 0, U0028 ]}; // EXTENDED ARABIC-INDIC DIGIT ZERO, DIGIT ZERO, LEFT PARENTHESIS + key {[ U002D, U005F, none ]}; // HYPHEN-MINUS, LOW LINE + key {[ U003D, U002B, none ]}; // EQUALS SIGN, PLUS SIGN + + key {[ U0642, U0652, none ]}; // ARABIC LETTER QAF, ARABIC SUKUN + key {[ U0648, U0651, U0624 ]}; // ARABIC LETTER WAW, ARABIC SHADDA, ARABIC LETTER WAW WITH HAMZA ABOVE + key {[ U0639, U0670, U0656 ]}; // ARABIC LETTER AIN, ARABIC LETTER SUPERSCRIPT ALEF, ARABIC SUBSCRIPT ALEF + key {[ U0631, U0691, U0613 ]}; // ARABIC LETTER REH, ARABIC LETTER RREH, ARABIC SIGN RADI ALLAHOU ANHU + key {[ U062A, U0679, U0614 ]}; // ARABIC LETTER TEH, ARABIC LETTER TTEH, ARABIC SIGN TAKHALLUS + key {[ U06D2, U064E, U06D3 ]}; // ARABIC LETTER YEH BARREE, ARABIC FATHA, ARABIC LETTER YEH BARREE WITH HAMZA ABOVE + key {[ U0621, U0626, U0654 ]}; // ARABIC LETTER HAMZA, ARABIC LETTER YEH WITH HAMZA ABOVE, ARABIC HAMZA ABOVE + key {[ U06CC, U0650, U0611 ]}; // ARABIC LETTER FARSI YEH, ARABIC KASRA, ARABIC SIGN ALAYHE ASSALLAM + key {[ U06C1, U06C3, U06C2 ]}; // ARABIC LETTER HEH GOAL, ARABIC LETTER TEH MARBUTA GOAL, ARABIC LETTER HEH GOAL WITH HAMZA ABOVE + key {[ U067E, U064F, U0657 ]}; // ARABIC LETTER PEH, ARABIC DAMMA, ARABIC INVERTED DAMMA + key {[ U005D, U007D, U200E ]}; // RIGHT SQUARE BRACKET, RIGHT CURLY BRACKET, LEFT-TO-RIGHT MARK + key {[ U005B, U007B, U200F ]}; // LEFT SQUARE BRACKET, LEFT CURLY BRACKET, RIGHT-TO-LEFT MARK + key {[ U005C, bar, U200D ]}; // REVERSE SOLIDUS, VERTICAL LINE, ZERO WIDTH JOINER + + key {[ U0627, U0622, U0623 ]}; // ARABIC LETTER ALEF, ARABIC LETTER ALEF WITH MADDA ABOVE, ARABIC LETTER ALEF WITH HAMZA ABOVE + key {[ U0633, U0635, U0610 ]}; // ARABIC LETTER SEEN, ARABIC LETTER SAD, ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM + key {[ U062F, U0688, UFDFA ]}; // ARABIC LETTER DAL, ARABIC LETTER DDAL, ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM + key {[ U0641, none, U0602 ]}; // ARABIC LETTER FEH, ARABIC FOOTNOTE MARKER + key {[ U06AF, U063A, none ]}; // ARABIC LETTER GAF, ARABIC LETTER GHAIN + key {[ U062D, U06BE, U0612 ]}; // ARABIC LETTER HAH, ARABIC LETTER HEH DOACHASHMEE, ARABIC SIGN RAHMATULLAH ALAYHE + key {[ U062C, U0636, UFDFB ]}; // ARABIC LETTER JEEM, ARABIC LETTER DAD, ARABIC LIGATURE JALLAJALALOUHOU + key {[ U06A9, U062E, U0601 ]}; // ARABIC LETTER KEHEH, ARABIC LETTER KHAH, ARABIC SIGN SANAH + key {[ U0644, none, none ]}; // ARABIC LETTER LAM + key {[ U061B, colon, none ]}; // ARABIC SEMICOLON, COLON + key {[ U0027, U0022, none ]}; // APOSTROPHE, QUOTATION MARK + + key {[ U0632, U0630, U060F ]}; // ARABIC LETTER ZAIN, ARABIC LETTER THAL, ARABIC SIGN MISRA + key {[ U0634, U0698, U060E ]}; // ARABIC LETTER SHEEN, ARABIC LETTER JEH, ARABIC POETIC VERSE SIGN + key {[ U0686, U062B, U0603 ]}; // ARABIC LETTER TCHEH, ARABIC LETTER THEH, ARABIC SIGN SAFHA + key {[ U0637, U0638, none ]}; // ARABIC LETTER TAH, ARABIC LETTER ZAH + key {[ U0628, none, UFDFD ]}; // ARABIC LETTER BEH, ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM + key {[ U0646, U06BA, U0600 ]}; // ARABIC LETTER NOON, ARABIC LETTER NOON GHUNNA, ARABIC NUMBER SIGN + key {[ U0645, U0658, none ]}; // ARABIC LETTER MEEM, ARABIC MARK NOON GHUNNA + key {[ U060C, U060D, U003C ]}; // ARABIC COMMA, ARABIC DATE SEPARATOR, GREATER-THAN SIGN + key {[ U06D4, U066B, U003E ]}; // ARABIC FULL STOP, ARABIC DECIMAL SEPARATOR, LESS-THAN SIGN + key {[ slash, U061F, none ]}; // SOLIDUS, ARABIC QUESTION MARK + + include "nbsp(zwnj2)" + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/pl b/nixos/xkb/symbols/pl new file mode 100644 index 00000000..e02efaa4 --- /dev/null +++ b/nixos/xkb/symbols/pl @@ -0,0 +1,581 @@ +// Keyboard layouts for Poland. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + // Visualisation and description: http://podziemie.net/xkb/pl + // Contact: Michał Górny + + include "latin" + + name[Group1]="Polish"; + + key { [ grave, asciitilde, notsign, logicalor ] }; + key { [ 1, exclam, notequal, exclamdown ] }; + key { [ 2, at, twosuperior, questiondown ] }; + key { [ 4, dollar, cent, onequarter ] }; + key { [ 5, percent, EuroSign, permille ] }; + key { [ 6, asciicircum, onehalf, logicaland ] }; + key { [ 7, ampersand, section, U2248 ] }; + key { [ 8, asterisk, periodcentered, threequarters ] }; + key { [ 9, parenleft, guillemotleft, plusminus ] }; + key { [ 0, parenright, guillemotright, degree ] }; + key { [ minus, underscore, endash, emdash ] }; + + key { [ q, Q, Greek_pi, Greek_OMEGA ] }; + key { [ w, W, oe, OE ] }; + key { [ e, E, eogonek, Eogonek ] }; + key { [ r, R, copyright, registered ] }; + key { [ t, T, ssharp, trademark ] }; + key { [ i, I, rightarrow, U2194 ] }; + key { [ o, O, oacute, Oacute ] }; + + key { [ a, A, aogonek, Aogonek ] }; + key { [ s, S, sacute, Sacute ] }; + key { [ f, F, ae, AE ] }; + key { [ h, H, rightsinglequotemark, U2022 ] }; + key { [ j, J, schwa, SCHWA ] }; + key { [ k, K, ellipsis, dead_stroke ] }; + + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ v, V, doublelowquotemark, leftsinglequotemark ] }; + key { [ b, B, rightdoublequotemark, leftdoublequotemark ] }; + key { [ n, N, nacute, Nacute ] }; + key { [ m, M, mu, infinity ] }; + key { [ comma, less, lessthanequal, multiply ] }; + key { [ period, greater, greaterthanequal, division ] }; + + key { [ space, space, nobreakspace, nobreakspace ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "legacy" { + + include "latin" + + name[Group1]="Polish (legacy)"; + + key { [ e, E, eogonek, Eogonek ] }; + key { [ u, U, EuroSign, cent ] }; + key { [ o, O, oacute, Oacute ] }; + + key { [ a, A, aogonek, Aogonek ] }; + key { [ s, S, sacute, Sacute ] }; + + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ v, V, doublelowquotemark, leftsinglequotemark ] }; + key { [ b, B, rightdoublequotemark, leftdoublequotemark ] }; + key { [ n, N, nacute, Nacute ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "lefty" { + // 2020 by Simon Zelazny. + // Places Ó, Ł, and Ń under the left typing hand. + // For description and rationale, see: https://pzel.name/pl-lefty.html + include "pl(basic)" + + name[Group1]="Polish (lefty)"; + key { [ q, Q, oacute, Oacute ] }; + key { [ w, W, lstroke, Lstroke ] }; + key { [ d, D, nacute, Nacute ] }; +}; + + +partial alphanumeric_keys +xkb_symbols "qwertz" { + + include "latin(type3)" + + name[Group1]="Polish (QWERTZ)"; + + key { [ abovedot, dead_ogonek, notsign, notsign ] }; + key { [ 1, exclam, asciitilde, exclamdown ] }; + key { [ 2, quotedbl, dead_caron, oneeighth ] }; + key { [ 3, numbersign, dead_circumflex, sterling ] }; + key { [ 4, dollar, dead_breve, dollar ] }; + key { [ 5, percent, degree, threeeighths ] }; + key { [ 6, ampersand, dead_ogonek, fiveeighths ] }; + key { [ 7, slash, dead_grave, seveneighths ] }; + key { [ 8, parenleft, dead_abovedot, trademark ] }; + key { [ 9, parenright, dead_acute, plusminus ] }; + key { [ 0, equal, dead_doubleacute, degree ] }; + key { [ plus, question, dead_diaeresis, questiondown ] }; + key { [apostrophe, asterisk, dead_cedilla, dead_ogonek ] }; + + key { [ w, W, bar, Greek_SIGMA ] }; + key { [ e, E, EuroSign, cent ] }; + key { [ zabovedot, nacute, division, dead_abovering ] }; + key { [ sacute, cacute, multiply, dead_macron ] }; + + key { [ s, S, dstroke, section ] }; + key { [ d, D, Dstroke, ETH ] }; + key { [ k, K, kra, ampersand ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ lstroke, Lstroke, dollar, dead_doubleacute ] }; + key { [ aogonek, eogonek, ssharp, dead_caron ] }; + key { [ oacute, zacute, dead_grave, dead_breve ] }; + + key { [ c, C, cent, copyright ] }; + key { [ minus, underscore, dead_belowdot, dead_abovedot ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +// Polish Dvorak keymaps +// by Rafal Rzepecki + +// The base keymap "pl" places Polish quotes on quotemark key and +// moves the dead symbols from there to "1/!" key. If you are used to common +// dead keys placement, you could use "pl_altquotes"; in this layout +// dead keys remain in the old place, whereas Polish quotes are placed on the +// "1/!" key. If you do not use Polish quotes at all, you can use "pl_basic" map. + +// Basic Polish keymap (without Polish quotes) +partial alphanumeric_keys +xkb_symbols "dvorak" { + include "us(dvorak)" + + name[Group1] = "Polish (Dvorak)"; + + key { [ c, C, cacute, Cacute ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ a, A, aogonek, Aogonek ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ e, E, eogonek, Eogonek ] }; + key { [ n, N, nacute, Nacute ] }; + key { [ s, S, sacute, Sacute ] }; + key { [ v, V, zacute, Zacute ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +// Default Polish keymap with Polish quotes on quotemark key +partial alphanumeric_keys +xkb_symbols "dvorak_quotes" { + include "pl(dvorak)" + + name[Group1] = "Polish (Dvorak, with Polish quotes on quotemark key)"; + + key { [ apostrophe, quotedbl, doublelowquotemark, rightdoublequotemark ] }; + + // Dead symbols moved to this key + key { [ 1, exclam, dead_acute, dead_diaeresis ] }; +}; + +// Polish keymap with Polish quotes on key "1/!" +partial alphanumeric_keys +xkb_symbols "dvorak_altquotes" { + include "pl(dvorak)" + + name[Group1] = "Polish (Dvorak, with Polish quotes on key 1)"; + + key { [ 1, exclam, doublelowquotemark, rightdoublequotemark ] }; +}; + +// Polish programmer Dvorak keymap by Michal Nazarewicz +// based on programmer Dvorak by Roland Kaufmann +// and Polish Dvorak keymaps by Rafal Rzepecki { [ ampersand, percent, doublelowquotemark, rightdoublequotemark ] }; + + // upper row, right side + key { [ g, G, ccedilla, Ccedilla ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ l, L, lstroke, Lstroke ] }; + + // home row, left side + key { [ a, A, aogonek, Aogonek ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ e, E, eogonek, Eogonek ] }; + + // home row, right side + key { [ n, N, nacute, Nacute ] }; + key { [ s, S, sacute, Sacute ] }; + + // lower row, left side + key { [ j, J, doublelowquotemark, rightdoublequotemark ] }; + key { [ k, K, leftdoublequotemark, leftsinglequotemark ] }; + key { [ x, X, zacute, Zacute ] }; + + // lower row, right side + key { [ b, B, rightdoublequotemark, rightsinglequotemark ] }; + key { [ v, V, zacute, Zacute ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +// Silesian letters on the third and fourth level, +// by Grzegorz Kulik and Przemysław Buczkowski . +// +partial alphanumeric_keys +xkb_symbols "szl" { + + include "latin" + + name[Group1]="Silesian"; + + key { [ e, E, atilde, Atilde ] }; + key { [ o, O, ocircumflex, Ocircumflex ] }; + key { [ u, U, omacron, Omacron ] }; + key { [ p, P, otilde, Otilde ] }; + + key { [ a, A, U014F, U014E ] }; // ŏ Ŏ + key { [ s, S, sacute, Sacute ] }; + + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ v, V, doublelowquotemark, leftsinglequotemark ] }; + key { [ b, B, rightdoublequotemark, leftdoublequotemark ] }; + key { [ n, N, nacute, Nacute ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +// Kashubian letters on the third and fourth level. +// +partial alphanumeric_keys +xkb_symbols "csb" { + + include "latin" + + name[Group1]="Kashubian"; + + key { [ e, E, eacute, Eacute ] }; + key { [ r, R, ediaeresis, Ediaeresis ] }; + key { [ y, Y, EuroSign, cent ] }; + key { [ u, U, ugrave, Ugrave ] }; + key { [ i, I, ograve, Ograve ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ p, P, ocircumflex, Ocircumflex ] }; + + key { [ a, A, aogonek, Aogonek ] }; + key { [ s, S, atilde, Atilde ] }; + key { [ l, L, lstroke, Lstroke ] }; + + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ v, V, doublelowquotemark, leftsinglequotemark ] }; + key { [ b, B, rightdoublequotemark, leftdoublequotemark ] }; + key { [ n, N, nacute, Nacute ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +// Russian Polish-phonetic Dvorak +// by Adrian Dziubek +// +// This layout aims to enable Polish Dvorak users to type with Russian +// Cyrillic alphabet by using the sound correspondence between Polish and +// Russian languages. +// +// This keyboard should be intuitive. Please let me know, if my intuition +// lets You down. +// +// The guidelines used: +// - no Cyrillic symbols are placed on punctuation symbols, +// - visual similarities are ignored if there is a sound correspondence: +// no Cyrillic_es on c, no Cyrillic_er on p, no Cyrillic_ha on x etc., +// - the Latin symbols that have close sound correspondence (as read in Polish) +// to Cyrillic symbols (as read in Russian) are mapped respectively: +// * j -> Cyrillic_shorti, +// * k -> Cyrillic_ka, +// * b -> Cyrillic_be, +// * m -> Cyrillic_em, +// * w -> Cyrillic_ve, +// * z -> Cyrillic_ze +// * a -> Cyrillic_a, +// * o -> Cyrillic_o, +// * u -> Cyrillic_u, +// * i -> Cyrillic_i, +// * d -> Cyrillic_de, +// * h -> Cyrillic_ha, +// * t -> Cyrillic_te, +// * n -> Cyrillic_en, +// * s -> Cyrillic_es, +// * p -> Cyrillic_pe, +// * y -> Cyrillic_yeru, +// * f -> Cyrillic_ef, +// * g -> Cyrillic_ghe, +// * c -> Cyrillic_tse, +// * r -> Cyrillic_er, +// * l -> Cyrillic_el, +// - ...and little more distant: +// * AltGr + s (sacute) -> Cyrillic_sha, +// * AltGr + z (zabovedot) -> Cyrillic_zhe, +// * AltGr + c (cacute) -> Cyrillic_che, +// - the soft versions of Russian vowels are accessible through AltGr + vowel: +// * AltGr + a -> Cyrillic_ya, +// * AltGr + o -> Cyrillic_io, +// * AltGr + u -> Cyrillic_yu, +// - ...except for Cyrillic_ie which is more frequently used than Cyrillic_e: +// * AltGr + e -> Cyrillic_e, +// * e -> Cyrillic_ie, +// - q is also mapped to Cyrillic_ya, following the US phonetic keyboard +// choice, as Cyrillic_ya and Cyrillic_a are both often used: +// * q -> Cyrillic_ya, +// - the soft and hard symbols that have no Polish counterparts are mapped +// to rarely used in Polish x character: +// * x -> Cyrillic_softsign +// * AltGr + x -> Cyrillic_hardsign, +// - the soft sign is additionally available as AltGr + consonant combination +// for every consonant that can be softened or separated by soft sign: +// * AltGr + l -> Cyrillic_softsign, +// * AltGr + d -> Cyrillic_softsign, +// * AltGr + n -> Cyrillic_softsign, +// * AltGr + r -> Cyrillic_softsign, +// * AltGr + t -> Cyrillic_softsign, +// * AltGr + p -> Cyrillic_softsign, +// - ...and also because of visual similarity under level3 b: +// * AltGr + b -> Cyrillic_softsign, +// * Shift + AltGr + b -> Cyrillic_hardsign, +// - the Cyrillic_shcha symbol is placed under AltGr + w (visual similarity): +// * AltGr + w -> Cyrillic_shcha +// - v, also rarely unused in Polish is mapped like w: +// * v -> Cyrillic_ve, +// +partial alphanumeric_keys +xkb_symbols "ru_phonetic_dvorak" { + include "us(dvorak)" + + name[Group1] = "Russian (Poland, phonetic Dvorak)"; + + // lower row + key { [ Cyrillic_ya, Cyrillic_YA ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_be, Cyrillic_BE, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_ve, Cyrillic_VE, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_ve, Cyrillic_VE, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, Cyrillic_zhe, Cyrillic_ZHE ] }; + // home row + key { [ Cyrillic_a, Cyrillic_A, Cyrillic_ya, Cyrillic_YA ] }; + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E ] }; + key { [ Cyrillic_u, Cyrillic_U, Cyrillic_yu, Cyrillic_YU ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_de, Cyrillic_DE, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_te, Cyrillic_TE, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_en, Cyrillic_EN, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_es, Cyrillic_ES, Cyrillic_sha, Cyrillic_SHA ] }; + // upper row + key { [ Cyrillic_pe, Cyrillic_PE, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_tse, Cyrillic_TSE, Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_er, Cyrillic_ER, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_el, Cyrillic_EL, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +// A Polish keymap with a comprehensive set of quotes, dashes, and dead accents +// +// See http://marcinwolinski.pl/keyboard/ for a description. +// +// ┌────┐ +// │ 2 4│ 2 = Shift, 4 = Level3 + Shift +// │ 1 3│ 1 = Normal, 3 = Level3 +// └────┘ +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ~ ~ │ ! ' │ @ " │ # ˝ │ $ ¸ │ % ˇ │ ^ ^ │ & ˘ │ * ˙ │ ( ̣ │ ) ° │ _ ¯ │ + ˛ ┃ ⌫ Back ┃ +// │ ` ` │ 1 ¡ │ 2 © │ 3 • │ 4 § │ 5 € │ 6 ¢ │ 7 − │ 8 × │ 9 ÷ │ 0 ° │ - – │ = — ┃ space ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ Q │ W │ E Ę │ R │ T │ Y │ U │ I │ O Ó │ P │ { « │ } » ┃ Enter ┃ +// ┃Tab ↹ ┃ q │ w │ e ę │ r │ t │ y │ u │ i │ o ó │ p │ [ ‹ │ ] › ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ┃ A Ą │ S Ś │ D │ F │ G │ H │ J │ K │ L Ł │ : “ │ " ” │ | ¶ ┃ ┃ +// ┃Caps ⇬ ┃ a ą │ s ś │ d │ f │ g │ h │ j │ k │ l ł │ ; ‘ │ ' ’ │ \ ┃ ┃ +// ┣━━━━━━━━┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ +// ┃ │ Z Ż │ X Ź │ C Ć │ V │ B │ N Ń │ M │ < „ │ > · │ ? ¿ ┃ ┃ +// ┃Shift ⇧ │ z ż │ x ź │ c ć │ v │ b │ n ń │ m │ , ‚ │ . … │ / ⁄ ┃Shift ⇧ ┃ +// ┣━━━━━━━┳━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ␣ ⍽ ┃ ┃ ┃ ┃ +// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Space ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial alphanumeric_keys +xkb_symbols "intl" { + + include "latin(intl)" + + name[Group1]="Polish (intl., with dead keys)"; + + key { [ e, E, eogonek, Eogonek ] }; + key { [ o, O, oacute, Oacute ] }; + + key { [ a, A, aogonek, Aogonek ] }; + key { [ s, S, sacute, Sacute ] }; + key { [ l, L, lstroke, Lstroke ] }; + + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ n, N, nacute, Nacute ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +// Polish Colemak +// by Tomek Piotrowski +// +partial alphanumeric_keys +xkb_symbols "colemak" { + include "us(colemak)" + name[Group1]= "Polish (Colemak)"; + + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ a, A, aogonek, Aogonek ] }; + key { [ s, S, sacute, Sacute ] }; + key { [ n, N, nacute, Nacute ] }; + key { [ e, E, eogonek, Eogonek ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ q, Q, ae, AE ] }; + key { [ w, W, dead_circumflex, asciitilde ] }; + key { [ f, F, ssharp, 0x1001e9e ] }; + key { [ l, L, lstroke, Lstroke ] }; +}; + +// Colemak-DH (ANSI), Polish variant, https://colemakmods.github.io/mod-dh/ +partial alphanumeric_keys +xkb_symbols "colemak_dh_ansi" { + include "us(colemak_dh)" + name[Group1]= "Polish (Colemak-DH)"; + + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ a, A, aogonek, Aogonek ] }; + key { [ s, S, sacute, Sacute ] }; + key { [ n, N, nacute, Nacute ] }; + key { [ e, E, eogonek, Eogonek ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ q, Q, ae, AE ] }; + key { [ w, W, dead_circumflex, asciitilde ] }; + key { [ f, F, ssharp, 0x1001e9e ] }; + key { [ l, L, lstroke, Lstroke ] }; +}; + +// Colemak-DH (ISO), Polish variant, https://colemakmods.github.io/mod-dh/ +partial alphanumeric_keys +xkb_symbols "colemak_dh" { + include "pl(colemak_dh_ansi)" + name[Group1]= "Polish (Colemak-DH ISO)"; + + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ backslash, bar, asciitilde, brokenbar ] }; +}; + +partial alphanumeric_keys +xkb_symbols "sun_type6" { + include "sun_vndr/pl(sun_type6)" +}; + +//Glagolica +partial alphanumeric_keys +xkb_symbols "glagolica" +{ + name[Group1] = "Polish (Glagolica)"; + + key { [ U2C21, U2C23, any, any ] };//q/Q/Ⱑ/Ⱓ + key { [ U2C02, U2C19, any, any ] };//w/W/Ⰲ/Ⱉ/ + key { [ U2C05, U2C27, U2C24, U2C25 ] };//e/E/Ⰵ/Ⱗ/Ⱔ/Ⱕ + key { [ U2C13, U2C13, any, any ] };//r/R/Ⱃ/Ⱃ + key { [ U2C15, U2C15, any, any ] };//t/T/Ⱅ/Ⱅ + key { [ U2C09, U2C0A, U2C20, any ] };//y/Y/Ⰹ/Ⰺ/Ⱐ + key { [ U2C16, U2C16, any, any ] };//u/U/Ⱆ/ + key { [ U2C0B, U2C09, any, any ] };//i/I/Ⰻ/Ⰹ + key { [ U2C11, U2C19, U2C41, any ] };//o/O/Ⱁ/Ⱉ/ⱁ + key { [ U2C12, U2C1A, any, any ] };//p/P/Ⱂ/Ⱊ + key { [ U2C1E, U2C26, any, any ] };//[/{/Ⱎ/Ⱖ + key { [ U2C1B, U2C29, any, any ] };//]/}/Ⱋ/Ⱙ + key { [ U2C00, U2C00, U2C28, U2C29 ] };//a/A/Ⰰ/Ⰰ/Ⱘ/Ⱙ + key { [ U2C14, U2C1E, any, any ] };//[/{/Ⱄ/Ⱎ + key { [ U2C04, U2C04, any, any ] };//d/D/Ⰴ/Ⰴ + key { [ U2C17, U2C2A, any, any ] };//f/F/Ⱇ/Ⱚ + key { [ U2C03, U2C03, any, any ] };//g/G/Ⰳ/Ⰳ + key { [ U2C18, U2C18, any, any ] };//h/H/Ⱈ/Ⱈ + key { [ U2C0A, U2C0A, any, any ] };//j/J/Ⰺ/Ⰺ + key { [ U2C0D, U2C0D, any, any ] };//k/K/Ⰽ/Ⰽ + key { [ U2C0E, U2C0E, any, any ] };//l/L/Ⰾ/Ⰾ + key { [ U2C28, U2C24, any, any ] };//;/:/Ⱘ/Ⱔ + key { [ U2C06, any, any, any ] };//'/"/Ⰶ + key { [ U2C0C, any, any, any ] };//\/|/Ⰼ + key { [ U2C08, U2C07, any, any ] };//z/Z/Ⰸ/Ⰷ + key { [ U2C20, U2C1F, any, any ] };//x/X/Ⱐ/Ⱏ + key { [ U2C1C, U2C1D, any, any] };//c/C/Ⱌ/Ⱍ + key { [ U2C02, U2C2B, any, any ] };//v/V/Ⰲ/Ⱛ + key { [ U2C01, U2C01, any, any ] };//b/B/Ⰱ/Ⰱ + key { [ U2C10, U2C10, any, any ] };//n/N/Ⱀ/Ⱀ + key { [ U2C0F, U2C0F, any, any ] };//m/M/Ⰿ/Ⰿ + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/pt b/nixos/xkb/symbols/pt new file mode 100644 index 00000000..bf467ca6 --- /dev/null +++ b/nixos/xkb/symbols/pt @@ -0,0 +1,220 @@ +// Keyboard layouts for Portugal. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin(type4)" + name[Group1]="Portuguese"; + + key { [ backslash, bar, notsign, notsign ] }; + key { [ 3, numbersign, sterling, sterling ] }; + key { [ 4, dollar, section, dollar ] }; + key { [ apostrophe, question, backslash, questiondown ] }; + key { [ guillemotleft, guillemotright, dead_cedilla, dead_ogonek ] }; + + key { [ plus, asterisk, dead_diaeresis, dead_abovering ] }; + key { [ dead_acute, dead_grave, dead_tilde, dead_macron ] }; + key { [ dead_tilde, dead_circumflex, dead_grave, dead_breve ] }; + + key { [ ccedilla, Ccedilla, dead_acute, dead_doubleacute ] }; + key { [ masculine, ordfeminine,dead_circumflex, dead_caron ] }; + + key { [ less, greater, backslash, backslash ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "pt(basic)" + name[Group1]="Portuguese (no dead keys)"; + + key { [ guillemotleft, guillemotright, cedilla, ogonek ] }; + key { [ plus, asterisk, quotedbl, quotedbl ] }; + key { [ acute, grave, asciitilde, macron ] }; + key { [ asciitilde, asciicircum, grave, breve ] }; + key { [ j, J, ezh, EZH ] }; + key { [ ccedilla, Ccedilla, acute, doubleacute ] }; + key { [ masculine, ordfeminine, asciicircum, caron ] }; + key { [ minus, underscore, ellipsis, abovedot ] }; +}; + +// Layout variant for Mac, by Ricardo Cabral . +partial alphanumeric_keys +xkb_symbols "mac" { + + include "pt(basic)" + name[Group1]= "Portuguese (Macintosh)"; + + key { [ grave, asciitilde, notsign, notsign ] }; + key { [ 6, ampersand, threequarters, fiveeighths ] }; + key { [ 8, parenleft, bracketleft, braceleft ] }; + key { [ 9, parenright, bracketright, braceright ] }; + key { [ plus, asterisk, dead_diaeresis ] }; + key { [ masculine, ordfeminine ] }; + key { [ backslash, bar, dead_grave, dead_breve ] }; + key { [ dead_tilde, dead_circumflex ] }; +}; + +partial alphanumeric_keys +xkb_symbols "mac_nodeadkeys" { + + include "pt(mac)" + name[Group1]= "Portuguese (Macintosh, no dead keys)"; + + key { [ plus, asterisk, quotedbl, quotedbl ] }; + key { [ acute, grave ] }; + key { [ asciitilde, asciicircum ] }; +}; + + +// +// Portuguese Nativo layout. +// A Dvorak-inspired layout designed for the Portuguese language. +// +// Ari Caldeira 2005-07-19 +// +partial alphanumeric_keys +xkb_symbols "nativo" { + + name[Group1]="Portuguese (Nativo)"; + + key { [ plus, asterisk, dead_diaeresis, plusminus ] }; + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ 2, quotedbl, at, twosuperior ] }; + key { [ 3, numbersign, sterling, threesuperior ] }; + key { [ 4, dollar, section, onequarter ] }; + key { [ 5, percent, cent, permille ] }; + key { [ 6, ampersand, notsign, diaeresis ] }; + key { [ 7, slash, braceleft, 0x0100032D ] }; + key { [ 8, parenleft, bracketleft, 0x01000331 ] }; + key { [ 9, parenright, bracketright, dead_horn ] }; + key { [ 0, equal, braceright, dead_hook ] }; + key { [ masculine, ordfeminine, dead_ogonek, 0x01000326 ] }; + key { [ less, greater, dead_cedilla, dead_abovering ] }; + + key { [ apostrophe, question, degree, questiondown ] }; + key { [ comma, semicolon, 0x01000329, 0x01000315 ] }; + key { [ period, colon, 0x01002022, periodcentered ] }; + key { [ h, H, paragraph, paragraph ] }; + key { [ x, X, multiply, division ] }; + key { [ w, W, ubreve, Ubreve ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ t, T, trademark, trademark ] }; + key { [ c, C, copyright, copyright ] }; + key { [ p, P, thorn, THORN ] }; + key { [ dead_tilde, dead_circumflex, dead_caron, dead_doubleacute ] }; + key { [ minus, underscore, 0x01002015, 0x01000336 ] }; + + key { [ i, I, idotless, Iabovedot ] }; + key { [ e, E, EuroSign, EuroSign ] }; + key { [ a, A, ae, AE ] }; + key { [ o, O, oe, OE ] }; + key { [ u, U, oslash, Oslash ] }; + key { [ m, M, mu, mu ] }; + key { [ d, D, eth, ETH ] }; + key { [ s, S, ssharp, 0x01001E9E ] }; + key { [ r, R, registered, registered ] }; + key { [ n, N, eng, ENG ] }; + key { [ dead_acute, dead_grave, dead_macron, dead_breve ] }; + key { [ backslash, bar, dead_belowdot, dead_abovedot ] }; + + key { [ guillemotleft, guillemotright, 0x01002039, 0x0100203A ] }; + key { [ y, Y, yen, yen ] }; + key { [ ccedilla, Ccedilla ] }; + key { [ j, J, ezh, EZH ] }; + key { [ b, B, apostrophe, quotedbl ] }; + key { [ k, K, currency, brokenbar ] }; + key { [ q, Q, schwa, SCHWA ] }; + key { [ v, V, doublelowquotemark, singlelowquotemark ] }; + key { [ g, G, leftdoublequotemark, leftsinglequotemark ] }; + key { [ f, F, rightdoublequotemark, rightsinglequotemark ] }; + key { [ z, Z, 0x0100201F, 0x0100201B ] }; + + key { [ space, space, nobreakspace, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + +// +// Portuguese Nativo layout for US keyboards (lacking an LSGT key). +// +// Ari Caldeira 2005-07-19 +// +partial alphanumeric_keys +xkb_symbols "nativo-us" { + + include "pt(nativo)" + name[Group1]="Portuguese (Nativo for US keyboards)"; + + key { [ y, Y, ccedilla, Ccedilla ] }; + key { [ guillemotleft, guillemotright, 0x01002039, 0x0100203A ] }; +}; + +// +// Portuguese Nativo layout for typing Esperanto. +// +// Ari Caldeira 2005-07-19 +// +partial alphanumeric_keys +xkb_symbols "nativo-epo" { + + include "pt(nativo)" + name[Group1]="Esperanto (Portugal, Nativo)"; + + key { [ h, H, hcircumflex, Hcircumflex ] }; + key { [ ccircumflex, Ccircumflex, x, X ] }; + key { [ ubreve, Ubreve, w, W ] }; + + key { [ jcircumflex, Jcircumflex, y, Y ] }; + key { [ scircumflex, Scircumflex, ccedilla, Ccedilla ] }; + key { [ gcircumflex, Gcircumflex, q, Q ] }; +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/pt(sun_type6)" +}; + +// +// Portuguese Colemak layout. +// +partial alphanumeric_keys +xkb_symbols "colemak" { + include "pt(basic)" + + name[Group1]="Portuguese (Colemak)"; + + key { [ q, Q, at, Greek_OMEGA ] }; + key { [ w, W, lstroke, Lstroke ] }; + key { [ f, F, dstroke, ordfeminine ] }; + key { [ p, P, thorn, THORN ] }; + key { [ g, G, eng, ENG ] }; + key { [ j, J, dead_hook, dead_horn ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ u, U, downarrow, uparrow ] }; + key { [ y, Y, leftarrow, yen ] }; + key { [ ccedilla, Ccedilla, dead_acute, dead_doubleacute ] }; + + key { [ a, A, ae, AE ] }; + key { [ r, R, paragraph, registered ] }; + key { [ s, S, ssharp, section ] }; + key { [ t, T, tslash, Tslash ] }; + key { [ d, D, eth, ETH ] }; + key { [ h, H, hstroke, Hstroke ] }; + key { [ n, N, n, N ] }; + key { [ e, E, EuroSign, cent ] }; + key { [ i, I, rightarrow, idotless ] }; + key { [ o, O, oslash, Oslash ] }; + + key { [ z, Z, guillemotleft, less ] }; + key { [ x, X, guillemotright, greater ] }; + key { [ c, C, cent, copyright ] }; + key { [ k, K, kra, ampersand ] }; + key { [ m, M, mu, masculine ] }; + + key { [ BackSpace, BackSpace, BackSpace, BackSpace ] }; +}; diff --git a/nixos/xkb/symbols/ro b/nixos/xkb/symbols/ro new file mode 100644 index 00000000..b5302c10 --- /dev/null +++ b/nixos/xkb/symbols/ro @@ -0,0 +1,221 @@ +// Keyboard layouts for Romania. + +// The first two layouts conform to the Romanian standard SR 13392:2004, +// adopted in 2004 by ASRO, "Asociația de Standardizare din România". +// +// The default layout is the Programmers layout because keyboards that are +// engraved according to the primary layout from the standard are lacking. +// The "std" variant, further down, implements the primary layout. +// +// Diacritics with cedillas, as in ISO-8859-2, are no longer supported. This +// error has been corrected in ISO-889-16 through using commabelow accents. +// Pre-Vista MS-compatible layout ("winkeys" variant) generates commabelow +// accents too now. +// +// Created by Cristian Gafton, (C) 2000 +// Modified by Marius Andreiana, (C) 2001 +// Completed by Dumitru Moldovan, (C) 2001, 2004-2008, 2020 + + +default partial alphanumeric_keys +xkb_symbols "basic" { + + // This Programmers/RO_US layout has always been the "de facto" standard + // in the Linux/Unix world, and is therefore the default here, although + // it is the secondary layout in the Romanian standard. It is fully + // compatible with a US keyboard (ignoring the Euro on AltGr+5). + + include "us" + + name[Group1]="Romanian"; + + key {[ 1, exclam, dead_tilde ]}; + key {[ 2, at, dead_caron ]}; + key {[ 3, numbersign, dead_circumflex ]}; + key {[ 4, dollar, dead_breve ]}; + key {[ 5, percent, dead_abovering ]}; + key {[ 6, asciicircum, dead_ogonek ]}; + key {[ 7, ampersand, dead_grave ]}; + key {[ 8, asterisk, dead_abovedot ]}; + key {[ 9, parenleft, dead_acute ]}; + key {[ 0, parenright, dead_doubleacute ]}; + key {[ minus, underscore, dead_diaeresis, endash ]}; + key {[ equal, plus, dead_cedilla, plusminus ]}; + + key {[ q, Q, acircumflex, Acircumflex ]}; + key {[ w, W, ssharp, U1e9e ]}; + key {[ e, E, EuroSign ]}; + key {[ t, T, U021b, U021a ]}; // ț Ț + key {[ i, I, icircumflex, Icircumflex ]}; + key {[ p, P, section ]}; + key {[ bracketleft, braceleft, doublelowquotemark ]}; + key {[ bracketright, braceright, rightdoublequotemark ]}; + + key {[ a, A, abreve, Abreve ]}; + key {[ s, S, U0219, U0218 ]}; // ș Ș + key {[ d, D, dstroke, Dstroke ]}; + key {[ l, L, lstroke, Lstroke ]}; + + key {[ backslash, bar ]}; + key {[ c, C, copyright ]}; + key {[ comma, less, guillemotleft ]}; + key {[ period, greater, guillemotright ]}; + + key {[ KP_Delete, KP_Decimal, KP_Separator, KP_Separator ]}; + + include "level3(ralt_switch)" +}; + + +partial alphanumeric_keys +xkb_symbols "std" { + + // Primary layout in the Romanian standard, implemented here as a variant + // because Romanian users prefer the secondary layout of the standard. + + include "us" + + name[Group1]="Romanian (standard)"; + + key {[doublelowquotemark,rightdoublequotemark, grave, asciitilde]}; + key {[ 1, exclam, dead_tilde ]}; + key {[ 2, at, dead_caron ]}; + key {[ 3, numbersign, dead_circumflex ]}; + key {[ 4, dollar, dead_breve ]}; + key {[ 5, percent, dead_abovering ]}; + key {[ 6, asciicircum, dead_ogonek ]}; + key {[ 7, ampersand, dead_grave ]}; + key {[ 8, asterisk, dead_abovedot ]}; + key {[ 9, parenleft, dead_acute ]}; + key {[ 0, parenright, dead_doubleacute ]}; + key {[ minus, underscore, dead_diaeresis, endash ]}; + key {[ equal, plus, dead_cedilla, plusminus ]}; + + key {[ e, E, EuroSign ]}; + key {[ p, P, section ]}; + key {[ abreve, Abreve, bracketleft, braceleft ]}; + key {[ icircumflex, Icircumflex, bracketright, braceright ]}; + key {[ acircumflex, Acircumflex, backslash, bar ]}; + + key {[ s, S, ssharp, U1e9e ]}; + key {[ d, D, dstroke, Dstroke ]}; + key {[ l, L, lstroke, Lstroke ]}; + key {[ U0219, U0218, semicolon, colon ]}; // ș Ș + key {[ U021b, U021a, apostrophe, quotedbl ]}; // ț Ț + + key {[ backslash, bar ]}; + key {[ c, C, copyright ]}; + key {[ comma, semicolon, less, guillemotleft ]}; + key {[ period, colon, greater, guillemotright ]}; + + key {[ KP_Delete, KP_Separator, KP_Decimal, KP_Decimal ]}; + + include "level3(ralt_switch)" +}; + + +partial alphanumeric_keys +xkb_symbols "winkeys" { + + // Romanian (legacy) QWERTZ keyboard layout, as available on Windows 10, + // but with the correct commabelow accents and the Euro sign on AltGr+e. + // Some Romanian hardware keyboards are still built like this. + // Older Romanian hardware keyboards might be slightly different. + // Created by Manfred Pohler, (C) 2003 + // Updated by Dumitru Moldovan, (C) 2020 + + include "us" + + name[Group1]="Romanian (Windows)"; + + key {[ bracketright, bracketleft ]}; + key {[ 1, exclam, asciitilde ]}; + key {[ 2, quotedbl, dead_caron ]}; + key {[ 3, numbersign, dead_circumflex ]}; + key {[ 4, currency, dead_breve ]}; + key {[ 5, percent, dead_abovering ]}; + key {[ 6, ampersand, dead_ogonek ]}; + key {[ 7, slash, dead_grave ]}; + key {[ 8, parenleft, dead_abovedot ]}; + key {[ 9, parenright, dead_acute ]}; + key {[ 0, equal, dead_doubleacute ]}; + key {[ plus, question, dead_diaeresis ]}; + key {[ apostrophe, asterisk, dead_cedilla ]}; + + key {[ q, Q, backslash ]}; + key {[ w, W, bar ]}; + key {[ e, E, EuroSign ]}; + key {[ z, Z ]}; + key {[ abreve, Abreve, division ]}; + key {[ icircumflex, Icircumflex, multiply ]}; + + key {[ s, S, dstroke ]}; + key {[ d, D, Dstroke ]}; + key {[ k, K, lstroke ]}; + key {[ l, L, Lstroke ]}; + key {[ U0219, U0218, dollar ]}; // ș Ș + key {[ U021b, U021a, ssharp ]}; // ț Ț + key {[ acircumflex, Acircumflex ]}; + + key {[ less, greater ]}; + key {[ y, Y ]}; + key {[ v, V, at ]}; + key {[ b, B, braceleft ]}; + key {[ n, N, braceright ]}; + key {[ m, M, section ]}; + key {[ comma, semicolon, less ]}; + key {[ period, colon, greater ]}; + key {[ minus, underscore ]}; + + key {[ KP_Delete, KP_Separator, KP_Decimal, KP_Decimal ]}; + + include "level3(ralt_switch)" +}; + + +// EXTRAS: + + +partial +xkb_symbols "crh_dobruja" { + // Romania-specific Crimean Tatar (Crimean Turkish) Q layout, not yet standard. + // Reşat SABIQ , 2009, 2011 + // Özgür Qarahan , 2009 + + include "ua(crh)" + + name[Group1]="Crimean Tatar (Dobruja Q)"; + + key {[ w, W, abreve, Abreve ]}; + key {[ t, T, U021b, U021a ]}; // ț Ț + key {[ p, P, section ]}; + key {[ s, S, U0219, U0218 ]}; // ș Ș + key {[ ibreve, Ibreve, j, J ]}; + key {[ m, M, trademark, masculine ]}; +}; + + +partial alphanumeric_keys +xkb_symbols "ergonomic" { + // This layout is optimized for fast touch-typing in Romanian on a + // US keyboard, and works by swapping out symbols infrequently used + // in written Romanian (q, w, y, k) in favor of native ones, thus + // reducing the need to use modifier keys. + // Created by Gabriel Somlo, (C) 2011 + + include "ro(basic)" + + name[Group1]="Romanian (ergonomic Touchtype)"; + + key {[ abreve, Abreve, q, Q ]}; + key {[ U0219, U0218, w, W ]}; + key {[ U021b, U021a, y, Y ]}; + key {[ a, A, acircumflex, Acircumflex ]}; + key {[ icircumflex, Icircumflex, k, K ]}; +}; + + +partial alphanumeric_keys +xkb_symbols "sun_type6" { + include "sun_vndr/ro(sun_type6)" +}; diff --git a/nixos/xkb/symbols/rs b/nixos/xkb/symbols/rs new file mode 100644 index 00000000..00b05a5a --- /dev/null +++ b/nixos/xkb/symbols/rs @@ -0,0 +1,324 @@ +// Keyboard layouts for Serbia. + +// Derived from "Danube" D.2 from 2003-05-12, +// which is available at http://srpski.org/dunav/. +// +// Original authors: +// Danilo Segan (Данило Шеган) +// Chusslove Illich (Часлав Илић) + +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Serbian"; + + include "rs(cyrlevel3)" + include "rs(common)" + include "rs(cyralpha)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "latin" { + + name[Group1]= "Serbian (Latin)"; + + include "latin(type3)" + include "rs(latalpha)" + include "rs(latlevel3)" + include "rs(common)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "yz" { + + include "rs(basic)" + name[Group1]= "Serbian (Cyrillic, ZE and ZHE swapped)"; + + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; // y + key { [ Cyrillic_ze, Cyrillic_ZE ] }; // z +}; + +hidden partial alphanumeric_keys +xkb_symbols "common" { + // "Common" keys: keys that are the same + // for both latin and cyrillic keyboards. + + key { [ grave, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, quotedbl ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, ampersand ] }; + key { [ 7, slash ] }; + key { [ 8, parenleft ] }; + key { [ 9, parenright ] }; + key { [ 0, equal ] }; + key { [ apostrophe, question ] }; + key { [ plus, asterisk ] }; + + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + include "kpdl(comma)" +}; + +hidden partial alphanumeric_keys +xkb_symbols "cyralpha" { + + key { [ Cyrillic_lje, Cyrillic_LJE ] }; // q + key { [ Cyrillic_nje, Cyrillic_NJE ] }; // w + key { [ Cyrillic_ie, Cyrillic_IE ] }; // e + key { [ Cyrillic_er, Cyrillic_ER ] }; // r + key { [ Cyrillic_te, Cyrillic_TE ] }; // t + key { [ Cyrillic_ze, Cyrillic_ZE ] }; // y + key { [ Cyrillic_u, Cyrillic_U ] }; // u + key { [ Cyrillic_i, Cyrillic_I ] }; // i + key { [ Cyrillic_o, Cyrillic_O ] }; // o + key { [ Cyrillic_pe, Cyrillic_PE ] }; // p + key { [ Cyrillic_sha, Cyrillic_SHA ] }; // [ { + key { [ Serbian_dje, Serbian_DJE ] }; // ] } + + key { [ Cyrillic_a, Cyrillic_A ] }; // a + key { [ Cyrillic_es, Cyrillic_ES ] }; // s + key { [ Cyrillic_de, Cyrillic_DE ] }; // d + key { [ Cyrillic_ef, Cyrillic_EF ] }; // f + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; // g + key { [ Cyrillic_ha, Cyrillic_HA ] }; // h + key { [ Cyrillic_je, Cyrillic_JE ] }; // j + key { [ Cyrillic_ka, Cyrillic_KA ] }; // k + key { [ Cyrillic_el, Cyrillic_EL ] }; // l + key { [ Cyrillic_che, Cyrillic_CHE ] }; // ; : + key { [ Serbian_tshe, Serbian_TSHE ] }; // ' " + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; // \ | + + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; // z + key { [ Cyrillic_dzhe, Cyrillic_DZHE ] }; // x + key { [ Cyrillic_tse, Cyrillic_TSE ] }; // c + key { [ Cyrillic_ve, Cyrillic_VE ] }; // v + key { [ Cyrillic_be, Cyrillic_BE ] }; // b + key { [ Cyrillic_en, Cyrillic_EN ] }; // n + key { [ Cyrillic_em, Cyrillic_EM ] }; // m +}; + + +hidden partial alphanumeric_keys +xkb_symbols "latalpha" { + + key { [ scaron, Scaron ] }; // [ { + key { [ dstroke, Dstroke ] }; // ] } + + key { [ ccaron, Ccaron ] }; // ; : + key { [ cacute, Cacute ] }; // ' " + key { [ zcaron, Zcaron ] }; // \ | +}; + +hidden partial alphanumeric_keys +xkb_symbols "twoletter" { + + // Letters which are written in latin transcription with two characters. + key { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC", + [ U01C9, U01C8, any, U01C7 ] }; // lj Lj . LJ + key { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC", + [ U01CC, U01CB, any, U01CA ] }; // nj Nj . NJ + key { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC", + [ U01C6, U01C5, any, U01C4 ] }; // dž Dž . DŽ + + // Also replace letter Y with Zcaron, since Y is of no use any longer. + key { [ zcaron, Zcaron ] }; +}; + +hidden partial alphanumeric_keys +xkb_symbols "latlevel3" { + key { [ any, any, notsign, notsign ] }; // ` ~ + key { [ any, any, dead_tilde, asciitilde ] }; // 1 ! + key { [ any, any, dead_caron, caron ] }; // 2 @ + key { [ any, any, dead_circumflex, asciicircum ] }; // 3 # + key { [ any, any, dead_breve, breve ] }; // 4 $ + key { [ any, any, dead_abovering, degree ] }; // 5 % + key { [ any, any, dead_ogonek, ogonek ] }; // 6 ^ + key { [ any, any, dead_grave, grave ] }; // 7 & + key { [ any, any, dead_abovedot, abovedot ] }; // 8 * + key { [ any, any, dead_acute, apostrophe ] }; // 9 ( + key { [ any, any, dead_doubleacute, doubleacute ] }; // 0 ) + key { [ any, any, dead_diaeresis, diaeresis ] }; // - _ + key { [ any, any, dead_cedilla, cedilla ] }; // = + + + key { [ any, any, backslash, Greek_OMEGA ] }; // q + key { [ any, any, bar, Lstroke ] }; // w + key { [ any, any, EuroSign, EuroSign ] }; // e + key { [ any, any, paragraph, registered ] }; // r + key { type[Group1] = "FOUR_LEVEL_ALPHABETIC", + [ any, any, tslash, Tslash ] }; // t + key { [ any, any, leftarrow, yen ] }; // y + key { [ any, any, downarrow, uparrow ] }; // u + key { [ any, any, rightarrow, idotless ] }; // i + key { type[Group1] = "FOUR_LEVEL_ALPHABETIC", + [ any, any, oslash, Oslash ] }; // o + key { type[Group1] = "FOUR_LEVEL_ALPHABETIC", + [ any, any, thorn, THORN ] }; // p + key { [ any, any, division, dead_abovering ] }; // [ + key { [ any, any, multiply, dead_macron ] }; // ] + + key { type[Group1] = "FOUR_LEVEL_ALPHABETIC", + [ any, any, ae, AE ] }; // a + key { [ any, any, doublelowquotemark, guillemotright ] }; // s + key { [ any, any, leftdoublequotemark, guillemotleft ] }; // d + key { [ any, any, bracketleft, ordfeminine ] }; // f + key { [ any, any, bracketright, ENG ] }; // g + key { type[Group1] = "FOUR_LEVEL_ALPHABETIC", + [ any, any, hstroke, Hstroke ] }; // h + key { [ any, any, lstroke, ampersand ] }; // k + key { [ any, any, lstroke, Lstroke ] }; // l + key { [ any, any, dead_acute, dead_doubleacute ] }; // ; + key { [ any, any, ssharp, dead_caron ] }; // ' + key { [ any, any, currency, dead_breve ] }; // \ + + key { [ any, any, leftsinglequotemark, guillemotright ] }; // z + key { [ any, any, rightsinglequotemark,guillemotleft ] }; // x + key { [ any, any, cent, copyright ] }; // c + key { [ any, any, at, grave ] }; // v + key { [ any, any, braceleft, apostrophe ] }; // b + key { [ any, any, braceright, acute ] }; // n + key { [ any, any, section, masculine ] }; // m + key { [ any, any, less, multiply ] }; // , < + key { [ any, any, greater, division ] }; // . > + key { [ any, any, emdash, endash ] }; // / ? +}; + +hidden partial alphanumeric_keys +xkb_symbols "cyrlevel3" { + key { [ any, any, degree, notsign ] }; // ` ~ + key { [ any, any, dead_circumflex ] }; // 3 # + key { [ any, any, dead_grave ] }; // 7 & + key { [ any, any, dead_doublegrave ] }; // 8 * + key { [ any, any, dead_acute ] }; // 9 ( + key { [ any, any, dead_invertedbreve ] }; // 0 ) + key { [ any, any, dead_macron ] }; // - _ + + key { [ any, any, backslash ] }; // q + key { [ any, any, bar ] }; // w + key { [ any, any, EuroSign, sterling ] }; // e + key { [ any, any, paragraph, registered ] }; // r + key { [ any, any, ellipsis ] }; // t + key { [ any, any, leftarrow, yen ] }; // y + key { [ any, any, downarrow, uparrow ] }; // u + key { [ any, any, rightarrow ] }; // i + key { [ any, any, section ] }; // o + key { [ any, any, division ] }; // [ + key { [ any, any, multiply ] }; // ] + + key { [ any, any, doublelowquotemark, guillemotright ] }; // s + key { [ any, any, leftdoublequotemark, guillemotleft ] }; // d + key { [ any, any, bracketleft ] }; // f + key { [ any, any, bracketright ] }; // g + key { [ any, any, currency ] }; // \ + + key { [ any, any, leftsinglequotemark ] }; // z + key { [ any, any, rightsinglequotemark ] }; // x + key { [ any, any, cent, copyright ] }; // c + key { [ any, any, at ] }; // v + key { [ any, any, braceleft ] }; // b + key { [ any, any, braceright ] }; // n + key { [ any, any, asciicircum ] }; // m + key { [ any, any, less ] }; // , < + key { [ any, any, greater ] }; // . > + key { [ any, any, emdash, endash ] }; // / ? +}; + +partial alphanumeric_keys +xkb_symbols "latinunicode" { + // This mapping supports the Unicode characters 0x1c4-0x1cc (dz, lj, and nj + // as single character). You get the title form with AltGr+Shift. + + include "rs(latin)" + name[Group1]= "Serbian (Latin, Unicode)"; + + include "rs(twoletter)" +}; + +partial alphanumeric_keys +xkb_symbols "latinyz" { + // For those who insist on using "english-position" Z and Y. + + include "rs(latin)" + name[Group1]= "Serbian (Latin, QWERTY)"; + + key { [ y, Y ] }; // y + key { [ z, Z ] }; // z +}; + +partial alphanumeric_keys +xkb_symbols "latinunicodeyz" { + // Unicode, ZHE and Z swapped. + + include "rs(latinunicode)" + name[Group1]= "Serbian (Latin, Unicode, QWERTY)"; + + key { [ zcaron, Zcaron ] }; // y + key { [ z, Z ] }; // z +}; + +xkb_symbols "alternatequotes" { + // Another acceptable »pair of quotes« for Serbian. + + include "rs(basic)" + name[Group1]= "Serbian (Cyrillic, with guillemets)"; + + key { [ any, any, guillemotright ] }; // s + key { [ any, any, guillemotleft ] }; // d +}; + +xkb_symbols "latinalternatequotes" { + // Another acceptable »pair of quotes« for Serbian. + + include "rs(latin)" + name[Group1]= "Serbian (Latin, with guillemets)"; + + key { [ any, any, guillemotright ] }; // s + key { [ any, any, guillemotleft ] }; // d +}; + +xkb_symbols "rue" { + // Layout for Pannonian Rusyn (spoken mainly in Serbia and Croatia + // by the Rusyn people), based on Serbian Cyrillic layout. + // Authors: + // Ljubomir J. Papuga (Любомир Я. Папуґа) + // Mihajlo Hornjak + + include "rs(basic)" + name[Group1]= "Pannonian Rusyn"; + + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; // ` + + key { [ Cyrillic_ya, Cyrillic_YA ] }; // q + key { [ Ukrainian_ie, Ukrainian_IE ] }; // w + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; // ] + + key { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; // g + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; // j + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; // ' + + key { [ Cyrillic_yu, Cyrillic_YU ] }; // z + key { [ Ukrainian_yi, Ukrainian_YI ] }; // x +}; + +// EXTRAS: + +xkb_symbols "combiningkeys" { + // Raw combining characters instead of dead keys, + // especially good for post-accenting texts. + + include "rs(basic)" + name[Group1]= "Serbian (combining accents instead of dead keys)"; + + key { [ any, any, U0302, dead_circumflex ] }; // 3, U0302 = COMBINING CIRCUMFLEX ACCENT + key { [ any, any, U0300 ] }; // 7, U0300 = COMBINING GRAVE ACCENT + key { [ any, any, U030F ] }; // 8, U030F = COMBINING DOUBLE GRAVE ACCENT + key { [ any, any, U0301 ] }; // 9, U0301 = COMBINING ACUTE ACCENT + key { [ any, any, U0311 ] }; // 0, U0311 = COMBINING INVERTED BREVE + key { [ any, any, U0304 ] }; // -, U0304 = COMBINING MACRON +}; diff --git a/nixos/xkb/symbols/ru b/nixos/xkb/symbols/ru new file mode 100644 index 00000000..3895bf83 --- /dev/null +++ b/nixos/xkb/symbols/ru @@ -0,0 +1,1311 @@ +// Keyboard layouts for Russia. + +// AEN +// 2001/12/23 by Leon Kanter +// 2005/12/09 Valery Inozemtsev +// 2018/07/15 @a13 (a.k.a. @dbvvmpg) and Stepanenko Andrey + +// Windows layout +default partial alphanumeric_keys +xkb_symbols "winkeys" { + + include "ru(common)" + name[Group1]= "Russian"; + + key {[ 3, numerosign ]}; + key {[ 4, semicolon ]}; + key {[ 5, percent ]}; + key {[ 6, colon ]}; + key {[ 7, question ]}; + key {[ 8, asterisk, U20BD ]}; // ruble + + key {[ period, comma ]}; + key {[ backslash, slash ]}; +}; + +hidden partial alphanumeric_keys +xkb_symbols "common" { + + key {[ 1, exclam ]}; + key {[ 2, quotedbl ]}; + key {[ 3, numbersign ]}; + key {[ 4, asterisk ]}; + key {[ 5, colon ]}; + key {[ 6, comma ]}; + key {[ 7, period ]}; + key {[ 8, semicolon ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + key {[ backslash, bar ]}; + + key {[ slash, question ]}; + key {[ slash, bar ]}; + + key {[ Cyrillic_io, Cyrillic_IO ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; + + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_e, Cyrillic_E ]}; + + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + + include "kpdl(comma)" +}; + +partial alphanumeric_keys +xkb_symbols "legacy" { + + include "ru(common)" + name[Group1]= "Russian (legacy)"; +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + + include "ru(common)" + + key {[ Cyrillic_io, Cyrillic_IO, grave ]}; + key {[ 3, numbersign, numerosign ]}; + key {[ 4, dollar, semicolon ]}; + key {[ 6, asciicircum, colon ]}; + key {[ 7, ampersand ]}; + key {[ 9, parenleft, acute ]}; + key {[ backslash, bar, slash ]}; + + include "group(olpc)" +}; + +partial alphanumeric_keys +xkb_symbols "typewriter" { + + include "ru(common)" + name[Group1]= "Russian (typewriter)"; + + key {[ bar, plus ]}; + key {[ numerosign, 1 ]}; + key {[ minus, 2 ]}; + key {[ slash, 3 ]}; + key {[ quotedbl, 4 ]}; + key {[ colon, 5 ]}; + key {[ comma, 6 ]}; + key {[ period, 7 ]}; + key {[ underscore, 8 ]}; + key {[ question, 9 ]}; + key {[ percent, 0 ]}; + key {[ exclam, equal ]}; + key {[ semicolon, backslash ]}; + + key {[ parenright, parenleft ]}; + + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; + key {[ Cyrillic_io, Cyrillic_IO ]}; +}; + +partial alphanumeric_keys +xkb_symbols "typewriter-legacy" { + + include "ru(common)" + name[Group1]= "Russian (typewriter, legacy)"; + + key {[ apostrophe, quotedbl ]}; + key {[ exclam, 1 ]}; + key {[ numerosign, 2 ]}; + key {[ slash, 3 ]}; + key {[ semicolon, 4 ]}; + key {[ colon, 5 ]}; + key {[ comma, 6 ]}; + key {[ period, 7 ]}; + key {[ underscore, 8 ]}; + key {[ question, 9 ]}; + key {[ percent, 0 ]}; + + key {[ parenleft, parenright ]}; + + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; + key {[ Cyrillic_io, Cyrillic_IO ]}; +}; + +partial alphanumeric_keys +xkb_symbols "gost-6431-75-48" { + + include "ru(typewriter)" + name[Group1]= "Russian (GOST 6431-75)"; + + key {[ section, asciitilde ]}; + key {[ parenleft, 1 ]}; + key {[ parenright, 2 ]}; + key {[ minus, 3 ]}; + key {[ slash, 4 ]}; + key {[ quotedbl, 5 ]}; + key {[ colon, 6 ]}; + key {[ comma, 7 ]}; + key {[ period, 8 ]}; + key {[ underscore, 9 ]}; + key {[ question, 0 ]}; + key {[ percent, plus ]}; + key {[ exclam, equal ]}; + + key {[ semicolon, numerosign ]}; + + key {[ emdash, endash ]}; +}; + +partial alphanumeric_keys +xkb_symbols "gost-14289-88" { + + include "ru(typewriter)" + name[Group1]= "Russian (GOST 14289-88)"; + + key { [ backslash, asterisk, asciitilde, section ] }; + key { [ parenleft, 1, less, guillemotleft ] }; + key { [ parenright, 2, at, guillemotright ] }; + key { [ minus, 3, numbersign, numerosign ] }; + key { [ slash, 4, U20BD, dollar ] }; // ruble + key { [ quotedbl, 5, greater ] }; + key { [ colon, 6, asciicircum ] }; + key { [ comma, 7, ampersand ] }; + key { [ period, 8, apostrophe, dead_acute ] }; + key { [ underscore, 9, braceleft, U201E ] }; + key { [ question, 0, braceright, U201F ] }; + key { [ percent, plus, bracketleft, plusminus ] }; + key { [ exclam, equal, bracketright ] }; + + key { [ semicolon, bar, grave ] }; + + key { [ emdash, endash ] }; +}; + +partial alphanumeric_keys +xkb_symbols "phonetic" { + + name[Group1]= "Russian (phonetic)"; + + key {[ Cyrillic_yu, Cyrillic_YU ]}; + key {[ 1, exclam ]}; + key {[ 2, at ]}; + key {[ 3, Cyrillic_io ]}; + key {[ 4, Cyrillic_IO ]}; + key {[ 5, Cyrillic_hardsign ]}; + key {[ 6, Cyrillic_HARDSIGN ]}; + key {[ 7, ampersand ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ minus, underscore ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + key {[ Cyrillic_e, Cyrillic_E ]}; + + key {[ bar, brokenbar ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ comma, less ]}; + key {[ period, greater ]}; + key {[ slash, question ]}; +}; + +partial alphanumeric_keys +xkb_symbols "phonetic_winkeys" { + + include "ru(phonetic)" + + name[Group1]= "Russian (phonetic, Windows)"; + + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; +}; + +partial alphanumeric_keys +xkb_symbols "phonetic_YAZHERTY" { + + include "ru(phonetic_winkeys)" + + name[Group1]= "Russian (phonetic, YAZHERTY)"; + + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; +}; + + +partial alphanumeric_keys +xkb_symbols "tt" { + + include "ru(winkeys)" + name[Group1]= "Tatar"; + + key { [ Cyrillic_shha, Cyrillic_SHHA, Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_o_bar, Cyrillic_O_bar, Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_schwa, Cyrillic_SCHWA, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_u_straight, Cyrillic_U_straight, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key { [ Cyrillic_en_descender, Cyrillic_EN_descender, Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "os_legacy" { + + include "ru(common)" + name[Group1]= "Ossetian (legacy)"; + + key { [ Cyrillic_e, Cyrillic_E ] }; + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; + key { [ 0x010004D5, 0x010004D4 ] }; +}; + +partial alphanumeric_keys +xkb_symbols "os_winkeys" { + + include "ru(winkeys)" + name[Group1]= "Ossetian (Windows)"; + + key { [ Cyrillic_e, Cyrillic_E ] }; + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; + key { [ 0x010004D5, 0x010004D4 ] }; +}; + +partial alphanumeric_keys +xkb_symbols "cv" { + + include "ru(winkeys)" + name[Group1]= "Chuvash"; + + key { [ Cyrillic_u, Cyrillic_U, 0x010004f3, 0x010004f2 ] }; + key { [ Cyrillic_ie, Cyrillic_IE, 0x010004d7, 0x010004d6 ] }; + key { [ Cyrillic_a, Cyrillic_A, 0x010004d1, 0x010004d0 ] }; + key { [ Cyrillic_es, Cyrillic_ES, 0x010004ab, 0x010004aa ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "udm" { + + include "ru(winkeys)" + name[Group1]= "Udmurt"; + + key { [ question, exclam, 1, 1 ] }; + key { [ parenleft, quotedbl, 2, 2 ] }; + key { [ parenright, numerosign, 3, 3 ] }; + key { [ colon, semicolon, 4, 4 ] }; + key { [ asterisk, percent, 5, 5 ] }; + key { [ 0x010004dd, 0x010004dc, 6, 6 ] }; + key { [ 0x010004e7, 0x010004e6, 7, 7 ] }; + key { [ 0x010004f5, 0x010004f4, 8, 8 ] }; + key { [ 0x010004e5, 0x010004e4, 9, 9 ] }; + key { [ 0x010004df, 0x010004de, 0, 0 ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "cv_latin" { + + include "us(alt-intl)" + name[Group1]= "Chuvash (Latin)"; + + key {[ q, Q, scaron, Scaron ]}; + key {[ w, W, udiaeresis, Udiaeresis ]}; + key {[ e, E, U0115, U0114 ]}; // ĕ Ĕ + key {[ u, U, udiaeresis, Udiaeresis ]}; + key {[ i, I, ibreve, Ibreve ]}; + key {[ o, O, odiaeresis, Odiaeresis ]}; + key {[ a, A, abreve, Abreve ]}; + key {[ s, S, scedilla, Scedilla ]}; + key {[ g, G, gbreve, Gbreve ]}; + key {[ j, J, U0131, U0130 ]}; // İ ı + key {[ c, C, ccedilla, Ccedilla ]}; + + include "level3(ralt_switch)" +}; + +// Komi language layout +// Vlad Shakhov +// last changes 2007/10/23 +partial alphanumeric_keys +xkb_symbols "kom" { + + include "ru(winkeys)" + name[Group1]= "Komi"; + + // cyrilllic o with diaeresis + key { [ Cyrillic_o, Cyrillic_O, U04E7, U04E6 ] }; + + // hard I as additional key for soft Cyrillic_I + key { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] }; + + include "level3(ralt_switch)" +}; + +// Yakut language layout +// 2008/04/23 Yakov Aleksandrov +// 2008/04/23 Anatoliy Zhozhikov +// 2008/04/23 Aleksandr Varlamov +partial alphanumeric_keys +xkb_symbols "sah" { + + include "ru(winkeys)" + name[Group1]= "Yakut"; + + key { [ Cyrillic_io, Cyrillic_IO, U04EB, U04EA ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, U048B, U048A ] }; + key { [ Cyrillic_u, Cyrillic_U, Cyrillic_u_straight, Cyrillic_U_straight ] }; + key { [ Cyrillic_ka, Cyrillic_KA, U04C4, U04C3 ] }; + key { [ Cyrillic_en, Cyrillic_EN, U04A5, U04A4 ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, U0495, U0494 ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, U04E1, U04E0 ] }; + key { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA ] }; + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, U0461, U0460 ] }; + key { [ Cyrillic_che, Cyrillic_CHE, Cyrillic_u_macron, Cyrillic_U_macron ] }; + key { [ Cyrillic_em, Cyrillic_EM, U04C8, U04C7 ] }; + key { [ Cyrillic_i, Cyrillic_I, Cyrillic_i_macron, Cyrillic_I_macron ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_shha, Cyrillic_SHHA ] }; + + include "level3(ralt_switch)" +}; + + +//Kalmyk language layout +//based on the Kalmyk language layout: http://soft.oyrat.org/ +//Nikolay Korneev +//Toli Miron +partial alphanumeric_keys +xkb_symbols "xal" { + + include "ru(winkeys)" + name[Group1]= "Kalmyk"; + + key.type[group1]="FOUR_LEVEL"; + + key { [ question, exclam, 1 ] }; + key { [ numerosign, quotedbl, 2 ] }; + key { [ Cyrillic_u_straight, Cyrillic_U_straight, 3 ] }; + key { [ Cyrillic_schwa, Cyrillic_SCHWA, 4 ] }; + key { [ asterisk, percent, 5 ] }; + key { [ Cyrillic_en_descender, Cyrillic_EN_descender, 6 ] }; + key { [ Cyrillic_o_bar, Cyrillic_O_bar, 7 ] }; + key { [ Cyrillic_shha, Cyrillic_SHHA, 8 ] }; + key { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, 9 ] }; + key { [ semicolon, colon, 0 ] }; + + key { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] }; + + key { [ Cyrillic_tse, Cyrillic_TSE, dollar ] }; + key { [ Cyrillic_u, Cyrillic_U, EuroSign ] }; + key { [ Cyrillic_ka, Cyrillic_KA, registered ] }; + key { [ Cyrillic_ie, Cyrillic_IE, trademark ] }; + key { [ Cyrillic_ha, Cyrillic_HA, bracketleft ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright ] }; + key { [ Cyrillic_e, Cyrillic_E, apostrophe ] }; + key { [ Cyrillic_es, Cyrillic_ES, copyright ] }; + key { [ Cyrillic_be, Cyrillic_BE, less ] }; + key { [ Cyrillic_yu, Cyrillic_YU, greater ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "dos" { + + include "ru(common)" + name[Group1]= "Russian (DOS)"; + + key { [ parenright, parenleft ] }; + key { [ 4, currency ] }; + key { [ 9, question ] }; + key { [ 0, percent ] }; + + key { [ Cyrillic_io, Cyrillic_IO ] }; +}; + +partial alphanumeric_keys +xkb_symbols "bak" { + + include "ru(winkeys)" + name[Group1]= "Bashkirian"; + + key.type[group1]="FOUR_LEVEL"; + + key { [ Cyrillic_schwa, Cyrillic_SCHWA, Cyrillic_io, Cyrillic_IO ] }; + key { [ exclam, quotedbl, 1, 1 ] }; + key { [ Cyrillic_o_bar, Cyrillic_O_bar, 2, 2 ] }; + key { [ 0x010004a1, 0x010004a0, 3, 3 ] }; + key { [ Cyrillic_ghe_bar, Cyrillic_GHE_bar, 4, 4 ] }; + key { [ 0x010004ab, 0x010004aa, 5, 5 ] }; + key { [ colon, semicolon, 6, 6 ] }; + key { [ 0x01000499, 0x01000498, 7, 7 ] }; + key { [ Cyrillic_shha, Cyrillic_SHHA, 8, 8 ] }; + key { [ question, parenleft, 9, 9 ] }; + key { [ numerosign, parenright, 0, 0 ] }; + key { [ minus, percent, minus, underscore ] }; + key { [ Cyrillic_u_straight, Cyrillic_U_straight, equal, plus ] }; + key { [ Cyrillic_en_descender, Cyrillic_EN_descender, backslash, slash ] }; + + include "level3(ralt_switch)" +}; + +// Serbian characters are added as third-level symbols to Russian keyboard layout. +partial alphanumeric_keys +xkb_symbols "srp" { + + include "ru(common)" + name[Group1]= "Serbian (Russia)"; + + key { [ 3, numerosign ] }; + key { [ 4, semicolon ] }; + key { [ 5, percent ] }; + key { [ 6, colon ] }; + key { [ 7, question ] }; + key { [ 8, asterisk ] }; + key { [ period, comma ] }; + key { [ backslash, slash ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, U458, U408 ] }; + key { [ Cyrillic_en, Cyrillic_EN, U45A, U40A ] }; + key { [ Cyrillic_el, Cyrillic_EL, U459, U409 ] }; + key { [ Cyrillic_de, Cyrillic_DE, U45F, U40F ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, U452, U402 ] }; + key { [ Cyrillic_che, Cyrillic_CHE, U45B, U40B ] }; + + include "level3(ralt_switch)" +}; + +// Mari language layout +// http://www.marlamuter.com/ +// Last edit by Viatcheslav Kileev (slavakileev@yandex.ru) +partial alphanumeric_keys +xkb_symbols "chm" { + + include "ru(winkeys)" + name[Group1]= "Mari"; + + key { [ Cyrillic_a, Cyrillic_A, U04D3, U04D2 ] }; + key { [ Cyrillic_u, Cyrillic_U, U04F1, U04F0 ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU, U04F9, U04F8 ] }; + key { [ Cyrillic_en, Cyrillic_EN, U04A5, U04A4 ] }; + key { [ Cyrillic_o, Cyrillic_O, U04E7, U04E6 ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "phonetic_azerty" { + + include "fr" + + name[Group1]= "Russian (phonetic, AZERTY)"; + + key {[ Cyrillic_yu, Cyrillic_YU ]}; + key {[ ampersand, 1, onesuperior, exclamdown ]}; + key {[ eacute, 2, asciitilde, oneeighth ]}; + key {[ quotedbl, 3, numbersign, sterling ]}; + key {[ apostrophe, 4, braceleft, dollar ]}; + key {[ parenleft, 5, bracketleft, threeeighths ]}; + key {[ minus, 6, bar, fiveeighths ]}; + key {[ egrave, 7, grave, seveneighths ]}; + key {[ underscore, 8, backslash, trademark ]}; + key {[ ccedilla, 9, asciicircum, plusminus ]}; + key {[ agrave, 0, at, degree ]}; + key {[ parenright, degree, bracketright, questiondown ]}; + key {[ Cyrillic_che, Cyrillic_CHE, braceright, dead_ogonek ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; // Z + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + + key {[ Cyrillic_ya, Cyrillic_YA ]}; // Q + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; // M + key {[ ugrave, percent, asciicircum, caron ]}; + key {[ Cyrillic_e, Cyrillic_E ]}; + + key {[ bar, brokenbar ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; // W + key {[Cyrillic_softsign,Cyrillic_SOFTSIGN]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ comma, question, acute, doubleacute ]}; + key {[ semicolon, period, U2022, multiply ]}; // bullet + key {[ colon, slash, periodcentered, division ]}; + key {[ exclam, section, dead_belowdot, dead_abovedot ]}; + + include "level3(ralt_switch)" +}; + +// Russian dvorak phonetic layout +// Oleg Zalizniak +partial alphanumeric_keys +xkb_symbols "phonetic_dvorak" { + include "level3(ralt_switch)" + + name[Group1]= "Russian (phonetic, Dvorak)"; + + key { [ Cyrillic_yu, Cyrillic_YU ] }; + + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, Cyrillic_io ] }; + key { [ 4, Cyrillic_IO ] }; + key { [ 5, Cyrillic_hardsign ] }; + key { [ 6, Cyrillic_HARDSIGN ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_e, Cyrillic_E ] }; + + key { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; + key { [ comma, less, dead_cedilla, dead_caron ] }; + key { [ period, greater, dead_abovedot, periodcentered ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ slash, question ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ minus, underscore ] }; + + key { [ semicolon, colon, dead_ogonek, dead_doubleacute ] }; + key { [ Cyrillic_ya, Cyrillic_YA ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; +}; + +// Keyboard layout for Abkhazian. +// 2022/04/13 by Nart Tlisha +partial alphanumeric_keys +xkb_symbols "ab" { + + include "ru(common)" + name[Group1]= "Abkhazian (Russia)"; + + key { [ U0301, asciitilde, U201C, U201D ] }; // double quotation marks + key { [ 1, exclam, U00AB, U00BB ] }; // guillemets + key { [ 2, at, quotedbl, U201E ] }; // low double quotation mark + key { [ 3, numbersign, numerosign ] }; + key { [ 4, dollar, semicolon ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum, colon ] }; + key { [ 7, ampersand, question ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft, bracketleft, braceleft ] }; + key { [ 0, parenright, bracketright, braceright ] }; + key { [ minus, underscore, U2013, U2014 ] }; // endash, emdash + + key { [ U049f, U049e ] }; + key { [ Cyrillic_tse, Cyrillic_TSE, U04b5, U04b4 ] }; + key { [ Cyrillic_ka, Cyrillic_KA, U049b, U049a ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, U04f7, U04f6 ] }; + key { [ U04d9, U04d8 ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, U04e1, U04e0 ] }; + key { [ Cyrillic_ha, Cyrillic_HA, U04b3, U04b2 ] }; + key { [ U04bf, U04be ] }; + + key { [ Cyrillic_pe, Cyrillic_PE, U0525, U0524 ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, semicolon, colon ] }; + key { [ U04bd, U04bc, apostrophe, quotedbl ] }; + key { [ backslash, bar, slash ] }; + + key { [ U045f, U040f ] }; + key { [ Cyrillic_che, Cyrillic_CHE, U04b7, U04b6 ] }; + key { [ Cyrillic_te, Cyrillic_TE, U04ad, U04ac ] }; + key { [ Cyrillic_be, Cyrillic_BE, comma, less ] }; + key { [ U04a9, U04a8, period, greater ] }; + key { [ slash, question, comma, period ] }; + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +// Rulemak, Colemak based Russian phonetic layout +// contact: Geert Hendrickx +// https://forum.colemak.com/viewtopic.php?id=519 +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ Ё ‶ │ ! ˝ │ " ² │ № ³ │ ; £ │ % ¥ │ : ¯ │ ? │ * ₴ │ ( { │ ) } │ _ — │ + ÷ ┃ ⌫ ┃ +// │ ё ` │ 1 ´ │ 2 ¨ │ 3 # │ 4 $ │ 5 € │ 6 ˘ │ 7 & │ 8 ₽ │ 9 [ │ 0 ] │ - – │ = × ┃Backspace┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ Я Ѣ │ Ж Ѵ │ Ф Ѳ │ П │ Г Ґ │ й Ј │ Л Љ │ У Ў │ Ы Ї │ Ю : │ Ш „ │ Щ “ ┃ Enter ┃ +// ┃ Tab ↹ ┃ я ѣ │ ж ѵ │ ф ѳ │ п │ г ґ │ й ј │ л љ │ у ў │ ы ї │ ю ; │ ш « │ щ » ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ ⌫ Back ┃ А ʼ │ Р │ С │ Т Ћ │ Д Ђ │ Ч Џ │ Н Њ │ Е Є │ И І │ О │ Ь Ъ │ Э ” ┃ ┃ +// ┃ space ┃ а ' │ р ® │ с @ │ т ћ │ д ђ │ ч џ │ н њ │ е є │ и і │ о │ ь ъ │ э ’ ┃ ┃ +// ┣━━━━━━━━┻━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┲━━━┷━━━━━┻━━━━━━┫ +// ┃ ┃ З Ѕ │ Х │ Ц │ В │ Б Ѓ │ К Ќ │ М │ ; │ : │ ? | ┃ ┃ +// ┃ Shift ⇧ ┃ з ѕ │ х │ ц © │ в │ б ѓ │ к ќ │ м │ , < │ . > │ / \ ┃ Shift ⇧ ┃ +// ┣━━━━━━━┳━━┻━━━━┳┷━━━━━┷┱────┴─────┴─────┴─────┴─────┴─────┴┲━━━━┷━━┳━━┻━━━━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ Ctrl ┃ Meta ┃ Alt ┃ Space ┃AltGr ⇮┃ Menu ┃ Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ + +partial alphanumeric_keys +xkb_symbols "rulemak" { + + name[Group1]= "Russian (Rulemak, phonetic Colemak)"; + + key { [ Cyrillic_io, Cyrillic_IO, U0300, U030F ] }; // Combining grave, double grave + key { [ 1, exclam, U0301, U030B ] }; // Combining acute, double acute + key { [ 2, quotedbl, U0308, twosuperior ] }; // Combining diaeresis + key { [ 3, numerosign, numbersign, threesuperior ] }; + key { [ 4, semicolon, dollar, sterling ] }; + key { [ 5, percent, EuroSign, yen ] }; + key { [ 6, colon, U0306, U0304 ] }; // Combining breve, macron + key { [ 7, question, ampersand ] }; + key { [ 8, asterisk, U20BD, U20B4 ] }; // ruble, hryvnia + key { [ 9, parenleft, bracketleft, braceleft ] }; + key { [ 0, parenright, bracketright, braceright ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ equal, plus, multiply, division ] }; + + key { [ Cyrillic_ya, Cyrillic_YA, U0463, U0462 ] }; // yat + key { [ Cyrillic_zhe, Cyrillic_ZHE, U0475, U0474 ] }; // izhitsa + key { [ Cyrillic_ef, Cyrillic_EF, U0473, U0472 ] }; // fita + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_je, Cyrillic_JE ] }; + key { [ Cyrillic_el, Cyrillic_EL, Cyrillic_lje, Cyrillic_LJE ] }; + key { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_yi, Ukrainian_YI ] }; + key { [ Cyrillic_yu, Cyrillic_YU, semicolon, colon ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, guillemotleft, doublelowquotemark ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA, guillemotright, leftdoublequotemark ] }; + key { [ Cyrillic_e, Cyrillic_E, rightsinglequotemark, rightdoublequotemark ] }; + + key { [ Cyrillic_a, Cyrillic_A, apostrophe, U02BC ] }; // modifier letter apostrophe + key { [ Cyrillic_er, Cyrillic_ER, registered ] }; + key { [ Cyrillic_es, Cyrillic_ES, at ] }; + key { [ Cyrillic_te, Cyrillic_TE, Serbian_tshe, Serbian_TSHE ] }; + key { [ Cyrillic_de, Cyrillic_DE, Serbian_dje, Serbian_DJE ] }; + key { [ Cyrillic_che, Cyrillic_CHE, Cyrillic_dzhe, Cyrillic_DZHE ] }; + key { [ Cyrillic_en, Cyrillic_EN, Cyrillic_nje, Cyrillic_NJE ] }; + key { [ Cyrillic_ie, Cyrillic_IE, Ukrainian_ie, Ukrainian_IE ] }; + key { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + + key { [ Cyrillic_ze, Cyrillic_ZE, Macedonia_dse, Macedonia_DSE ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_tse, Cyrillic_TSE, copyright ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_be, Cyrillic_BE, Macedonia_gje, Macedonia_GJE ] }; + key { [ Cyrillic_ka, Cyrillic_KA, Macedonia_kje, Macedonia_KJE ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ comma, semicolon, less ] }; + key { [ period, colon, greater ] }; + key { [ slash, question, backslash, bar ] }; + + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, apostrophe, quotedbl ] }; + + include "level3(ralt_switch)" + include "capslock(backspace)" + include "nbsp(level4)" +}; + +// Church Slavonic language layout +// based on the Russian standard keyboard +// by Aleksandr Andreev and Yuri Shardt +// last changes 2010/08/01; contact +partial alphanumeric_keys +xkb_symbols "chu" { + + name[Group1]= "Church Slavonic"; + + key { [ Ukrainian_yi, Ukrainian_YI, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign + key { [ U0461, U0460, U047D, U047C ] }; // ѡ Ѡ ѽ Ѽ + key { [ Ukrainian_ie, Ukrainian_IE, U0465, U0464 ] }; // є Є ѥ Ѥ + key { [ U046F, U046E, U0469, U0468 ] }; // ѯ Ѯ ѩ Ѩ + key { [ U0471, U0470, U046D, U046C ] }; // ѱ Ѱ ѭ Ѭ + key { [ U0473, U0472, UA657, UA656 ] }; // ѳ Ѳ iotified A + key { [ U0475, U0474, U0477, U0476 ] }; // ѵ Ѵ ѷ Ѷ + key { [ U047B, U047A, UA64D, UA64C ] }; // ѻ Ѻ ꙍ Ꙍ + key { [ U047F, U047E, U046B, U046A ] }; // ѿ Ѿ ѫ Ѫ + key { [ Macedonia_dse, Macedonia_DSE, parenleft, asterisk ] }; // ѕ Ѕ ( * + key { [ Cyrillic_u, Cyrillic_U, parenright, U0488]}; // у У ) NB: for digraph Ouk, use Cyrillic_o + Cyrillic_u + key { [ U0483, U0486, U0487, U005F ] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore) + key { [ U0301, U0300, U0484, UA67E ] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka) + + key { [ Cyrillic_shorti, Cyrillic_SHORTI, Ukrainian_i ] }; + key { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] }; + key { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)! + key { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] }; + key { [ Cyrillic_ie, Cyrillic_IE, U2DF7 ] }; + key { [ Cyrillic_en, Cyrillic_EN, U2DE9 ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, U2DE2 ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, U2DF2 ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA, U2DF3 ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, U2DE5 ] }; + key { [ Cyrillic_ha, Cyrillic_HA, U2DEF ] }; + key { [Cyrillic_hardsign,Cyrillic_HARDSIGN, UA67D ] }; // Payerok + key { [ backslash, slash, colon, question ] }; // \ / : ? NB: for Slavonic question, use semicolon + + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ve, Cyrillic_VE, U2DE1 ] }; + key { [ Cyrillic_a, Cyrillic_A, U2DF6 ] }; + key { [ Cyrillic_pe, Cyrillic_PE, U2DEB ] }; + key { [ Cyrillic_er, Cyrillic_ER, U2DEC ] }; + key { [ Cyrillic_o, Cyrillic_O, U2DEA ] }; + key { [ Cyrillic_el, Cyrillic_EL, U2DE7 ] }; + key { [ Cyrillic_de, Cyrillic_DE, U2DE3 ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, U2DE4 ] }; + key { [ U0463, U0462, U2DFA ] }; // Yat + + key { [ U0467, U0466, U2DFD ] }; // Small Yus + key { [ Cyrillic_che, Cyrillic_CHE, U2DF1 ] }; + key { [ Cyrillic_es, Cyrillic_ES, U2DED ] }; + key { [ Cyrillic_em, Cyrillic_EM, U2DE8 ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_te, Cyrillic_TE, U2DEE ] }; + key { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_be, Cyrillic_BE, U2DE0 ] }; + key { [ Cyrillic_yu, Cyrillic_YU, U2DFB ] }; + key { [ period, comma, semicolon, exclam ] }; +}; + + +// RUU (Russian-Ukrainian-Belarusian United keyboard layout). +// This is a modified Russian standard keyboard, with the third level containing +// Ukrainian and Belorusian alphabetic letters and commonly used Unicode symbols. +// For a description see http://wiki.opennet.ru/RUU [in Russian]. +// Vasyĺ V. Vercynśkyj +// last changes 2011/05/11 +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ' ~ │ ! ≈ │ " ∞ │ № ₴ │ ; € │ % ‰ │ : ≤ │ ? ≥ │ * × │ ( { │ ) } │ _ – │ + ± ┃ ⌫ ┃ +// │ ’ ́ │ 1 ÷ │ 2 ¤ │ 3 § │ 4 $ │ 5 ° │ 6 < │ 7 > │ 8 • │ 9 [ │ 0 ] │ - — │ = ≠ ┃Backspace┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃ ┃ Й │ Ц │ У Ў │ К │ Е Ё │ Н │ Г Ґ │ Ш │ Щ │ З │ Х │ Ъ Ї ┃ Enter ┃ +// ┃ Tab ↹ ┃ й │ ц │ у ў │ к ® │ е ё │ н │ г ґ │ ш │ щ │ з │ х │ ъ ї ┃ ⏎ ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃ Caps ┃ Ф │ Ы І │ В │ А │ П │ Р │ О │ Л │ Д │ Ж │ Э Є │ | ¦ ┃ ┃ +// ┃ Lock ⇬ ┃ ф │ ы і │ в │ а │ п │ р │ о │ л │ д │ ж │ э є │ / \ ┃ ┃ +// ┣━━━━━━━━┻━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┲━━━┷━━━━━┻━━━━━━┫ +// ┃ ┃ Я │ Ч │ С │ М │ И │ Т │ Ь │ Б „ │ Ю “ │ , … ┃ ┃ +// ┃ Shift ⇧ ┃ я │ ч │ с © │ м │ и │ т ™ │ ь µ │ б « │ ю » │ . / ┃ Shift ⇧ ┃ +// ┣━━━━━━━┳━━┻━━━━┳┷━━━━━┷┱────┴─────┴─────┴─────┴─────┴─────┴┲━━━━┷━━┳━━┻━━━━┳━━━━━━━┳━━━┛ +// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ +// ┃ Ctrl ┃ Meta ┃ Alt ┃ Space ┃AltGr ⇮┃ Menu ┃ Ctrl ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ +partial alphanumeric_keys +xkb_symbols "ruu" { + + include "ru(common)" + name[Group1]= "Russian (plus Ukrainian and Belarusian letters)"; + + key { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol + key { [ 1, exclam, division, U2248 ] }; // Division Sign and Almost Equal To + key { [ 2, quotedbl, currency, infinity ] }; + key { [ 3, numerosign, section, U20B4 ] }; // Paragraph and Hryvnia sign + key { [ 4, semicolon, dollar, EuroSign ] }; + key { [ 5, percent, degree, permille ] }; + key { [ 6, colon, less, lessthanequal ] }; + key { [ 7, question, greater, greaterthanequal ] }; + key { [ 8, asterisk,enfilledcircbullet,multiply ] }; + key { [ 9, parenleft, bracketleft, braceleft ] }; + key { [ 0, parenright, bracketright, braceright ] }; + key { [ minus, underscore, emdash, endash ] }; + key { [ equal, plus, notequal, plusminus ] }; + + key { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] }; + key { [ Cyrillic_ka, Cyrillic_KA, registered ] }; + key { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, paragraph ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI ] }; + + key { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I ] }; + key { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ] }; + key { [ slash, bar, backslash, brokenbar ] }; + + key { [ Cyrillic_es, Cyrillic_ES, copyright ] }; + key { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] }; + key { [ Cyrillic_te, Cyrillic_TE, trademark ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, mu ] }; + key { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] }; + key { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] }; + key { [ period, comma, slash, ellipsis ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/ru(sun_type6)" +}; + +// Apple layout +partial alphanumeric_keys +xkb_symbols "mac" { + + include "ru(common)" + name[Group1]= "Russian (Macintosh)"; + + key { [ less, greater ] }; + key { [ 2, quotedbl ] }; + key { [ 3, numerosign ] }; + key { [ 4, percent ] }; + key { [ 5, colon ] }; + key { [ 6, comma ] }; + key { [ 7, period ] }; + key { [ 8, semicolon ] }; + key { [ bracketright, bracketleft ] }; + key { [ Cyrillic_io, Cyrillic_IO ] }; + + key { [ Cyrillic_er, Cyrillic_ER, U20BD ] }; + + include "level3(ralt_switch)" +}; + +// eng: Russian-based polyglot and reactionary keyboard layout +// This keyboard layout covers Russian in Petrine 1708 and Bolshevik 1918 variant spelling, Ukrainian, Belorussian, Serbian in its modern and Slavenoserbian variants, and Bulgarian and Slavomacedonian in pre-1945 and post-1945 spelling, +// in short all in any dominion prevailing Cyrillic orthographies of modern secular Slavic literary languages, even with dictionary accentuation marks, +// but also the most-widespread Church Slavonic spellings, that is all Church-Slavonic in so far as variants can be replaced without loss of meaning – not to speak of Interslavic. +// Furthermore, it suffices Romanian Cyrillic, Moldovan Cyrillic, Abkhazian excluding the more clumsy obsoleted forms unlikely to find devotees, Tajik, all Turkic and Mongolic Cyrillic alphabets +// and virtually all overlooked languages in Cyrillic reigns at least by combining characters, taking advantage of eight key levels. +// This is withal a pan-Cyrillic keyboard layout, or a comprehensive Cyrillic keyboard layout, an universal Cyrillic keyboard layout, a generic Cyrillic keyboard layout. +// +// rus: Многоязыковая и реакціонная клавіатурная разкладка основана на русскихъ +// Сія разкладка покрываетъ русскій въ петровскомъ правописаніи 1708-го года и большевицкомъ 1918-го, украинскій, бѣлорусскій въ современномъ и славяносербскомъ видѣ, и булгарскій и славомацедонскій въ писаніи до и послѣ 1945-го года, +// короче всѣ въ какомъ-либо державствѣ преобладающія правописанія, то есть весь церкославянскій, поскольку какъ разные виды буквъ можно возмѣщать безъ потери значенія — не говоря о междуславянскомъ. +// Свѣрхъ этого, она подходитъ къ румынской кириллицѣ, къ молдавской кириллицѣ, къ абхазскому за изключеніемъ неуклюжихъ устарѣлыхъ образовъ, у которыхъ невѣроятно что они вообще найдутъ поклонниковъ, къ таджикскому, къ всѣмъ тюрксимъ и монголскимъ кириллицамъ, +// и по сути дѣла всѣмъ упущеннымъ языкамъ въ кириллическихъ правленіяхъ хотя бы соединящими сѵмволами, извлѣкая выгоду изъ восьми уровней клавишъ. +// Тѣмъ всѣмъ сё всекириллическая клавіатурная разкладка, или всеобъемлющая кириллическая разкладка, или универсальная кириллическая разкладка клавіатуры. +// +// srp: Многојезиков и реакционаран распоред тастера основан на рускима +// Овај распоред покрива руски у петровском правопису 1708-е године и бољшевичком 1918-е године, украјински, белоруски, српски у сувременом и славеносрпском виду, те бугарски и славомакедонски у писању до и после 1945-е године, +// укратко све у некој држави преовлађујуће правописе, то је читав црквенословенски, пошто је могуће разне видове слова замењивати без губитка значења — не говорећи о меџусловенском. +// Поврх овог, он одговара к румунској ћирилици, к молдавској ћирилици, к абхаскоме с изузетком гломазних застарелих ликова, уз које није вероватно да они најђу поклонике, к таџичкоме, к свим туркијским и монголским ћирилицима, +// те у спровођењу свим испуштеним језицима у ћириличким господарствима бар са спајајућим симболима, искориштавајући осам ступњева тастера. +// Тиме свим ово је свећирилички тастатуран распоред, или свеобухватан ћирилички распоред тастера, или свеопшти ћирилички тастатуран распоред. +partial alphanumeric_keys +xkb_symbols "prxn" { + + name[Group1]= "Russian (Polyglot and Reactionary)"; + + key.type[Group1]="EIGHT_LEVEL"; + key { [ U2019, apostrophe, U0301, U0300, U2053, U2015, U02BC, asciitilde ] }; // Typographic Apostrophe, Apostrophe, Combining Acute, Combining Grave, Swung Dash, Quotation Dash, Modifier Letter Apostrophe, Tilde + key { [ 1, exclam, U0304, U0306, U0308, U0311, U0307, U0313 ] }; // 1, !, Combining Macron, Combining Breve, Combining Diaresis, Combining Inverted Breve, Combining Dot Above, Combining Comma Above + key { [ 2,quotedbl,numerosign, U20BF, U20B8, U20AE, U00A3, U20B9 ] }; // 2 " № ₿ ₸ ₮ £ ₹ + key { [ 3, section, U20B4, currency, U20BD, U20AA, U20BC, U20BE ] }; // 3 § ₴ ¤ ₽ ₪ ₼ ₾ + key { [ 4, semicolon, dollar, EuroSign, U0482, U20DD, U0488, U0489 ] }; // 4 ; $ € Thousands Sign, Combining Enclosing Circle, Combining Hundred Thousands, Combining Millions + key { [ 5, percent, degree, permille, UA670, UA671, UA672, UA66F ] }; // 5, %, °, ‰, Combinining Ten Millions, Combining Hundred Millions, Combining Thousand Millions, Combining Vzmet + key { [ 6, colon, U0335, U0336, U0483, U0487, UFE2E, UFE2F ] }; // 6, :, Combining Short Stroke Overlay, Combining Long Stroke Overlay, Combining Titlo, Combining Pokrytie, Combining Titlo Left Half, Combining Titlo Right Half + key { [ 7, question, U030B, U030F, U030C, U0303, U032C, U0360 ] }; // 7, ?, Combining Double Acute, Combining Double Grave, Combining Caron/Háček, Combining Tilde, Combining Caron/Háček Below, Combining Double Tilde + key { [ 8, asterisk, U0331, U0332, U0333, U032F, U032D, U032E ] }; // 8, *, Combining Macron Below, Combining Low Line, Combining Double Low Line, Combining Inverted Breve Below, Combining Circumflex Accent, Combining Breve Below + key { [ 9,parenleft, bracketleft, braceleft, U035F, U035D, U035E, U035C ] }; // 9 ( [ { Combining Double Macron Below, Combining Double Breve, Combining Double Macron, Combining Double Breve Below + key { [ 0,parenright,bracketright, braceright, U27E8, U27E9, U04A7, U04A6 ] }; // 0 ) ] } ⟨⟩ ҧ Ҧ + key { [ minus, underscore, emdash, endash, U2011,hyphen, U2010, U2212 ] }; // Hyphen-Minus, Underscore, Em Dash, En Dash, Non-Breaking-Hyphen, Soft Hyphen, Hyphen, Minus Sign + key { [ equal, plus,notequal, U2248, U04FF, U04FE, U050D, U050C ] }; // = + ≠ ≈ ӿ Ӿ ԍ Ԍ + + key { [ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_je, Cyrillic_JE, U04CF, U04C0, U030A, U0325 ] }; // й Й ј Ј ӏ Ӏ, Combining Ring Above and Below + key { [ Cyrillic_tse, Cyrillic_TSE, U04B5, U04B4, Cyrillic_u_straight, Cyrillic_U_straight, U051B, U051A ] }; // ц Ц ҵ Ҵ ү Ү ԛ Ԛ + key { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU, Cyrillic_u_straight_bar,Cyrillic_U_straight_bar, Byelorussian_shortu, Byelorussian_SHORTU ] }; // у У ў Ў ұ Ұ ў Ў + key { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender, Cyrillic_KA_descender, U049F, U049E, U046F, U046E ] }; // к К Қ қ ҟ Ҟ ѯ Ѯ + key { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO, U0463, U0462, UA653, UA652 ] }; // е Е ё Ё ѣ Ѣ ꙓ Ꙓ + key { [ Cyrillic_en, Cyrillic_EN, Cyrillic_nje, Cyrillic_NJE, Cyrillic_en_descender, Cyrillic_EN_descender, U04C8, U04C7 ] }; // н Н њ Њ ң Ң ӈ Ӈ + key { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn,Ukrainian_GHE_WITH_UPTURN, Cyrillic_ghe_bar, Cyrillic_GHE_bar, U04F7, U04F6 ] }; // г Г Ґ ґ ғ Ғ ӷ Ӷ + key { [ Cyrillic_sha, Cyrillic_SHA, U04A1, U04A0, U04AB, U04AA, UA67D, UA67F ] }; // ш Ш ҡ Ҡ ҫ Ҫ Combining Payerok Payerok + key { [ Cyrillic_shcha, Cyrillic_SHCHA, U0505, U0504, UA68D, UA68C, U050F, U050E ] }; // щ Щ ԅ Ԅ ꚍ Ꚍ ԏ Ԏ + key { [ Cyrillic_ze, Cyrillic_ZE, U04E1, U04E0, U0499, U0498, U0507, U0506 ] }; // з З ӡ Ӡ ҙ Ҙ ԇ Ԇ + key { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA, Cyrillic_ha_descender, Cyrillic_HA_descender, U04FD, U04FC ] }; // х Х һ Һ ҳ Ҳ ӽ Ӽ + key { [Cyrillic_hardsign,Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI, Macedonia_dse, Macedonia_DSE, U033E, U2E2F ] }; // ъ Ъ ї Ї ѕ Ѕ, Combining Yerok, Yerok + + key { [ Cyrillic_ef, Cyrillic_EF, U0473, U0472, U04C4, U04C3, U04FB, U04FA ] }; // ф Ф ѳ Ѳ ӄ Ӄ ӻ Ӻ + key { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I, U04D5, U04D4, U04A9, U04A8 ] }; // ы Ы і І ӕ Ӕ ҩ Ҩ + key { [ Cyrillic_ve, Cyrillic_VE, U051D, U051C, U0529, U0528, U0527, U0526 ] }; // в В ԝ Ԝ ԩ Ԩ ԧ Ԧ + key { [ Cyrillic_a, Cyrillic_A, Cyrillic_schwa, Cyrillic_SCHWA, UA657, UA656, UA655, UA654 ] }; // а А ә Ә ꙗ Ꙗ ꙕ Ꙕ + key { [ Cyrillic_pe, Cyrillic_PE, U0525, U0524, U0471, U0470, UA65F, UA65E ] }; // п П ԥ Ԥ ѱ Ѱ ꙟ Ꙟ + key { [ Cyrillic_er, Cyrillic_ER, U0481, U0480, U048F, U048E, U0521, U0520 ] }; // р Р ҁ Ҁ ҏ Ҏ ԡ Ԡ + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar, U047B, U047A, U0461, U0460 ] }; // о О ө Ө ѻ Ѻ ѡ Ѡ + key { [ Cyrillic_el, Cyrillic_EL, Cyrillic_lje, Cyrillic_LJE, U04C6, U04C5, U052F, U052E ] }; // л Л љ Љ ӆ Ӆ ԯ Ԯ + key { [ Cyrillic_de, Cyrillic_DE, Cyrillic_dzhe, Cyrillic_DZHE, U04BD, U04BC, U04BF, U04BE ] }; // д Д џ Џ ҽ Ҽ ҿ Ҿ + key { [ Cyrillic_zhe, Cyrillic_ZHE, Serbian_dje, Serbian_DJE, Cyrillic_zhe_descender, Cyrillic_ZHE_descender, U04C2, U04C1 ] }; // ж Ж ђ Ђ Җ җ ӂ Ӂ + key { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE, U0465, U0464, U04CA, U04C9 ] }; // э Э є Є ѥ Ѥ ӊ Ӊ + key { [ slash, bar, backslash, U260E, UA65B, UA65A, U0513, U0512 ] }; // / | \ ☎ ꙛ Ꙛ ԓ Ԓ + + key { [ U0495, U0494, U0501, U0500, U0503, U0502, U0509, U0508 ] }; // ҕ Ҕ ԁ Ԁ ԃ Ԃ ԉ Ԉ + key { [ Cyrillic_ya, Cyrillic_YA, U0469, U0468, U0467, U0466, UA657, UA656 ] }; // я Я ѩ Ѩ ѧ Ѧ ꙗ Ꙗ + key { [ Cyrillic_che, Cyrillic_CHE, Serbian_tshe, Serbian_TSHE, Cyrillic_che_descender, Cyrillic_CHE_descender, U2016,brokenbar ] }; // ч Ч ћ Ћ ҷ Ҷ ‖ ¦ + key { [ Cyrillic_es, Cyrillic_ES, U046D, U046C, U046B, U046A, U04F7, U04F6 ] }; // с С ѭ Ѭ ѫ Ѫ ӷ Ӷ + key { [ Cyrillic_em, Cyrillic_EM, multiply, division, U22C5, U2219, U04CE, U04CD ] }; // м М × ÷ ⋅ ∙ ӎ Ӎ + key { [ Cyrillic_i, Cyrillic_I, U0475, U0474, U048B, U048A, periodcentered, U261B ] }; // и И ѵ Ѵ ҋ Ҋ · ☛ + key { [ Cyrillic_te, Cyrillic_TE, U04AD, U04AC, U051F, U051E, Cyrillic_che_vertstroke, Cyrillic_CHE_vertstroke ] }; // т Т ҭ Ҭ ԟ Ԟ ҹ Ҹ + key { [Cyrillic_softsign,Cyrillic_SOFTSIGN, U04A5, U04A4, UA64F, UA64E, U048D, U048C ] }; // ь Ь ҥ Ҥ ꙏ Ꙏ ҍ Ҍ + key { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark, singlelowquotemark, U2039, U0523, U0522 ] }; // б Б « „ ‚ ‹ ԣ Ԣ + key { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark, leftsinglequotemark, U203A, rightdoublequotemark, rightsinglequotemark]}; // ю Ю » “ ‘ › ” ’ + key { [ period, comma, ellipsis, enfilledcircbullet, U04CC, U04CB, UA649, UA648 ] }; // . , … • ӌ Ӌ ꙉ Ꙉ + +// eng: Maps Right Alt for reaching the third level +// rus: Составляетъ правую Alt для достиженія третьяго уровня +// srp: Саставља десни Alt за достизање трећег ступња + include "level3(ralt_switch)" + +// eng: Maps for reaching the fifth level +// rus: Составляетъ для достиженія пятаго уровня +// srp: Саставља за достизање петег ступња + include "level5(caps_switch)" + +// eng: Allows pressing both Shift keys for enabling ShiftLock; one Shift releases it +// rus: Предоставляетъ нажатие обѣихъ клавишъ Shift для защелкиванія прописности буквъ +// srp: Ставља на располагање притискивање обију тастера Shift за учвршћивање верзала + include "shift(both_shiftlock)" + +// eng: Makes return comma instead of dot, as the comma is decimal separator in Cyrillic written languages +// rus: Дѣлаетъ что отдаетъ запятую вмѣсто точки, такъ какъ запятая десятичный раздѣлитель въ языкахъ пишемыхъ кириллицей +// srp: Ради да враћа зарез уместо точке, будући да зарез је десетни разделитељ у језицима који се пишу ћирилицом + include "kpdl(comma)" +}; + + +partial alphanumeric_keys +xkb_symbols "unipunct" { + +// Раскладка представляет собой обычную русскую раскладку, в которой некоторые редко используемые буквы +// убрали на третий уровень, и поставили все пунктуационные знаки на то же место, где они стоят на +// US раскладке (+ добавлен знак номера, который отсутствует в US раскладке, но часто нужен в RU). + +// ru(unipunct): +// `~ 1! 2@ 3#3№ 4$ 5% 6^ 7& 8* 9( 0) -_ =+ +// хХ бБ уУюЮ кК еЕэЭ нН гГ шШщЩ жЖ зЗ [{ ]} \| +// фФ ыЫ вВ аА пП рР оОёЁ лЛ дД ;: '" //" +// яЯ чЧцЦ сС мМ иИйЙ тТ ьЬъЪ ,< .> /? + + include "us(basic)" + + name[Group1]= "Russian (with US punctuation)"; + + // Единственный символ, который отсутствует на US раскладке - № + key {[ 3, numbersign, 3, numerosign ]}; + + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_u, Cyrillic_U, Cyrillic_yu, Cyrillic_YU ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA, Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_che, Cyrillic_CHE, Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ Cyrillic_i, Cyrillic_I, Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; +}; + +partial alphanumeric_keys +xkb_symbols "phonetic_mac" { + + include "ru(phonetic_winkeys)" + + name[Group1]= "Russian (phonetic, Macintosh)"; + + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ 3, numbersign, numerosign ]}; + key {[ 4, dollar, U20BD ]}; // ruble + key {[ 5, percent ]}; + key {[ 6, asciicircum ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN, minus, underscore ]}; + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal, plus ]}; + + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + + key {[ Cyrillic_ve, Cyrillic_VE ]}; + + include "level3(ralt_switch)" +}; + +// Russian engineering keyboard layout (Ручей) +// Based on the Russian standard keyboard layout +// Baryshkin Andrey +// Last changes 2022/11/29 +// Version 2.1 +partial alphanumeric_keys +xkb_symbols "ruchey_ru" { + + name[Group1]= "Russian (engineering, RU)"; + + include "ru(common)" + + key { [ NoSymbol, NoSymbol, grave, VoidSymbol ] }; + + key { [ NoSymbol, exclam, U20BD, VoidSymbol ] }; + key { [ NoSymbol, quotedbl, at, VoidSymbol ] }; + key { [ NoSymbol, numerosign, numbersign, VoidSymbol ] }; + key { [ NoSymbol, semicolon, dollar, VoidSymbol ] }; + key { [ NoSymbol, percent, apostrophe, degree ] }; + key { [ NoSymbol, colon, asciicircum, VoidSymbol ] }; + key { [ NoSymbol, question, ampersand, VoidSymbol ] }; + key { [ NoSymbol, asterisk, asciitilde, VoidSymbol ] }; + key { [ NoSymbol, parenleft, guillemotleft, VoidSymbol ] }; + key { [ NoSymbol, parenright, guillemotright, VoidSymbol ] }; + key { [ NoSymbol, underscore, emdash, VoidSymbol ] }; + key { [ NoSymbol, plus, VoidSymbol, VoidSymbol ] }; + + key { [ NoSymbol, NoSymbol, EuroSign, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, registered, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, U00A5, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, braceleft, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, braceright, VoidSymbol ] }; + + key { [ NoSymbol, NoSymbol, U00A7, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, sterling, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, bracketleft, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, bracketright, VoidSymbol ] }; + + key { [ NoSymbol, NoSymbol, copyright, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, less, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, greater, VoidSymbol ] }; + key { [ period, comma, VoidSymbol, U0301 ] }; + + key { [ slash, backslash, bar, VoidSymbol ] }; + key { [ slash, backslash, bar, VoidSymbol ] }; + + include "kpdl(dot)" +}; + +// Russian engineering keyboard layout (Ручей) +// Based on the English standard keyboard layout +// Baryshkin Andrey +// Last changes 2022/11/29 +// Version 2.1 +partial alphanumeric_keys +xkb_symbols "ruchey_en" { + + include "us(basic)" + + name[Group1]= "Russian (engineering, EN)"; + + key { [ VoidSymbol, VoidSymbol, grave, VoidSymbol ] }; + + key { [ NoSymbol, exclam, U20BD, VoidSymbol ] }; + key { [ NoSymbol, quotedbl, at, VoidSymbol ] }; + key { [ NoSymbol, numerosign, numbersign, VoidSymbol ] }; + key { [ NoSymbol, semicolon, dollar, VoidSymbol ] }; + key { [ NoSymbol, percent, apostrophe, degree ] }; + key { [ NoSymbol, colon, asciicircum, VoidSymbol ] }; + key { [ NoSymbol, question, ampersand, VoidSymbol ] }; + key { [ NoSymbol, asterisk, asciitilde, VoidSymbol ] }; + key { [ NoSymbol, parenleft, guillemotleft, VoidSymbol ] }; + key { [ NoSymbol, parenright, guillemotright, VoidSymbol ] }; + key { [ NoSymbol, underscore, emdash, VoidSymbol ] }; + key { [ NoSymbol, plus, VoidSymbol, VoidSymbol ] }; + + key { [ NoSymbol, NoSymbol, EuroSign, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, registered, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, U00A5, VoidSymbol ] }; + key { [ VoidSymbol, VoidSymbol, braceleft, VoidSymbol ] }; + key { [ VoidSymbol, VoidSymbol, braceright, VoidSymbol ] }; + + key { [ NoSymbol, NoSymbol, U00A7, VoidSymbol ] }; + key { [ NoSymbol, NoSymbol, sterling, VoidSymbol ] }; + key { [ VoidSymbol, VoidSymbol, bracketleft, VoidSymbol ] }; + key { [ VoidSymbol, VoidSymbol, bracketright, VoidSymbol ] }; + + key { [ NoSymbol, NoSymbol, copyright, VoidSymbol ] }; + key { [ VoidSymbol, VoidSymbol, less, VoidSymbol ] }; + key { [ VoidSymbol, VoidSymbol, greater, VoidSymbol ] }; + key { [ period, comma, VoidSymbol, U0301 ] }; + + key { [ slash, backslash, bar, VoidSymbol ] }; + key { [ slash, backslash, bar, VoidSymbol ] }; + + include "kpdl(dot)" +}; + +// RU Winkeys-P layout based on RU Winkeys with top row digits switched +// Vladimir Gorelov +partial alphanumeric_keys +xkb_symbols "winkeys-p" { + include "ru(winkeys)" + name[Group1]= "Russian (Programmer)"; + + key { [ exclam, 1 ] }; + key { [ at, 2 ] }; + key { [ numbersign, 3 ] }; + key { [ dollar, 4 ] }; + key { [ percent, 5 ] }; + key { [ asciicircum, 6 ] }; + key { [ ampersand, 7 ] }; + key { [ asterisk, 8 ] }; + key { [ parenleft, 9 ] }; + key { [ parenright, 0 ] }; + key { [ F6, numerosign ] }; + key { [ F8, quotedbl ] }; + key { [ F9, apostrophe ] }; + key { [ F11, question ] }; + key { [ F12, bar ] }; +}; + +// Russian keyboard layout with typography symbols. +// This is a modified Russian standard keyboard, with the third level containing +// typographic symbols commonly used in Russian language and punctuation symbols +// from Latin keyboard layout. +// Boolat Kamalov <800147@gmail.com> +partial alphanumeric_keys +xkb_symbols "typo" { + include "ru(winkeys)" + name[Group1]= "Russian (plus typographic symbols)"; + + key { [ NoSymbol, NoSymbol, grave, asciitilde ] }; + key { [ NoSymbol, NoSymbol, enfilledcircbullet ] }; + key { [ NoSymbol, NoSymbol, at, apostrophe ] }; + key { [ NoSymbol, NoSymbol, numbersign, section ] }; + key { [ NoSymbol, NoSymbol, dollar ] }; + key { [ NoSymbol, NoSymbol, asciicircum, U0301 ] }; // Combining Acute Accent + key { [ NoSymbol, NoSymbol, ampersand ] }; + key { [ NoSymbol, NoSymbol, less ] }; + key { [ NoSymbol, NoSymbol, greater ] }; + key { [ NoSymbol, NoSymbol, emdash, endash ] }; + + key { [ NoSymbol, NoSymbol, bracketleft, braceleft ] }; + key { [ NoSymbol, NoSymbol, bracketright, braceright ] }; + + key { [ NoSymbol, NoSymbol, guillemotleft, doublelowquotemark ] }; + key { [ NoSymbol, NoSymbol, guillemotright, leftdoublequotemark ] }; + key { [ NoSymbol, NoSymbol, ellipsis, U2019 ] }; // Right Single Quotation Mark + key { [ space, space, nobreakspace, U2060 ] }; // Word Joiner + + include "level3(ralt_switch)" +}; + +// Russian-Tatar United keyboard layout. +// This is a modified Russian standard keyboard, with the third level containing +// Tatar alphabetic letters, typographic symbols commonly used in Russian language +// and punctuation symbols from Latin keyboard layout. +// Boolat Kamalov <800147@gmail.com> +partial alphanumeric_keys +xkb_symbols "rtu" { + include "ru(typo)" + name[Group1]= "Russian (plus Tatar letters)"; + + key { [ NoSymbol, NoSymbol, Cyrillic_u_straight, Cyrillic_U_straight ] }; + key { [ NoSymbol, NoSymbol, Cyrillic_en_descender, Cyrillic_EN_descender ] }; + key { [ NoSymbol, NoSymbol, Cyrillic_shha, Cyrillic_SHHA ] }; + + key { [ NoSymbol, NoSymbol, Cyrillic_schwa, Cyrillic_SCHWA ] }; + key { [ NoSymbol, NoSymbol, Cyrillic_o_bar, Cyrillic_O_bar ] }; + key { [ NoSymbol, NoSymbol, Cyrillic_zhe_descender, Cyrillic_ZHE_descender ] }; + key { [ NoSymbol, NoSymbol, bracketleft, braceleft ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/rupeesign b/nixos/xkb/symbols/rupeesign new file mode 100644 index 00000000..efde69cb --- /dev/null +++ b/nixos/xkb/symbols/rupeesign @@ -0,0 +1,5 @@ +// keyboards having the RupeeSign on the 4 key +partial +xkb_symbols "4" { + key { [ NoSymbol, NoSymbol, U20B9 ] }; +}; diff --git a/nixos/xkb/symbols/scrolllock b/nixos/xkb/symbols/scrolllock new file mode 100644 index 00000000..4275e230 --- /dev/null +++ b/nixos/xkb/symbols/scrolllock @@ -0,0 +1,4 @@ +default +xkb_symbols "mod3" { + modifier_map Mod3 { Scroll_Lock }; +}; diff --git a/nixos/xkb/symbols/se b/nixos/xkb/symbols/se new file mode 100644 index 00000000..aec633f7 --- /dev/null +++ b/nixos/xkb/symbols/se @@ -0,0 +1,399 @@ +// Keyboard layouts for Sweden. + +default partial alphanumeric_keys +xkb_symbols "basic" { + include "latin(type2)" + include "se(se)" +}; + +partial alphanumeric_keys +xkb_symbols "se" { + + name[Group1]="Swedish"; + + key {[ section, onehalf, paragraph, threequarters]}; + key {[ 5, percent, EuroSign, permille ]}; + key {[ 6, ampersand, yen, radical ]}; + key {[ plus, question, backslash, questiondown ]}; + key {[dead_acute, dead_grave, plusminus, notsign ]}; + + key {[ q, Q, Greek_omega, Greek_OMEGA ]}; + key {[ w, W, Greek_sigma, Greek_SIGMA ]}; + key {[ r, R, registered, trademark ]}; + key {[ p, P, Greek_pi, Greek_PI ]}; + + key {[ k, K, kra, dagger ]}; + key {[odiaeresis, Odiaeresis, oslash, Oslash ]}; + key {[adiaeresis, Adiaeresis, ae, AE ]}; + key {[apostrophe, asterisk, acute, multiply ]}; + + key {[ less, greater, bar, brokenbar ]}; + key {[ c, C, copyright, U1F12F ]}; // 🄯 (copyleft) + key {[ period, colon, periodcentered, ellipsis ]}; + + key {[ space, space, space, nobreakspace ]}; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + +// The basic Swedish layout but without any dead symbols. +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + + include "latin(type2)" + include "latin(type2_nodeadkeys)" + include "se(se)" + + name[Group1]="Swedish (no dead keys)"; + + key {[ acute, grave, plusminus, notsign ]}; +}; + +// A Dvorak layout for Swedish. +partial alphanumeric_keys +xkb_symbols "dvorak" { + + include "se(basic)" + + name[Group1]="Swedish (Dvorak)"; + + key {[ aring, Aring, backslash ]}; + key {[ adiaeresis, Adiaeresis, braceleft, bracketleft ]}; + key {[ odiaeresis, Odiaeresis, braceright, bracketright ]}; + key {[ p, P, thorn, THORN ]}; + key {[ y, Y, leftarrow, yen ]}; + key {[ f, F, dstroke, ordfeminine ]}; + key {[ g, G, eng, ENG ]}; + key {[ c, C, copyright, copyright ]}; + key {[ r, R, registered, registered ]}; + key {[ l, L, lstroke, Lstroke ]}; + key {[ comma, semicolon, dead_cedilla, dead_ogonek ]}; + key {[ dead_diaeresis, dead_circumflex, dead_tilde, asciicircum ]}; + + key {[ a, A, ae, AE ]}; + key {[ o, O, oe, OE ]}; + key {[ e, E, EuroSign, cent ]}; + key {[ u, U, downarrow, uparrow ]}; + key {[ i, I, rightarrow, idotless ]}; + key {[ d, D, eth, ETH ]}; + key {[ h, H, hstroke, Hstroke ]}; + key {[ t, T, tslash, Tslash ]}; + key {[ n, N ]}; + key {[ s, S, ssharp, section ]}; + key {[ minus, underscore, dead_belowdot, dead_abovedot ]}; + + key {[ period, colon, periodcentered, dead_abovedot ]}; + key {[ q, Q, at, Greek_OMEGA ]}; + key {[ j, J ]}; + key {[ k, K, kra, ampersand ]}; + key {[ x, X, guillemotright, greater ]}; + key {[ b, B, rightdoublequotemark, apostrophe ]}; + key {[ m, M, mu, masculine ]}; + key {[ w, W, lstroke, Lstroke ]}; + key {[ v, V, leftdoublequotemark, grave ]}; + key {[ z, Z, guillemotleft, less ]}; +}; + +// A phonetic layout for typing Russian on a Swedish keyboard. +// Originally by Ivan Popov , 2005. +partial alphanumeric_keys +xkb_symbols "rus" { + + include "se(basic)" + + name[Group1]="Russian (Sweden, phonetic)"; + + key.type[group1]="ALPHABETIC"; + + key {[ Cyrillic_io, Cyrillic_IO ]}; + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; + + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_e, Cyrillic_E ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; +}; + +xkb_symbols "smi" { + include "fi(smi)" + name[Group1]= "Northern Saami (Sweden)"; +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + include "latin" + + name[Group1]= "Swedish (Macintosh)"; + + key {[ section, degree ]}; + key {[ 1, exclam, copyright, exclamdown ]}; + key {[ 2, quotedbl, at, oneeighth ]}; + key {[ 3, numbersign, sterling, yen ]}; + key {[ 4, currency, dollar, cent ]}; + key {[ 6, ampersand ]}; + key {[ 7, slash, bar, backslash ]}; + key {[ 8, parenleft, bracketleft, braceleft ]}; + key {[ 9, parenright, bracketright, braceright ]}; + key {[ 0, equal ]}; + key {[ plus, question ]}; + key {[ acute, grave ]}; + + key {[ e, E, EuroSign, cent ]}; + key {[ aring, Aring ]}; + key {[ diaeresis, asciicircum, asciitilde ]}; + + key {[ odiaeresis, Odiaeresis, oslash, Oslash ]}; + key {[ adiaeresis, Adiaeresis, ae, AE ]}; + key {[ apostrophe, asterisk, at ]}; + + key {[ comma, semicolon ]}; + key {[ period, colon ]}; + key {[ minus, underscore ]}; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +// This version of Dvorak follows the Danish and Norwegian style, +// hoping for a Scandinavian standard to evolve. +partial alphanumeric_keys +xkb_symbols "svdvorak" { + + include "se(basic)" + + name[Group1]="Swedish (Svdvorak)"; + + key {[ aring, Aring, braceleft ]}; + key {[ comma, semicolon, bracketleft ]}; + key {[ period, colon, bracketright ]}; + key {[ p, P, braceright ]}; + key {[ y, Y ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ c, C ]}; + key {[ r, R ]}; + key {[ l, L ]}; + key {[ apostrophe, asterisk ]}; + + key {[ a, A ]}; + key {[ o, O, parenleft ]}; + key {[ e, E, parenright ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ d, D ]}; + key {[ h, H ]}; + key {[ t, T ]}; + key {[ n, N ]}; + key {[ s, S, ssharp, U1E9E ]}; + key {[ minus, underscore ]}; + key {[ less, greater, bar ]}; + + key {[ odiaeresis, Odiaeresis ]}; + key {[ adiaeresis, Adiaeresis ]}; + key {[ q, Q ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ x, X ]}; + key {[ b, B ]}; + key {[ m, M ]}; + key {[ w, W ]}; + key {[ v, V ]}; + key {[ z, Z ]}; +}; + +// A layout for Swedish Sign Language (“Svenskt teckenspråk”). +// Originally by: Saašha Metsärantala +// +// A sans-serif font is available at +// http://www.acc.umu.se/home/saasha/typsnitt/swl_sans.ttf +partial alphanumeric_keys +xkb_symbols "swl" { + + include "se(basic)" + + name[Group1]="Swedish Sign Language"; + + key {[ U10c953, U10c936, U10c988, U10c962 ]}; + key {[ U10c954, U10c957, U10c97d, U10c963 ]}; + key {[ U10c934, U10c937, U10c97e, U10c983 ]}; + key {[ U10c955, U10c958, U10c98a, U10c984 ]}; + key {[ U10c935, U10c938, U10c97f, U10c966 ]}; + key {[ U10c956, U10c959, U10c980, U10c967 ]}; + key {[ U10c960, U10c969, U10c982, U10c96a ]}; + key {[ U10c97c, U10c90b, U10c989, U10c964 ]}; + key {[ U10c97b, U10c90a, U10c98b, U10c965 ]}; + key {[ U10c974, U10c909, U10c98c, U10c968 ]}; + + key {[ U10c96c, U10c92a, U10c900, U10c9a1 ]}; + key {[ U10c971, U10c930, U10c903, U10c99e ]}; + key {[ U10c987, U10c947, U10c90c, U10c96d ]}; + key {[ U10c986, U10c92c, U10c91b, U10c993 ]}; + key {[ U10c939, U10c94a, U10c911, U10c995 ]}; + key {[ U10c952, U10c943, U10c912, U10c99b ]}; + key {[ U10c978, U10c977, U10c95e, U10c9a3 ]}; + key {[ U10c951, U10c931, U10c91e, U10c997 ]}; + key {[ U10c90e, U10c946, U10c906, U10c9a0 ]}; + key {[ U10c91f, U10c961, U10c91c, none ]}; + key {[ U10c93d, U10c92f, U10c902, none ]}; + + key {[ U10c973, U10c924, U10c93c, U10c9a4 ]}; + key {[ U10c972, U10c945, U10c91a, U10c99c ]}; + key {[ U10c979, U10c929, U10c916, U10c999 ]}; + key {[ U10c976, U10c975, U10c917, U10c994 ]}; + key {[ U10c95a, U10c926, U10c918, U10c996 ]}; + key {[ U10c96f, U10c932, U10c915, U10c998 ]}; + key {[ U10c942, U10c922, U10c913, U10c9a2 ]}; + key {[ U10c985, U10c94e, U10c914, U10c97a ]}; + key {[ U10c928, U10c948, U10c919, U10c9a5 ]}; + key {[ U10c970, U10c92b, U10c905, U10c991 ]}; + key {[ U10c92e, U10c944, U10c904, none ]}; + + key {[ U10c925, U10c95f, U10c940, U10c99a ]}; + key {[ U10c96b, U10c933, U10c920, U10c98e ]}; + key {[ U10c949, U10c94b, U10c921, U10c99f ]}; + key {[ U10c923, U10c92d, U10c95c, U10c96e ]}; + key {[ U10c93b, U10c927, U10c908, U10c9a6 ]}; + key {[ U10c93a, U10c94c, U10c93e, U10c9a7 ]}; + key {[ U10c95b, U10c93f, U10c907, U10c992 ]}; +}; + +// For typing Swedish on a basic US keyboard, putting Å Ö Ä +// on the upper levels of the corresponding Swedish keys. +partial alphanumeric_keys +xkb_symbols "us" { + + include "us" + + name[Group1]="Swedish (US)"; + + key {[ any, any, aring, Aring ]}; + key {[ any, any, odiaeresis, Odiaeresis ]}; + key {[ any, any, adiaeresis, Adiaeresis ]}; + + include "level3(ralt_switch)" +}; + + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/se(sun_type6)" +}; + +partial alphanumeric_keys +xkb_symbols "dvorak_a5" { + + include "se(basic)" + + name[Group1]="Swedish (Dvorak A5)"; + + key {[ dead_acute, dead_grave, plusminus, none ]}; + + key {[ aring, Aring, braceleft, none ]}; + key {[ adiaeresis, Adiaeresis, braceright, none ]}; + key {[ odiaeresis, Odiaeresis, bracketleft, none ]}; + key {[ p, P, bracketright, none ]}; + key {[ y, Y, dollar, none ]}; + key {[ f, F, quotedbl, none ]}; + key {[ g, G, question, none ]}; + key {[ c, C, ampersand, none ]}; + key {[ r, R, less, none ]}; + key {[ l, L, greater, none ]}; + key {[ comma, semicolon, dead_cedilla, none ]}; + key {[ dead_diaeresis, dead_circumflex, dead_tilde, asciicircum ]}; + + key {[ a, A, semicolon, none ]}; + key {[ o, O, slash, none ]}; + key {[ e, E, parenleft, none ]}; + key {[ u, U, parenright, none ]}; + key {[ i, I, bar, none ]}; + key {[ d, D, numbersign, none ]}; + key {[ h, H, asciicircum, none ]}; + key {[ t, T, numbersign, none ]}; + key {[ n, N, quotedbl, none ]}; + key {[ s, S, asciitilde, none ]}; + key {[ minus, underscore, grave, none ]}; + + key {[ period, colon, colon, none ]}; + key {[ q, Q, equal, none ]}; + key {[ j, J, at, none ]}; + key {[ k, K, exclam, none ]}; + key {[ x, X, backslash, none ]}; + key {[ b, B, percent, none ]}; + key {[ m, M, grave, none ]}; + key {[ w, W, lstroke, none ]}; + key {[ v, V, leftdoublequotemark, none ]}; + key {[ z, Z, guillemotleft, none ]}; + + key {[ apostrophe, asterisk, asterisk, none ]}; +}; + +partial alphanumeric_keys +xkb_symbols "ovd" { + + // Adds combining ogonek (U0328) to the basic Swedish layout to facilitate + // typing of Ą ą Ę ę Į į Ų ų Y̨ y̨ Ą̊ ą̊. + // The character replaces which is considered dispensable + // since ä and ö have their own keys. is still available + // via + Å. + + include "se(basic)" + + name[Group1]="Elfdalian (Sweden, with combining ogonek)"; + + key {[ U0328, dead_circumflex, dead_tilde, dead_caron ]}; +}; + +// us_dvorak +// Author Thomas Lundqvist http://tlundqvist.org/sv_dvorak/ + +partial alphanumeric_keys +xkb_symbols "us_dvorak" { + include "us(dvorak-intl)" + name[Group1]="Swedish (Dvorak, intl.)"; + + key {[ apostrophe, asciitilde, grave, dead_tilde ]}; + key {[ 2, quotedbl, at ]}; + key {[ 6, asciicircum, dead_circumflex ]}; + key {[ aring, Aring, dead_acute ]}; + key {[ minus, underscore, bar, dead_macron ]}; + key {[ adiaeresis, Adiaeresis, dead_grave, dead_ogonek ]}; + key {[ odiaeresis, Odiaeresis, dead_diaeresis, dead_belowdot ]}; + key {[ semicolon, colon, backslash ]}; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/sgi_vndr/jp b/nixos/xkb/symbols/sgi_vndr/jp new file mode 100644 index 00000000..c23981d8 --- /dev/null +++ b/nixos/xkb/symbols/sgi_vndr/jp @@ -0,0 +1,47 @@ +xkb_symbols "jp106" { + + name[group1]="Japan/ASCII"; + + key { [ Zenkaku_Hankaku ] }; + key { [ 1, exclam ] }; + key { [ 2, quotedbl ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, ampersand ] }; + key { [ 7, apostrophe ] }; + key { [ 8, parenleft ] }; + key { [ 9, parenright ] }; + key { [ 0, asciitilde ] }; + key { [ minus, equal ] }; + key { [ asciicircum, macron ] }; + key { [ yen, bar ] }; + + // keys and - are identical to US/ASCII keyboard + key { [ at, grave ] }; + key { [ bracketleft, braceleft ] }; + + key { [ Eisu_Shift, Caps_Lock ] }; + // keys - are identical to US/ASCII keyboard + key { [ semicolon, plus ] }; + key { [ colon, asterisk ] }; + key { [ bracketright, braceright ] }; + + // keys and - are identical to US/ASCII keyboard + key { [ backslash, underscore ] }; + + key { [ Muhenkan ] }; + key { [ Kanji ] }; + key { [ Hiragana_Katakana ] }; +}; + +xkb_symbols "alternate106" { + + include "sgi_vndr/jp(jp106)" + + key { [ 0, macron ] }; + key { [ asciicircum, asciitilde ] }; + key { [ backslash, bar ] }; + + key { [ underscore, underscore ] }; +}; diff --git a/nixos/xkb/symbols/sharp_vndr/sl-c3x00 b/nixos/xkb/symbols/sharp_vndr/sl-c3x00 new file mode 100644 index 00000000..8867b9e4 --- /dev/null +++ b/nixos/xkb/symbols/sharp_vndr/sl-c3x00 @@ -0,0 +1,71 @@ +// $NetBSD: sl-c3x00,v 1.1 2009/12/13 04:54:51 nonaka Exp $ +// $OpenBSD: zaurus,v 1.2 2008/03/05 17:24:55 matthieu Exp $ + +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Sharp SL-C3x00"; + + key { [ 1, exclam ] }; + key { [ 2, quotedbl ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, ampersand ] }; + key { [ 7, apostrophe ] }; + key { [ 8, parenleft ] }; + key { [ 9, parenright ] }; + key { [ 0, asciitilde ] }; + key { type="CTRL+ALT", + symbols[Group1]= [ BackSpace, Terminate_Server ] }; + + key { [ q, Q ] }; + key { [ w, W, asciicircum ] }; + key { [ e, E, equal ] }; + key { [ r, R, plus ] }; + key { [ t, T, bracketleft ] }; + key { [ y, Y, bracketright ] }; + key { [ u, U, braceleft ] }; + key { [ i, I, braceright ] }; + key { [ o, O ] }; + key { [ p, P ] }; + + key { [ Tab, ISO_Left_Tab, Caps_Lock ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D, grave ] }; + key { [ f, F, backslash ] }; + key { [ g, G, semicolon ] }; + key { [ h, H, colon ] }; + key { [ j, J, asterisk ] }; + key { [ k, K, yen ] }; + key { [ l, L, bar ] }; + + key { [ Shift_L ] }; + key { [ z, Z ] }; + key { [ x, X, SunCut ] }; + key { [ c, C, SunCopy ] }; + key { [ v, V, SunPaste ] }; + key { [ b, B, underscore ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ Shift_R ] }; + key { [ Return ] }; + + key { [ ISO_Level3_Shift ] }; + + key { [ Control_L ] }; + key { [ minus, minus, at ] }; + key { [ space ] }; + key { [ comma, slash, less ] }; + key { [ period, question, greater ] }; + + key { [ Up, Up, Prior ] }; + key { [ Left, Left, Home ] }; + key { [ Down, Down, Next ] }; + key { [ Right, Right, End ] }; + + key { [ Escape ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/sharp_vndr/ws003sh b/nixos/xkb/symbols/sharp_vndr/ws003sh new file mode 100644 index 00000000..a052bb5a --- /dev/null +++ b/nixos/xkb/symbols/sharp_vndr/ws003sh @@ -0,0 +1,70 @@ +// $NetBSD: ws003sh,v 1.1 2010/05/15 15:33:30 nonaka Exp $ + +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Sharp WS003SH"; + + key { [ 1, exclam ] }; + key { [ 2, quotedbl ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, ampersand ] }; + key { [ 7, apostrophe, grave ] }; + key { [ 8, parenleft, braceleft ] }; + key { [ 9, parenright, braceright ] }; + key { [ 0 ] }; + key { [ minus, equal, backslash ] }; + key { [ BackSpace, BackSpace, Delete ] }; + + key { [ q, Q ] }; + key { [ w, W, asciicircum ] }; + key { [ e, E, asciitilde ] }; + key { [ r, R, bar ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U, bracketleft ] }; + key { [ i, I, bracketright ] }; + key { [ o, O, underscore ] }; + key { [ p, P, at ] }; + + key { [ Tab, Tab, Escape ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K, plus ] }; + key { [ l, L, asterisk ] }; + + key { [ Shift_L ] }; + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, semicolon, less ] }; + key { [ period, colon, greater ] }; + key { [ slash, question ] }; + key { [ Shift_R ] }; + key { [ Return ] }; + + key { [ ISO_Level3_Shift ] }; + + key { [ Control_L ] }; + key { [ space ] }; + + key { [ Up, Up, Prior ] }; + key { [ Left, Left, Home ] }; + key { [ Down, Down, Next ] }; + key { [ Right, Right, End ] }; + + key { [ Escape ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/sharp_vndr/ws007sh b/nixos/xkb/symbols/sharp_vndr/ws007sh new file mode 100644 index 00000000..1db41b20 --- /dev/null +++ b/nixos/xkb/symbols/sharp_vndr/ws007sh @@ -0,0 +1,70 @@ +// $NetBSD: ws007sh,v 1.1 2010/05/15 15:33:30 nonaka Exp $ + +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Sharp WS007SH"; + + key { [ 1, exclam ] }; + key { [ 2, quotedbl ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, ampersand ] }; + key { [ 7, apostrophe, grave ] }; + key { [ 8, parenleft, braceleft ] }; + key { [ 9, parenright, braceright ] }; + key { [ 0 ] }; + key { [ minus, equal, backslash ] }; + key { [ BackSpace, BackSpace, Delete ] }; + + key { [ q, Q ] }; + key { [ w, W, asciicircum ] }; + key { [ e, E, asciitilde ] }; + key { [ r, R, bar ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U, bracketleft ] }; + key { [ i, I, bracketright ] }; + key { [ o, O, underscore ] }; + key { [ p, P, at ] }; + + key { [ Tab, Tab, Escape ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K, plus ] }; + key { [ l, L, asterisk ] }; + + key { [ Shift_L ] }; + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, semicolon, less ] }; + key { [ period, colon, greater ] }; + key { [ slash, question ] }; + key { [ Shift_R ] }; + key { [ Return ] }; + + key { [ ISO_Level3_Shift ] }; + + key { [ Control_L ] }; + key { [ space ] }; + + key { [ Up, Up, Prior ] }; + key { [ Left, Left, Home ] }; + key { [ Down, Down, Next ] }; + key { [ Right, Right, End ] }; + + key { [ Escape ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/sharp_vndr/ws011sh b/nixos/xkb/symbols/sharp_vndr/ws011sh new file mode 100644 index 00000000..30630b62 --- /dev/null +++ b/nixos/xkb/symbols/sharp_vndr/ws011sh @@ -0,0 +1,75 @@ +// $NetBSD: ws011sh,v 1.2 2010/05/30 10:10:20 nonaka Exp $ + +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Sharp WS011SH"; + + key { + type[Group1] = "THREE_LEVEL", + symbols[Group1] = [ Zenkaku_Hankaku, Zenkaku_Hankaku, exclam ] + }; + + key { [ q, Q, quotedbl ] }; + key { [ w, W, numbersign ] }; + key { [ e, E, dollar ] }; + key { [ r, R, percent ] }; + key { [ t, T, ampersand ] }; + key { [ y, Y, 1 ] }; + key { [ u, U, 2 ] }; + key { [ i, I, 3 ] }; + key { [ o, O, underscore ] }; + key { [ p, P, at ] }; + key { [ BackSpace, BackSpace, Delete ] }; + + key { [ Tab, Tab, Escape ] }; + key { [ a, A, bracketleft ] }; + key { [ s, S, apostrophe ] }; + key { [ d, D, parenleft ] }; + key { [ f, F, parenright ] }; + key { [ g, G, asterisk ] }; + key { [ h, H, 4 ] }; + key { [ j, J, 5 ] }; + key { [ k, K, 6 ] }; + key { [ l, L, plus ] }; + key { [ minus, equal, backslash ] }; + key { [ grave, braceleft, braceright ] }; + + key { [ Shift_L ] }; + key { [ z, Z, bracketright ] }; + key { [ x, X, asciicircum ] }; + key { [ c, C, asciitilde ] }; + key { [ v, V, bar ] }; + key { [ b, B, 7 ] }; + key { [ n, N, 8 ] }; + key { [ m, M, 9 ] }; + key { [ comma, less, semicolon ] }; + key { [ period, greater, colon ] }; + key { [ slash, question, 0 ] }; + key { [ Shift_R ] }; + key { [ Return ] }; + + key { [ ISO_Level3_Shift ] }; + + key { [ Control_L ] }; + key { [ space ] }; + + key { [ Up, Up, Prior ] }; + key { [ Left, Left, Home ] }; + key { [ Down, Down, Next ] }; + key { [ Right, Right, End ] }; + + key { [ Escape ] }; + + key { [ 1 ] }; + key { [ 2 ] }; + key { [ 3 ] }; + key { [ 4 ] }; + key { [ 5 ] }; + key { [ 6 ] }; + key { [ 7 ] }; + key { [ 8 ] }; + key { [ 9 ] }; + key { [ 0 ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/sharp_vndr/ws020sh b/nixos/xkb/symbols/sharp_vndr/ws020sh new file mode 100644 index 00000000..d6cd1a17 --- /dev/null +++ b/nixos/xkb/symbols/sharp_vndr/ws020sh @@ -0,0 +1,64 @@ +// $NetBSD: ws020sh,v 1.1 2010/05/25 13:12:51 nonaka Exp $ + +default partial alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Sharp WS020SH"; + + key { + type[Group1]="THREE_LEVEL", + symbols[Group1]= [ Zenkaku_Hankaku, Zenkaku_Hankaku, exclam ] + }; + + key { [ q, Q, quotedbl ] }; + key { [ w, W, numbersign ] }; + key { [ e, E, dollar ] }; + key { [ r, R, percent ] }; + key { [ t, T, ampersand ] }; + key { [ y, Y, underscore ] }; + key { [ u, U, 1 ] }; + key { [ i, I, 2 ] }; + key { [ o, O, 3 ] }; + key { [ p, P, at ] }; + key { [ BackSpace, BackSpace, Delete ] }; + + key { [ Tab, Tab, Escape ] }; + key { [ a, A, bracketleft ] }; + key { [ s, S, apostrophe ] }; + key { [ d, D, parenleft ] }; + key { [ f, F, parenright ] }; + key { [ g, G, asterisk ] }; + key { [ h, H, 4 ] }; + key { [ j, J, 5 ] }; + key { [ k, K, 6 ] }; + key { [ l, L, plus ] }; + key { [ minus, equal, backslash ] }; + key { [ grave, braceleft, braceright ] }; + + key { [ Shift_L ] }; + key { [ z, Z, bracketright ] }; + key { [ x, X, asciicircum ] }; + key { [ c, C, asciitilde ] }; + key { [ v, V, bar ] }; + key { [ b, B, 7 ] }; + key { [ n, N, 8 ] }; + key { [ m, M, 9 ] }; + key { [ comma, less, semicolon ] }; + key { [ period, greater, colon ] }; + key { [ slash, question, 0 ] }; + key { [ Shift_R ] }; + key { [ Return ] }; + + key { [ ISO_Level3_Shift ] }; + + key { [ Control_L ] }; + key { [ space ] }; + + key { [ Up, Up, Prior ] }; + key { [ Left, Left, Home ] }; + key { [ Down, Down, Next ] }; + key { [ Right, Right, End ] }; + + key { [ Escape ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/shift b/nixos/xkb/symbols/shift new file mode 100644 index 00000000..3adc4e29 --- /dev/null +++ b/nixos/xkb/symbols/shift @@ -0,0 +1,70 @@ +// Cancel CapsLock when a Shift key is pressed. +partial modifier_keys +xkb_symbols "breaks_caps" { + key { + type[group1] = "ALPHABETIC", + actions[group1] = [ SetMods(modifiers=Shift), + SetMods(modifiers=Shift+Lock,clearLocks) ] + }; + key { + type[group1] = "ALPHABETIC", + actions[group1] = [ SetMods(modifiers=Shift), + SetMods(modifiers=Shift+Lock,clearLocks) ] + }; +}; + + +// Toggle CapsLock when pressed together with the other Shift key. +partial modifier_keys +xkb_symbols "lshift_both_capslock" { + key {[ Shift_L, Caps_Lock ], type[group1]="TWO_LEVEL" }; +}; + +// Toggle CapsLock when pressed together with the other Shift key. +partial modifier_keys +xkb_symbols "rshift_both_capslock" { + key {[ Shift_R, Caps_Lock ], type[group1]="TWO_LEVEL" }; +}; +partial modifier_keys +xkb_symbols "both_capslock" { + include "shift(lshift_both_capslock)" + include "shift(rshift_both_capslock)" +}; + + +// Set CapsLock when pressed with the other Shift key, release it when pressed alone. +partial modifier_keys +xkb_symbols "lshift_both_capslock_cancel" { + key {[ Shift_L, Caps_Lock ], type[group1]="ALPHABETIC" }; +}; + +// Set CapsLock when pressed with the other Shift key, release it when pressed alone. +partial modifier_keys +xkb_symbols "rshift_both_capslock_cancel" { + key {[ Shift_R, Caps_Lock ], type[group1]="ALPHABETIC" }; +}; + +partial modifier_keys +xkb_symbols "both_capslock_cancel" { + include "shift(lshift_both_capslock_cancel)" + include "shift(rshift_both_capslock_cancel)" +}; + + +// Toggle ShiftLock when pressed together with the other Shift key. +partial modifier_keys +xkb_symbols "lshift_both_shiftlock" { + key {[ Shift_L, Shift_Lock ], type[group1]="TWO_LEVEL" }; +}; + +// Toggle ShiftLock when pressed together with the other Shift key. +partial modifier_keys +xkb_symbols "rshift_both_shiftlock" { + key {[ Shift_R, Shift_Lock ], type[group1]="TWO_LEVEL" }; +}; + +partial modifier_keys +xkb_symbols "both_shiftlock" { + include "shift(lshift_both_shiftlock)" + include "shift(rshift_both_shiftlock)" +}; diff --git a/nixos/xkb/symbols/si b/nixos/xkb/symbols/si new file mode 100644 index 00000000..c53fa9a8 --- /dev/null +++ b/nixos/xkb/symbols/si @@ -0,0 +1,31 @@ +// Keyboard layouts for Slovenia. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "rs(latin)" + + name[Group1]="Slovenian"; + + key { type[Group1]="TWO_LEVEL", [ cedilla, diaeresis ] }; +}; + +partial alphanumeric_keys +xkb_symbols "us" { + + include "rs(latinyz)" + + name[Group1]= "Slovenian (US)"; + + key { type[Group1]="TWO_LEVEL", [ cedilla, diaeresis ] }; +}; + +partial alphanumeric_keys +xkb_symbols "alternatequotes" { + + include "rs(latinalternatequotes)" + + name[Group1]= "Slovenian (with guillemets)"; + + key { type[Group1]="TWO_LEVEL", [ cedilla, diaeresis ] }; +}; diff --git a/nixos/xkb/symbols/sk b/nixos/xkb/symbols/sk new file mode 100644 index 00000000..161c5eb0 --- /dev/null +++ b/nixos/xkb/symbols/sk @@ -0,0 +1,150 @@ +// Keyboard layouts for Slovakia. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + // This layout conforms to a new Slovak compromise standard + // designed to satisfy most Unix, Windows and Mac users. + // 2001 by Kamil Toman + + include "latin" + name[Group1] = "Slovak"; + + key { [ semicolon, dead_abovering, grave, asciitilde ] }; + key { [ plus, 1, exclam, dead_tilde ] }; + key { [ lcaron, 2, at, dead_caron ] }; + key { [ scaron, 3, numbersign, dead_circumflex ] }; + key { [ ccaron, 4, dollar, dead_breve ] }; + key { [ tcaron, 5, percent, dead_abovering]}; + key { [ zcaron, 6, asciicircum, dead_ogonek ] }; + key { [ yacute, 7, ampersand, dead_grave ] }; + key { [ aacute, 8, asterisk, dead_abovedot] }; + key { [ iacute, 9, braceleft, dead_acute ] }; + key { [ eacute, 0, braceright, dead_doubleacute ] }; + key { [ equal, percent, NoSymbol, dead_diaeresis]}; + key { [dead_acute, dead_caron, dead_macron, dead_cedilla ] }; + + key { [ q, Q, backslash, NoSymbol ] }; + key { [ w, W, bar, NoSymbol ] }; + key { [ e, E, EuroSign, NoSymbol ] }; + key { [ r, R, NoSymbol, NoSymbol ] }; + key { [ t, T, NoSymbol, NoSymbol ] }; + key { [ z, Z, NoSymbol, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol ] }; + key { [ i, I, NoSymbol, NoSymbol ] }; + key { [ o, O, NoSymbol, NoSymbol ] }; + key { [ p, P, NoSymbol, NoSymbol ] }; + + key { [ uacute, slash, bracketleft, division ] }; + key { [adiaeresis, parenleft, bracketright, multiply ] }; + + key { [ a, A, asciitilde, NoSymbol ] }; + key { [ s, S, dstroke, NoSymbol ] }; + key { [ d, D, Dstroke, NoSymbol ] }; + key { [ f, F, bracketleft, NoSymbol ] }; + key { [ g, G, bracketright, NoSymbol ] }; + key { [ h, H, grave, NoSymbol ] }; + key { [ j, J, apostrophe, NoSymbol ] }; + key { [ k, K, lstroke, NoSymbol ] }; + key { [ l, L, Lstroke, NoSymbol ] }; + + key { [ocircumflex, quotedbl, dollar, NoSymbol ] }; + key { [ section, exclam, apostrophe, ssharp ] }; + key { [ ncaron, parenright, backslash, bar ] }; + + key { [ backslash, bar, slash, NoSymbol ] }; + key { [ y, Y, degree, NoSymbol ] }; + key { [ x, X, numbersign, NoSymbol ] }; + key { [ c, C, ampersand, NoSymbol ] }; + key { [ v, V, at, NoSymbol ] }; + key { [ b, B, braceleft, NoSymbol ] }; + key { [ n, N, braceright, NoSymbol ] }; + key { [ m, M, asciicircum, NoSymbol ] }; + key { [ comma, question, less, NoSymbol ] }; + key { [ period, colon, greater, NoSymbol ] }; + key { [ minus, underscore, asterisk, NoSymbol ] }; + + key { [ space, space, nobreakspace, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys alternate_group +xkb_symbols "acc" { + + // This layout is usually used as the second group, it contains + // accented characters only, no 'latin' set. + // 2017 by Pavol Babinčák + + // Based on cz(ucw). Slovak letter frequency is used if a letter can be + // used with multiple diacritic symbols. Other accented letters of Slovak + // and Czech language end up on surrounding unused keys. + + name[Group1] = "Slovak (ACC layout, only accented letters)"; + + key { [zcaron, Zcaron ] }; + key { [ccaron, Ccaron ] }; + key { [ncaron, Ncaron ] }; + + key { [aacute, Aacute ] }; + key { [scaron, Scaron ] }; + key { [dcaron, Dcaron ] }; + key { [ecaron, Ecaron ] }; + key { [rcaron, Rcaron ] }; + key { [uring, Uring ] }; + key { [oacute, Oacute ] }; + key { [lcaron, Lcaron ] }; + + key { [adiaeresis, Adiaeresis ] }; + key { [eacute, Eacute ] }; + key { [racute, Racute ] }; + key { [tcaron, Tcaron ] }; + key { [yacute, Yacute ] }; + key { [uacute, Uacute ] }; + key { [iacute, Iacute ] }; + key { [ocircumflex, Ocircumflex ] }; + key { [lacute, Lacute ] }; + + key { [dead_acute, dead_caron ] }; +}; + +xkb_symbols "bksl" { + + // Put backslash on BKSL key (for when LSGT key is missing). + + include "sk(basic)" + name[Group1] = "Slovak (extra backslash)"; + + key { [ backslash, bar, slash, parenright ] }; + key { [ backslash, parenleft, slash, NoSymbol ] }; +}; + +partial alphanumeric_keys +xkb_symbols "qwerty" { + + // This layout works exactly as the basic Slovak one with the exception + // of the 'Z' and 'Y' keys, which are in Qwerty style (i.e. swapped). + // 2001 by Kamil Toman + + include "sk(basic)" + name[Group1] = "Slovak (QWERTY)"; + + key { [ z, Z, degree, NoSymbol ] }; + key { [ y, Y, NoSymbol, NoSymbol ] }; +}; + +xkb_symbols "qwerty_bksl" { + + include "sk(qwerty)" + name[Group1] = "Slovak (QWERTY, extra backslash)"; + + key { [ backslash, bar, slash, parenright ] }; + key { [ backslash, parenleft, slash, NoSymbol ] }; +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/sk(sun_type6)" +}; diff --git a/nixos/xkb/symbols/sn b/nixos/xkb/symbols/sn new file mode 100644 index 00000000..63453300 --- /dev/null +++ b/nixos/xkb/symbols/sn @@ -0,0 +1,43 @@ +// Keyboard layout for Senegal. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "latin" + + name[Group1]="Wolof"; + + key {[twosuperior, percent, notsign, notsign ]}; + key {[ ampersand, 1, bar, NoSymbol ]}; + key {[ eacute, 2, asciitilde, Eacute ]}; + key {[ quotedbl, 3, numbersign, cedilla ]}; + key {[ apostrophe, 4, braceleft, acute ]}; + key {[ parenleft, 5, bracketleft, diaeresis ]}; + key {[ minus, 6, bar, brokenbar ]}; + key {[ egrave, 7, dead_grave, Egrave ]}; + key {[ underscore, 8, backslash, macron ]}; + key {[ ccedilla, 9, asciicircum, Ccedilla ]}; + key {[ agrave, 0, at, Agrave ]}; + key {[ parenright, degree, bracketright, ydiaeresis ]}; + key {[ equal, plus, braceright,threequarters ]}; + + key {[ a, A, ae, AE ]}; + key {[ z, Z, guillemotleft, less ]}; + key {[ e, E, EuroSign, cent ]}; + key {[ eng, ENG, bracketleft, bracketright ]}; + key {[ dollar, sterling, currency, ecircumflex ]}; + + key {[ q, Q, at, Greek_OMEGA ]}; + key {[ m, M, mu, masculine ]}; + key {[ ntilde, Ntilde, acute, dead_acute ]}; + key {[ mu, sterling, grave, dead_grave ]}; + + key {[ less, greater, bar, NoSymbol ]}; + key {[ w, W, lstroke, Lstroke ]}; + key {[ comma, question, questiondown, NoSymbol ]}; + key {[ semicolon, period, U2022, multiply ]}; // bullet + key {[ colon, slash, periodcentered, division ]}; + key {[ exclam, section, exclamdown, NoSymbol ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/sony_vndr/us b/nixos/xkb/symbols/sony_vndr/us new file mode 100644 index 00000000..03af8edb --- /dev/null +++ b/nixos/xkb/symbols/sony_vndr/us @@ -0,0 +1,89 @@ +// +//Copyright 1996, 1998 The Open Group +// +//Permission to use, copy, modify, distribute, and sell this software and its +//documentation for any purpose is hereby granted without fee, provided that +//the above copyright notice appear in all copies and that both that +//copyright notice and this permission notice appear in supporting +//documentation. +// +//The above copyright notice and this permission notice shall be +//included in all copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +//OTHER DEALINGS IN THE SOFTWARE. +// +//Except as contained in this notice, the name of The Open Group shall +//not be used in advertising or otherwise to promote the sale, use or +//other dealings in this Software without prior written authorization +//from The Open Group. +// +// US/ASCII layout for a nwp5461 keyboard +xkb_symbols "nwp5461" { + include "us(basic)" + + key { [ Alt_L, Meta_L ] }; + key { [ Shift_R ] }; + key { [ NoSymbol ] }; + + // Begin "Function" section + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + key { [ F11 ] }; + key { [ F12 ] }; + key { [ Help ] }; + key { [ Cancel ] }; + key { [ Select ] }; + key { [ Execute ] }; + key { [ Delete ] }; + key { [ Left ] }; + key { [ Right ] }; + key { [ Up ] }; + key { [ Down ] }; + key { [ Prior ] }; + key { [ Next ] }; + key { [ Insert ] }; + key { [ Clear ] }; + // End "Function" section + + // Begin "Keypad" section + key { [ KP_Multiply ] }; + key { [ KP_Divide ] }; + key { [ KP_Add ] }; + + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + key { [ KP_Subtract ] }; + + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + key { [ KP_Separator ] }; + + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + key { [ KP_Enter ] }; + + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; + key { [ KP_Tab ] }; + // End "Keypad" section + + modifier_map Shift { Shift_R }; + modifier_map Mod3 { Alt_L }; +}; diff --git a/nixos/xkb/symbols/srvr_ctrl b/nixos/xkb/symbols/srvr_ctrl new file mode 100644 index 00000000..57f8b311 --- /dev/null +++ b/nixos/xkb/symbols/srvr_ctrl @@ -0,0 +1,59 @@ +// Actions which control the server's behavior. + +partial keypad_keys function_keys +xkb_symbols "xfree86" { + include "keypad(operators)" + include "srvr_ctrl(fkey2vt)" +}; + +partial function_keys +xkb_symbols "fkey2vt" { + + key.type[group1] = "CTRL+ALT"; + + key {[ F1, F1, F1, F1, XF86_Switch_VT_1 ]}; + key {[ F2, F2, F2, F2, XF86_Switch_VT_2 ]}; + key {[ F3, F3, F3, F3, XF86_Switch_VT_3 ]}; + key {[ F4, F4, F4, F4, XF86_Switch_VT_4 ]}; + key {[ F5, F5, F5, F5, XF86_Switch_VT_5 ]}; + key {[ F6, F6, F6, F6, XF86_Switch_VT_6 ]}; + key {[ F7, F7, F7, F7, XF86_Switch_VT_7 ]}; + key {[ F8, F8, F8, F8, XF86_Switch_VT_8 ]}; + key {[ F9, F9, F9, F9, XF86_Switch_VT_9 ]}; + key {[ F10, F10, F10, F10, XF86_Switch_VT_10 ]}; + key {[ F11, F11, F11, F11, XF86_Switch_VT_11 ]}; + key {[ F12, F12, F12, F12, XF86_Switch_VT_12 ]}; +}; + +partial function_keys keypad_keys +xkb_symbols "no_srvr_keys" { + + key.type[group1] = "TWO_LEVEL"; + + key {[ F1, F1 ]}; + key {[ F2, F2 ]}; + key {[ F3, F3 ]}; + key {[ F4, F4 ]}; + key {[ F5, F5 ]}; + key {[ F6, F6 ]}; + key {[ F7, F7 ]}; + key {[ F8, F8 ]}; + key {[ F9, F9 ]}; + key {[ F10, F10 ]}; + key {[ F11, F11 ]}; + key {[ F12, F12 ]}; + + key {[ KP_Divide, KP_Divide ]}; + key {[ KP_Multiply, KP_Multiply ]}; + key {[ KP_Subtract, KP_Subtract ]}; + key {[ KP_Add, KP_Add ]}; +}; + +partial function_keys +xkb_symbols "grab_debug" { + + key.type[group1] = "CTRL+ALT"; + + key {[ F11, F11, F11, F11, XF86LogGrabInfo ]}; + key {[ F12, F12, F12, F12, XF86LogWindowTree ]}; +}; diff --git a/nixos/xkb/symbols/srvrkeys b/nixos/xkb/symbols/srvrkeys new file mode 100644 index 00000000..0b7a670f --- /dev/null +++ b/nixos/xkb/symbols/srvrkeys @@ -0,0 +1,4 @@ +default partial +xkb_symbols "none" { + include "srvr_ctrl(no_srvr_keys)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/ara b/nixos/xkb/symbols/sun_vndr/ara new file mode 100644 index 00000000..2c905956 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/ara @@ -0,0 +1,121 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]= "Arabic (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ Arabic_thal, Arabic_shadda, grave, asciitilde ] }; + key { [ 0x1000661, exclam, 1, exclam ] }; + key { [ 0x1000662, at, 2, at ] }; + key { [ 0x1000663, numbersign, 3, numbersign ] }; + key { [ 0x1000664, dollar, 4, dollar ] }; + key { [ 0x1000665, percent, 5, percent ] }; + key { [ 0x1000666, asciicircum, 6, asciicircum ] }; + key { [ 0x1000667, ampersand, 7, ampersand ] }; + key { [ 0x1000668, asterisk, 8, asterisk ] }; + key { [ 0x1000669, parenright, 9, parenright ] }; + key { [ 0x1000660, parenleft, 0, parenleft ] }; + key { [ minus, underscore, minus, underscore ] }; + key { [ equal, plus, equal, plus ] }; + + key { [ Arabic_dad, Arabic_fatha, q, Q ] }; + key { [ Arabic_sad, Arabic_fathatan, w, W ] }; + key { [ Arabic_theh, Arabic_damma, e, E ] }; + key { [ Arabic_qaf, Arabic_dammatan, r, R ] }; + key { [ Arabic_feh, 0x100fef9, t, T ] }; + key { [ Arabic_ghain, Arabic_hamzaunderalef, y, Y ] }; + key { [ Arabic_ain, grave, u, U ] }; + key { [ Arabic_ha, division, i, I ] }; + key { [ Arabic_khah, multiply, o, O ] }; + key { [ Arabic_hah, Arabic_semicolon, p, P ] }; + key { [ Arabic_jeem, greater, bracketleft, braceleft ] }; + key { [ Arabic_dal, less, bracketright, braceright ] }; + + key { [ Arabic_sheen, Arabic_kasra, a, A ] }; + key { [ Arabic_seen, Arabic_kasratan, s, S ] }; + key { [ Arabic_yeh, bracketright, d, D ] }; + key { [ Arabic_beh, bracketleft, f, F ] }; + key { [ Arabic_lam, 0x100fef7, g, G ] }; + key { [ Arabic_alef, Arabic_hamzaonalef, h, H ] }; + key { [ Arabic_teh, Arabic_tatweel, j, J ] }; + key { [ Arabic_noon, Arabic_comma, k, K ] }; + key { [ Arabic_meem, slash, l, L ] }; + key { [ Arabic_kaf, colon, semicolon, colon ] }; + key { [ Arabic_tah, quotedbl, apostrophe, quotedbl ] }; + key { [ backslash, bar, backslash, bar ] }; + + key { [ bar, brokenbar, bar, brokenbar ] }; + key { [ Arabic_hamzaonyeh, asciitilde, z, Z ] }; + key { [ Arabic_hamza, Arabic_sukun, x, X ] }; + key { [ Arabic_hamzaonwaw, braceright, c, C ] }; + key { [ Arabic_ra, braceleft, v, V ] }; + key { [ 0x100fefb, 0x100fef5, b, B ] }; + key { [ Arabic_alefmaksura, Arabic_maddaonalef, n, N ] }; + key { [ Arabic_tehmarbuta, apostrophe, m, M ] }; + key { [ Arabic_waw, comma, comma, less ] }; + key { [ Arabic_zain, period, period, greater ] }; + key { [ Arabic_zah, Arabic_question_mark, slash, question ] }; + + include "level3(ralt_switch)" + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/ara(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "azerty" { + include "ara(azerty)" +}; + +partial alphanumeric_keys + xkb_symbols "digits" { + include "ara(digits)" +}; + +partial alphanumeric_keys + xkb_symbols "azerty_digits" { + include "ara(azerty_digits)" +}; + +partial alphanumeric_keys + xkb_symbols "buckwalter" { + include "ara(buckwalter)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc" { + include "ara(olpc)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/be b/nixos/xkb/symbols/sun_vndr/be new file mode 100644 index 00000000..36b34f82 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/be @@ -0,0 +1,107 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Belgium (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [twosuperior, threesuperior ] }; + key { [ ampersand, 1, bar ] }; + key { [ eacute, 2, at ] }; + key { [ quotedbl, 3, numbersign ] }; + key { [apostrophe, 4 ] }; + key { [ parenleft, 5 ] }; + key { [ section, 6, asciicircum ] }; + key { [ egrave, 7 ] }; + key { [ exclam, 8 ] }; + key { [ ccedilla, 9, braceleft ] }; + key { [ agrave, 0, braceright ] }; + key { [parenright, degree ] }; + key { [ minus, underscore ] }; + + key { [ a, A ] }; + key { [ z, Z ] }; + key { [ e, E, EuroSign ] }; + key { [ o, O ] }; + key { [dead_circumflex, dead_diaeresis, bracketleft ] }; + key { [ dollar, asterisk, bracketright ] }; + + key { [ q, Q ] }; + key { [ m, M ] }; + key { [ ugrave, percent, dead_acute ] }; + key { [ mu, sterling, dead_grave ] }; + + key { [ less, greater, backslash ] }; + key { [ w, W ] }; + key { [ comma, question ] }; + key { [ semicolon, period ] }; + key { [ colon, slash ] }; + key { [ equal, plus, dead_tilde ] }; + + include "level3(ralt_switch)" + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/be(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "oss" { + include "be(oss)" +}; + +partial alphanumeric_keys + xkb_symbols "oss_frbe" { + include "be(oss_frbe)" +}; + +partial alphanumeric_keys + xkb_symbols "oss_latin9" { + include "be(oss_latin9)" +}; + +partial alphanumeric_keys + xkb_symbols "iso-alternate" { + include "be(iso-alternate)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "be(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "wang" { + include "be(wang)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/br b/nixos/xkb/symbols/sun_vndr/br new file mode 100644 index 00000000..13ac705d --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/br @@ -0,0 +1,120 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]= "Portuguese (Brazil, Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ apostrophe, quotedbl, notsign ] }; + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ 2, at, twosuperior, onehalf ] }; + key { [ 3, numbersign, threesuperior, threequarters ] }; + key { [ 4, dollar, sterling, onequarter ] }; + key { [ 5, percent, cent ] }; + key { [ 6, dead_diaeresis, notsign, diaeresis ] }; + key { [ 7, ampersand, braceleft ] }; + key { [ 8, asterisk, bracketleft ] }; + key { [ 9, parenleft, bracketright ] }; + key { [ 0, parenright, braceright ] }; + key { [ minus, underscore, backslash ] }; + key { [ equal, plus, section ] }; + + key { [ e, E, EuroSign ] }; + key { [ r, R, registered ] }; + key { [ dead_acute, dead_grave, acute, grave ] }; + key { [ bracketleft, braceleft, ordfeminine ] }; + + key { [ ccedilla, Ccedilla, exclamdown ] }; + key { [ dead_tilde, dead_circumflex, asciitilde, asciicircum ] }; + key { [ bracketright, braceright, masculine ] }; + + key { [ slash, bar, degree ] }; + key { [ z, Z, guillemotleft ] }; + key { [ x, X, guillemotright ] }; + key { [ c, C, copyright ] }; + key { [ m, M, mu ] }; + key { [ comma, less, question ] }; + key { [ period, greater, questiondown ] }; + key { [ semicolon, colon ] }; + key { [ slash, question, degree, questiondown ] }; + + key { [ KP_Decimal ] }; + key { [ KP_Delete, comma ] }; + + include "level3(ralt_switch)" + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/br(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "abnt2" { + include "br(abnt2)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "br(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "thinkpad" { + include "br(thinkpad)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc" { + include "br(olpc)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "br(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "nativo" { + include "br(nativo)" +}; + +partial alphanumeric_keys + xkb_symbols "nativo-us" { + include "br(nativo-us)" +}; + +partial alphanumeric_keys + xkb_symbols "nativo-epo" { + include "br(nativo-epo)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/ca b/nixos/xkb/symbols/sun_vndr/ca new file mode 100644 index 00000000..695f8b52 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/ca @@ -0,0 +1,121 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Multilingual (Canada, Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ slash, bar, backslash ]}; + key { [ 1, exclam, plusminus ]}; + key { [ 2, at ]}; + key { [ 3, numbersign, sterling ]}; + key { [ 4, dollar, cent ]}; + key { [ 5, percent, currency ]}; + key { [ 6, question, notsign ]}; + key { [ 7, ampersand, braceleft ]}; + key { [ 8, asterisk, braceright ]}; + key { [ 9, parenleft, bracketleft ]}; + key { [ 0, parenright, bracketright ]}; + key { [ minus, underscore, onehalf ]}; + key { [ equal, plus, notsign ]}; + + key { [ e, E, EuroSign ]}; + key { [ o, O, section ]}; + key { [ p, P, paragraph ]}; + key { [ dead_circumflex, dead_diaeresis, dead_grave ]}; + key { [ ccedilla, Ccedilla, asciitilde ]}; + + key { [ semicolon, colon, degree ]}; + key { [ egrave, Egrave, braceleft ]}; + key { [ agrave, Agrave, braceright ]}; + + key { [ uacute, Uacute ]}; + key { [ z, Z, guillemotleft ]}; + key { [ x, X, guillemotright ]}; + key { [ m, M, mu ]}; + key { [ comma, apostrophe, less ]}; + key { [ period, quotedbl, greater ]}; + key { [ eacute, Eacute, grave ]}; + + include "level3(ralt_switch)" + +}; + +alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/ca(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "fr" { + include "ca(fr)" +}; + +partial alphanumeric_keys + xkb_symbols "fr-dvorak" { + include "ca(fr-dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "fr-legacy" { + include "ca(fr-legacy)" +}; + +partial alphanumeric_keys + xkb_symbols "ike" { + include "ca(ike)" +}; + +partial alphanumeric_keys + xkb_symbols "multix" { + include "ca(multix)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc" { + include "ca(olpc)" +}; + +partial alphanumeric_keys + xkb_symbols "eng" { + include "ca(eng)" +}; + +partial alphanumeric_keys + xkb_symbols "kut" { + include "ca(kut)" +}; + +partial alphanumeric_keys + xkb_symbols "shs" { + include "ca(shs)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/ch b/nixos/xkb/symbols/sun_vndr/ch new file mode 100644 index 00000000..ab8a35d2 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/ch @@ -0,0 +1,168 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6_de" { + + name[Group1]= "German (Switzerland, Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ section, degree ] }; + key { [ 1, plus, bar ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, asterisk, numbersign ] }; + key { [ 4, ccedilla, asciicircum ] }; + key { [ 5, percent, asciitilde ] }; + key { [ 6, ampersand, notsign ] }; + key { [ 7, slash, brokenbar ] }; + key { [ 8, parenleft, cent ] }; + key { [ 9, parenright ] }; + key { [ 0, equal, grave ] }; + key { [ apostrophe, question, dead_acute ] }; + key { [ dead_circumflex, dead_grave, dead_tilde ] }; + + key { [ e, E, EuroSign ] }; + key { [ z, Z ] }; + key { [ udiaeresis, egrave, bracketleft ] }; + key { [ dead_diaeresis, exclam, bracketright ] }; + + key { [ odiaeresis, eacute ] }; + key { [ adiaeresis, agrave, braceleft ] }; + key { [ dollar, sterling, braceright ] }; + + key { [ less, greater, backslash ] }; + key { [ y, Y ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + include "level3(ralt_switch)" + +}; + +partial alphanumeric_keys +xkb_symbols "sun_type6_fr" { + + name[Group1]= "French (Switzerland, Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ section, degree ] }; + key { [ 1, plus, bar ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, asterisk, numbersign ] }; + key { [ 4, ccedilla, asciicircum ] }; + key { [ 5, percent, asciitilde ] }; + key { [ 6, ampersand, notsign ] }; + key { [ 7, slash, brokenbar ] }; + key { [ 8, parenleft, cent ] }; + key { [ 9, parenright ] }; + key { [ 0, equal, grave ] }; + key { [ apostrophe, question, dead_acute ] }; + key { [ dead_circumflex, dead_grave, dead_tilde ] }; + + key { [ e, E, EuroSign ] }; + key { [ z, Z ] }; + key { [ egrave, udiaeresis, bracketleft ] }; + key { [ dead_diaeresis, exclam, bracketright ] }; + + key { [ eacute, odiaeresis ] }; + key { [ agrave, adiaeresis, braceleft ] }; + key { [ dollar, sterling, braceright ] }; + + key { [ less, greater, backslash ] }; + key { [ y, Y ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + include "level3(ralt_switch)" + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/ch(sun_type6_de)" +}; + +partial alphanumeric_keys + xkb_symbols "legacy" { + include "ch(legacy)" +}; + +partial alphanumeric_keys + xkb_symbols "de" { + include "ch(de)" +}; + +partial alphanumeric_keys + xkb_symbols "de_Sundeadkeys" { + include "ch(de)" +}; + +partial alphanumeric_keys + xkb_symbols "de_sundeadkeys" { + include "ch(de)" +}; + +partial alphanumeric_keys + xkb_symbols "de_nodeadkeys" { + include "ch(de_nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "fr" { + include "ch(fr)" +}; + +partial alphanumeric_keys + xkb_symbols "fr_Sundeadkeys" { + include "ch(fr)" +}; + +partial alphanumeric_keys + xkb_symbols "fr_sundeadkeys" { + include "ch(fr)" +}; + +partial alphanumeric_keys + xkb_symbols "fr_nodeadkeys" { + include "ch(fr_nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "de_mac" { + include "ch(de_mac)" +}; + +partial alphanumeric_keys + xkb_symbols "fr_mac" { + include "ch(fr_mac)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/cz b/nixos/xkb/symbols/sun_vndr/cz new file mode 100644 index 00000000..91c5d469 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/cz @@ -0,0 +1,111 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Czech (Sun Type 6/7"; + + include "sun_vndr/us(sun_type6)" + + key { [ semicolon, dead_abovering, grave, asciitilde ] }; + key { [ plus, 1, exclam, asciitilde ] }; + key { [ ecaron, 2, at, dead_caron ] }; + key { [ scaron, 3, numbersign, dead_circumflex ] }; + key { [ ccaron, 4, dollar, dead_breve ] }; + key { [ rcaron, 5, percent, dead_abovering ] }; + key { [ zcaron, 6, asciicircum, dead_ogonek ] }; + key { [ yacute, 7, ampersand, grave ] }; + key { [ aacute, 8, asterisk, dead_abovedot ] }; + key { [ iacute, 9, parenleft, dead_acute ] }; + key { [ eacute, 0, parenright, dead_doubleacute ] }; + key { [ equal, percent, dead_diaeresis, backslash ] }; + key { [ dead_acute, dead_caron, dead_cedilla, minus ] }; + + key { [ q, Q, backslash ] }; + key { [ w, W, bar ] }; + key { [ e, E, EuroSign ] }; + key { [ z, Z ] }; + key { [ uacute, slash, division ] }; + key { [parenright, parenleft, multiply ] }; + + key { [ s, S, dstroke ] }; + key { [ d, D, Dstroke ] }; + key { [ f, F, bracketleft ] }; + key { [ g, G, bracketright ] }; + key { [ k, K, lstroke ] }; + key { [ l, L, Lstroke ] }; + key { [ uring, quotedbl, dollar ] }; + key { [ section, exclam, ssharp, currency ] }; + key { [ dead_diaeresis, apostrophe, backslash, bar ] }; + + key { [ backslash, asterisk, slash, brokenbar ] }; + key { [ y, Y, less ] }; + key { [ x, X, greater, numbersign ] }; + key { [ v, V, at ] }; + key { [ b, B, braceleft ] }; + key { [ n, N, braceright ] }; + key { [ comma, question, less ] }; + key { [ period, colon, greater ] }; + key { [ minus, underscore ] }; + + include "level3(ralt_switch)" + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/cz(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "bksl" { + include "cz(bksl)" +}; + +partial alphanumeric_keys + xkb_symbols "qwerty" { + include "cz(qwerty)" +}; + +partial alphanumeric_keys + xkb_symbols "qwerty_bksl" { + include "cz(qwerty_bksl)" +}; + +partial alphanumeric_keys + xkb_symbols "ucw" { + include "cz(ucw)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak-ucw" { + include "cz(dvorak-ucw)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/de b/nixos/xkb/symbols/sun_vndr/de new file mode 100644 index 00000000..171a0e44 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/de @@ -0,0 +1,176 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="German (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ asciicircum, degree ] }; + key { [ 2, quotedbl, twosuperior ] }; + key { [ 3, section, threesuperior ] }; + key { [ 4, dollar ] }; + key { [ 6, ampersand, section ] }; + key { [ 7, slash, braceleft ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, equal, braceright ] }; + key { [ ssharp, question, backslash ] }; + key { [ dead_acute, dead_grave ] }; + key { [ q, Q, at ] }; + key { [ e, E, EuroSign ] }; + key { [ z, Z ] }; + key { [ udiaeresis, Udiaeresis ] }; + key { [ plus, asterisk, asciitilde ] }; + key { [ odiaeresis, Odiaeresis ] }; + key { [ adiaeresis, Adiaeresis ] }; + key { [ y, Y ] }; + key { [ m, M, mu ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + key { [ numbersign, apostrophe, grave ] }; + key { [ less, greater, bar ] }; + + include "level3(ralt_switch)" + include "kpdl(comma)" + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/de(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "legacy" { + include "de(deadtilde)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "de(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "deadgraveacute" { + include "de(deadgraveacute)" +}; + +partial alphanumeric_keys + xkb_symbols "deadacute" { + include "de(deadacute)" +}; + +partial alphanumeric_keys + xkb_symbols "ro" { + include "de(ro)" +}; + +partial alphanumeric_keys + xkb_symbols "ro_nodeadkeys" { + include "de(ro_nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "de(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "Sundeadkeys" { + include "de(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "sundeadkeys" { + include "de(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "neo_base" { + include "de(neo_base)" +}; + +partial alphanumeric_keys + xkb_symbols "adnw" { + include "de(adnw)" +}; + +partial alphanumeric_keys + xkb_symbols "adnw_base" { + include "de(adnw_base)" +}; + +partial alphanumeric_keys + xkb_symbols "neo" { + include "de(neo)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "de(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "mac_nodeadkeys" { + include "de(mac_nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "dsb" { + include "de(dsb)" +}; + +partial alphanumeric_keys + xkb_symbols "dsb_qwertz" { + include "de(dsb_qwertz)" +}; + +partial alphanumeric_keys + xkb_symbols "qwerty" { + include "de(qwerty)" +}; + +partial alphanumeric_keys + xkb_symbols "ru" { + include "de(ru)" +}; + +partial alphanumeric_keys + xkb_symbols "us" { + include "de(us)" +}; + +partial alphanumeric_keys + xkb_symbols "hu" { + include "de(hu)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/dk b/nixos/xkb/symbols/sun_vndr/dk new file mode 100644 index 00000000..5db1d042 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/dk @@ -0,0 +1,88 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Danish (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ onehalf, section ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, numbersign, sterling ] }; + key { [ 4, currency, dollar ] }; + key { [ 5, percent, asciitilde ] }; + key { [ 6, ampersand, asciicircum ] }; + key { [ 7, slash, braceleft ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, equal, braceright ] }; + key { [ plus, question ] }; + key { [ dead_acute, dead_grave, bar ] }; + key { [ e, E, EuroSign ] }; + key { [ aring, Aring ] }; + key { [ dead_diaeresis, dead_circumflex, dead_tilde ] }; + key { [ apostrophe, asterisk, grave ] }; + key { [ ae, AE ] }; + key { [ oslash, Oslash ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + key { [ less, greater, backslash ] }; + + include "level3(ralt_switch)" + include "kpdl(comma)" + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/dk(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "dk(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "dk(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "mac_nodeadkeys" { + include "dk(mac_nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "dk(dvorak)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/ee b/nixos/xkb/symbols/sun_vndr/ee new file mode 100644 index 00000000..6e996c6b --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/ee @@ -0,0 +1,111 @@ +// +// Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Estonian (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ dead_caron, dead_tilde, notsign, notsign ] }; + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ 2, quotedbl, at, oneeighth ] }; + key { [ 3, numbersign, sterling, sterling ] }; + key { [ 4, currency, dollar, dollar ] }; + key { [ 5, percent, onehalf, threeeighths ] }; + key { [ 6, ampersand, notsign, fiveeighths ] }; + key { [ 7, slash, braceleft, seveneighths ] }; + key { [ 8, parenleft, bracketleft, trademark ] }; + key { [ 9, parenright, bracketright, plusminus ] }; + key { [ 0, equal, braceright, degree ] }; + key { [ plus, question, backslash, questiondown ] }; + key { [ dead_acute, dead_grave, grave, apostrophe ] }; + + key { [ q, Q, at, Greek_OMEGA ] }; + key { [ w, W, U017F, section ] }; + key { [ e, E, EuroSign, cent ] }; + key { [ r, R, paragraph, registered ] }; + key { [ t, T, tslash, Tslash ] }; + key { [ y, Y, leftarrow, yen ] }; + key { [ u, U, downarrow, uparrow ] }; + key { [ i, I, rightarrow, idotless ] }; + key { [ o, O, oslash, Oslash ] }; + key { [ p, P, thorn, THORN ] }; + key { [ udiaeresis, Udiaeresis, dead_diaeresis,dead_abovering ] }; + key { [ otilde, Otilde, section, dead_macron ] }; + + key { [ a, A, ae, AE ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ d, D, eth, ETH ] }; + key { [ f, F, dstroke, ordfeminine ] }; + key { [ g, G, eng, ENG ] }; + key { [ h, H, hstroke, Hstroke ] }; + key { [ j, J, j, J ] }; + key { [ k, K, kra, ampersand ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ odiaeresis, Odiaeresis, dead_acute, dead_doubleacute ] }; + key { [ adiaeresis, Adiaeresis, asciicircum, dead_caron ] }; + key { [ backslash, bar, degree, brokenbar ] }; + + key { [ apostrophe, asterisk, onehalf, dead_breve ] }; + key { [ z, Z, zcaron, Zcaron ] }; + key { [ x, X, guillemotright, greater ] }; + key { [ c, C, cent, copyright ] }; + key { [ v, V, leftdoublequotemark, leftsinglequotemark ] }; + key { [ b, B, rightdoublequotemark, rightsinglequotemark ] }; + key { [ n, N, ncedilla, Ncedilla ] }; + key { [ m, M, mu, masculine ] }; + key { [ comma, semicolon, less, multiply ] }; + key { [ period, colon, greater, division ] }; + key { [ minus, underscore, dead_belowdot, dead_abovedot ] }; + + include "level3(ralt_switch)" + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/ee(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "ee(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "ee(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "us" { + include "ee(us)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/es b/nixos/xkb/symbols/sun_vndr/es new file mode 100644 index 00000000..a4916716 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/es @@ -0,0 +1,112 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Spanish (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ masculine, ordfeminine, backslash ] }; + key { [ less, greater ] }; + key { [ 1, exclam, bar ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, periodcentered, numbersign ] }; + key { [ 4, dollar, asciicircum ] }; + key { [ 5, percent, asciitilde ] }; + key { [ 6, ampersand, notsign ] }; + key { [ 7, slash ] }; + key { [ 8, parenleft ] }; + key { [ 9, parenright ] }; + key { [ 0, equal ] }; + key { [ apostrophe, question, grave ] }; + key { [ exclamdown, questiondown ] }; + key { [ e, E, EuroSign ] }; + key { [ dead_grave, dead_circumflex, bracketleft ] }; + key { [ plus, asterisk, bracketright ] }; + key { [ ntilde, Ntilde ] }; + key { [ dead_acute, dead_diaeresis, braceleft ] }; + key { [ ccedilla, Ccedilla, braceright ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/es(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "Sundeadkeys" { + include "es(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "sundeadkeys" { + include "es(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "es(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "es(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "cat" { + include "es(cat)" +}; + +partial alphanumeric_keys + xkb_symbols "ast" { + include "es(ast)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc" { + include "es(olpc)" +}; + +partial alphanumeric_keys + xkb_symbols "deadtilde" { + include "es(deadtilde)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc2" { + include "es(olpc2)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/fi b/nixos/xkb/symbols/sun_vndr/fi new file mode 100644 index 00000000..0fefe603 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/fi @@ -0,0 +1,108 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + include "sun_vndr/us(sun_type6)" + + name[Group1]="Finnish (Sun Type 6/7)"; + + key { [ section, onehalf ] }; + key { [ 1, exclam ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, numbersign, sterling ] }; + key { [ 4, currency, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, ampersand ] }; + key { [ 7, slash, braceleft ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, equal, braceright ] }; + key { [ plus, question, backslash ] }; + key { [ dead_acute, dead_grave ] }; + key { [ e, E, EuroSign ] }; + key { [ aring, Aring ] }; + key { [ dead_diaeresis, asciicircum, asciitilde ] }; + key { [ odiaeresis, Odiaeresis ] }; + key { [ adiaeresis, Adiaeresis ] }; + key { [ apostrophe, asterisk, grave ] }; + key { [ less, greater, bar ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + include "level3(ralt_switch)" + include "kpdl(comma)" +}; + +partial alphanumeric_keys +xkb_symbols "basic" { + include "sun_vndr/fi(sun_type6)" +}; + +partial alphanumeric_keys +xkb_symbols "kotoistus" { + include "fi(kotoistus)" +}; + +partial alphanumeric_keys +xkb_symbols "winkeys" { + include "fi(winkeys)" +}; + +partial alphanumeric_keys +xkb_symbols "classic" { + include "fi(fi)" +}; + +partial alphanumeric_keys +xkb_symbols "nodeadkeys" { + include "fi(nodeadkeys)" +}; + +partial alphanumeric_keys +xkb_symbols "smi" { + include "fi(smi)" +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + include "fi(mac)" +}; + +partial alphanumeric_keys +xkb_symbols "das" { + include "fi(das)" +}; + +partial alphanumeric_keys +xkb_symbols "fidvorak" { + include "fi(fidvorak)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/fr b/nixos/xkb/symbols/sun_vndr/fr new file mode 100644 index 00000000..0dba5955 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/fr @@ -0,0 +1,175 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="French (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ twosuperior ] }; + key { [ ampersand, 1 ] }; + key { [ eacute, 2, asciitilde ] }; + key { [ quotedbl, 3, numbersign ] }; + key { [ apostrophe, 4, braceleft ] }; + key { [ parenleft, 5, bracketleft ] }; + key { [ minus, 6, bar ] }; + key { [ egrave, 7, grave ] }; + key { [ underscore, 8, backslash ] }; + key { [ ccedilla, 9, asciicircum ] }; + key { [ agrave, 0, at ] }; + key { [ parenright, degree, bracketright ] }; + key { [ equal, plus, braceright ] }; + + key { [ a, A ] }; + key { [ z, Z ] }; + key { [ e, E, EuroSign ] }; + key { [ dead_circumflex, dead_diaeresis ] }; + key { [ dollar, sterling, currency ] }; + + key { [ q, Q ] }; + key { [ m, M ] }; + key { [ ugrave, percent ] }; + key { [ asterisk, mu ] }; + + key { [ less, greater ] }; + key { [ w, W ] }; + key { [ comma, question ] }; + key { [ semicolon, period ] }; + key { [ colon, slash ] }; + key { [ exclam, section ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/fr(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc" { + include "fr(olpc)" +}; + +partial alphanumeric_keys + xkb_symbols "Sundeadkeys" { + include "fr(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "sundeadkeys" { + include "fr(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "fr(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "oss" { + include "fr(oss)" +}; + +partial alphanumeric_keys + xkb_symbols "oss_latin9" { + include "fr(oss_latin9)" +}; + +partial alphanumeric_keys + xkb_symbols "oss_Sundeadkeys" { + include "fr(oss)" +}; + +partial alphanumeric_keys + xkb_symbols "oss_sundeadkeys" { + include "fr(oss)" +}; + +partial alphanumeric_keys + xkb_symbols "oss_nodeadkeys" { + include "fr(oss_nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "latin9" { + include "fr(latin9)" +}; + +partial alphanumeric_keys + xkb_symbols "latin9_Sundeadkeys" { + include "fr(latin9)" +}; + +partial alphanumeric_keys + xkb_symbols "latin9_sundeadkeys" { + include "fr(latin9)" +}; + +partial alphanumeric_keys + xkb_symbols "latin9_nodeadkeys" { + include "fr(latin9_nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "bepo" { + include "fr(bepo)" +}; + +partial alphanumeric_keys + xkb_symbols "bepo_latin9" { + include "fr(bepo_latin9)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "fr(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "bre" { + include "fr(bre)" +}; + +partial alphanumeric_keys + xkb_symbols "oci" { + include "fr(oci)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "fr(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "geo" { + include "fr(geo)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/gb b/nixos/xkb/symbols/sun_vndr/gb new file mode 100644 index 00000000..c95b0084 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/gb @@ -0,0 +1,87 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="English (UK, Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ grave, notsign, brokenbar ] }; + + key { [ 2, quotedbl ] }; + key { [ 3, sterling ] }; + key { [ 4, dollar, EuroSign ] }; + key { [ numbersign, asciitilde ] }; + key { [ apostrophe, at ] }; + key { [ backslash, bar ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/gb(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "intl" { + include "gb(intl)" +}; + +partial alphanumeric_keys + xkb_symbols "extd" { + include "gb(extd)" +}; + +partial alphanumeric_keys + xkb_symbols "colemak" { + include "gb(colemak)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "gb(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorakukp" { + include "gb(dvorakukp)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "gb(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "mac_intl" { + include "gb(mac_intl)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/gr b/nixos/xkb/symbols/sun_vndr/gr new file mode 100644 index 00000000..32823ca0 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/gr @@ -0,0 +1,110 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Greek (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ grave, asciitilde, onehalf ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign, sterling ] }; + key { [ 4, dollar, EuroSign ] }; + key { [ 5, percent, EuroSign ] }; + key { [ 6, asciicircum, notsign ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright, degree ] }; + key { [ minus, underscore, plusminus ] }; + key { [ equal, plus ] }; + + key { [ semicolon, colon, periodcentered ] }; + key { [ Greek_finalsmallsigma, periodcentered, Greek_SIGMA ] }; + key { [ Greek_epsilon, Greek_EPSILON, EuroSign ] }; + key { [ Greek_rho, Greek_RHO, registered ] }; + key { [ Greek_tau, Greek_TAU ] }; + key { [ Greek_upsilon, Greek_UPSILON ] }; + key { [ Greek_theta, Greek_THETA ] }; + key { [ Greek_iota, Greek_IOTA ] }; + key { [ Greek_omicron, Greek_OMICRON ] }; + key { [ Greek_pi, Greek_PI ] }; + key { [ bracketleft, braceleft, guillemotleft ] }; + key { [ bracketright, braceright, guillemotright ] }; + + key { [ Greek_alpha, Greek_ALPHA ] }; + key { [ Greek_sigma, Greek_SIGMA ] }; + key { [ Greek_delta, Greek_DELTA ] }; + key { [ Greek_phi, Greek_PHI ] }; + key { [ Greek_gamma, Greek_GAMMA ] }; + key { [ Greek_eta, Greek_ETA ] }; + key { [ Greek_xi, Greek_XI ] }; + key { [ Greek_kappa, Greek_KAPPA ] }; + key { [ Greek_lamda, Greek_LAMDA ] }; + key { [ dead_acute, dead_diaeresis ] }; + key { [ apostrophe, quotedbl ] }; + key { [ backslash, bar, brokenbar ] }; + + key { [ guillemotleft, guillemotright, brokenbar ] }; + key { [ Greek_zeta, Greek_ZETA ] }; + key { [ Greek_chi, Greek_CHI ] }; + key { [ Greek_psi, Greek_PSI, copyright ] }; + key { [ Greek_omega, Greek_OMEGA ] }; + key { [ Greek_beta, Greek_BETA ] }; + key { [ Greek_nu, Greek_NU ] }; + key { [ Greek_mu, Greek_MU ] }; + key { [ comma, less, guillemotleft ] }; + key { [ period, greater, guillemotright ] }; + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; + +alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/gr(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "simple" { + include "gr(simple)" +}; + +partial alphanumeric_keys + xkb_symbols "polytonic" { + include "gr(polytonic)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "gr(nodeadkeys)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/it b/nixos/xkb/symbols/sun_vndr/it new file mode 100644 index 00000000..8894a405 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/it @@ -0,0 +1,94 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]= "Italian (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ less, greater ] }; + key { [ backslash, bar ] }; + key { [ 2, quotedbl ] }; + key { [ 3, sterling ] }; + key { [ 6, ampersand ] }; + key { [ 7, slash ] }; + key { [ 8, parenleft, braceleft ] }; + key { [ 9, parenright, braceright ] }; + key { [ 0, equal ] }; + key { [ apostrophe, question, grave ] }; + key { [ igrave, asciicircum ] }; + key { [ e, E, EuroSign ] }; + key { [ egrave, eacute, bracketleft, dead_abovering ] }; + key { [ plus, asterisk, bracketright ] }; + key { [ ugrave, section, asciitilde ] }; + key { [ ograve, ccedilla, at ] }; + key { [ agrave, degree, numbersign ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/it(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "it(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "it(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "geo" { + include "it(geo)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc" { + include "it(olpc)" +}; + +partial alphanumeric_keys + xkb_symbols "us" { + include "it(us)" +}; + +partial alphanumeric_keys + xkb_symbols "ibm" { + include "it(ibm)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/jp b/nixos/xkb/symbols/sun_vndr/jp new file mode 100644 index 00000000..eb764a6d --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/jp @@ -0,0 +1,179 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys modifier_keys +xkb_symbols "sun_type6_suncompat" { + + include "inet(evdev)" + include "sun_vndr/us(sunbasic)" + + key { [ backslash, bar ], [ prolongedsound ] }; + key { [ 1, exclam ], [ kana_NU ] }; + key { [ 2, quotedbl ], [ kana_FU ] }; + key { [ 3, numbersign ], [ kana_A, kana_a ] }; + key { [ 4, dollar ], [ kana_U, kana_u ] }; + key { [ 5, percent ], [ kana_E, kana_e ] }; + key { [ 6, ampersand ], [ kana_O, kana_o ] }; + key { [ 7, apostrophe ], [ kana_YA, kana_ya ] }; + key { [ 8, parenleft ], [ kana_YU, kana_yu ] }; + key { [ 9, parenright ], [ kana_YO, kana_yo ] }; + key { [ 0 ], [ kana_WA, kana_WO ] }; + key { [ minus, equal ], [ kana_HO ] }; + key { [ asciicircum, asciitilde], [ kana_HE ] }; + + key { [ q, Q ], [ kana_TA ] }; + key { [ w, W ], [ kana_TE ] }; + key { [ e, E ], [ kana_I, kana_i ] }; + key { [ r, R ], [ kana_SU ] }; + key { [ t, T ], [ kana_KA ] }; + key { [ y, Y ], [ kana_N ] }; + key { [ u, U ], [ kana_NA ] }; + key { [ i, I ], [ kana_NI ] }; + key { [ o, O ], [ kana_RA ] }; + key { [ p, P ], [ kana_SE ] }; + key { [ at, grave ], [ voicedsound ] }; + key { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] }; + + key { [ a, A ], [ kana_CHI ] }; + key { [ s, S ], [ kana_TO ] }; + key { [ d, D ], [ kana_SHI ] }; + key { [ f, F ], [ kana_HA ] }; + key { [ g, G ], [ kana_KI ] }; + key { [ h, H ], [ kana_KU ] }; + key { [ j, J ], [ kana_MA ] }; + key { [ k, K ], [ kana_NO ] }; + key { [ l, L ], [ kana_RI ] }; + key { [ semicolon, plus ], [ kana_RE ] }; + key { [ colon, asterisk ], [ kana_KE ] }; + key { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] }; + + key { [ z, Z ], [ kana_TSU, kana_tsu ] }; + key { [ x, X ], [ kana_SA ] }; + key { [ c, C ], [ kana_SO ] }; + key { [ v, V ], [ kana_HI ] }; + key { [ b, B ], [ kana_KO ] }; + key { [ n, N ], [ kana_MI ] }; + key { [ m, M ], [ kana_MO ] }; + key { [ comma, less ], [ kana_NE, kana_comma ] }; + key { [ period, greater ], [ kana_RU, kana_fullstop ] }; + key { [ slash, question ], [ kana_ME, kana_conjunctive ]}; + key { [ backslash, underscore], [ kana_RO ] }; + key { [ backslash, underscore], [ kana_RO ] }; + + key { [ Execute ] }; + key { [ Kanji ] }; + key { [ Henkan_Mode ] }; + key { [ Kana_Lock, Mode_switch ] }; + + key { [ Multi_key ] }; + key { [ SunSys_Req ] }; + + modifier_map Mod3 { Kana_Lock }; + +}; + +partial alphanumeric_keys +xkb_symbols "sun_type6" { + + // include "jp" + // type6 based on "jp" should be provided later + + include "sun_vndr/jp(sun_type6_suncompat)" + +}; + +partial alphanumeric_keys +xkb_symbols "sun_type7_suncompat" { + + include "sun_vndr/jp(sun_type6_suncompat)" + + key { [ 0, asciitilde, kana_WA, kana_WO ] }; + key { [ Henkan_Mode ] }; + key { [ Kana_Lock, Mode_switch ] }; + key { [ Alt_R, Alt_R ] }; + +}; + +partial alphanumeric_keys +xkb_symbols "suncompat" { + + include "sun_vndr/jp(sun_type7_suncompat)" +}; + +partial alphanumeric_keys +xkb_symbols "sun_type7" { + + include "jp" + +}; + +partial alphanumeric_keys + xkb_symbols "106" { + include "jp(106)" +}; + +partial alphanumeric_keys + xkb_symbols "common" { + include "jp(common)" +}; + +partial alphanumeric_keys + xkb_symbols "OADG109A" { + include "jp(OADG109A)" +}; + +partial alphanumeric_keys + xkb_symbols "kana86" { + include "jp(kana86)" +}; + +partial alphanumeric_keys + xkb_symbols "kana" { + include "jp(kana)" +}; + +partial alphanumeric_keys + xkb_symbols "nicola_f_bs" { + include "jp(nicola_f_bs)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "jp(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "hztg_escape" { + include "jp(hztg_escape)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "jp(dvorak)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/kr b/nixos/xkb/symbols/sun_vndr/kr new file mode 100644 index 00000000..4af26f43 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/kr @@ -0,0 +1,82 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]= "Korean (Sun Type 6/7)"; + + include "sun_vndr/us(sunbasic)" + + // A few keys are different + key { [ Hangul ] }; + key { [ Hangul_Hanja ] }; + key { [ backslash, bar, brokenbar ] }; + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/kr(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "kr106" { + include "kr(kr106)" +}; + +partial alphanumeric_keys + xkb_symbols "kr104" { + include "kr(kr104)" +}; + +partial function_keys + xkb_symbols "hw_keys" { + include "kr(hw_keys)" +}; + +partial function_keys + xkb_symbols "ralt_hangul" { + include "kr(ralt_hangul)" +}; + +partial function_keys + xkb_symbols "rctrl_hangul" { + include "kr(rctrl_hangul)" +}; + +partial function_keys + xkb_symbols "ralt_hanja" { + include "kr(ralt_hanja)" +}; + +partial function_keys + xkb_symbols "rctrl_hanja" { + include "kr(rctrl_hanja)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/lt b/nixos/xkb/symbols/sun_vndr/lt new file mode 100644 index 00000000..1aff0b17 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/lt @@ -0,0 +1,125 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Lithuanian (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ grave, asciitilde, notsign, brokenbar ] }; + key { [ aogonek, Aogonek, 1, exclam ] }; + key { [ ccaron, Ccaron, 2, at ] }; + key { [ eogonek, Eogonek, 3, numbersign ] }; + key { [ eabovedot, Eabovedot, 4, dollar ] }; + key { [ iogonek, Iogonek, 5, percent ] }; + key { [ scaron, Scaron, 6, asciicircum ] }; + key { [ uogonek, Uogonek, 7, ampersand ] }; + key { [ umacron, Umacron, 8, asterisk ] }; + key { [ doublelowquotemark, parenleft, 9, parenleft ] }; + key { [ leftdoublequotemark, parenright, 0, parenright ] }; + key { [ minus, underscore, backslash, questiondown ] }; + key { [ zcaron, Zcaron, equal, plus ] }; + + key { [ q, Q, at, Greek_OMEGA ] }; + key { [ w, W, U017F, section ] }; + key { [ e, E, EuroSign ] }; + key { [ r, R, paragraph, registered ] }; + key { [ t, T, tslash, Tslash ] }; + key { [ y, Y, leftarrow, yen ] }; + key { [ u, U, downarrow, uparrow ] }; + key { [ i, I, rightarrow, idotless ] }; + key { [ o, O, oslash, Oslash ] }; + key { [ p, P, thorn, THORN ] }; + key { [ bracketleft, braceleft, dead_diaeresis, dead_abovering ] }; + key { [ bracketright, braceright, dead_tilde, dead_macron ] }; + + key { [ a, A, ae, AE ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ d, D, eth, ETH ] }; + key { [ f, F, dstroke, ordfeminine ] }; + key { [ g, G, eng, ENG ] }; + key { [ h, H, hstroke, Hstroke ] }; + key { [ j, J ] }; + key { [ k, K, kra, ampersand ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ semicolon, colon, dead_acute, dead_doubleacute ] }; + key { [ apostrophe, quotedbl, dead_circumflex, dead_caron ] }; + key { [ backslash, bar, dead_grave, dead_breve ] }; + + key { [ backslash, bar, dead_grave, dead_breve ] }; + key { [ z, Z, guillemotleft, less ] }; + key { [ x, X, guillemotright, greater ] }; + key { [ c, C, cent, copyright ] }; + key { [ v, V, doublelowquotemark, singlelowquotemark ] }; + key { [ b, B, leftdoublequotemark, leftsinglequotemark ] }; + key { [ n, N, rightdoublequotemark, rightsinglequotemark ] }; + key { [ m, M, mu, masculine ] }; + key { [ comma, less, ampersand, multiply ] }; + key { [ period, greater, periodcentered, division ] }; + key { [ slash, question, dead_belowdot, dead_abovedot ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/lt(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "us" { + include "lt(us)" +}; + +partial alphanumeric_keys + xkb_symbols "std" { + include "lt(std)" +}; + +partial alphanumeric_keys + xkb_symbols "ibm" { + include "lt(ibm)" +}; + +partial alphanumeric_keys + xkb_symbols "lekp" { + include "lt(lekp)" +}; + +partial alphanumeric_keys + xkb_symbols "lekpa" { + include "lt(lekpa)" +}; + +partial alphanumeric_keys + xkb_symbols "us_dvorak" { + include "lt(us_dvorak)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/lv b/nixos/xkb/symbols/sun_vndr/lv new file mode 100644 index 00000000..f0ae7a14 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/lv @@ -0,0 +1,165 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Latvian (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ grave, asciitilde, acute, asciitilde ] }; + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ 2, at, twosuperior, oneeighth ] }; + key { [ 3, numbersign, threesuperior, sterling ] }; + key { [ 4, dollar, EuroSign, cent ] }; + key { [ 5, percent, onehalf, threeeighths ] }; + key { [ 6, asciicircum, threequarters, fiveeighths ] }; + key { [ 7, ampersand, braceleft, seveneighths ] }; + key { [ 8, asterisk, bracketleft, trademark ] }; + key { [ 9, parenleft, bracketright, plusminus ] }; + key { [ 0, parenright, braceright, degree ] }; + key { [ minus, underscore, backslash, questiondown ] }; + key { [ equal, plus, endash, emdash ] }; + + key { [ q, Q, q, Q ] }; + key { [ w, W, w, W ] }; + key { [ e, E, emacron, Emacron ] }; + key { [ r, R, rcedilla, Rcedilla ] }; + key { [ t, T, t, T ] }; + key { [ y, Y, y, Y ] }; + key { [ u, U, umacron, Umacron ] }; + key { [ i, I, imacron, Imacron ] }; + key { [ o, O, omacron, Omacron ] }; + key { [ p, P, p, P ] }; + key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; + key { [ bracketright, braceright, guillemotright, rightdoublequotemark ] }; + + key { [ a, A, amacron, Amacron ] }; + key { [ s, S, scaron, Scaron ] }; + key { [ d, D, d, D ] }; + key { [ f, F, f, F ] }; + key { [ g, G, gcedilla, Gcedilla ] }; + key { [ h, H, h, H ] }; + key { [ j, J, j, J ] }; + key { [ k, K, kcedilla, Kcedilla ] }; + key { [ l, L, lcedilla, Lcedilla ] }; + key { [ semicolon, colon, semicolon, colon ] }; + key { [ apostrophe, quotedbl, leftdoublequotemark, doublelowquotemark ] }; + key { [ backslash, bar, degree, brokenbar ] }; + + key { [ backslash, bar, grave, breve ] }; + key { [ z, Z, zcaron, Zcaron ] }; + key { [ x, X, x, X ] }; + key { [ c, C, ccaron, Ccaron ] }; + key { [ v, V, v, V ] }; + key { [ b, B, b, B ] }; + key { [ n, N, ncedilla, Ncedilla ] }; + key { [ m, M, m, M ] }; + key { [ comma, less, U2022, multiply ] }; // bullet + key { [ period, greater, periodcentered, division ] }; + key { [ slash, question, slash, abovedot ] }; + + include "level3(ralt_switch)" +}; + +alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/lv(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "apostrophe" { + include "lv(apostrophe)" +}; + +partial alphanumeric_keys + xkb_symbols "tilde" { + include "lv(tilde)" +}; + +partial alphanumeric_keys + xkb_symbols "fkey" { + include "lv(fkey)" +}; + +partial alphanumeric_keys + xkb_symbols "adapted" { + include "lv(adapted)" +}; + +partial alphanumeric_keys + xkb_symbols "ergonomic" { + include "lv(ergonomic)" +}; + +partial alphanumeric_keys + xkb_symbols "modern" { + include "lv(modern)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "lv(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "ykeydvorak" { + include "lv(ykeydvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "minuskeydvorak" { + include "lv(minuskeydvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorakprogr" { + include "lv(dvorakprogr)" +}; + +partial alphanumeric_keys + xkb_symbols "ykeydvorakprogr" { + include "lv(ykeydvorakprogr)" +}; + +partial alphanumeric_keys + xkb_symbols "minuskeydvorakprogr" { + include "lv(minuskeydvorakprogr)" +}; + +partial alphanumeric_keys + xkb_symbols "colemak" { + include "lv(colemak)" +}; + +partial alphanumeric_keys + xkb_symbols "apostrophecolemak" { + include "lv(apostrophecolemak)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/nl b/nixos/xkb/symbols/sun_vndr/nl new file mode 100644 index 00000000..47cfb20d --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/nl @@ -0,0 +1,104 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Dutch (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ at, section, notsign ] }; + key { [ 1, exclam, onesuperior ] }; + key { [ 2, quotedbl, twosuperior ] }; + key { [ 3, numbersign, threesuperior ] }; + key { [ 4, dollar, onequarter ] }; + key { [ 5, percent, onehalf ] }; + key { [ 6, ampersand, threequarters ] }; + key { [ 7, underscore, sterling ] }; + key { [ 8, parenleft, braceleft ] }; + key { [ 9, parenright, braceright ] }; + key { [ 0, apostrophe, grave ] }; + key { [ slash, question, backslash ] }; + key { [ degree, dead_tilde, dead_cedilla ] }; + + key { [ e, E, EuroSign ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [dead_diaeresis, dead_circumflex ] }; + key { [ asterisk, bar, asciitilde ] }; + + key { [ a, A ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ f, F ] }; + key { [ plus, plusminus ] }; + key { [dead_acute, dead_grave ] }; + key { [ less, greater, asciicircum ] }; + + key { [bracketright, bracketleft, brokenbar ] }; + key { [ z, Z, guillemotleft ] }; + key { [ x, X, guillemotright ] }; + key { [ c, C, cent ] }; + key { [ n, N ] }; + key { [ m, M, mu ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, equal ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/nl(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "std" { + include "nl(std)" +}; + +partial alphanumeric_keys + xkb_symbols "Sundeadkeys" { + include "nl(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "sundeadkeys" { + include "nl(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "nl(mac)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/no b/nixos/xkb/symbols/sun_vndr/no new file mode 100644 index 00000000..fccb21de --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/no @@ -0,0 +1,102 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Norwegian (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ bar, section ] }; + key { [ less, greater ] }; + key { [ apostrophe, asterisk, grave ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, numbersign, sterling ] }; + key { [ 4, currency, dollar ] }; + key { [ 5, percent, asciitilde ] }; + key { [ 6, ampersand, asciicircum ] }; + key { [ 7, slash, braceleft ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, equal, braceright ] }; + key { [ plus, question ] }; + key { [ backslash, dead_grave, dead_acute ] }; + key { [ e, E, EuroSign ] }; + key { [ aring, Aring ] }; + key { [ dead_diaeresis, dead_circumflex, dead_tilde ] }; + key { [ oslash, Oslash ] }; + key { [ ae, AE ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + include "level3(ralt_switch)" + include "kpdl(comma)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/no(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "no(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "no(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "smi" { + include "no(smi)" +}; + +partial alphanumeric_keys + xkb_symbols "smi_nodeadkeys" { + include "no(smi_nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "no(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "mac_nodeadkeys" { + include "no(mac_nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "colemak" { + include "no(colemak)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/pl b/nixos/xkb/symbols/sun_vndr/pl new file mode 100644 index 00000000..43155cef --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/pl @@ -0,0 +1,129 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Polish (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ grave, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + key { [ e, E, eogonek, Eogonek ] }; + key { [ u, U, EuroSign ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ a, A, aogonek, Aogonek ] }; + key { [ s, S, sacute, Sacute ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + key { [ backslash, bar, brokenbar ] }; + + key { [ less, greater, bar, brokenbar ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ n, N, nacute, Nacute ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/pl(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "legacy" { + include "pl(legacy)" +}; + +partial alphanumeric_keys + xkb_symbols "qwertz" { + include "pl(qwertz)" +}; + +partial alphanumeric_keys + xkb_symbols "intl" { + include "pl(intl)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "pl(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak_quotes" { + include "pl(dvorak_quotes)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak_altquotes" { + include "pl(dvorak_altquotes)" +}; + +partial alphanumeric_keys + xkb_symbols "dvp" { + include "pl(dvp)" +}; + +partial alphanumeric_keys + xkb_symbols "szl" { + include "pl(szl)" +}; + +partial alphanumeric_keys + xkb_symbols "csb" { + include "pl(csb)" +}; + +partial alphanumeric_keys + xkb_symbols "ru_phonetic_dvorak" { + include "pl(ru_phonetic_dvorak)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/pt b/nixos/xkb/symbols/sun_vndr/pt new file mode 100644 index 00000000..c467b077 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/pt @@ -0,0 +1,111 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]= "Portuguese (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ less, greater ] }; + key { [ backslash, bar ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, numbersign, sterling ] }; + key { [ 4, dollar, section ] }; + key { [ 5, percent, asciitilde ] }; + key { [ 6, ampersand, asciicircum ] }; + key { [ 7, slash, braceleft ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, equal, braceright ] }; + key { [ apostrophe, question, grave ] }; + key { [ guillemotleft, guillemotright ] }; + key { [ e, E, EuroSign ] }; + key { [ plus, asterisk, dead_diaeresis ] }; + key { [ dead_acute, dead_grave ] }; + key { [ dead_tilde, dead_circumflex ] }; + key { [ ccedilla, Ccedilla ] }; + key { [ masculine, ordfeminine ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/pt(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "Sundeadkeys" { + include "pt(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "sundeadkeys" { + include "pt(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "pt(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "pt(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "mac_sundeadkeys" { + include "pt(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "mac_nodeadkeys" { + include "pt(mac_nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "nativo" { + include "pt(nativo)" +}; + +partial alphanumeric_keys + xkb_symbols "nativo-us" { + include "pt(nativo-us)" +}; + +partial alphanumeric_keys + xkb_symbols "nativo-epo" { + include "pt(nativo-epo)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/ro b/nixos/xkb/symbols/sun_vndr/ro new file mode 100644 index 00000000..2db3f4ee --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/ro @@ -0,0 +1,94 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Romanian (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ 1, exclam, dead_tilde ] }; + key { [ 2, at, dead_caron ] }; + key { [ 3, numbersign, dead_circumflex ] }; + key { [ 4, dollar, dead_breve ] }; + key { [ 5, percent, dead_abovering ] }; + key { [ 6, asciicircum, dead_ogonek ] }; + key { [ 7, ampersand, dead_grave ] }; + key { [ 8, asterisk, dead_abovedot ] }; + key { [ 9, parenleft, dead_acute ] }; + key { [ 0, parenright, dead_doubleacute ] }; + key { [ minus, underscore, dead_diaeresis, endash ] }; + key { [ equal, plus, dead_cedilla, plusminus ] }; + key { [ q, Q, acircumflex, Acircumflex ] }; + key { [ w, W, ssharp, U1e9e ] }; + key { [ e, E, EuroSign ] }; + key { [ t, T, U021b, U021a ] }; + key { [ i, I, icircumflex, Icircumflex ] }; + key { [ p, P, section ] }; + key { [ bracketleft, braceleft, doublelowquotemark ] }; + key { [ bracketright, braceright, rightdoublequotemark ] }; + key { [ a, A, abreve, Abreve ] }; + key { [ s, S, U0219, U0218 ] }; + key { [ d, D, dstroke, Dstroke ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ backslash, bar ] }; + key { [ c, C, copyright ] }; + key { [ comma, less, guillemotleft ] }; + key { [ period, greater, guillemotright ] }; + + key { [ KP_Delete, KP_Decimal, KP_Separator, KP_Separator ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "basic" { + include "sun_vndr/ro(sun_type6)" +}; + +partial alphanumeric_keys +xkb_symbols "std" { + include "ro(std)" +}; + +partial alphanumeric_keys +xkb_symbols "winkeys" { + include "ro(winkeys)" +}; + +partial alphanumeric_keys +xkb_symbols "crh_dobruja" { + include "ro(crh_dobruja)" +}; + +partial alphanumeric_keys +xkb_symbols "ergonomic" { + include "ro(ergonomic)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/ru b/nixos/xkb/symbols/sun_vndr/ru new file mode 100644 index 00000000..2aef65bf --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/ru @@ -0,0 +1,210 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]= "Russian (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key.type[group1]="FOUR_LEVEL"; + + key { [ 1, exclam, 1, exclam ] }; + key { [ 2, quotedbl, 2, at ] }; + key { [ 3, numerosign, 3, numbersign ] }; + key { [ 4, percent, 4, dollar ] }; + key { [ 5, colon, 5, percent ] }; + key { [ 6, comma, 6, asciicircum ] }; + key { [ 7, period, 7, ampersand ] }; + key { [ 8, semicolon, 8, asterisk ] }; + key { [ slash, question, backslash, bar ] }; + key { [ ediaeresis, Ediaeresis, slash, question ] }; + key { [ backslash, bar, backslash, bar ] }; + + key { [ Cyrillic_shorti, Cyrillic_SHORTI, q, Q ] }; + key { [ Cyrillic_tse, Cyrillic_TSE, w, W ] }; + key { [ Cyrillic_u, Cyrillic_U, e, E ] }; + key { [ Cyrillic_ka, Cyrillic_KA, r, R ] }; + key { [ Cyrillic_ie, Cyrillic_IE, t, T ] }; + key { [ Cyrillic_en, Cyrillic_EN, y, Y ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, u, U ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, i, I ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA, o, O ] }; + key { [ Cyrillic_ze, Cyrillic_ZE, p, P ] }; + key { [ Cyrillic_ha, Cyrillic_HA, bracketleft, braceleft ] }; + key { [Cyrillic_hardsign,Cyrillic_HARDSIGN, bracketright, braceright ] }; + key { [ Cyrillic_ef, Cyrillic_EF, a, A ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU, s, S ] }; + key { [ Cyrillic_ve, Cyrillic_VE, d, D ] }; + key { [ Cyrillic_a, Cyrillic_A, f, F ] }; + key { [ Cyrillic_pe, Cyrillic_PE, g, G ] }; + key { [ Cyrillic_er, Cyrillic_ER, h, H ] }; + key { [ Cyrillic_o, Cyrillic_O, j, J ] }; + key { [ Cyrillic_el, Cyrillic_EL, k, K ] }; + key { [ Cyrillic_de, Cyrillic_DE, l, L ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, semicolon, colon ] }; + key { [ Cyrillic_e, Cyrillic_E, apostrophe, quotedbl ] }; + key { [ Cyrillic_ya, Cyrillic_YA, z, Z ] }; + key { [ Cyrillic_che, Cyrillic_CHE, x, X ] }; + key { [ Cyrillic_es, Cyrillic_ES, c, C ] }; + key { [ Cyrillic_em, Cyrillic_EM, v, V ] }; + key { [ Cyrillic_i, Cyrillic_I, b, B ] }; + key { [ Cyrillic_te, Cyrillic_TE, n, N ] }; + key { [Cyrillic_softsign,Cyrillic_SOFTSIGN, m, M ] }; + key { [ Cyrillic_be, Cyrillic_BE, comma, less ] }; + key { [ Cyrillic_yu, Cyrillic_YU, period, greater ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/ru(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "winkeys" { + include "ru(winkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "common" { + include "ru(common)" +}; + +partial alphanumeric_keys + xkb_symbols "legacy" { + include "ru(legacy)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc" { + include "ru(olpc)" +}; + +partial alphanumeric_keys + xkb_symbols "typewriter" { + include "ru(typewriter)" +}; + +partial alphanumeric_keys + xkb_symbols "typewriter-legacy" { + include "ru(typewriter-legacy)" +}; + +partial alphanumeric_keys + xkb_symbols "phonetic" { + include "ru(phonetic)" +}; + +partial alphanumeric_keys + xkb_symbols "phonetic_winkeys" { + include "ru(phonetic_winkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "tt" { + include "ru(tt)" +}; + +partial alphanumeric_keys + xkb_symbols "os_legacy" { + include "ru(os_legacy)" +}; + +partial alphanumeric_keys + xkb_symbols "os_winkeys" { + include "ru(os_winkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "cv" { + include "ru(cv)" +}; + +partial alphanumeric_keys + xkb_symbols "udm" { + include "ru(udm)" +}; + +partial alphanumeric_keys + xkb_symbols "cv_latin" { + include "ru(cv_latin)" +}; + +partial alphanumeric_keys + xkb_symbols "kom" { + include "ru(kom)" +}; + +partial alphanumeric_keys + xkb_symbols "sah" { + include "ru(sah)" +}; + +partial alphanumeric_keys + xkb_symbols "xal" { + include "ru(xal)" +}; + +partial alphanumeric_keys + xkb_symbols "dos" { + include "ru(dos)" +}; + +partial alphanumeric_keys + xkb_symbols "bak" { + include "ru(bak)" +}; + +partial alphanumeric_keys + xkb_symbols "srp" { + include "ru(srp)" +}; + +partial alphanumeric_keys + xkb_symbols "chm" { + include "ru(chm)" +}; + +partial alphanumeric_keys + xkb_symbols "chu" { + include "ru(chu)" +}; + +partial alphanumeric_keys + xkb_symbols "ruu" { + include "ru(ruu)" +}; + +partial alphanumeric_keys + xkb_symbols "winkeys-p" { + include "ru(winkeys-p)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/se b/nixos/xkb/symbols/sun_vndr/se new file mode 100644 index 00000000..6cdc08ab --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/se @@ -0,0 +1,106 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Swedish (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ section, onehalf ] }; + key { [ less, greater, bar ] }; + key { [ 2, quotedbl, at ] }; + key { [ 3, numbersign, sterling ] }; + key { [ 4, currency, dollar ] }; + key { [ 6, ampersand ] }; + key { [ 7, slash, braceleft ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, equal, braceright ] }; + key { [ plus, question, backslash ] }; + key { [ dead_acute, dead_grave ] }; + key { [ e, E, EuroSign ] }; + key { [ aring, Aring ] }; + key { [ dead_diaeresis, asciicircum, asciitilde ] }; + key { [ odiaeresis, Odiaeresis ] }; + key { [ adiaeresis, Adiaeresis ] }; + key { [ apostrophe, asterisk, grave ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; + + include "level3(ralt_switch)" + include "kpdl(comma)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/se(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "se" { + include "se(se)" +}; + +partial alphanumeric_keys + xkb_symbols "nodeadkeys" { + include "se(nodeadkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "se(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "rus" { + include "se(rus)" +}; + +partial alphanumeric_keys + xkb_symbols "smi" { + include "se(smi)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "se(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "svdvorak" { + include "se(svdvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "swl" { + include "se(swl)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/sk b/nixos/xkb/symbols/sun_vndr/sk new file mode 100644 index 00000000..b47fa4be --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/sk @@ -0,0 +1,102 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Slovak (Sun Type 6/7)"; + + include "sun_vndr/us(sun_type6)" + + key { [ semicolon, dead_abovering, grave, asciitilde ] }; + key { [ plus, 1, exclam, asciitilde ] }; + key { [ lcaron, 2, at, dead_caron ] }; + key { [ scaron, 3, numbersign, dead_circumflex ] }; + key { [ ccaron, 4, dollar, dead_breve ] }; + key { [ tcaron, 5, percent, dead_abovering ] }; + key { [ zcaron, 6, asciicircum, dead_ogonek ] }; + key { [ yacute, 7, ampersand, grave ] }; + key { [ aacute, 8, asterisk, dead_abovedot ] }; + key { [ iacute, 9, parenleft, apostrophe ] }; + key { [ eacute, 0, parenright, dead_doubleacute ] }; + key { [ equal, percent, dead_diaeresis, backslash ] }; + key { [ dead_acute, dead_caron, dead_cedilla, minus ] }; + + key { [ q, Q, backslash ] }; + key { [ w, W, bar ] }; + key { [ e, E, EuroSign ] }; + key { [ z, Z ] }; + key { [ p, P, apostrophe ] }; + key { [ uacute, slash, division ] }; + key { [ adiaeresis, parenleft, multiply ] }; + + key { [ s, S, dstroke ] }; + key { [ d, D, Dstroke ] }; + key { [ f, F, bracketleft ] }; + key { [ g, G, bracketright ] }; + key { [ k, K, lstroke ] }; + key { [ l, L, Lstroke ] }; + key { [ ocircumflex, quotedbl, dollar ] }; + key { [ section, exclam, ssharp, U1E9E ] }; + key { [ ncaron, parenright, backslash, bar ] }; + + key { [ backslash, bar, slash, brokenbar ] }; + key { [ y, Y, less ] }; + key { [ x, X, greater, numbersign ] }; + key { [ c, C, ampersand ] }; + key { [ v, V, at ] }; + key { [ b, B, braceleft ] }; + key { [ n, N, braceright ] }; + key { [ comma, question, less ] }; + key { [ period, colon, greater ] }; + key { [ minus, underscore, asterisk ] }; + + include "level3(ralt_switch)" + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/sk(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "bksl" { + include "sk(bksl)" +}; + +partial alphanumeric_keys + xkb_symbols "qwerty" { + include "sk(qwerty)" +}; + +partial alphanumeric_keys + xkb_symbols "qwerty_bksl" { + include "sk(qwerty_bksl)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/solaris b/nixos/xkb/symbols/sun_vndr/solaris new file mode 100644 index 00000000..534667af --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/solaris @@ -0,0 +1,112 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +partial +xkb_symbols "defaults_common" { + + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ XF86PowerOff ] }; + key { [ Cancel ] }; + key { [ Redo ] }; + key { [ SunProps ] }; + key { [ Undo ] }; + key { [ SunFront ] }; + key { [ XF86Copy ] }; + key { [ SunOpen ] }; + key { [ XF86Paste ] }; + key { [ Find ] }; + key { [ XF86Cut ] }; + key { [ Help ] }; + key { [ Linefeed ] }; + + key { [ Alt_L, Alt_L ] }; + key { [ Meta_L ] }; + key { [ Meta_R ] }; + +// The following is needed for virtual hotkeys + + key { [ XF86Sleep ] }; + key { [ XF86ScreenSaver ] }; + key { [ XF86Display ] }; + +// Common Sun Modifiers + + modifier_map Shift { Shift_R, Shift_L }; + modifier_map Mod2 { Num_Lock }; + modifier_map Mod4 { Meta_L, Meta_R }; + +}; + +default partial +xkb_symbols "defaults" { + + include "sun_vndr/solaris(defaults_common)" + + modifier_map Mod1 { Alt_L }; + +}; + +partial +xkb_symbols "defaults_type7jp" { + + include "sun_vndr/solaris(defaults_common)" + + modifier_map Mod1 { Alt_L, Alt_R }; + +}; + +partial +xkb_symbols "sun_compat" { + + key { [ L1, L1, SunStop ] }; + key { [ L2, L2, SunAgain ] }; + key { [ L3, L3, SunProps ] }; + key { [ L4, L4, SunUndo ] }; + key { [ L5, L5, SunFront ] }; + key { [ L6, L6, SunCopy ] }; + key { [ L7, L7, SunOpen ] }; + key { [ L8, L8, SunPaste ] }; + key { [ L9, L9, SunFind ] }; + key { [ L10, L10, SunCut ] }; + +// F11 & F12 are mapped to SunF36 and SunF37 since they were added +// after F11-F35 were already assigned on Sun keyboards + key { [ SunF36 ], [ F11 ] }; + key { [ SunF37 ], [ F12 ] }; + +// These were added to the keyboard much later and simply got mapped +// to their logical names + key { [ Help ] }; + key { [ SunAudioMute, SunVideoDegauss ] }; + key { [ SunAudioLowerVolume, SunVideoLowerBrightness ] }; + key { [ SunAudioRaiseVolume, SunVideoRaiseBrightness ] }; + key { [ XF86Sleep, XF86Hibernate ] }; +}; diff --git a/nixos/xkb/symbols/sun_vndr/tr b/nixos/xkb/symbols/sun_vndr/tr new file mode 100644 index 00000000..21afa025 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/tr @@ -0,0 +1,116 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Turkish (Sun Type 6)"; + + include "sun_vndr/us(sun_type6)" + + key { [ quotedbl, eacute ] }; + key { [ 1, exclam ] }; + key { [ 2, apostrophe ] }; + key { [ 3, asciicircum, numbersign ] }; + key { [ 4, plus, dollar ] }; + key { [ 6, ampersand ] }; + key { [ 7, slash, braceleft ] }; + key { [ 8, parenleft, bracketleft ] }; + key { [ 9, parenright, bracketright ] }; + key { [ 0, equal, braceright ] }; + key { [ asterisk, question, backslash ] }; + key { [ minus, underscore ] }; + + key { [ q, Q, at ] }; + key { [ e, E, EuroSign ] }; + key { [ idotless, I ] }; + key { [ gbreve, Gbreve ] }; + key { [udiaeresis, Udiaeresis, asciitilde ] }; + + key { [ scedilla, Scedilla, acute ] }; + key { [ i, Iabovedot ] }; + key { [ comma, semicolon, grave ] }; + + key { [ less, greater, bar ] }; + key { [odiaeresis, Odiaeresis ] }; + key { [ ccedilla, Ccedilla ] }; + key { [ period, colon ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "basic" { + include "sun_vndr/tr(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "f" { + include "tr(f)" +}; + +partial alphanumeric_keys + xkb_symbols "alt" { + include "tr(alt)" +}; + +partial alphanumeric_keys + xkb_symbols "Sundeadkeys" { + include "tr(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "sundeadkeys" { + include "tr(basic)" +}; + +partial alphanumeric_keys + xkb_symbols "ku" { + include "tr(ku)" +}; + +partial alphanumeric_keys + xkb_symbols "ku_f" { + include "tr(ku_f)" +}; + +partial alphanumeric_keys + xkb_symbols "ku_alt" { + include "tr(ku_alt)" +}; + +partial alphanumeric_keys + xkb_symbols "intl" { + include "tr(intl)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc" { + include "tr(olpc)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/tw b/nixos/xkb/symbols/sun_vndr/tw new file mode 100644 index 00000000..39b532c1 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/tw @@ -0,0 +1,60 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]= "Taiwanese (Sun Type 6/7)"; + + include "sun_vndr/us(sunbasic)" + + key { [ Henkan_Mode ] }; + key { [ backslash, bar, brokenbar ] }; + +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/tw(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "tw" { + include "tw(tw)" +}; + +partial alphanumeric_keys + xkb_symbols "indigenous" { + include "tw(indigenous)" +}; + +partial alphanumeric_keys + xkb_symbols "saisiyat" { + include "tw(saisiyat)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/ua b/nixos/xkb/symbols/sun_vndr/ua new file mode 100644 index 00000000..2fbbe656 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/ua @@ -0,0 +1,125 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]="Ukrainian (Sun Type 6)"; + + include "sun_vndr/us(sun_type6)" + + key { [ grave, asciitilde, apostrophe, asciitilde ] }; + key { [ 1, exclam, 1, exclam ] }; + key { [ 2, at, 2, quotedbl ] }; + key { [ 3, numbersign, 3, numbersign ] }; + key { [ 4, dollar, 4, asterisk ] }; + key { [ 5, percent, 5, colon ] }; + key { [ 6, asciicircum, 6, comma ] }; + key { [ 7, ampersand, 7, period ] }; + key { [ 8, asterisk, 8, semicolon ] }; + key { [ 9, parenleft, 9, parenleft ] }; + key { [ 0, parenright, 0, parenright ] }; + key { [ minus, underscore, minus, underscore ] }; + key { [ equal, plus, equal, plus ] }; + + key { [ q, Q, Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ w, W, Cyrillic_tse, Cyrillic_TSE ] }; + key { [ e, E, Cyrillic_u, Cyrillic_U ] }; + key { [ r, R, Cyrillic_ka, Cyrillic_KA ] }; + key { [ t, T, Cyrillic_ie, Cyrillic_IE ] }; + key { [ y, Y, Cyrillic_en, Cyrillic_EN ] }; + key { [ u, U, Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ i, I, Cyrillic_sha, Cyrillic_SHA ] }; + key { [ o, O, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ p, P, Cyrillic_ze, Cyrillic_ZE ] }; + key { [ bracketleft, braceleft, Cyrillic_ha, Cyrillic_HA ] }; + key { [ bracketright, braceright, Ukrainian_yi, Ukrainian_YI ] }; + + key { [ a, A, Cyrillic_ef, Cyrillic_EF ] }; + key { [ s, S, Ukrainian_i, Ukrainian_I ] }; + key { [ d, D, Cyrillic_ve, Cyrillic_VE ] }; + key { [ f, F, Cyrillic_a, Cyrillic_A ] }; + key { [ g, G, Cyrillic_pe, Cyrillic_PE ] }; + key { [ h, H, Cyrillic_er, Cyrillic_ER ] }; + key { [ j, J, Cyrillic_o, Cyrillic_O ] }; + key { [ k, K, Cyrillic_el, Cyrillic_EL ] }; + key { [ l, L, Cyrillic_de, Cyrillic_DE ] }; + key { [ semicolon, colon, Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ apostrophe, quotedbl, Ukrainian_ie, Ukrainian_IE ] }; + key { [ backslash, bar, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + + key { [ less, greater, slash, bar ] }; + key { [ z, Z, Cyrillic_ya, Cyrillic_YA ] }; + key { [ x, X, Cyrillic_che, Cyrillic_CHE ] }; + key { [ c, C, Cyrillic_es, Cyrillic_ES ] }; + key { [ v, V, Cyrillic_em, Cyrillic_EM ] }; + key { [ n, N, Cyrillic_te, Cyrillic_TE ] }; + key { [ b, B, Cyrillic_i, Cyrillic_I ] }; + key { [ m, M, Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; + key { [ comma, less, Cyrillic_be, Cyrillic_BE ] }; + key { [ period, greater, Cyrillic_yu, Cyrillic_YU ] }; + key { [ slash, question, slash, question ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/ua(sun_type6)" +}; + +partial alphanumeric_keys + xkb_symbols "unicode" { + include "ua(unicode)" +}; + +partial alphanumeric_keys + xkb_symbols "legacy" { + include "ua(legacy)" +}; + +partial alphanumeric_keys + xkb_symbols "winkeys" { + include "ua(winkeys)" +}; + +partial alphanumeric_keys + xkb_symbols "typewriter" { + include "ua(typewriter)" +}; + +partial alphanumeric_keys + xkb_symbols "phonetic" { + include "ua(phonetic)" +}; + +partial alphanumeric_keys + xkb_symbols "homophonic" { + include "ua(homophonic)" +}; diff --git a/nixos/xkb/symbols/sun_vndr/us b/nixos/xkb/symbols/sun_vndr/us new file mode 100644 index 00000000..51631460 --- /dev/null +++ b/nixos/xkb/symbols/sun_vndr/us @@ -0,0 +1,260 @@ +// +// Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, provided that the above +// copyright notice(s) and this permission notice appear in all copies of +// the Software and that both the above copyright notice(s) and this +// permission notice appear in supporting documentation. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// +// Except as contained in this notice, the name of a copyright holder +// shall not be used in advertising or otherwise to promote the sale, use +// or other dealings in this Software without prior written authorization +// of the copyright holder. +// + +default partial alphanumeric_keys +xkb_symbols "sunbasic" { + + include "us(basic)" + include "capslock(capslock)" + include "srvr_ctrl(xfree86)" + +}; + +partial alphanumeric_keys +xkb_symbols "sun_type6" { + + name[Group1]= "English (US, Sun Type 6/7)"; + + include "sun_vndr/us(sunbasic)" + include "eurosign(4)" + include "level3(ralt_switch)" + + key { [ Multi_key ] }; + key { [ SunSys_Req ] }; +}; + +partial alphanumeric_keys + xkb_symbols "basic" { + include "sun_vndr/us(sunbasic)" +}; + +partial alphanumeric_keys + xkb_symbols "euro" { + include "us(euro)" +}; + +partial alphanumeric_keys + xkb_symbols "ibm238l" { + include "us(ibm238l)" +}; + +partial alphanumeric_keys + xkb_symbols "intl" { + include "us(intl)" +}; + +partial alphanumeric_keys + xkb_symbols "alt-intl" { + include "us(alt-intl)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak" { + include "us(dvorak)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak-intl" { + include "us(dvorak-intl)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak-alt-intl" { + include "us(dvorak-alt-intl)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak-l" { + include "us(dvorak-l)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak-r" { + include "us(dvorak-r)" +}; + +partial alphanumeric_keys + xkb_symbols "dvorak-classic" { + include "us(dvorak-classic)" +}; + +partial alphanumeric_keys + xkb_symbols "dvp" { + include "us(dvp)" +}; + +partial alphanumeric_keys + xkb_symbols "rus" { + include "us(rus)" +}; + +partial alphanumeric_keys + xkb_symbols "mac" { + include "us(mac)" +}; + +partial alphanumeric_keys + xkb_symbols "colemak" { + include "us(colemak)" +}; + +partial alphanumeric_keys + xkb_symbols "altgr-intl" { + include "us(altgr-intl)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc" { + include "us(olpc)" +}; + +partial alphanumeric_keys + xkb_symbols "olpc2" { + include "us(olpc2)" +}; + +partial alphanumeric_keys + xkb_symbols "olpcm" { + include "us(olpcm)" +}; + +partial alphanumeric_keys + xkb_symbols "chr" { + include "us(chr)" +}; + +partial alphanumeric_keys + xkb_symbols "hbs" { + include "us(hbs)" +}; + +partial alphanumeric_keys + xkb_symbols "workman" { + include "us(workman)" +}; + +partial alphanumeric_keys + xkb_symbols "workman-intl" { + include "us(workman-intl)" +}; + +partial alphanumeric_keys + xkb_symbols "workman-p" { + include "us(workman-p)" +}; + +partial alphanumeric_keys + xkb_symbols "norman" { + include "us(norman)" +}; + +partial alphanumeric_keys + xkb_symbols "carpalx" { + include "us(carpalx)" +}; + +partial alphanumeric_keys + xkb_symbols "carpalx-intl" { + include "us(carpalx-intl)" +}; + +partial alphanumeric_keys + xkb_symbols "carpalx-altgr-intl" { + include "us(carpalx-altgr-intl)" +}; + +partial alphanumeric_keys + xkb_symbols "carpalx-full" { + include "us(carpalx-full)" +}; + +partial alphanumeric_keys + xkb_symbols "carpalx-full-intl" { + include "us(carpalx-full-intl)" +}; + +partial alphanumeric_keys + xkb_symbols "carpalx-full-altgr-intl" { + include "us(carpalx-full-altgr-intl)" +}; + +partial alphanumeric_keys + xkb_symbols "cz_sk_de" { + include "us(cz_sk_de)" +}; + +partial alphanumeric_keys + xkb_symbols "scn" { + include "us(scn)" +}; + +partial alphanumeric_keys + xkb_symbols "intl-unicode" { + include "us(intl-unicode)" +}; + +partial alphanumeric_keys + xkb_symbols "alt-intl-unicode" { + include "us(alt-intl-unicode)" +}; + +partial alphanumeric_keys + xkb_symbols "ats" { + include "us(ats)" +}; + +partial alphanumeric_keys + xkb_symbols "crd" { + include "us(crd)" +}; + +partial alphanumeric_keys + xkb_symbols "3l" { + include "us(3l)" +}; + +partial alphanumeric_keys + xkb_symbols "3l-cros" { + include "us(3l-cros)" +}; + +partial alphanumeric_keys + xkb_symbols "3l-emacs" { + include "us(3l-emacs)" +}; + +partial alphanumeric_keys + xkb_symbols "drix" { + include "us(drix)" +}; + +partial alphanumeric_keys + xkb_symbols "de_se_fi" { + include "us(de_se_fi)" +}; diff --git a/nixos/xkb/symbols/sy b/nixos/xkb/symbols/sy new file mode 100644 index 00000000..5526b5db --- /dev/null +++ b/nixos/xkb/symbols/sy @@ -0,0 +1,132 @@ +// Keyboard layouts for Syria. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "ara(basic)" + + name[Group1]= "Arabic (Syria)"; +}; + +partial alphanumeric_keys +xkb_symbols "syc" { + + name[Group1]= "Syriac"; + + key {[ U070F, U032E, Arabic_shadda ]}; + key {[ 1, exclam, U0701 ]}; + key {[ 2, U030A, U0702 ]}; + key {[ 3, U0325, U0703 ]}; + key {[ 4, U0749, U0704 ]}; + key {[ 5, U2670, U0705 ]}; + key {[ 6, U2671, U0708 ]}; + key {[ 7, U070A, U0709 ]}; + key {[ 8, guillemotright, U070B ]}; + key {[ 9, parenright, U070C ]}; + key {[ 0, parenleft, U070D ]}; + key {[ minus, guillemotleft, U250C ]}; + key {[ equal, plus, U2510 ]}; + + key {[ U0714, U0730, Arabic_fatha ]}; + key {[ U0728, U0733, Arabic_fathatan ]}; + key {[ U0716, U0736, Arabic_damma ]}; + key {[ U0729, U073A, Arabic_dammatan ]}; + key {[ U0726, U073D, Arabic_madda_above ]}; + key {[ U071C, U0740, Arabic_hamza_above ]}; + key {[ U0725, U0741, U0747 ]}; + key {[ U0717, U0308, U0743 ]}; + key {[ U071E, U0304, U0745 ]}; + key {[ U071A, U0307, U032D ]}; + key {[ U0713, U0303 ]}; + key {[ U0715, U074A ]}; + key {[ U0706, colon ]}; + + key {[ U072B, U0731, Arabic_kasra ]}; + key {[ U0723, U0734, Arabic_kasratan ]}; + key {[ U071D, U0737 ]}; + key {[ U0712, U073B, Arabic_hamza ]}; + key {[ U0720, U073E, Arabic_hamza_below ]}; + key {[ U0710, U0711, Arabic_superscript_alef ]}; + key {[ U072C, Arabic_tatweel, U0748 ]}; + key {[ U0722, U0324, U0744 ]}; + key {[ U0721, U0331, U0746 ]}; + key {[ U071F, U0323 ]}; + key {[ U071B, U0330 ]}; + + key {[ bracketright, U0732, Arabic_sukun ]}; + key {[ bracketleft, U0735 ]}; + key {[ U0724, U0738, U200D ]}; + key {[ U072A, U073C, U200C ]}; + key {[ U0727, U073F, U200E ]}; + key {[ U0700, U0739, U200F ]}; + key {[ period, U0742 ]}; + key {[ U0718, Arabic_comma ]}; + key {[ U0719, Arabic_semicolon ]}; + key {[ U0707, Arabic_question_mark ]}; + + // Space, plus zero-width non-joiner on level 2: + include "nbsp(zwnj2)" +}; + +partial alphanumeric_keys +xkb_symbols "syc_phonetic" { + + include "sy(syc)" + + name[Group1]= "Syriac (phonetic)"; + + key {[ U0729, U0730, Arabic_fatha ]}; + key {[ U0718, U0733, Arabic_fathatan ]}; + key {[ U0716, U0736, Arabic_damma ]}; + key {[ U072A, U073A, Arabic_dammatan ]}; + key {[ U072C, U073D, Arabic_madda_above ]}; + key {[ U071D, U0740, Arabic_hamza_above ]}; + key {[ U071C, U0741, U0747 ]}; + key {[ U0725, U0308, U0743 ]}; + key {[ U0727, U0304, U0745 ]}; + key {[ U0726, U0307, U032D ]}; + key {[ bracketright, U0303 ]}; + key {[ bracketleft, U074A ]}; + key {[ U0706, colon ]}; + + key {[ U0710, U0731, Arabic_kasra ]}; + key {[ U0723, U0734, Arabic_kasratan ]}; + key {[ U0715, U0737 ]}; + key {[ U0714, U073B, Arabic_hamza ]}; + key {[ U0713, U073E, Arabic_hamza_below ]}; + key {[ U0717, U0711, Arabic_superscript_alef ]}; + key {[ U071B, Arabic_tatweel, U0748 ]}; + key {[ U071F, U0324, U0744 ]}; + key {[ U0720, U0331, U0746 ]}; + key {[ U071A, U0323 ]}; + key {[ U071E, U0330 ]}; + + key {[ U0719, U0732, Arabic_sukun ]}; + key {[ U0728, U0735 ]}; + key {[ U0724, U0738, U200D ]}; + key {[ U072B, U073C, U200C ]}; + key {[ U0712, U073F, U200E ]}; + key {[ U0722, U0739, U200F ]}; + key {[ U0721, U0742 ]}; + key {[ U0700, Arabic_comma ]}; + key {[ period, Arabic_semicolon ]}; + key {[ U0707, Arabic_question_mark ]}; +}; + +partial alphanumeric_keys +xkb_symbols "ku" { + include "tr(ku)" + name[Group1]= "Kurdish (Syria, Latin Q)"; +}; + +partial alphanumeric_keys +xkb_symbols "ku_f" { + include "tr(ku_f)" + name[Group1]= "Kurdish (Syria, F)"; +}; + +partial alphanumeric_keys +xkb_symbols "ku_alt" { + include "tr(ku_alt)" + name[Group1]= "Kurdish (Syria, Latin Alt-Q)"; +}; diff --git a/nixos/xkb/symbols/terminate b/nixos/xkb/symbols/terminate new file mode 100644 index 00000000..60c24795 --- /dev/null +++ b/nixos/xkb/symbols/terminate @@ -0,0 +1,7 @@ +default partial modifier_keys +xkb_symbols "ctrl_alt_bksp" { + key { + type="CTRL+ALT", + symbols[Group1] = [ NoSymbol, NoSymbol, NoSymbol, NoSymbol, Terminate_Server ] + }; +}; diff --git a/nixos/xkb/symbols/tg b/nixos/xkb/symbols/tg new file mode 100644 index 00000000..bbca3b42 --- /dev/null +++ b/nixos/xkb/symbols/tg @@ -0,0 +1,69 @@ +// Keyboard layout for Togo. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "fr(azerty)" + + name[Group1]="French (Togo)"; + +// This is based on French AZERTY-Keyboard layout that is mostly used in Togo. +// It includes symbols used to write different local languages in Togo. +// Created 2015 by Globalbility Togo (www.globalbility.org) +// Authors: Issaka Ouro-Wétchiré, Caroline Riefstahl, Mats Blakstad +// +// LAYOUT OVERVIEW +// ____ +// | 1 3| 1 = Shift, 3 = AltGr + Shift (AltGr is the right side alt key) +// | 2 4| 2 = normal, 4 = AltGr +// ¯¯¯¯ +// ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______ +// | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ° | + | <-- | +// | ² | & | é ~| " #| ' {| ( [| - || è `| _ \| ç ^| à @| ) ]| = }| | +// ======================================================================== +// | |<- | A | Z Ʒ| E | R Ɛ| T Ɗ| Y Ƴ| U Ʊ| I Ɩ| O Ɔ| P | ¨ | $ | , | +// | ->| | a | z ʒ| e €| r ɛ| t ɗ| y ƴ| u ʊ| i ɩ| o ɔ| p | ^ ̌| £ ¤| <-' | +// ===================================================================¬ | +// | | Q Ǝ| S | D Ɖ| F Ƒ| G Ɣ| H Ĥ| J Ɨ| K | L | M Ŋ| % | µ | | +// | MAJ | q ǝ| s | d ɖ| f ƒ| g ɣ| h ɦ| j ɨ| k | l | m ɲ| ù `| * ́| | +// ======================================================================== +// | ^ | > | W | X | C | V Ʋ| B Ɓ| N Ŋ| ? | . | / | § | | | +// | | | < | w | x | c | v ʋ| b ɓ| n ŋ| , | ; | : ¯| ! ~| | | +// ======================================================================== +// | | | | | | | | | +// | Ctrl | Super| Alt | Space Nobreakspace | AltGr | Super|Menu | Ctrl | +// ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯ +// +// The different local languages in Togo all together use 17 symbols not found +// in the French language: Ʒ, ɛ, Ɗ, Ƴ, Ʊ, Ɩ, Ɔ, Ǝ, Ɖ, Ƒ, Ɣ, Ĥ, Ɨ, Ɲ, Ʋ, Ɓ, Ŋ. +// Togolese local languages use 9 tone markers: acute (´), grave (`), circumflex (ˆ), +// caron (ˇ), macron (¯), tilde (~), tilde+acute ( ̃́), tilde+grave ( ̃̀), diaeresis (¨). +// The vowels can use these tone markers except diaeresis. +// 'Y' is not used as a vowel in most local languages, and can only use diaeresis. +// Nasal consonants (m, n, ŋ) can only have have accent tones (acute and grave). + + key {[ z, Z, ezh, EZH ]}; // ʒ Ʒ + key {[ r, R, U025B, U0190 ]}; // ɛ Ɛ + key {[ t, T, U0257, U018A ]}; // ɗ Ɗ + key {[ y, Y, U01B4, U01B3 ]}; // ƴ Ƴ + key {[ u, U, U028A, U01B1 ]}; // ʊ Ʊ + key {[ i, I, U0269, U0196 ]}; // ɩ Ɩ + key {[ o, O, U0254, U0186 ]}; // ɔ Ɔ + key {[ dead_circumflex,dead_diaeresis, dead_caron ]}; + + key {[ q, Q, U01DD, U018E ]}; // ǝ Ǝ + key {[ d, D, U0256, U0189 ]}; // ɖ Ɖ + key {[ f, F, U0192, U0191 ]}; // ƒ Ƒ + key {[ g, G, U0263, U0194 ]}; // ɣ Ɣ + key {[ h, H, U0266, U0124 ]}; // ɦ Ĥ + key {[ j, J, U0268, U0197 ]}; // ɨ Ɨ + key {[ m, M, U0272, U019D ]}; // ɲ Ɲ + key {[ ugrave, percent, dead_grave ]}; + key {[ asterisk, mu, dead_acute ]}; + + key {[ v, V, U028B, U01B2 ]}; // ʋ Ʋ + key {[ b, B, U0253, U0181 ]}; // ɓ Ɓ + key {[ n, N, U014B, U014A ]}; // ŋ Ŋ + key {[ colon, slash, dead_macron ]}; + key {[ exclam, section, dead_tilde ]}; +}; diff --git a/nixos/xkb/symbols/th b/nixos/xkb/symbols/th new file mode 100644 index 00000000..cd37852e --- /dev/null +++ b/nixos/xkb/symbols/th @@ -0,0 +1,197 @@ +// Keyboard layouts for Thailand. + +// Conversion to Thai keysyms by Pablo Saratxaga . + +default partial alphanumeric_keys +xkb_symbols "basic" { + + name[Group1]= "Thai"; + + key {[ underscore, percent ]}; + key {[ Thai_lakkhangyao, plus ]}; + key {[ slash, Thai_leknung ]}; + key {[ minus, Thai_leksong ]}; + key {[ Thai_phosamphao, Thai_leksam ]}; + key {[ Thai_thothung, Thai_leksi ]}; + key {[ Thai_sarau, Thai_sarauu ]}; + key {[ Thai_saraue, Thai_baht ]}; + key {[ Thai_khokhwai, Thai_lekha ]}; + key {[ Thai_totao, Thai_lekhok ]}; + key {[ Thai_chochan, Thai_lekchet ]}; + key {[ Thai_khokhai, Thai_lekpaet ]}; + key {[ Thai_chochang, Thai_lekkao ]}; + + key {[ Thai_maiyamok, Thai_leksun ]}; + key {[ Thai_saraaimaimalai, quotedbl ]}; + key {[ Thai_saraam, Thai_dochada ]}; + key {[ Thai_phophan, Thai_thonangmontho ]}; + key {[ Thai_saraa, Thai_thothong ]}; + key {[ Thai_maihanakat, Thai_nikhahit ]}; + key {[ Thai_saraii, Thai_maitri ]}; + key {[ Thai_rorua, Thai_nonen ]}; + key {[ Thai_nonu, Thai_paiyannoi ]}; + key {[ Thai_yoyak, Thai_yoying ]}; + key {[ Thai_bobaimai, Thai_thothan ]}; + key {[ Thai_loling, comma ]}; + + key {[ Thai_fofan, Thai_ru ]}; + key {[ Thai_hohip, Thai_khorakhang ]}; + key {[ Thai_kokai, Thai_topatak ]}; + key {[ Thai_dodek, Thai_sarao ]}; + key {[ Thai_sarae, Thai_chochoe ]}; + key {[ Thai_maitho, Thai_maitaikhu ]}; + key {[ Thai_maiek, Thai_maichattawa]}; + key {[ Thai_saraaa, Thai_sorusi ]}; + key {[ Thai_sosua, Thai_sosala ]}; + key {[ Thai_wowaen, Thai_soso ]}; + key {[ Thai_ngongu, period ]}; + key {[ Thai_khokhuat, Thai_khokhon ]}; + + key {[ Thai_phophung, parenleft ]}; + key {[ Thai_popla, parenright ]}; + key {[ Thai_saraae, Thai_choching ]}; + key {[ Thai_oang, Thai_honokhuk ]}; + key {[ Thai_sarai, Thai_phinthu ]}; + key {[ Thai_sarauee, Thai_thanthakhat]}; + key {[ Thai_thothahan, question ]}; + key {[ Thai_moma, Thai_thophuthao ]}; + key {[ Thai_saraaimaimuan, Thai_lochula ]}; + key {[ Thai_fofa, Thai_lu ]}; +}; + + +// Pattachote layout, by Visanu Euarchukiati . +partial alphanumeric_keys +xkb_symbols "pat" { + + name[Group1]= "Thai (Pattachote)"; + + key {[ underscore, Thai_baht ]}; + key {[ equal, plus ]}; + key {[ Thai_leksong, quotedbl ]}; + key {[ Thai_leksam, slash ]}; + key {[ Thai_leksi, comma ]}; + key {[ Thai_lekha, question ]}; + key {[ Thai_sarauu, Thai_sarau ]}; + key {[ Thai_lekchet, underscore ]}; + key {[ Thai_lekpaet, period ]}; + key {[ Thai_lekkao, parenleft ]}; + key {[ Thai_leksun, parenright ]}; + key {[ Thai_leknung, minus ]}; + key {[ Thai_lekhok, percent ]}; + + key {[ Thai_maitaikhu, Thai_maitri ]}; + key {[ Thai_totao, Thai_ru ]}; + key {[ Thai_yoyak, Thai_maiyamok ]}; + key {[ Thai_oang, Thai_yoying ]}; + key {[ Thai_rorua, Thai_sorusi ]}; + key {[ Thai_maiek, Thai_saraue ]}; + key {[ Thai_dodek, Thai_fofa ]}; + key {[ Thai_moma, Thai_soso ]}; + key {[ Thai_wowaen, Thai_thothung ]}; + key {[ Thai_saraae, Thai_thophuthao ]}; + key {[ Thai_saraaimaimuan, Thai_paiyannoi ]}; + key {[ Thai_chochoe, Thai_lu ]}; + + key {[ Thai_maitho, Thai_maichattawa]}; + key {[ Thai_thothahan, Thai_thothong ]}; + key {[ Thai_ngongu, Thai_saraam ]}; + key {[ Thai_kokai, Thai_nonen ]}; + key {[ Thai_maihanakat, Thai_thanthakhat]}; + key {[ Thai_saraii, Thai_sarauee ]}; + key {[ Thai_saraaa, Thai_phophung ]}; + key {[ Thai_nonu, Thai_chochang ]}; + key {[ Thai_sarae, Thai_sarao ]}; + key {[ Thai_saraaimaimalai, Thai_khorakhang ]}; + key {[ Thai_khokhai, Thai_thonangmontho ]}; + key {[ Thai_lakkhangyao, Thai_nikhahit ]}; + + key {[ Thai_bobaimai, Thai_dochada ]}; + key {[ Thai_popla, Thai_topatak ]}; + key {[ Thai_loling, Thai_thothan ]}; + key {[ Thai_hohip, Thai_phosamphao ]}; + key {[ Thai_sarai, Thai_phinthu ]}; + key {[ Thai_khokhwai, Thai_sosala ]}; + key {[ Thai_sosua, Thai_honokhuk ]}; + key {[ Thai_saraa, Thai_fofan ]}; + key {[ Thai_chochan, Thai_choching ]}; + key {[ Thai_phophan, Thai_lochula ]}; +}; + + +// Official standard (Kedmanee), by Theppitak Karoonboonyanan . +partial alphanumeric_keys +xkb_symbols "tis" { + + include "th(basic)" + + name[Group1]= "Thai (TIS-820.2538)"; + + key {[ U0e4f, U0e5b ]}; // ๏ ๛ + key {[ Thai_baht, Thai_lakkhangyao]}; + key {[ Thai_saraue, U0e4e ]}; // ๎ + key {[ Thai_nonu, Thai_paiyannoi, U0e5a], type[group1]="THREE_LEVEL"}; // ๚ + key {[ Thai_khokhon, Thai_khokhuat ]}; +}; + + +partial alphanumeric_keys +xkb_symbols "olpc" { + + // #HW-SPECIFIC + + name[Group1]= "Thai"; + + key {[ U0E4F, U0E5B ]}; + key {[ U0E3F, U0E45 ]}; + key {[ slash, U0E51 ]}; + key {[ minus, U0E52 ]}; + key {[ U0E20, U0E53 ]}; + key {[ U0E16, U0E54 ]}; + key {[ U0E38, U0E39 ]}; + key {[ U0E36, U0E4E ]}; + key {[ U0E04, U0E55 ]}; + key {[ U0E15, U0E56 ]}; + key {[ U0E08, U0E57 ]}; + key {[ U0E02, U0E58 ]}; + key {[ U0E0A, U0E59 ]}; + + key {[ U0E46, U0E50 ]}; + key {[ U0E44, quotedbl ]}; + key {[ U0E33, U0E0E ]}; + key {[ U0E1E, U0E11 ]}; + key {[ U0E30, U0E18 ]}; + key {[ U0E31, U0E4D ]}; + key {[ U0E35, U0E4A ]}; + key {[ U0E23, U0E13 ]}; + key {[ U0E19, U0E2F ]}; + key {[ U0E22, U0E0D ]}; + key {[ U0E1A, U0E10 ]}; + key {[ U0E25, comma ]}; + + key {[ U0E1F, U0E24 ]}; + key {[ U0E2B, U0E06 ]}; + key {[ U0E01, U0E0F ]}; + key {[ U0E14, U0E42 ]}; + key {[ U0E40, U0E0C ]}; + key {[ U0E49, U0E47 ]}; + key {[ U0E48, U0E4B ]}; + key {[ U0E32, U0E29 ]}; + key {[ U0E2A, U0E28 ]}; + key {[ U0E27, U0E0B ]}; + key {[ U0E07, period ]}; + key {[ U0E05, U0E03 ]}; + + key {[ U0E1C, parenleft ]}; + key {[ U0E1B, parenright ]}; + key {[ U0E41, U0E09 ]}; + key {[ U0E2D, U0E2E ]}; + key {[ U0E34, U0E3A ]}; + key {[ U0E37, U0E4C ]}; + key {[ U0E17, question ]}; + key {[ U0E21, U0E12 ]}; + key {[ U0E43, U0E2C ]}; + key {[ U0E1D, U0E26 ]}; + + include "group(olpc)" +}; diff --git a/nixos/xkb/symbols/tj b/nixos/xkb/symbols/tj new file mode 100644 index 00000000..6dca9336 --- /dev/null +++ b/nixos/xkb/symbols/tj @@ -0,0 +1,133 @@ +// Keyboard layouts for Tajikistan. + +// --------------------------------------------------------------------- +// The Official Standard Tojiki keyboard layout. +// --------------------------------------------------------------------- +// Original author: Victor Ibragimov , 2008. +// --------------------------------------------------------------------- +default partial alphanumeric_keys +xkb_symbols "basic" +{ + name[Group1] = "Tajik"; + + key {[ Cyrillic_io, Cyrillic_IO ]}; // ё Ё + key {[ 1, exclam, section ]}; // 1 ! § + key {[ 2, quotedbl, guillemotleft, guillemotright ]}; // 2 " « » + key {[ 3, numerosign ]}; // 3 № + key {[ 4, semicolon ]}; // 4 ; + key {[ 5, percent ]}; // 5 % + key {[ 6, colon, U2013 ]}; // 6 : – + key {[ 7, question, ampersand ]}; // 7 ? & + key {[ 8, asterisk ]}; // 8 * + key {[ 9, parenleft ]}; // 9 ( + key {[ 0, parenright, degree ]}; // 0 ) ° + key {[ Cyrillic_ghe_bar, Cyrillic_GHE_bar, minus, underscore ]}; // ғ Ғ - _ + key {[ Cyrillic_u_macron, Cyrillic_U_macron, equal, plus ]}; // ӯ Ӯ = + + + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; // й Й + key {[ Cyrillic_ka_descender, Cyrillic_KA_descender ]}; // қ Қ + key {[ Cyrillic_u, Cyrillic_U ]}; // у У + key {[ Cyrillic_ka, Cyrillic_KA ]}; // к К + key {[ Cyrillic_ie, Cyrillic_IE ]}; // е Е + key {[ Cyrillic_en, Cyrillic_EN ]}; // н Н + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; // г Г + key {[ Cyrillic_sha, Cyrillic_SHA ]}; // ш Ш + key {[ Cyrillic_ha_descender, Cyrillic_HA_descender ]}; // ҳ Ҳ + key {[ Cyrillic_ze, Cyrillic_ZE ]}; // з З + key {[ Cyrillic_ha, Cyrillic_HA ]}; // х Х + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; // ъ Ъ + + key {[ Cyrillic_ef, Cyrillic_EF ]}; // ф Ф + key {[ Cyrillic_che_descender, Cyrillic_CHE_descender ]}; // ҷ Ҷ + key {[ Cyrillic_ve, Cyrillic_VE ]}; // в В + key {[ Cyrillic_a, Cyrillic_A ]}; // а А + key {[ Cyrillic_pe, Cyrillic_PE ]}; // п П + key {[ Cyrillic_er, Cyrillic_ER ]}; // р Р + key {[ Cyrillic_o, Cyrillic_O ]}; // о О + key {[ Cyrillic_el, Cyrillic_EL ]}; // л Л + key {[ Cyrillic_de, Cyrillic_DE ]}; // д Д + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; // ж Ж + key {[ Cyrillic_e, Cyrillic_E ]}; // э Э + key {[ backslash, slash ]}; // \ / + + key {[ slash, bar ]}; // / | + key {[ Cyrillic_ya, Cyrillic_YA ]}; // я Я + key {[ Cyrillic_che, Cyrillic_CHE ]}; // ч Ч + key {[ Cyrillic_es, Cyrillic_ES ]}; // с С + key {[ Cyrillic_em, Cyrillic_EM ]}; // м М + key {[ Cyrillic_i, Cyrillic_I ]}; // и И + key {[ Cyrillic_te, Cyrillic_TE ]}; // т Т + key {[ Cyrillic_i_macron, Cyrillic_I_macron ]}; // ӣ Ӣ + key {[ Cyrillic_be, Cyrillic_BE ]}; // б Б + key {[ Cyrillic_yu, Cyrillic_YU ]}; // ю Ю + key {[ period, comma ]}; // . , + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +// ----------------------------------------------------------------------- +// The legacy Tojiki Rusi layout. +// ----------------------------------------------------------------------- +// Authors: AEN , Leon Kanter 2001, +// Valery Inozemtsev 205, Pablo Saratxaga. +// ----------------------------------------------------------------------- +xkb_symbols "legacy" +{ + name[Group1] = "Tajik (legacy)"; + + key {[ Cyrillic_io, Cyrillic_IO ]}; // ё Ё + key {[ 1, exclam, section ]}; // 1 ! § + key {[ 2, quotedbl, guillemotleft, guillemotright ]}; // 2 " « » + key {[ 3, numerosign ]}; // 3 № + key {[ 4, semicolon ]}; // 4 ; + key {[ 5, percent ]}; // 5 % + key {[ 6, colon, U2013 ]}; // 6 : – + key {[ 7, question, ampersand ]}; // 7 ? & + key {[ 8, asterisk ]}; // 8 * + key {[ 9, parenleft ]}; // 9 ( + key {[ 0, parenright ]}; // 0 ) + key {[ minus, underscore ]}; // - _ + key {[ equal, plus ]}; // = + + + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; // й Й + key {[ Cyrillic_tse, Cyrillic_TSE ]}; // ц Ц + key {[ Cyrillic_u, Cyrillic_U, Cyrillic_u_macron, Cyrillic_U_macron ]}; // у У ӯ Ӯ + key {[ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender, Cyrillic_KA_descender ]}; // к К қ Қ + key {[ Cyrillic_ie, Cyrillic_IE ]}; // е Е + key {[ Cyrillic_en, Cyrillic_EN ]}; // н Н + key {[ Cyrillic_ghe, Cyrillic_GHE, Cyrillic_ghe_bar, Cyrillic_GHE_bar ]}; // г Г ғ Ғ + key {[ Cyrillic_sha, Cyrillic_SHA ]}; // ш Ш + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; // щ Щ + key {[ Cyrillic_ze, Cyrillic_ZE ]}; // з З + key {[ Cyrillic_ha, Cyrillic_HA, Cyrillic_ha_descender, Cyrillic_HA_descender ]}; // х Х ҳ Ҳ + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN ]}; // ъ Ъ + + key {[ Cyrillic_ef, Cyrillic_EF ]}; // ф Ф + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; // ы Ы + key {[ Cyrillic_ve, Cyrillic_VE ]}; // в В + key {[ Cyrillic_a, Cyrillic_A ]}; // а А + key {[ Cyrillic_pe, Cyrillic_PE ]}; // п П + key {[ Cyrillic_er, Cyrillic_ER ]}; // р Р + key {[ Cyrillic_o, Cyrillic_O ]}; // о О + key {[ Cyrillic_el, Cyrillic_EL ]}; // л Л + key {[ Cyrillic_de, Cyrillic_DE ]}; // д Д + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; // ж Ж + key {[ Cyrillic_e, Cyrillic_E ]}; // э Э + key {[ backslash, slash ]}; // \ / + + key {[ slash, bar ]}; // / | + key {[ Cyrillic_ya, Cyrillic_YA ]}; // я Я + key {[ Cyrillic_che, Cyrillic_CHE, Cyrillic_che_descender, Cyrillic_CHE_descender ]}; // ч Ч ҷ Ҷ + key {[ Cyrillic_es, Cyrillic_ES ]}; // с С + key {[ Cyrillic_em, Cyrillic_EM ]}; // м М + key {[ Cyrillic_i, Cyrillic_I, Cyrillic_i_macron, Cyrillic_I_macron ]}; // и И ӣ Ӣ + key {[ Cyrillic_te, Cyrillic_TE ]}; // т Т + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN ]}; // ь Ь + key {[ Cyrillic_be, Cyrillic_BE ]}; // б Б + key {[ Cyrillic_yu, Cyrillic_YU ]}; // ю Ю + key {[ period, comma ]}; // . , + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/tm b/nixos/xkb/symbols/tm new file mode 100644 index 00000000..116f2264 --- /dev/null +++ b/nixos/xkb/symbols/tm @@ -0,0 +1,47 @@ +// Keyboard layouts for Turkmenistan. + +// Nazar Annagurban , 2009 + +// Default layout (based on Vista Turkmen layout). +default partial +xkb_symbols "basic" { + + include "us" + name[Group1]="Turkmen"; + + key {[ zcaron, Zcaron, grave, asciitilde ]}; + + key {[ adiaeresis, Adiaeresis, q, Q ]}; + key {[ ncaron, Ncaron, bracketleft, braceleft ]}; + key {[ odiaeresis, Odiaeresis, bracketright, braceright ]}; + + key {[ udiaeresis, Udiaeresis, x, X ]}; + key {[ ccedilla, Ccedilla, c, C ]}; + key {[ yacute, Yacute, v, V ]}; + + key {[ scedilla, Scedilla, backslash, bar ]}; + + include "level3(ralt_switch)" +}; + +// Turkmen Alt-Q. +// This layout provides the Turkmen letters via the AltGr key. +partial +xkb_symbols "alt" { + + include "us" + name[Group1]="Turkmen (Alt-Q)"; + + key {[ y, Y, yacute, Yacute ]}; + key {[ u, U, udiaeresis, Udiaeresis ]}; + key {[ o, O, odiaeresis, Odiaeresis ]}; + + key {[ a, A, adiaeresis, Adiaeresis ]}; + key {[ s, S, scedilla, Scedilla ]}; + + key {[ z, Z, zcaron, Zcaron ]}; + key {[ c, C, ccedilla, Ccedilla ]}; + key {[ n, N, ncaron, Ncaron ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/tr b/nixos/xkb/symbols/tr new file mode 100644 index 00000000..22c41d7f --- /dev/null +++ b/nixos/xkb/symbols/tr @@ -0,0 +1,584 @@ +// Keyboard layouts for Turkey. + +// This file distributed without any expressed or implied warranty. +// Nilgün Belma Bugüner , 2005 + +// Turkish Q layout. +default partial +xkb_symbols "basic" { + + include "latin" + + name[Group1]="Turkish"; + + key {[ quotedbl, eacute, less, degree ]}; + key {[ 1, exclam, greater, exclamdown ]}; + key {[ 2, apostrophe, sterling, twosuperior ]}; + key {[ 3,asciicircum, numbersign, threesuperior ]}; + key {[ 4, plus, dollar, onequarter ]}; + key {[ 6, ampersand, threequarters, none ]}; + key {[ 7, slash, braceleft, none ]}; + key {[ 8, parenleft, bracketleft, none ]}; + key {[ 9, parenright, bracketright, plusminus ]}; + key {[ 0, equal, braceright, degree ]}; + key {[ asterisk, question, backslash, questiondown ]}; + key {[ minus, underscore, bar, none ]}; + + key {[ w, W, none, none ]}; + key {[ e, E, EuroSign, none ]}; + key {[ t, T, U20BA, none ]}; + key {[ u, U, ucircumflex, Ucircumflex ]}; + key { type[group1] = "FOUR_LEVEL_ALPHABETIC", + [ idotless, I, icircumflex, Icircumflex ]}; + key {[ o, O, ocircumflex, Ocircumflex ]}; + key {[ p, P, none, none ]}; + key {[ gbreve, Gbreve ]}; + key {[udiaeresis, Udiaeresis, asciitilde, dead_macron ]}; + + key {[ a, A, acircumflex, Acircumflex ]}; + key {[ s, S, ssharp, none ]}; + key {[ d, D, none, none ]}; + key {[ f, F, ordfeminine, none ]}; + key {[ g, G, none, none ]}; + key {[ h, H, none, none ]}; + key {[ k, K, none, none ]}; + key {[ l, L, none, none ]}; + key {[ scedilla, Scedilla, acute, dead_acute ]}; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", + [ i, Iabovedot, apostrophe, dead_caron ]}; + key {[ comma, semicolon, grave, dead_grave ]}; + + key {[ less, greater, bar, brokenbar ]}; + key {[odiaeresis, Odiaeresis, multiply, none ]}; + key {[ ccedilla, Ccedilla,periodcentered, division ]}; + key {[ period, colon, dead_abovedot, dead_abovedot ]}; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + + +// Turkish F layout. +partial +xkb_symbols "f" { + + include "latin" + + name[Group1]="Turkish (F)"; + + key {[ plus, asterisk, notsign, plusminus ]}; + key {[ 1, exclam, onesuperior, exclamdown ]}; + key {[ 2, quotedbl, twosuperior, none ]}; + key {[ 3,asciicircum, numbersign, threesuperior ]}; + key {[ 4, dollar, onequarter, none ]}; + key {[ 6, ampersand, threequarters, none ]}; + key {[ 7, apostrophe, braceleft, none ]}; + key {[ 8, parenleft, bracketleft, none ]}; + key {[ 9, parenright, bracketright, plusminus ]}; + key {[ 0, equal, braceright, degree ]}; + key {[ slash, question, backslash, questiondown ]}; + key {[ minus, underscore, bar, none ]}; + + key {[ f, F, at, none ]}; + key {[ g, G, none, none ]}; + key {[ gbreve, Gbreve, none, none ]}; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", + [ idotless, I, paragraph, none ]}; + key {[ o, O, ocircumflex, Ocircumflex ]}; + key {[ d, D, yen, none ]}; + key {[ r, R, registered, none ]}; + key {[ n, N, none, none ]}; + key {[ h, H, degree, none ]}; + key {[ p, P, sterling, none ]}; + key {[ q, Q,dead_diaeresis,dead_abovering ]}; + key {[ w, W, asciitilde, dead_breve ]}; + + key {[ u, U, ucircumflex, Ucircumflex ]}; + key { type[group1] = "FOUR_LEVEL_ALPHABETIC", + [ i, Iabovedot, icircumflex, Icircumflex ]}; + key {[ e, E, EuroSign, none ]}; + key {[ a, A, acircumflex, Acircumflex ]}; + key {[udiaeresis, Udiaeresis, ucircumflex, Ucircumflex ]}; + key {[ t, T, U20BA, none ]}; + key {[ k, K, none, none ]}; + key {[ m, M, mu, none ]}; + key {[ l, L, none, none ]}; + key {[ y, Y, acute, dead_acute ]}; + key {[ scedilla, Scedilla, numbersign, dead_caron ]}; + key {[ x, X, grave, dead_grave ]}; + + key {[ less, greater, bar, brokenbar ]}; + key {[ j, J, guillemotleft, less ]}; + key {[odiaeresis, Odiaeresis, guillemotright, greater ]}; + key {[ v, V, leftdoublequotemark, none ]}; + key {[ c, C, cent, copyright ]}; + key {[ ccedilla, Ccedilla,rightdoublequotemark, none ]}; + key {[ z, Z, none, none ]}; + key {[ s, S, section, none ]}; + key {[ b, B, multiply, nobreakspace ]}; + key {[ period, colon, division, dead_abovedot ]}; + key {[ comma, semicolon,periodcentered, none ]}; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +// Turkish E layout. +partial +xkb_symbols "e" { + + include "latin" + + name[Group1]="Turkish (E)"; + + key {[ plus, asterisk, notsign, plusminus ]}; + key {[ 1, exclam, onesuperior, exclamdown ]}; + key {[ 2, quotedbl, twosuperior, none ]}; + key {[ 3,asciicircum, numbersign, threesuperior ]}; + key {[ 4, dollar, onequarter, none ]}; + key {[ 6, ampersand, threequarters, none ]}; + key {[ 7, apostrophe, braceleft, none ]}; + key {[ 8, parenleft, bracketleft, none ]}; + key {[ 9, parenright, bracketright, plusminus ]}; + key {[ 0, equal, braceright, degree ]}; + key {[ slash, question, backslash, questiondown ]}; + key {[ minus, underscore, bar, none ]}; + + key {[ q, Q,dead_diaeresis,dead_abovering ]}; + key {[ j, J, guillemotleft, less ]}; + key {[udiaeresis, Udiaeresis, ucircumflex, Ucircumflex ]}; + key {[ o, O, ocircumflex, Ocircumflex ]}; + key {[ f, F, at, none ]}; + key {[ c, C, cent, copyright ]}; + key {[ t, T, U20BA, none ]}; + key {[ m, M, mu, none ]}; + key {[ k, K, none, none ]}; + key {[ b, B, multiply, nobreakspace ]}; + key {[ s, S, section, none ]}; + key {[ p, P, sterling, none ]}; + + key {[ e, E, EuroSign, none ]}; + key {[ a, A, acircumflex, Acircumflex ]}; + key { type[group1] = "FOUR_LEVEL_ALPHABETIC", + [ i, Iabovedot, icircumflex, Icircumflex ]}; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", + [ idotless, I, paragraph, none ]}; + key {[ g, G, none, none ]}; + key {[ gbreve, Gbreve, none, none ]}; + key {[ l, L, none, none ]}; + key {[ n, N, none, none ]}; + key {[ r, R, registered, none ]}; + key {[ d, D, yen, none ]}; + key {[ v, V, leftdoublequotemark, none ]}; + key {[ comma, semicolon,periodcentered, none ]}; + + key {[ less, greater, bar, brokenbar ]}; + key {[ x, X, grave, dead_grave ]}; + key {[ w, W, asciitilde, dead_breve ]}; + key {[odiaeresis, Odiaeresis, guillemotright, greater ]}; + key {[ u, U, ucircumflex, Ucircumflex ]}; + key {[ h, H, degree, none ]}; + key {[ z, Z, none, none ]}; + key {[ ccedilla, Ccedilla,rightdoublequotemark, none ]}; + key {[ y, Y, acute, dead_acute ]}; + key {[ scedilla, Scedilla, numbersign, dead_caron ]}; + key {[ period, colon, division, dead_abovedot ]}; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +// Turkish Alt-Q layout. +partial +xkb_symbols "alt" { + + include "latin" + + name[Group1]="Turkish (Alt-Q)"; + + key {[ 7, ampersand, lowleftcorner, upleftcorner ]}; + key {[ 8, asterisk, leftt, topt ]}; + key {[ 9, parenleft, rightt, bott ]}; + key {[ 0, parenright, lowrightcorner, uprightcorner ]}; + key {[ minus, underscore, horizlinescan5, vertbar ]}; + key {[ equal, plus, crossinglines ]}; + + key {[ e, E, EuroSign, none ]}; + key {[ u, U, udiaeresis, Udiaeresis ]}; + key {[ i, I, idotless, Iabovedot ], type[group1] = "FOUR_LEVEL_ALPHABETIC" }; + key {[ o, O, odiaeresis, Odiaeresis ]}; + key {[ a, A, acircumflex, Acircumflex ]}; + key {[ s, S, scedilla, Scedilla ]}; + key {[ g, G, gbreve, Gbreve ]}; + + key {[ c, C, ccedilla, Ccedilla ]}; + + include "level3(ralt_switch)" +}; + + +// Kurdish Q layout. +// Originally by Erdal Ronahi , 2006. +partial +xkb_symbols "ku" { + + include "tr(basic)" + + name[Group1]="Kurdish (Turkey, Latin Q)"; + + key {[ i, I, idotless, I ]}; + key {[ x, X, gbreve, Gbreve ]}; + key {[ucircumflex, Ucircumflex, asciitilde, dead_macron ]}; + key {[icircumflex, Icircumflex, apostrophe, dead_caron ]}; + key {[ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ]}; +}; + +// Kurdish F layout. +partial +xkb_symbols "ku_f" { + + include "tr(f)" + + name[Group1]="Kurdish (Turkey, F)"; + + key {[ x, X, gbreve, Gbreve ]}; + key {[ i, I, paragraph, none ]}; + key {[ o, O, ocircumflex, Ocircumflex ]}; + + key {[ucircumflex, Ucircumflex, udiaeresis, Udiaeresis ]}; + key {[icircumflex, Icircumflex, i, Iabovedot ]}; + key {[ u, U, udiaeresis, Udiaeresis ]}; + key {[ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ]}; +}; + +// Kurdish Alt-Q layout. +partial +xkb_symbols "ku_alt" { + + include "tr(alt)" + + name[Group1]="Kurdish (Turkey, Latin Alt-Q)"; + + key {[ e, E, ecircumflex, Ecircumflex ]}; + key {[ u, U, ucircumflex, Ucircumflex ]}; + key {[ i, I, icircumflex, Icircumflex ]}; + key {[ o, O, odiaeresis, Odiaeresis ]}; +}; + + +// Turkish international Q layout. +// Originally by Alexis Pellicier , 2007. +partial +xkb_symbols "intl" { + + include "latin" + + name[Group1]="Turkish (intl., with dead keys)"; + + key {[ quotedbl, eacute, plusminus, degree ]}; + key {[ 1, exclam, onesuperior, exclamdown ]}; + key {[ 2, apostrophe, sterling, twosuperior ]}; + key {[ 3, dead_circumflex, numbersign, threesuperior ]}; + key {[ 4, plus, dollar, onequarter ]}; + key {[ 6, ampersand, threequarters, none ]}; + key {[ 7, slash, braceleft, none ]}; + key {[ 8, parenleft, bracketleft, none ]}; + key {[ 9, parenright, bracketright, plusminus ]}; + key {[ 0, equal, braceright, degree ]}; + key {[ asterisk, question, backslash, questiondown ]}; + key {[ minus, underscore, division, none ]}; + + key {[ w, W, none, none ]}; + key {[ e, E, EuroSign, cent ]}; + key {[ t, T, U20BA, none ]}; + key {[ u, U, ucircumflex, Ucircumflex ]}; + key {[ idotless, I, icircumflex, Icircumflex ], type[group1] = "FOUR_LEVEL_ALPHABETIC" }; + key {[ o, O, ocircumflex, Ocircumflex ]}; + key {[ p, P, none, none ]}; + key {[ gbreve, Gbreve, dead_diaeresis ]}; + key {[udiaeresis, Udiaeresis, dead_tilde, dead_macron ]}; + + key {[ a, A, acircumflex, Acircumflex ]}; + key {[ s, S, section, none ]}; + key {[ d, D, none, none ]}; + key {[ f, F, ordfeminine, none ]}; + key {[ g, G, none, none ]}; + key {[ h, H, none, none ]}; + key {[ k, K, none, none ]}; + key {[ l, L, none, none ]}; + key {[ scedilla, Scedilla, dead_acute, dead_acute ]}; + key {[ i, Iabovedot, apostrophe, dead_caron ]}; + key {[ comma, semicolon, dead_grave, dead_grave ]}; + + key {[ less, greater, bar, brokenbar ]}; + key {[odiaeresis, Odiaeresis, multiply, none ]}; + key {[ ccedilla, Ccedilla, periodcentered, division ]}; + key {[ period, colon, dead_abovedot, dead_abovedot ]}; + + include "nbsp(level3)" + include "level3(ralt_switch)" +}; + + +partial alphanumeric_keys +xkb_symbols "olpc" { + + // #HW-SPECIFIC + + include "tr(intl)" + + name[Group1]= "Turkish"; + + key {[ 1, exclam, none, none ]}; + key {[ 6, ampersand, none, none ]}; + key {[ minus, underscore, bar, none ]}; + + key {[ c, C, leftdoublequotemark, none ]}; + key {[ v, V, rightdoublequotemark, none ]}; + key {[ b, B, none, none ]}; + key {[odiaeresis, Odiaeresis, none, none ]}; + key {[ ccedilla, Ccedilla, multiply, none ]}; + key {[ period, colon, division, dead_abovedot ]}; + + key {[ less, greater, none, none ]}; +}; + + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/tr(sun_type6)" +}; + +// The basic Turkish layout with "i" and "ı" swapped. +// Originally by Ali Riza KESKIN , 2021. +partial +xkb_symbols "us" { + + include "tr(basic)" + + name[Group1]="Turkish (i and ı swapped)"; + + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", + [ i, I, paragraph, none ]}; + key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", + [ idotless, Iabovedot, apostrophe, dead_caron ]}; +}; + + +// Layout for Old Turkic (Orkhon script). +// Originally by Emir SARI , 2020. +partial alphanumeric_keys +xkb_symbols "otk" { + + name[Group1]="Old Turkic"; + + key {[quotedbl, guillemotleft, guillemotright, any ]}; + key {[ U10C48, any, 1, exclam ]}; + key {[ U10C05, any, 2, quotedbl ]}; + key {[ U10C02, any, 3, asciicircum ]}; + key {[ U10C47, any, 4, dollar ]}; + key {[ U10C21, any, 5, percent ]}; + key {[ U10C26, U10C27, 6, ampersand ]}; + key {[ U10C36, U10C37, 7, apostrophe ]}; + key {[ U10C38, U10C39, 8, parenleft ]}; + key {[ U10C1C, U10C1D, 9, parenright ]}; + key {[ U10C31, U2E2E, 0, equal ]}; + key {[backslash, colon, slash, question ]}; + key {[ comma, semicolon, minus, underscore ]}; + + key {[ U10C13, any, at, any ]}; + key {[ U10C11, U10C12, numbersign, any ]}; + key {[ U10C0F, U10C10, dollar, any ]}; + key {[ U10C0D, U10C0E, braceleft, any ]}; + key {[ U10C23, any, braceright, any ]}; + key {[ U10C14, U10C15, bracketleft, any ]}; + key {[ U10C43, U10C44, bracketright, any ]}; + key {[ U10C3A, U10C3B, parenleft, any ]}; + key {[ U10C3C, any, parenright, any ]}; + key {[ U10C2F, U10C30, backslash, any ]}; + key {[ U10C32, U10C33, bar, any ]}; + key {[ U10C2A, U10C2B, asciitilde, any ]}; + + key {[ U10C00, U10C01, any, any ]}; + key {[ U10C07, U10C08, any, any ]}; + key {[ U10C06, any, EuroSign, any ]}; + key {[ U10C03, U10C04, dead_breve, any ]}; + key {[ U10C24, U10C25, dead_acute, any ]}; + key {[ U10C45, U10C46, U20BA, any ]}; + key {[ U10C34, U10C35, any, any ]}; + key {[ U10C22, any, any, any ]}; + key {[ U10C1E, U10C1F, sterling, any ]}; + key {[ U10C16, U10C17, yen, any ]}; + key {[ U10C41, U10C42, endash, any ]}; + key {[ U10C3F, U10C40, emdash, any ]}; + + key {[ less, greater, plus, any ]}; + key {[ U10C28, U10C29, any, less ]}; + key {[ U10C2D, U10C2E, U10C2C, greater ]}; + key {[ U10C3D, any, copyright, guillemotleft ]}; + key {[ U10C09, U10C0A, registered, guillemotright ]}; + key {[ U10C0B, U10C0C, any, any ]}; + key {[ U10C1A, U10C1B, any, any ]}; + key {[ U10C3E, any, any, any ]}; + key {[ U10C20, any, multiply, any ]}; + key {[ U10C18, U10C19, division, any ]}; + key {[ U2E31, period, minus, any ]}; + + include "kpdl(comma)" + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "otkf" { + + include "tr(otk)" + + name[Group1]="Old Turkic (F)"; + + key {[ U10C03, U10C04, dead_breve, none ]}; + key {[ U10C24, U10C25, dead_acute, none ]}; + key {[ U10C32, U10C33, bar, none ]}; + key {[ U10C3A, U10C3B, parenleft, none ]}; + key {[ U10C3C, none, parenright, none ]}; + key {[ U10C06, none, EuroSign, none ]}; + key {[ U10C0D, U10C0E, braceleft, none ]}; + key {[ U10C1A, U10C1B, none, none ]}; + key {[ U10C45, U10C46, U20BA, none ]}; + key {[ U10C2F, U10C30, backslash, none ]}; + key {[ U10C13, none, at, none ]}; + key {[ U10C11, U10C12, numbersign, none ]}; + + key {[ U10C43, U10C44, bracketright, none ]}; + key {[ U10C41, U10C42, endash, none ]}; + key {[ U10C0F, U10C10, dollar, none ]}; + key {[ U10C00, U10C01, none, none ]}; + key {[ U10C2A, U10C2B, asciitilde, none ]}; + key {[ U10C23, none, braceright, none ]}; + key {[ U10C22, none, none, none ]}; + key {[ U10C3E, none, none, none ]}; + key {[ U10C1E, U10C1F, sterling, none ]}; + key {[ U10C14, U10C15, bracketleft, none ]}; + key {[ U10C16, U10C17, yen, none ]}; + key {[ U10C2D, U10C2E, U10C2C, none ]}; + + key {[ U10C34, U10C35, none, less ]}; + key {[ U10C20, none, multiply, greater ]}; + key {[ U10C09, U10C0A, registered, guillemotleft ]}; + key {[ U10C3D, none, copyright, guillemotright ]}; + key {[ U10C18, U10C19, division, none ]}; + key {[ U10C28, U10C29, none, none ]}; + key {[ U10C07, U10C08, none, none ]}; + key {[ U10C0B, U10C0C, none, none ]}; + key {[ U2E31, period, minus, none ]}; + key {[ U10C3F, U10C40, emdash, none ]}; +}; + + +// Layout for Ottoman Turkish (Arabic script). +partial alphanumeric_keys +xkb_symbols "ot" { + + name[Group1]= "Ottoman (Q)"; + + key {[ quotedbl, division, none ]}; + key {[ U06f1, exclam, grave ]}; + key {[ U06f2, U066c, at ]}; + key {[ U06f3, U066b, numbersign ]}; + key {[ U06f4, Ufdfc, dollar ]}; + key {[ U06f5, U066a, percent ]}; + key {[ U06f6, multiply, asciicircum ]}; + key {[ U06f7, Arabic_comma, ampersand ]}; + key {[ U06f8, asterisk, enfilledcircbullet ]}; + key {[ U06f9, parenright, U200e ]}; // LRM + key {[ U06f0, parenleft, U200f ]}; // RLM + key {[ minus, Arabic_tatweel, none ]}; + key {[ equal, plus, none ]}; + + key {[ Arabic_qaf, U0670, none ]}; + key {[ Arabic_thal, U0656, none ]}; + key {[ Arabic_heh, Arabic_fatha, none ]}; + key {[ Arabic_ra, none, none ]}; + key {[ Arabic_teh, Arabic_tehmarbuta, none ]}; + key {[ U06CC, Arabic_yeh, none ]}; + key {[ Arabic_sad, Arabic_damma, none ]}; + key {[ Arabic_ain, none, none ]}; + key {[ Arabic_tah, none, none ]}; + key {[ Arabic_peh, none, none ]}; + key {[ Arabic_ghain, none, none ]}; + key {[ Arabic_hah, none, none ]}; + + key {[ Arabic_alef, none, none ]}; + key {[ Arabic_seen, Arabic_sukun, none ]}; + key {[ Arabic_dal, Arabic_dammatan, none ]}; + key {[ Arabic_feh, Arabic_fathatan, none ]}; + key {[ Arabic_gaf, none, none ]}; + key {[ Arabic_heh, Arabic_hamzaonyeh, none ]}; + key {[ Arabic_jeh, none, none ]}; + key {[ Arabic_keheh, Arabic_kasratan, none ]}; + key {[ Arabic_lam, none, none ]}; + key {[ Arabic_sheen, Arabic_shadda, none ]}; + key {[ Arabic_dad, Arabic_kasra, none ]}; + key {[ U2018, Arabic_semicolon, none ]}; + + key {[ Arabic_zain, Arabic_zah, none ]}; + key {[ Arabic_khah, Arabic_hamza, none ]}; + key {[ Arabic_jeem, Arabic_hamzaonalef, none ]}; + key {[ Arabic_waw, Arabic_hamzaonwaw, none ]}; + key {[ Arabic_beh, Arabic_hamzaunderalef, none ]}; + key {[ Arabic_noon, U06AD, none ]}; + key {[ Arabic_meem, U0653, none ]}; + key {[ Arabic_theh, Arabic_maddaonalef, none ]}; + key {[ Arabic_tcheh, none, none ]}; + key {[ period, colon, none ]}; + + key {[ space, U200C, none ]}; // ZWNJ + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "otf" { + + include "tr(ot)" + + name[Group1]= "Ottoman (F)"; + + key {[ Arabic_feh, Arabic_fathatan, none ]}; + key {[ Arabic_gaf, none, none ]}; + key {[ Arabic_ghain, Arabic_fatha, none ]}; + key {[ Arabic_ain, none, none ]}; + key {[ Arabic_tah, none, none ]}; + key {[ Arabic_dal, Arabic_dammatan, none ]}; + key {[ Arabic_ra, none, none ]}; + key {[ Arabic_noon, U06AD, none ]}; + key {[ Arabic_heh, Arabic_hamzaonyeh, none ]}; + key {[ Arabic_peh, none, none ]}; + key {[ Arabic_qaf, U0670, none ]}; + key {[ Arabic_thal, U0656, none ]}; + + key {[ Arabic_sad, Arabic_damma, none ]}; + key {[ Arabic_dad, Arabic_kasra, none ]}; + key {[ Arabic_heh, Arabic_fatha, none ]}; + key {[ Arabic_alef, none, none ]}; + key {[ Arabic_hah, none, none ]}; + key {[ Arabic_teh, Arabic_tehmarbuta, none ]}; + key {[ Arabic_keheh, Arabic_kasratan, none ]}; + key {[ Arabic_meem, U0653, none ]}; + key {[ Arabic_lam, none, none ]}; + key {[ U06cc, Arabic_yeh, none ]}; + key {[ Arabic_sheen, Arabic_shadda, none ]}; + key {[ Arabic_khah, Arabic_hamza, none ]}; + + key {[ Arabic_jeh, none, none ]}; + key {[ Arabic_theh, Arabic_maddaonalef, none ]}; + key {[ Arabic_waw, Arabic_hamzaonwaw, none ]}; + key {[ Arabic_jeem, Arabic_hamzaonalef, none ]}; + key {[ Arabic_tcheh, none, none ]}; + key {[ Arabic_zain, Arabic_zah, none ]}; + key {[ Arabic_seen, Arabic_sukun, none ]}; + key {[ Arabic_beh, Arabic_hamzaunderalef, none ]}; + key {[ period, colon, none ]}; + key {[ U2018, Arabic_semicolon, none ]}; +}; diff --git a/nixos/xkb/symbols/trans b/nixos/xkb/symbols/trans new file mode 100644 index 00000000..b71db34d --- /dev/null +++ b/nixos/xkb/symbols/trans @@ -0,0 +1,93 @@ +default partial alphanumeric_keys +xkb_symbols "ipa" { + + name[Group1]="International Phonetic Alphabet"; // also serves extIPA and orientalistic conversions + key.type[Group1]="EIGHT_LEVEL"; + +//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\ + key {[ grave, asciitilde, minutes, seconds, U2053, NoSymbol, U2015, asciicircum ]}; // ` ~ ′ ″ SwungDash QuotDash ^ + key {[ 1, exclam, onesuperior, exclamdown, U02E5, U030B, NoSymbol, NoSymbol ]}; // 1 ! ¹ ¡ ˥ ̋◌┎────┒ + key {[ 2, quotedbl, twosuperior, oneeighth, U02E6, U0301, U25CB, U20DD ]}; // 2 " ² ⅛ ˦ ́◌┃○ ⃝ ┃ + key {[ 3, section, threesuperior, sterling, U02E7, U0304, NoSymbol, U0348 ]}; // 3 § ³ £ ˧ ̄◌┖─┒◌͆ ┃ + key {[ 4, dollar, onequarter, currency, U02E8, U0300, NoSymbol, U032A ]}; // 4 $ ¼ ¤ ˨ ̀◌ ┃̪◌ ┃ + key {[ 5, percent, U0331, threeeighths, U02E9, U030F, NoSymbol, U0347 ]}; // 5 % ̱◌ ⅜ ˩ ̏◌ ┃◌͇ ┃ + key {[ 6, ampersand, U032E, fiveeighths, U0323, U0311, NoSymbol, U02EC ]}; // 6 & ̮◌ ⅝ ̣◌ ̑◌ ┃ˬ ┃ + key {[ 7, slash, braceleft, seveneighths, U0307, U0313, NoSymbol, U02ED ]}; // 7 / { ⅞ ̇◌ ̓◌ ┃˭ ┃ Disordered + key {[ 8, parenleft, bracketleft, U2E28, U27E8, U032D, U27EA, U0354 ]}; // 8 ( [ ⸨ ⟨ ̭◌ ⟪┃◌͔┃ Speech + key {[ 9, parenright, bracketright, U2E29, U27E9, NoSymbol, U27EB, U0355 ]}; // 9 ) ] ⸩ ⟩ ⟫┃◌͕┃ + key {[ 0, equal, braceright, degree, U02BE, notequal, U2248, U034E ]}; // 0 = } ° ʾ ≠ ≈┃◌͎ ┃ + // ┃ ┃ + key {[ U0294, question, backslash, questiondown, U0295, U02A1, U02A2, U0362 ]}; // ʔ ? \ ¿ ʕ ʡ ʢ┃◌‌͢◌┃ + // ┎───┚ ┃ + key {[ U2197, U2198, UA71C, UA71B, U02BF, asterisk, U2193, U2191 ]}; // ↗ ↘ ꜜ ꜛ ʿ┃* ↓ ↑ ┃ +//─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────//──────────┸──────┸───────────────\\ + key {[ q, U025C, at, Greek_OMEGA, U02DE, NoSymbol, U20BD, Q ]}; // q ɜ @ Ω ˞ ₽ Q + key {[ w, U028D, U0270, NoSymbol, U026F, NoSymbol, U031D, W ]}; // w ʍ ɰ ɯ ̝◌ W + key {[ e, schwa, U025B, U025C, U0258, NoSymbol, EuroSign, E ]}; // e ə ɛ ɜ ɘ € E + key {[ r, U027E, U0281, U0280, U0279, U027B, U027D, R ]}; // r ɾ ʁ ʀ ɹ ɻ ɽ R + key {[ t,Greek_theta, U0288, NoSymbol, U01C0, U01C1, U01C2, T ]}; // t θ ʈ ǀ ǁ ǂ T + key {[ z, U0292, U0291, U0293, U0290, U026E, U261C, Z ]}; // z ʒ ʑ ʓ ʐ ɮ ☜ Z + key {[ u, U028A, U0289, U028C, U025E, U02AA, U261D, U ]}; // u ʊ ʉ ʌ ɞ ʪ ☝ U + key {[ i, U026A, U0268, U0264, U0275, U02AB, U261F, I ]}; // i ɪ ɨ ɤ ɵ ʫ ☟ I + key {[ o, U0254, oslash, oe, U032A, U025E, U261E, O ]}; // o ɔ ø œ ̪◌ ɞ ☞ O + key {[ p, U0303, U031F, U2038, U033A, NoSymbol, U1D513, P ]}; // p ̃◌ ̟◌ ‸ ̻̺◌ 𝔓 P + // ┎─┒ + key {[ U02E4, U0330, U0308, U033D, U033B, U02C0, U02C1, U02AC ]}; // ˤ ̰◌ ̈◌ ̽◌ ̻◌ ˀ ˁ┃ʬ┃ + key {[ U02D0, U02D1, U0320, U0304, U033C, NoSymbol, NoSymbol, U02AD ]}; // ː ˑ ̠◌ ̄◌ ̼◌ ┃ʭ┃ +//─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────//──────────────┸─┸────────────────\\ + key {[ a, U0251, ae, U0252, U0250, U0276, U031E, A ]}; // a ɑ æ ɒ ɐ ɶ ̞◌ A + key {[ s, U0283, NoSymbol, U0286, U0282, U031C, U0318, S ]}; // s ʃ ʆ ʂ ̜◌ ̘◌ S + key {[ d, eth, U0256, U0257, U1D91, U0339, U0319, D ]}; // d ð ɖ ɗ ᶑ ̹◌ ̙◌ D + // ┎─┒ + key {[ f, U0278, NoSymbol, NoSymbol, NoSymbol, NoSymbol, U02A9, F ]}; // f ɸ ┃ʩ┃F + // ┖─┚ + key {[ g, U0263, U0262, U0260, U029B, U0261, U20B8, G ]}; // g ɣ ɢ ɠ ʛ ɡ ₸ G + key {[ h, U0266, U0267, U029C, hstroke, NoSymbol, U20B4, H ]}; // h ɦ ɧ ʜ ħ ₴ H + key {[ j, U029D, U025F, U0284, NoSymbol, NoSymbol, NoSymbol, J ]}; // j ʝ ɟ ʄ J + key {[ k, U02B0, U02B1, U029E, NoSymbol, UA78E, U2113, K ]}; // k ʰ ʱ ʞ ꞎ ℓ K + key {[ l, U028E, U026B, U026C, U029F, U026D, U027A, L ]}; // l ʎ ɫ ɬ ʟ ɭ ɺ L + // ┎────┒ + key {[ U02B2, U02B7, U02E0, U02B8, U207F, U02E1, U034C, U034D ]}; // ʲ ʷ ˠ ʸ ⁿ ˡ┃◌͌ ◌͍ ┃ Disordered + key {[ U032F, U0325, U032C, U030C, U031A, U0327, U034B, U0348 ]}; // ̯◌ ̥◌ ̬◌ ̌◌◌̚ ̧◌┃◌͋ ◌͈ ┃ Speech + key {[ U0329, U02C8, U02CC, U0306, U02BC, U0328, U034A, U0349 ]}; // ̩◌ ˈ ˌ ̆◌ ʼ ̨◌┃◌͊ ◌‌͉┃ +//─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────//────────────┸────┸───────────────\\ + key {[ bar, U2016, U203F, U035C, U0361, NoSymbol, NoSymbol, NoSymbol ]}; // | ‖ ‿ ◌͜◌ ◌͡◌ + key {[ y, U028F, guillemotright, U203A, U0265, NoSymbol, U0287, Y ]}; // y ʏ » › ɥ ʇ Y + key {[ x, Greek_chi, guillemotleft, U2039, UA725, UA724, U0297, X ]}; // x χ « ‹ ꜥ Ꜥ ʗ X + key {[ c, ccedilla, U0255, U023C, UA723, UA722, U0296, C ]}; // c ç ɕ ȼ ꜣ Ꜣ ʖ C + key {[ v, U028B, U2C71, U0274, doublelowquotemark, singlelowquotemark, NoSymbol, V ]}; // v ʋ ⱱ ɴ „ ‚ V + key {[ b, Greek_beta, U0299, U0253, leftdoublequotemark, leftsinglequotemark, U0298, B ]}; // b β ʙ ɓ “ ‘ ʘ B + key {[ n, eng, U0272, U0273, rightdoublequotemark, rightsinglequotemark, U01C3, N ]}; // n ŋ ɲ ɳ ” ’ ǃ N + key {[ m, U0271, mu, U22C5, U0298, U01C3, U20BC, M ]}; // m ɱ µ ⋅ ʘ ǃ ₼ M + key {[ comma, semicolon, periodcentered, multiply, U2020, U2021, NoSymbol, NoSymbol ]}; // , ; · × † ‡ + key {[ period, colon, ellipsis, division, enfilledcircbullet, NoSymbol, NoSymbol, NoSymbol ]}; // . : … ÷ • + key {[ minus, underscore, endash, emdash, U2011, U00AD, U2010, U2212 ]}; // - _ – — NoBrHyphen SHy Hy Minus +//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\ + //│\\ +// Makes return comma instead of dot, as the comma is decimal separator outside the English dominions //🏵\\ + include "kpdl(comma)" //│\\ + //│\\ +// Maps Right Alt for reaching the third level //🏵\\ + include "level3(ralt_switch)" //│\\ + //│\\ +// Maps for reaching the fifth level //🏵\\ + include "level5(caps_switch)" //│\\ + //🏵\\ +// Offers pressing both shift keys for capslock //│\\ + include "shift(both_shiftlock)" //│\\🏵 + //│\│╱🌿 +//──────────────────────────────────────────────────────────────────────────────────────────────────────────────┴─┘˝˝ + +// Note about a bug in XKB: One has to set lv5:rwin_switch_lock or one of the other level 5 locks for the caps switch to work! +// https://bugs.freedesktop.org/show_bug.cgi?id=102189 +}; + +partial alphanumeric_keys +xkb_symbols "qwerty" { + include "trans(ipa)" + + name[Group1] = "International Phonetic Alphabet (QWERTY)"; + + key {[ z, U0292, U0291, U0293, U0290, U026E, U261C, Z ]}; // z ʒ ʑ ʓ ʐ ɮ ☜ Z + key {[ y, U028F, guillemotright, U203A, U0265, NoSymbol, U0287, Y ]}; // y ʏ » › ɥ ʇ Y +}; diff --git a/nixos/xkb/symbols/tw b/nixos/xkb/symbols/tw new file mode 100644 index 00000000..e04db885 --- /dev/null +++ b/nixos/xkb/symbols/tw @@ -0,0 +1,80 @@ +// Keyboard layouts for Taiwan. + +default partial alphanumeric_keys +xkb_symbols "tw" { + + include "us(basic)" + + name[Group1]= "Taiwanese"; + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 1, exclam, U030D, exclamdown ] }; + key { [ 2, at, U0358, twosuperior ] }; + key { [ 3, numbersign, section, threesuperior ] }; + key { [ 4, dollar, yen, sterling ] }; + key { [ 5, percent, EuroSign, cent ] }; + key { [ 6,asciicircum, dead_circumflex, dead_caron ] }; + key { [ 7, ampersand, dead_acute, NoSymbol ] }; + key { [ 8, asterisk, dead_cedilla, dead_horn ] }; + key { [ 9, parenleft, dead_ogonek, dead_breve ] }; + key { [ 0, parenright, dead_abovedot, dead_abovering ] }; + key { [ minus, underscore, dead_macron, plusminus ] }; + key { [ equal, plus, multiply, division ] }; + + key { [ q, Q, paragraph, degree ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ r, R, U1E5F, U1E5E ] }; + key { [ t, T, U1E6F, U1E6E ] }; + key { [ y, Y, U1E73, U1E72 ] }; + key { [ u, U, U0289, U0244 ] }; + key { [ i, I, U0268, U0197 ] }; + key { [ o, O, oslash, Oslash ] }; + + key { [ s, S, ssharp, U1E9E ] }; + key { [ d, D, U1E0F, U1E0E ] }; + key { [ g, G, eng, ENG ] }; + key { [ l, L, U1E3B, U1E3A ] }; + key { [ semicolon, colon, U02D0, dead_diaeresis ] }; + key { [apostrophe, quotedbl, U02BC, dead_doubleacute ] }; + + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ n, N, U207F, U1D3A ] }; + key { [ m, M, mu, mu ] }; + key { [ comma, less, dead_belowcomma, guillemotleft ] }; + key { [ period, greater, dead_belowdot, guillemotright ] }; + key { [ slash, question, questiondown, dead_hook ] }; + key { [ backslash, bar, notsign, brokenbar ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "indigenous" { + + include "tw(tw)" + + name[Group1]= "Taiwanese (indigenous)"; + + key { [ U02BC, quotedbl, apostrophe, dead_doubleacute ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "saisiyat" { + + include "tw(indigenous)" + + name[Group1]= "Saisiyat (Taiwan)"; + + key { [ U02D0, colon, semicolon, dead_diaeresis ] }; + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/tw(sun_type6)" +}; diff --git a/nixos/xkb/symbols/typo b/nixos/xkb/symbols/typo new file mode 100644 index 00000000..c9759f5a --- /dev/null +++ b/nixos/xkb/symbols/typo @@ -0,0 +1,69 @@ +// Typographic Keyboard +// Sergei Stolyarov + +// Initial contribution by Alexey Ten +// Additional contribution and code cleanup by Artur Dryomov + +// Mainly based on the layout proposed by Ilya Birman +// http://ilyabirman.ru/projects/typography-layout/ + +default partial +xkb_symbols "base" { + + // 1st keyboard row + key { [ NoSymbol, NoSymbol, NoSymbol, approxeq ] }; // "~" + key { [ NoSymbol, NoSymbol, onesuperior, exclamdown ] }; // "1" + key { [ NoSymbol, NoSymbol, twosuperior, onehalf ] }; // "2" + key { [ NoSymbol, NoSymbol, threesuperior, onethird ] }; // "3" + key { [ NoSymbol, NoSymbol, dollar, onequarter ] }; // "4" + key { [ NoSymbol, NoSymbol, permille, NoSymbol ] }; // "5" + key { [ NoSymbol, NoSymbol, uparrow, NoSymbol ] }; // "6" + key { [ NoSymbol, NoSymbol, ampersand, questiondown ] }; // "7" + key { [ NoSymbol, NoSymbol, infinity, oneeighth ] }; // "8" + key { [ NoSymbol, NoSymbol, leftarrow, NoSymbol ] }; // "9" + key { [ NoSymbol, NoSymbol, rightarrow, NoSymbol ] }; // "0" + key { [ NoSymbol, NoSymbol, emdash, endash ] }; // "-" + key { [ NoSymbol, NoSymbol, notequal, plusminus ] }; // "=" + + // 2nd keyboard row + key { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] }; // "e" + key { [ NoSymbol, NoSymbol, registered, NoSymbol ] }; // "r" + key { [ NoSymbol, NoSymbol, trademark, NoSymbol ] }; // "t" + key { [ NoSymbol, NoSymbol, yen, NoSymbol ] }; // "y" + key { [ NoSymbol, NoSymbol, U20B4, NoSymbol ] }; // "u" + key { [ NoSymbol, NoSymbol, acute, doubleacute ] }; // "p" + key { [ NoSymbol, NoSymbol, bracketleft, braceleft ] }; // "[" + key { [ NoSymbol, NoSymbol, bracketright, braceright ] }; // "]" + + // 3rd keyboard row + key { [ NoSymbol, NoSymbol, U0301, NoSymbol ] }; // "a" + key { [ NoSymbol, NoSymbol, section, NoSymbol ] }; // "s" + key { [ NoSymbol, NoSymbol, degree, division ] }; // "d" + key { [ NoSymbol, NoSymbol, sterling, NoSymbol ] }; // "f" + key { [ NoSymbol, NoSymbol, U20BD, NoSymbol ] }; // "h" + key { [ NoSymbol, NoSymbol, doublelowquotemark, singlelowquotemark ] }; // "j" + key { [ NoSymbol, NoSymbol, leftdoublequotemark, leftsinglequotemark ] }; // "k" + key { [ NoSymbol, NoSymbol, rightdoublequotemark, rightsinglequotemark ] }; // "l" + key { [ NoSymbol, NoSymbol, leftsinglequotemark, minutes ] }; // ";" + key { [ NoSymbol, NoSymbol, rightsinglequotemark, seconds ] }; // "'" + + // 4th keyboard row + key { [ NoSymbol, NoSymbol, multiply, U22C5 ] }; // "x" + key { [ NoSymbol, NoSymbol, copyright, cent ] }; // "c" + key { [ NoSymbol, NoSymbol, downarrow, U25CA ] }; // "v" + key { [ NoSymbol, NoSymbol, U2212, enfilledcircbullet ] }; // "m" + key { [ NoSymbol, NoSymbol, guillemotleft, less ] }; // "," + key { [ NoSymbol, NoSymbol, guillemotright, greater ] }; // "." + key { [ NoSymbol, NoSymbol, ellipsis, NoSymbol ] }; // "/" + + // 5th keyboard row + key { [ space, space, nobreakspace, nobreakspace ] }; // " " + + // Reference + // U+20B4 HRYVNIA SIGN + // U+0301 COMBINING ACUTE ACCENT + // U+20BD RUBLE SIGN + // U+22C5 DOT OPERATOR + // U+25CA LOZENGE + // U+2212 MINUS SIGN +}; diff --git a/nixos/xkb/symbols/tz b/nixos/xkb/symbols/tz new file mode 100644 index 00000000..55d4ffc4 --- /dev/null +++ b/nixos/xkb/symbols/tz @@ -0,0 +1,59 @@ +// Keyboard layout for Tanzania. + +// Layout for Swahili in Arabic script. +// Based on Martin Vidner's Buckwalter transliteration variant of the Arabic keyboard. +// Please notify Kevin Donnelly (kevin@dotmon.com) of any corrections or omission. +default partial alphanumeric_keys +xkb_symbols "swa" { + + name[Group1]= "Swahili (Tanzania)"; + + key {[ U0670, none ]}; // superscript alef + key {[ Arabic_1, none ]}; + key {[ Arabic_2, none ]}; + key {[ Arabic_3, none ]}; + key {[ Arabic_4, none ]}; + key {[ Arabic_5, Arabic_percent ]}; + key {[ Arabic_6, none ]}; + key {[ Arabic_7, none ]}; + key {[ Arabic_8, none ]}; + key {[ Arabic_9, UFD3E ]}; // ﴾ + key {[ Arabic_0, UFD3F ]}; // ﴿ + key {[ minus, Arabic_tatweel ]}; + key {[ equal, plus ]}; + + key {[ Arabic_qaf, Arabic_gaf ]}; + key {[ Arabic_waw, Arabic_hamzaonwaw ]}; + key {[ U0656, Arabic_ain ]}; // subscript alef + key {[ Arabic_ra, Arabic_tteh ]}; + key {[ Arabic_teh, Arabic_tah ]}; + key {[ Arabic_yeh, Arabic_alefmaksura ]}; + key {[ Arabic_damma, Arabic_dammatan ]}; + key {[ Arabic_kasra, Arabic_hamzaonyeh ]}; + key {[ Arabic_sukun, U0657 ]}; // inverted damma + key {[ Arabic_peh, Arabic_tehmarbuta ]}; + key {[ none, none ]}; + + key {[ Arabic_fatha, Arabic_alef ]}; + key {[ Arabic_seen, Arabic_sad ]}; + key {[ Arabic_dal, Arabic_dad ]}; + key {[ Arabic_feh, Arabic_fathatan ]}; + key {[ U06A0, Arabic_ghain ]}; // ڠ + key {[ Arabic_ha, Arabic_hah ]}; + key {[ Arabic_jeem, none ]}; + key {[ Arabic_kaf, Arabic_kasratan ]}; + key {[ Arabic_lam, Arabic_shadda ]}; + key {[ Arabic_semicolon, none ]}; + key {[ Arabic_hamza, none ]}; + + key {[ Arabic_zain, Arabic_zah ]}; + key {[ Arabic_khah, none ]}; + key {[ Arabic_tcheh, Arabic_sheen ]}; + key {[ U06A8, Arabic_theh ]}; // ڨ + key {[ Arabic_beh, Arabic_thal ]}; + key {[ Arabic_noon, none ]}; + key {[ Arabic_meem, none ]}; + key {[ Arabic_comma, Arabic_hamzaunderalef ]}; + key {[ Arabic_fullstop, Arabic_hamzaonalef ]}; + key {[ none, Arabic_question_mark ]}; +}; diff --git a/nixos/xkb/symbols/ua b/nixos/xkb/symbols/ua new file mode 100644 index 00000000..c70d77cc --- /dev/null +++ b/nixos/xkb/symbols/ua @@ -0,0 +1,360 @@ +// Keyboard layouts for Ukraine. + +// Original authors: AEN & Leon Kanter , +// Andriy Rysin , Oleksiy Protas + +// This is the legacy WinKeys layout extended on the third and fourth levels +// with some Unicode symbols, Cyrillics from other Slavic languages, and some +// often-used ASCII symbols. +default partial alphanumeric_keys +xkb_symbols "unicode" { + + include "ua(legacy)" + + name[Group1]= "Ukrainian"; + + key {[ apostrophe, U02BC, U0301, asciitilde ]}; // Apostrophe and Stress symbol + key {[ 1, exclam, onesuperior ]}; + key {[ 2, quotedbl, twosuperior, U2019 ]}; // Single quote, used often as an apostrophe (deprecated) + key {[ 3, numerosign, section, U20B4 ]}; // Paragraph and Hryvnia sign + key {[ 4, semicolon, dollar, EuroSign ]}; + key {[ 5, percent, degree ]}; + key {[ 6, colon, less ]}; + key {[ 7, question, greater ]}; + key {[ 8, asterisk, enfilledcircbullet ]}; // • + key {[ 9, parenleft, bracketleft, braceleft ]}; + key {[ 0, parenright, bracketright, braceright ]}; + key {[ minus, underscore, emdash, endash ]}; + key {[ equal, plus, notequal, plusminus ]}; + + key {[ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_je, Cyrillic_JE ]}; + key {[ Cyrillic_tse, Cyrillic_TSE, Cyrillic_dzhe, Cyrillic_DZHE ]}; + key {[ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ]}; + key {[ Cyrillic_ka, Cyrillic_KA, registered ]}; // ® + key {[ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ]}; + key {[ Cyrillic_en, Cyrillic_EN, Cyrillic_nje, Cyrillic_NJE ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ]}; + key {[ Ukrainian_yi, Ukrainian_YI, Cyrillic_hardsign,Cyrillic_HARDSIGN ]}; + + key {[ Ukrainian_i, Ukrainian_I, Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_el, Cyrillic_EL, Cyrillic_lje, Cyrillic_LJE ]}; + key {[ Cyrillic_de, Cyrillic_DE, Serbian_dje, Serbian_DJE ]}; + key {[ Ukrainian_ie, Ukrainian_IE, Cyrillic_e, Cyrillic_E ]}; + + key {[ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN, backslash, bar ]}; + + key {[ Cyrillic_che, Cyrillic_CHE, Serbian_tshe, Serbian_TSHE ]}; + key {[ Cyrillic_es, Cyrillic_ES, copyright ]}; // © + key {[ Cyrillic_te, Cyrillic_TE, trademark ]}; // ™ + key {[ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ]}; + key {[ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ]}; + key {[ period, comma, slash, ellipsis ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "macOS" { + + include "ua(unicode)" + + name[Group1]= "Ukrainian (macOS)"; + + key {[ apostrophe, asciitilde, bracketright, bracketleft ]}; + key {[ 1, exclam, exclam, U0174 ]}; // Ŵ + key {[ 2, quotedbl, at, quotedbl ]}; + key {[ 3, numerosign, numbersign, U20B4 ]}; // ₴ + key {[ 4, percent, dollar, EuroSign ]}; + key {[ 5, colon, degree ]}; + key {[ 6, comma, less ]}; + key {[ 7, period, ampersand, U204B ]}; // ⁋ + key {[ 8, semicolon, asterisk, U221A ]}; // √ + key {[ 9, parenleft, parenleft, apostrophe ]}; + key {[ 0, parenright, parenright, grave ]}; + key {[ minus, underscore, endash, emdash ]}; + key {[ equal, plus, guillemotright, guillemotleft ]}; + + key {[ Cyrillic_i, Cyrillic_I, Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Ukrainian_i, Ukrainian_I, Cyrillic_i, Cyrillic_I ]}; + + key {[ Cyrillic_be, Cyrillic_BE, lessthanequal, less ]}; + key {[ Cyrillic_yu, Cyrillic_YU, greaterthanequal, greater ]}; + + key {[ slash, question, U201C, U201E]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "legacy" { + + name[Group1]= "Ukrainian (legacy)"; + + key {[ apostrophe, asciitilde ]}; + key {[ 1, exclam ]}; + key {[ 2, quotedbl ]}; + key {[ 3, numbersign ]}; + key {[ 4, asterisk ]}; + key {[ 5, colon ]}; + key {[ 6, comma ]}; + key {[ 7, period ]}; + key {[ 8, semicolon ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Ukrainian_yi, Ukrainian_YI ]}; + key {[ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ]}; + + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Ukrainian_i, Ukrainian_I ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Ukrainian_ie, Ukrainian_IE ]}; + + key {[ slash, bar ]}; + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[Cyrillic_softsign,Cyrillic_SOFTSIGN]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + key {[ slash, question ]}; +}; + +partial alphanumeric_keys +xkb_symbols "winkeys" { + + include "ua(legacy)" + + name[Group1]= "Ukrainian (Windows)"; + + key {[ 3, numerosign ]}; + key {[ 4, semicolon ]}; + key {[ 5, percent ]}; + key {[ 6, colon ]}; + key {[ 7, question ]}; + key {[ 8, asterisk ]}; + + key {[ period, comma ]}; +}; + +partial alphanumeric_keys +xkb_symbols "typewriter" { + + include "ua(legacy)" + + name[Group1]= "Ukrainian (typewriter)"; + + key {[ apostrophe, quotedbl ]}; + key {[ exclam, 1 ]}; + key {[ numerosign, 2 ]}; + key {[ slash, 3 ]}; + key {[ semicolon, 4 ]}; + key {[ colon, 5 ]}; + key {[ comma, 6 ]}; + key {[ period, 7 ]}; + key {[ underscore, 8 ]}; + key {[ question, 9 ]}; + key {[ percent, 0 ]}; + + key {[ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ]}; + + key {[ Cyrillic_i, Cyrillic_I ]}; + + key {[ Ukrainian_i, Ukrainian_I ]}; + key {[ Ukrainian_yi, Ukrainian_YI ]}; + + key {[ parenleft, parenright ]}; +}; + +partial alphanumeric_keys +xkb_symbols "phonetic" { + + include "ua(legacy)" + + name[Group1]= "Ukrainian (phonetic)"; + + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Ukrainian_i, Ukrainian_I ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ Ukrainian_yi, Ukrainian_YI ]}; + key {[ Ukrainian_ie, Ukrainian_IE ]}; +}; + +// Homophonic keyboard layout (by Tomas Marko Miljenović), +// based on the Ukrainian National Transliteration, +// commonly used phonetic layouts for Mac and Win. +partial alphanumeric_keys +xkb_symbols "homophonic" { + + name[Group1]= "Ukrainian (homophonic)"; + + key {[ grave, underscore ]}; + key {[ 1, exclam ]}; + key {[ 2, at ]}; + key {[ 3, semicolon ]}; + key {[ 4, colon ]}; + key {[ 5, percent ]}; + key {[ 6, apostrophe ]}; + key {[ 7, quotedbl ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ Ukrainian_ie, Ukrainian_IE ]}; + key {[ Ukrainian_yi, Ukrainian_YI ]}; + + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Ukrainian_i, Ukrainian_I ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN ]}; + + key {[ slash, bar ]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ comma, less ]}; + key {[ period, greater ]}; + key {[ slash, question ]}; +}; + +// Crimean Tatar (Crimean Turkish) layouts. +// First released (by Ubuntu): 2009-02-24. +// These layouts are not yet standard. In particular, the mapping of +// the letter 'x' might change in the future. This letter is not used +// in the current official alphabet, but is included in the layouts for +// foreign words and for shortcuts. +// Reşat SABIQ , 2009 +// Özgür Qarahan , 2009 + +// Crimean Tatar (Crimean Turkish) Q layout +partial +xkb_symbols "crh" { + + include "tr(basic)" + + name[Group1]="Crimean Tatar (Turkish Q)"; + + key {[ quotedbl, backslash, less, degree ]}; + key {[ x, X, asterisk, question ]}; + + key {[ f, F, iacute, Iacute ]}; + key {[ j, J, ibreve, Ibreve ]}; + + key {[ ntilde, Ntilde, guillemotright, greater ]}; +}; + +// Crimean Tatar (Crimean Turkish) F layout +partial +xkb_symbols "crh_f" { + + include "tr(f)" + + name[Group1]="Crimean Tatar (Turkish F)"; + + key {[ plus, asterisk, backslash, plusminus ]}; + key {[ x, X, slash, question ]}; + + key {[ idotless, I, iacute, Iacute ], type[group1] = "FOUR_LEVEL_ALPHABETIC" }; + + key {[ k, K, ibreve, Ibreve ]}; + key {[ ntilde, Ntilde, grave, dead_grave ]}; +}; + +// Crimean Tatar (Crimean Turkish) Alt-Q layout +partial +xkb_symbols "crh_alt" { + + include "tr(alt)" + + name[Group1]="Crimean Tatar (Turkish Alt-Q)"; + + key {[ f, F, iacute, Iacute ]}; + key {[ j, J, ibreve, Ibreve ]}; + + key {[ n, N, ntilde, Ntilde ]}; +}; + + +// EXTRAS: + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/ua(sun_type6)" +}; diff --git a/nixos/xkb/symbols/us b/nixos/xkb/symbols/us new file mode 100644 index 00000000..80f884aa --- /dev/null +++ b/nixos/xkb/symbols/us @@ -0,0 +1,2230 @@ +// Keyboard layouts for the United States of America. + +default partial alphanumeric_keys modifier_keys +xkb_symbols "basic" { + + name[Group1]= "English (US)"; + + key {[ grave, asciitilde ]}; + key {[ 1, exclam ]}; + key {[ 2, at ]}; + key {[ 3, numbersign ]}; + key {[ 4, dollar ]}; + key {[ 5, percent ]}; + key {[ 6, asciicircum ]}; + key {[ 7, ampersand ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ minus, underscore ]}; + key {[ equal, plus ]}; + + key {[ q, Q ]}; + key {[ w, W ]}; + key {[ e, E ]}; + key {[ r, R ]}; + key {[ t, T ]}; + key {[ y, Y ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ o, O ]}; + key {[ p, P ]}; + key {[ bracketleft, braceleft ]}; + key {[ bracketright, braceright ]}; + + key {[ a, A ]}; + key {[ s, S ]}; + key {[ d, D ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ h, H ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ l, L ]}; + key {[ semicolon, colon ]}; + key {[ apostrophe, quotedbl ]}; + key {[ backslash, bar ]}; + + key {[ z, Z ]}; + key {[ x, X ]}; + key {[ c, C ]}; + key {[ v, V ]}; + key {[ b, B ]}; + key {[ n, N ]}; + key {[ m, M ]}; + key {[ comma, less ]}; + key {[ period, greater ]}; + key {[ slash, question ]}; +}; + +partial alphanumeric_keys +xkb_symbols "euro" { + + include "us(basic)" + name[Group1]= "English (US, euro on 5)"; + + key { [ backslash, bar ] }; + + include "eurosign(5)" + + include "level3(ralt_switch)" +}; + + +partial alphanumeric_keys +xkb_symbols "ibm238l" { + + include "us(basic)" + name[Group1]= "English (US, IBM Arabic 238_L)"; + + key { [ comma, comma ] }; + key { [ period, period ] }; + key { [ grave, asciitilde ] }; + key { [ backslash, bar ] }; + key { [ less, greater ] }; +}; + +partial alphanumeric_keys +xkb_symbols "intl" { + + name[Group1]= "English (US, intl., with dead keys)"; + + key { [dead_grave, dead_tilde, grave, asciitilde ] }; + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, at, twosuperior, dead_doubleacute ] }; + key { [ 3, numbersign, threesuperior, dead_macron ] }; + key { [ 4, dollar, currency, sterling ] }; + key { [ 5, percent, EuroSign, dead_cedilla ] }; + key { [ 6, dead_circumflex, onequarter, asciicircum ] }; + key { [ 7, ampersand, onehalf, dead_horn ] }; + key { [ 8, asterisk, threequarters, dead_ogonek ] }; + key { [ 9, parenleft, leftsinglequotemark, dead_breve ] }; + key { [ 0, parenright, rightsinglequotemark, dead_abovering ] }; + key { [ minus, underscore, yen, dead_belowdot ] }; + key { [ equal, plus, multiply, division ] }; + + key { [ q, Q, adiaeresis, Adiaeresis ] }; + key { [ w, W, aring, Aring ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ r, R, registered, trademark ] }; + key { [ t, T, thorn, THORN ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ p, P, odiaeresis, Odiaeresis ] }; + key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; + key { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ s, S, ssharp, section ] }; + key { [ d, D, eth, ETH ] }; + key { [ f, F, ediaeresis, Ediaeresis ] }; + key { [ g, G, g, G ] }; + key { [ h, H, h, H ] }; + key { [ j, J, idiaeresis, Idiaeresis ] }; + key { [ k, K, oe, OE ] }; + key { [ l, L, oslash, Oslash ] }; + key { [ semicolon, colon, paragraph, degree ] }; + key { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] }; + + key { [ z, Z, ae, AE ] }; + key { [ x, X, periodcentered, dead_stroke ] }; + key { [ c, C, copyright, cent ] }; + key { [ v, V, v, V ] }; + key { [ b, B, b, B ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ m, M, mu, plusminus ] }; + key { [ comma, less, ccedilla, Ccedilla ] }; + key { [ period, greater, dead_abovedot, dead_caron ] }; + key { [ slash, question, questiondown, dead_hook ] }; + key { [ backslash, bar, notsign, brokenbar ] }; + + key { [ backslash, bar, backslash, bar ] }; + + include "level3(ralt_switch)" +}; + +// Based on symbols/us_intl keyboard map: +// Dead-keys definition for a very simple US/ASCII layout. +// by Conectiva (http://www.conectiva.com.br) +// modified by Ricardo Y. Igarashi (iga@that.com.br) + +// Added the following deadkeys, to make it truly international: +// +// dead_macron: on AltGr-minus +// dead_breve: on AltGr-parenleft +// dead_abovedot: on AltGr-period +// dead_abovering: on AltGr-0 +// dead_doubleacute: on AltGr-equal (as quotedbl is already used) +// dead_caron: on AltGr-less (AltGr-shift-comma) +// dead_cedilla: on AltGr-comma +// dead_ogonek: on AltGr-semicolon +// dead_belowdot: on AltGr-underscore (AltGr-shift-minus) +// dead_hook: on AltGr-question +// dead_horn: on AltGr-plus (AltGr-shift-equal) +// dead_diaeresis: on AltGr-colon (Alt-shift-semicolon) +// +// those were already there: +// dead_grave +// dead_acute +// dead_circumflex +// dead_tilde +// dead_diaeresis + +partial alphanumeric_keys +xkb_symbols "alt-intl" { + + include "us" + name[Group1]= "English (US, alt. intl.)"; + + key { [ dead_grave, dead_tilde, grave, asciitilde ] }; + key { [ 5, percent, EuroSign ] }; + key { [ 6, dead_circumflex, asciicircum, asciicircum ] }; + key { [ 9, parenleft, leftsinglequotemark, dead_breve ] }; + key { [ 0, parenright, rightsinglequotemark, dead_abovering ] }; + key { [ minus, underscore, dead_macron, dead_belowdot ] }; + key { [ equal, plus, dead_doubleacute, dead_horn ] }; + + key { [ e, E, EuroSign, cent ] }; + + key { [ semicolon, colon, dead_ogonek, dead_diaeresis ] }; + key { [ dead_acute, dead_diaeresis, apostrophe, quotedbl ] }; + + key { [ x, X, periodcentered, dead_stroke ] }; + key { [ comma, less, dead_cedilla, dead_caron ] }; + key { [ period, greater, dead_abovedot, dead_circumflex ] }; + key { [ slash, question, dead_hook, dead_hook ] }; + + key { [ backslash, bar, backslash, bar ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "dvorak" { + + name[Group1]= "English (Dvorak)"; + + key {[ grave, asciitilde, dead_grave, dead_tilde ]}; + key {[ 1, exclam ]}; + key {[ 2, at ]}; + key {[ 3, numbersign ]}; + key {[ 4, dollar ]}; + key {[ 5, percent ]}; + key {[ 6, asciicircum, dead_circumflex, dead_circumflex ]}; + key {[ 7, ampersand ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft, dead_grave, dead_breve ]}; + key {[ 0, parenright ]}; + key {[ bracketleft, braceleft ]}; + key {[bracketright, braceright, dead_tilde]}; + + key {[apostrophe, quotedbl, dead_acute, dead_diaeresis ]}; + key {[ comma, less, dead_cedilla, dead_caron ]}; + key {[ period, greater, dead_abovedot, periodcentered ]}; + key {[ p, P ]}; + key {[ y, Y ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ c, C ]}; + key {[ r, R ]}; + key {[ l, L ]}; + key {[ slash, question ]}; + key {[ equal, plus ]}; + + key {[ a, A ]}; + key {[ o, O ]}; + key {[ e, E ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ d, D ]}; + key {[ h, H ]}; + key {[ t, T ]}; + key {[ n, N ]}; + key {[ s, S ]}; + key {[ minus, underscore ]}; + key {[ backslash, bar ]}; + + key {[ semicolon, colon, dead_ogonek, dead_doubleacute ]}; + key {[ q, Q ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ x, X ]}; + key {[ b, B ]}; + key {[ m, M ]}; + key {[ w, W ]}; + key {[ v, V ]}; + key {[ z, Z ]}; +}; + +// Dvorak intl., with dead keys +// Olivier Mehani (shtrom-xorg@ssji.net) +// Reproduce the per-key mapping of us(intl) for the dvorak layout +// aka "I just swapped my keys over" +partial alphanumeric_keys +xkb_symbols "dvorak-intl" { + + name[Group1]= "English (Dvorak, intl., with dead keys)"; + + key { [dead_grave, dead_tilde, grave, asciitilde ] }; + + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, at, twosuperior, dead_doubleacute ] }; + key { [ 3, numbersign, threesuperior, dead_macron ] }; + key { [ 4, dollar, currency, sterling ] }; + key { [ 5, percent, EuroSign, dead_cedilla ] }; + key { [ 6, dead_circumflex, onequarter, asciicircum ] }; + key { [ 7, ampersand, onehalf, dead_horn ] }; + key { [ 8, asterisk, threequarters, dead_ogonek ] }; + key { [ 9, parenleft, leftsinglequotemark, dead_breve ] }; + key { [ 0, parenright, rightsinglequotemark, dead_abovering ] }; + key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; + key { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; + + key { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] }; + key { [ comma, less, ccedilla, Ccedilla ] }; + key { [ period, greater, dead_abovedot, dead_caron ] }; + key { [ p, P, odiaeresis, Odiaeresis ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + key { [ f, F, ediaeresis, Ediaeresis ] }; + key { [ g, G, g, G ] }; + key { [ c, C, copyright, cent ] }; + key { [ r, R, registered, trademark ] }; + key { [ l, L, oslash, Oslash ] }; + key { [ slash, question, questiondown, dead_hook ] }; + key { [ equal, plus, multiply, division ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ d, D, eth, ETH ] }; + key { [ h, H, h, H ] }; + key { [ t, T, thorn, THORN ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ s, S, ssharp, section ] }; + key { [ minus, underscore, yen, dead_belowdot ] }; + + key { [ semicolon, colon, paragraph, degree ] }; + key { [ q, Q, adiaeresis, Adiaeresis ] }; + key { [ j, J, idiaeresis, Idiaeresis ] }; + key { [ k, K, oe, OE ] }; + key { [ x, X, periodcentered, dead_stroke ] }; + key { [ b, B, b, B ] }; + key { [ m, M, mu, plusminus ] }; + key { [ w, W, aring, Aring ] }; + key { [ v, V, v, V ] }; + key { [ z, Z, ae, AE ] }; + key { [ backslash, bar, notsign, brokenbar ] }; + + key { [ backslash, bar, backslash, bar ] }; + + include "level3(ralt_switch)" +}; + +// Dvorak international without dead keys +// Stephane Magnenat (stephane at magnenat dot net, http://stephane.magnenat.net) +// Based on information from http://www.poupinou.org/dvorak/index.html +// +// ` 1 2 3 4 5 6 7 8 9 0 [ ] \ +// € +// +// ' , . p y f g c r l / = +// ä ê ë ü ç +// +// a o e u i d h t n s - +// à ô é û î ß +// +// ; q j k x b m w v z +// â ö è ù ï + +partial alphanumeric_keys +xkb_symbols "dvorak-alt-intl" { + + include "us(dvorak)" + name[Group1]= "English (Dvorak, alt. intl.)"; + + key { [ 4, dollar, EuroSign ] }; + + key { [ comma, less, adiaeresis, dead_caron ] }; + key { [ period, greater, ecircumflex, periodcentered ] }; + key { [ p, P, ediaeresis, dead_cedilla ] }; + key { [ y, Y, udiaeresis ] }; + key { [ c, C, ccedilla, dead_abovedot ] }; + + key { [ a, A, agrave ] }; + key { [ o, O, ocircumflex ] }; + key { [ e, E, eacute ] }; + key { [ u, U, ucircumflex ] }; + key { [ i, I, icircumflex ] }; + key { [ s, S, ssharp, U1E9E ] }; + + key { [ semicolon, colon, acircumflex ] }; + key { [ q, Q, odiaeresis, dead_ogonek ] }; + key { [ j, J, egrave, dead_doubleacute ] }; + key { [ k, K, ugrave ] }; + key { [ x, X, idiaeresis, dead_stroke ] }; + + include "level3(ralt_switch)" +}; + +// Left and right handed dvorak layouts +// by sqweek 2006-01-30 +// Based on the corresponding layouts in the console-tools package. +partial alphanumeric_keys +xkb_symbols "dvorak-l" { + + include "us(dvorak)" + name[Group1]= "English (Dvorak, left-handed)"; + + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ slash, question ] }; + key { [ p, P ] }; + key { [ f, F ] }; + key { [ m, M ] }; + key { [ l, L ] }; + key { [ j, J ] }; + key { [ 4, dollar ] }; + key { [ 3, numbersign ] }; + key { [ 2, at ] }; + key { [ 1, exclam ] }; + + key { [ semicolon, colon ] }; + key { [ q, Q ] }; + key { [ b, B ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ r, R ] }; + key { [ s, S ] }; + key { [ o, O ] }; + key { [ period, greater ] }; + key { [ 6, asciicircum ] }; + key { [ 5, percent ] }; + key { [ equal, plus ] }; + + key { [ minus, underscore ] }; + key { [ k, K ] }; + key { [ c, C ] }; + key { [ d, D ] }; + key { [ t, T ] }; + key { [ h, H ] }; + key { [ e, E ] }; + key { [ a, A ] }; + key { [ z, Z ] }; + key { [ 8, asterisk ] }; + key { [ 7, ampersand ] }; + + key { [ apostrophe, quotedbl ] }; + key { [ x, X ] }; + key { [ g, G ] }; + key { [ v, V ] }; + key { [ w, W ] }; + key { [ n, N ] }; + key { [ i, I ] }; + key { [ comma, less ] }; + key { [ 0, parenright ] }; + key { [ 9, parenleft ] }; +}; + +partial alphanumeric_keys +xkb_symbols "dvorak-r" { + + include "us(dvorak)" + name[Group1]= "English (Dvorak, right-handed)"; + + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ j, J ] }; + key { [ l, L ] }; + key { [ m, M ] }; + key { [ f, F ] }; + key { [ p, P ] }; + key { [ slash, question ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ q, Q ] }; + key { [ period, greater ] }; + key { [ o, O ] }; + key { [ r, R ] }; + key { [ s, S ] }; + key { [ u, U ] }; + key { [ y, Y ] }; + key { [ b, B ] }; + key { [ semicolon, colon ] }; + key { [ equal, plus ] }; + + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ z, Z ] }; + key { [ a, A ] }; + key { [ e, E ] }; + key { [ h, H ] }; + key { [ t, T ] }; + key { [ d, D ] }; + key { [ c, C ] }; + key { [ k, K ] }; + key { [ minus, underscore ] }; + + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ x, X ] }; + key { [ comma, less ] }; + key { [ i, I ] }; + key { [ n, N ] }; + key { [ w, W ] }; + key { [ v, V ] }; + key { [ g, G ] }; + key { [ apostrophe, quotedbl ] }; +}; + +// Classic dvorak layout +// by Piter Punk - 2006-07-06 +// Based on dvorak layout and e-mail from Russel L. Harris rlharris@oplink.net +// on xorg list. +partial alphanumeric_keys +xkb_symbols "dvorak-classic" { + + name[Group1]= "English (classic Dvorak)"; + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + + key { [ bracketleft, braceleft ] }; + key { [ 7, ampersand ] }; + key { [ 5, percent ] }; + key { [ 3, numbersign ] }; + key { [ 1, exclam ] }; + key { [ 9, parenleft, dead_grave] }; + key { [ 0, parenright ] }; + key { [ 2, at ] }; + key { [ 4, dollar ] }; + key { [ 6, asciicircum, dead_circumflex, dead_circumflex ] }; + key { [ 8, asterisk ] }; + key { [ bracketright, braceright, dead_tilde] }; + + key { [ slash, question ] }; + key { [ comma, less, dead_cedilla, dead_caron ] }; + key { [ period, greater, dead_abovedot, periodcentered ] }; + key { [ p, P ] }; + key { [ y, Y ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ c, C ] }; + key { [ r, R ] }; + key { [ l, L ] }; + key { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; + key { [ equal, plus ] }; + + key { [ a, A ] }; + key { [ o, O ] }; + key { [ e, E ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ d, D ] }; + key { [ h, H ] }; + key { [ t, T ] }; + key { [ n, N ] }; + key { [ s, S ] }; + key { [ minus, underscore ] }; + + key { [ semicolon, colon, dead_ogonek, dead_doubleacute ] }; + key { [ q, Q ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ x, X ] }; + key { [ b, B ] }; + key { [ m, M ] }; + key { [ w, W ] }; + key { [ v, V ] }; + key { [ z, Z ] }; + key { [ backslash, bar ] }; +}; + +// programmer Dvorak, by Roland Kaufmann +// License: BSD, available at +// Main features: Numbers are in shift position (like French), symbols have been +// placed in locations that give good hand-alternation and finger rolling with +// symbols that usually follows, accented characters are possible for I18N. +// Patch suggestions should be sent upstream. +partial alphanumeric_keys +xkb_symbols "dvp" { + + include "us(dvorak)" + name[Group1] = "English (programmer Dvorak)"; + + // Unmodified Shift AltGr Shift+AltGr + // symbols row, left side + key { [ dollar, asciitilde, dead_tilde ] }; + key { [ ampersand, percent ] }; + key { [ bracketleft, 7, currency ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ braceleft, 5, cent ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ braceright, 3, yen ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ parenleft, 1, EuroSign ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ equal, 9, sterling ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + + // symbols row, right side + key { [ asterisk, 0 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ parenright, 2, onehalf ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ plus, 4 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ bracketright, 6 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ exclam, 8, exclamdown, U2E18 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; // reversed interrobang + key { [ numbersign, grave, dead_grave ] }; + + // upper row, left side + key { [ semicolon, colon, dead_diaeresis ] }; + key { [ comma, less, guillemotleft, U201C ] }; + key { [ period, greater, guillemotright, U201D ] }; + key { [ p, P, paragraph, section ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + + // upper row, right side + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ r, R, registered, trademark ] }; + key { [ slash, question, questiondown, U203D ] }; // interrobang + key { [ at, asciicircum, dead_circumflex, dead_caron ] }; + + // home row, left side + key { [ a, A, aring, Aring ] }; + key { [ o, O, oslash, Oslash ] }; + key { [ e, E, ae, AE ] }; + key { [ u, U, eacute, Eacute ] }; + + // home row, right side + key { [ d, D, eth, ETH ] }; + key { [ h, H, dead_acute ] }; + key { [ t, T, thorn, THORN ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ s, S, ssharp, U1E9E ] }; + key { [ minus, underscore, hyphen, endash ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; + key { [ backslash, bar ] }; + + // lower row, left side + key { [ apostrophe, quotedbl, dead_acute ] }; + + // do NOT hardcode this switch; use lv3:ralt_switch option instead! + //include "level3(ralt_switch)" +}; + +// Macintosh dvorak keyboard layout +// Based on the Dvorak keyboard layout found in MacOS +partial alphanumeric_keys +xkb_symbols "dvorak-mac" { + name[Group1]= "English (Dvorak, Macintosh)"; + + key { [ grave, asciitilde, dead_grave, grave ] }; + + key { [ 1, exclam, exclamdown, U2044 ] }; + key { [ 2, at, trademark, EuroSign ] }; + key { [ 3, numbersign, sterling, U2039 ] }; + key { [ 4, dollar, cent, U203A ] }; + key { [ 5, percent, infinity, UFB01 ] }; + key { [ 6, asciicircum, section, UFB02 ] }; + key { [ 7, ampersand, paragraph, doubledagger ] }; + key { [ 8, asterisk, enfilledcircbullet, degree ] }; + key { [ 9, parenleft, ordfeminine, periodcentered ] }; + key { [ 0, parenright, masculine, singlelowquotemark ] }; + key { [ bracketleft, braceleft, leftdoublequotemark, rightdoublequotemark ] }; + key { [ bracketright, braceright, leftsinglequotemark, rightsinglequotemark ] }; + + key { [ apostrophe, quotedbl, ae, AE ] }; + key { [ comma, less, lessthanequal, macron ] }; + key { [ period, greater, greaterthanequal, breve ] }; + key { [ p, P, Greek_pi, U220F ] }; + key { [ y, Y, yen, Aacute ] }; + key { [ f, F, function, Idiaeresis ] }; + key { [ g, G, copyright, doubleacute ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ r, R, registered, permille ] }; + key { [ l, L, notsign, Ograve ] }; + key { [ slash, question, division, questiondown ] }; + key { [ equal, plus, notequal, plusminus ] }; + + key { [ a, A, aring, Aring ] }; + key { [ o, O, oslash, Oslash ] }; + key { [ e, E, dead_acute, acute ] }; + key { [ u, U, dead_diaeresis, diaeresis ] }; + key { [ i, I, dead_circumflex, asciicircum ] }; + key { [ d, D, partialderivative, Icircumflex ] }; + key { [ h, H, abovedot, Oacute ] }; + key { [ t, T, dagger, caron ] }; + key { [ n, N, dead_tilde, asciitilde ] }; + key { [ s, S, ssharp, Iacute ] }; + key { [ minus, underscore, endash, emdash ] }; + + key { [ section, plusminus ] }; + key { [ semicolon, colon, ellipsis, Uacute ] }; + key { [ q, Q, oe, OE ] }; + key { [ j, J, U2206, Ocircumflex ] }; + key { [ k, K, dead_abovering, UF8FF ] }; + key { [ x, X, U2248, ogonek ] }; + key { [ b, B, integral, idotless ] }; + key { [ m, M, mu, Acircumflex ] }; + key { [ w, W, U2211, doublelowquotemark ] }; + key { [ v, V, squareroot, U25CA ] }; + key { [ z, Z, Greek_OMEGA, cedilla ] }; + + key { [ backslash, bar, guillemotleft, guillemotright ] }; + + include "level3(ralt_switch)" +}; + +// A phonetic layout for typing Russian on a US keyboard. +// Originally by Ivan Popov , 2005. +// (The punctuation symbols that are displaced by Cyrillic letters +// have been put on levels 3 and 4, reachable with AltGr.) +partial alphanumeric_keys +xkb_symbols "rus" { + + include "us(basic)" + + name[Group1]= "Russian (US, phonetic)"; + + key {[ Cyrillic_io, Cyrillic_IO, grave, asciitilde ]}; + key {[ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal, plus ]}; + + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_yeru, Cyrillic_YERU ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA, bracketleft, braceleft ]}; + key {[ Cyrillic_shcha, Cyrillic_SHCHA, bracketright, braceright ]}; + + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_che, Cyrillic_CHE, semicolon, colon ]}; + key {[ Cyrillic_yu, Cyrillic_YU, apostrophe, quotedbl ]}; + key {[ Cyrillic_e, Cyrillic_E, backslash, bar ]}; + + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_softsign, Cyrillic_SOFTSIGN ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "mac" { + + name[Group1]= "English (Macintosh)"; + + key.type[group1]="FOUR_LEVEL"; + + // Slightly improvised from http://homepage.mac.com/thgewecke/kblayout.jpg + key { [ section, plusminus, section, plusminus ] }; + key { [ grave, asciitilde, dead_grave, dead_horn ] }; + key { [ 1, exclam, exclamdown, U2044 ] }; + key { [ 2, at, trademark, EuroSign ] }; + key { [ 3, numbersign, sterling, U2039 ] }; + key { [ 4, dollar, cent, U203A ] }; + key { [ 5, percent, infinity, UFB01 ] }; + key { [ 6,asciicircum, section, UFB02 ] }; + key { [ 7, ampersand, paragraph, doubledagger ] }; + key { [ 8, asterisk, enfilledcircbullet, degree ] }; + key { [ 9, parenleft, ordfeminine, periodcentered ] }; + key { [ 0, parenright, masculine,singlelowquotemark] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ equal, plus, notequal, plusminus ] }; + + key { [ q, Q, oe, OE ] }; + key { [ w, W, U2211,doublelowquotemark] }; + key { [ e, E, dead_acute, acute ] }; + key { [ r, R, registered, permille ] }; + key { [ t, T, dagger, dead_caron ] }; + key { [ y, Y, yen, onequarter ] }; + key { [ u, U, dead_diaeresis, diaeresis ] }; + key { [ i, I, dead_circumflex, U02C6 ] }; + key { [ o, O, oslash, Oslash ] }; + key { [ p, P, Greek_pi, U220F ] }; + key { [ bracketleft, braceleft, leftdoublequotemark, rightdoublequotemark ] }; + key { [bracketright, braceright, leftsinglequotemark, rightsinglequotemark ] }; + key { [ backslash, bar, guillemotleft, guillemotright ] }; + + key { [ a, A, aring, Aring ] }; + key { [ s, S, ssharp, dead_stroke ] }; + key { [ d, D, partialderivative, eth ] }; + key { [ f, F, function, dead_hook ] }; + key { [ g, G, copyright, dead_doubleacute ] }; + key { [ h, H, dead_abovedot, dead_belowdot ] }; + key { [ j, J, U2206, onehalf ] }; + key { [ k, K,dead_abovering, UF8FF ] }; + key { [ l, L, notsign, THORN ] }; + key { [ semicolon, colon, U2026, thorn ] }; + key { [apostrophe, quotedbl, ae, AE ] }; + + key { [ z, Z, Greek_OMEGA, dead_cedilla ] }; + key { [ x, X, U2248, dead_ogonek ] }; + // unclear whether "approxeq" is 2248 or 2245 + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, squareroot, U25CA ] }; + key { [ b, B, integral, idotless ] }; + key { [ n, N, dead_tilde, U02DC ] }; + key { [ m, M, mu, threequarters ] }; + key { [ comma, less, lessthanequal, dead_macron ] }; + key { [ period, greater, greaterthanequal, dead_breve ] }; + key { [ slash, question, division, questiondown ] }; + + include "level3(ralt_switch)" +}; + +// Colemak symbols for xkb on X.Org Server 7.x +// 2006-01-01 Shai Coleman, http://colemak.com/ + +partial alphanumeric_keys +xkb_symbols "colemak" { + + name[Group1]= "English (Colemak)"; + + key { [ grave, asciitilde, dead_tilde, asciitilde ] }; + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, at, masculine, twosuperior ] }; + key { [ 3, numbersign, ordfeminine, threesuperior ] }; + key { [ 4, dollar, cent, sterling ] }; + key { [ 5, percent, EuroSign, yen ] }; + key { [ 6, asciicircum, hstroke, Hstroke ] }; + key { [ 7, ampersand, eth, ETH ] }; + key { [ 8, asterisk, thorn, THORN ] }; + key { [ 9, parenleft, leftsinglequotemark, leftdoublequotemark ] }; + key { [ 0, parenright, rightsinglequotemark, rightdoublequotemark ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ equal, plus, multiply, division ] }; + + key { [ q, Q, adiaeresis, Adiaeresis ] }; + key { [ w, W, aring, Aring ] }; + key { [ f, F, atilde, Atilde ] }; + key { [ p, P, oslash, Oslash ] }; + key { [ g, G, dead_ogonek, asciitilde ] }; + key { [ j, J, dstroke, Dstroke ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + key { [ semicolon, colon, odiaeresis, Odiaeresis ] }; + key { [ bracketleft, braceleft, guillemotleft, 0x1002039 ] }; + key { [ bracketright, braceright, guillemotright, 0x100203a ] }; + key { [ backslash, bar, asciitilde, asciitilde ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ r, R, dead_grave, asciitilde ] }; + key { [ s, S, ssharp, 0x1001e9e ] }; + key { [ t, T, dead_acute, dead_doubleacute ] }; + key { [ d, D, dead_diaeresis, asciitilde ] }; + key { [ h, H, dead_caron, asciitilde ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ apostrophe, quotedbl, otilde, Otilde ] }; + + key { [ z, Z, ae, AE ] }; + key { [ x, X, dead_circumflex, asciitilde ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, oe, OE ] }; + key { [ b, B, dead_breve, asciitilde ] }; + key { [ k, K, dead_abovering, asciitilde ] }; + key { [ m, M, dead_macron, asciitilde ] }; + key { [ comma, less, dead_cedilla, asciitilde ] }; + key { [ period, greater, dead_abovedot, asciitilde ] }; + key { [ slash, question, questiondown, asciitilde ] }; + + key { [ BackSpace, BackSpace, BackSpace, BackSpace ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ space, space, space, nobreakspace ] }; + + include "level3(ralt_switch)" +}; + +// Colemak-DH (ANSI) symbols for xkb on X.Org Server 7.x +// 2014-10-25 by SteveP, https://colemakmods.github.io/mod-dh/ + +xkb_symbols "colemak_dh" { + + include "us(colemak)" + + name[Group1]= "English (Colemak-DH)"; + + key { [ b, B, dead_breve, asciitilde ] }; + + key { [ g, G, dead_ogonek, asciitilde ] }; + key { [ m, M, dead_macron, asciitilde ] }; + + key { [ z, Z, ae, AE ] }; + key { [ x, X, dead_circumflex, asciitilde ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ d, D, dead_diaeresis, asciitilde ] }; + key { [ z, Z, ae, AE ] }; //Z appears here too because key is not present on ANSI keyboards + key { [ h, H, dead_caron, asciitilde ] }; +}; + +// Colemak-DH (Wide) symbols for xkb on X.Org Server 7.x +// https://colemakmods.github.io/mod-dh/ + +xkb_symbols "colemak_dh_wide" { + + include "us(colemak_dh)" + name[Group1]= "English (Colemak-DH Wide)"; + + key { [ equal, plus, multiply, division ] }; + key { [ 7, ampersand, eth, ETH ] }; + key { [ 8, asterisk, thorn, THORN ] }; + key { [ 9, parenleft, leftsinglequotemark, leftdoublequotemark ] }; + key { [ 0, parenright, rightsinglequotemark, rightdoublequotemark ] }; + key { [ minus, underscore, endash, emdash ] }; + + key { [ bracketleft, braceleft, guillemotleft, 0x1002039 ] }; + key { [ j, J, dstroke, Dstroke ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + key { [ semicolon, colon, odiaeresis, Odiaeresis ] }; + key { [ apostrophe, quotedbl, otilde, Otilde ] }; + + key { [ bracketright, braceright, guillemotright, 0x100203a ] }; + key { [ m, M, dead_macron, asciitilde ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + + key { [ slash, question, questiondown, asciitilde ] }; + key { [ k, K, dead_abovering, asciitilde ] }; + key { [ h, H, dead_caron, asciitilde ] }; + key { [ comma, less, dead_cedilla, asciitilde ] }; + key { [ period, greater, dead_abovedot, asciitilde ] }; + key { [ slash, question, questiondown, asciitilde ] }; +}; + + +// Colemak-DH (ISO) symbols for xkb on X.Org Server 7.x +// https://colemakmods.github.io/mod-dh/ + +xkb_symbols "colemak_dh_iso" { + + include "us(colemak_dh)" + name[Group1]= "English (Colemak-DH ISO)"; + + key { [ numbersign, asciitilde, backslash, bar ] }; + + key { [ backslash, bar, asciitilde, brokenbar ] }; +}; + +// Colemak-DH (Wide ISO) symbols for xkb on X.Org Server 7.x +// https://colemakmods.github.io/mod-dh/ + +xkb_symbols "colemak_dh_wide_iso" { + + include "us(colemak_dh_wide)" + name[Group1]= "English (Colemak-DH Wide ISO)"; + + key { [ numbersign, asciitilde, backslash, bar ] }; + key { [ apostrophe, quotedbl, otilde, Otilde ] }; + + key { [ backslash, bar, asciitilde, brokenbar ] }; + key { [ slash, question, questiondown, asciitilde ] }; +}; + +// Colemak-DH (ortholinear) symbols for xkb on X.Org Server 7.x +// https://colemakmods.github.io/mod-dh/ + +xkb_symbols "colemak_dh_ortho" { + + include "us(colemak_dh)" + name[Group1]= "English (Colemak-DH Ortholinear)"; + + key { [ z, Z, ae, AE ] }; + key { [ x, X, dead_circumflex, asciitilde ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ d, D, dead_diaeresis, asciitilde ] }; + key { [ v, V, oe, OE ] }; +}; + + +// I do NOT like dead-keys - the International keyboard as defined by Microsoft +// does not fit my needs. Why use two keystrokes for all simple characters (eg ' +// and generates a single ') just to have an é (eacute) in two strokes +// as well? I type ' more often than é (eacute). +// +// This file works just like a regular keyboard, BUT has all dead-keys +// accessible at level3 (through AltGr). An ë (ediaeresis) is now: AltGr+" +// followed by an e. In other words, this keyboard is not international as long +// as you leave the right Alt key alone. +// +// The original MS International keyboard was intended for Latin1 (iso8859-1). +// With the introduction of iso8859-15, the (important) ligature oe (and OE) +// became available. I added them next to ae. Because I write ediaeresis more +// often than registered, I moved registered to be next to copyright and added +// ediaeresis and idiaeresis. - Adriaan +// +// Note: there is an "altgr-weur" layout (in extras) which is no longer based on +// the Microsoft layout, supports all chars that altgr-intl offers, but is +// optimized for 10 Western European languages. More info: https://altgr-weur.eu + +partial alphanumeric_keys +xkb_symbols "altgr-intl" { + + include "us(intl)" + name[Group1]= "English (intl., with AltGr dead keys)"; + +// five dead keys moved into level3: + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [apostrophe,quotedbl, dead_acute, dead_diaeresis ] }; + +// diversions from the MS Intl keyboard: + + key { [ 1, exclam, onesuperior, exclamdown ] }; + key { [ r, R, ediaeresis, Ediaeresis ] }; + key { [ f, F, f, F ] }; + key { [ x, X, oe, OE ] }; + key { [ v, V, registered, trademark ] }; + key { [ b, B, periodcentered, dead_stroke ] }; + +// onequarter etc (not in iso8859-15) moved to get three unshifted deadkeys: + + key { [ 6, asciicircum, dead_circumflex, onequarter ] }; + key { [ 7, ampersand, dead_horn, onehalf ] }; + key { [ 8, asterisk, dead_ogonek, threequarters ] }; + + include "level3(ralt_switch)" +}; + +// This (altgr-weur) layout is based on combined letter frequencies +// for English, German, Dutch, French, Spanish, Portuguese, Italian, +// Danish, Norwegian, Swedish and Finnish: all accented characters for +// those languages are available through AltGr- combinations. Further +// explanation can be found at: https://www.altgr-weur.eu/ +// - Adriaan and Enno + +// Version info (for altgr-weur ONLY): +// $Id: altgr-weur,v 2.0 2021/04/12 11:27:12 adriaan Exp $ + +partial alphanumeric_keys +xkb_symbols "altgr-weur" { + + name[Group1]= "English (Western European AltGr dead keys)"; + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 1, exclam, exclamdown, dead_abovedot ] }; + key { [ 2, at, twosuperior, dead_doubleacute ] }; + key { [ 3, numbersign, threesuperior, dead_macron ] }; + key { [ 4, dollar, cent, yen ] }; + key { [ 5, percent, EuroSign, sterling ] }; + key { [ 6,asciicircum, dead_circumflex, dead_caron ] }; + key { [ 7, ampersand, doublelowquotemark, singlelowquotemark ] }; + key { [ 8, asterisk, ssharp, dead_greek ] }; + key { [ 9, parenleft, leftdoublequotemark, leftsinglequotemark ] }; + key { [ 0, parenright, rightdoublequotemark, rightsinglequotemark ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ equal, plus, degree, dead_abovering ] }; + + key { [ q, Q, aring, Aring ] }; + key { [ w, W, ae, AE ] }; + key { [ e, E, ediaeresis, Ediaeresis ] }; + key { [ r, R, egrave, Egrave ] }; + key { [ t, T, oslash, Oslash ] }; + key { [ y, Y, ugrave, Ugrave ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + key { [ i, I, idiaeresis, Idiaeresis ] }; + key { [ o, O, odiaeresis, Odiaeresis ] }; + key { [ p, P, ograve, Ograve ] }; + // U203[9A]: single right/left-pointing angle quotation marks + key { [ bracketleft, braceleft, guillemotleft, U2039 ] }; + key { [bracketright,braceright, guillemotright, U203A ] }; + + key { [ a, A, adiaeresis, Adiaeresis ] }; + key { [ s, S, agrave, Agrave ] }; + key { [ d, D, eacute, Eacute ] }; + key { [ f, F, ecircumflex, Ecircumflex ] }; + key { [ g, G, icircumflex, Icircumflex ] }; + key { [ h, H, ucircumflex, Ucircumflex ] }; + key { [ j, J, uacute, Uacute ] }; + key { [ k, K, iacute, Iacute ] }; + key { [ l, L, oacute, Oacute ] }; + key { [ semicolon, colon, ocircumflex, Ocircumflex ] }; + key { [apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; + + key { [ z, Z, aacute, Aacute ] }; + key { [ x, X, acircumflex, Acircumflex ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, atilde, Atilde ] }; + key { [ b, B, otilde, Otilde ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ m, M, igrave, Igrave ] }; + key { [ comma, less, dead_cedilla, dead_ogonek ] }; + key { [ period, greater, oe, OE ] }; + key { [ slash, question, questiondown, dead_stroke ] }; + // ij ligature IJ ligature + key { [ backslash, bar, U0133, U0132 ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + + // #HW-SPECIFIC + + include "us(basic)" + name[Group1]= "English (US)"; + + // OLPC international US English keyboard layout. + // It's a little different from the usual international layout. + // See: http://wiki.laptop.org/go/Image:Keyboard_english.png + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 1, exclam, exclamdown, exclamdown ] }; + key { [ 2, at, notsign, notsign ] }; + key { [ 3, numbersign, 0x1000300, 0x1000300 ] }; // combining grave + key { [ 4, dollar, 0x1000301, 0x1000301 ] }; // combining acute + key { [ 5, percent, 0x1000306, 0x1000306 ] }; // combining breve above + key { [ 6,asciicircum, 0x100030A, 0x100030A ] }; // combining ring above + key { [ 7, ampersand, 0x1000302, 0x1000302 ] }; // combining circumflex above + key { [ 8, asterisk, 0x100030C, 0x100030C ] }; // combining caron above + key { [ 9, parenleft, 0x1000307, 0x1000307 ] }; // combining dot above + key { [ 0, parenright, 0x1000308, 0x1000308 ] }; // combining diaeresis above + key { [ minus, underscore, 0x1000304, 0x1000304 ] }; // combining macron above + key { [ equal, plus, 0x1000303, 0x1000303 ] }; // combining tilde above + + key { [ q, Q, Greek_omega, Greek_OMEGA ] }; + key { [ w, W, oslash, Oslash ] }; + key { [ e, E, oe, OE ] }; + key { [ r, R, 0x1000327, 0x1000327 ] }; // combining cedilla + key { [ t, T, 0x100032E, 0x100032E ] }; // combining breve below + key { [ y, Y, 0x1000325, 0x1000325 ] }; // combining ring below + key { [ u, U, 0x100032D, 0x100032D ] }; // combining circumflex below + key { [ i, I, 0x100032C, 0x100032C ] }; // combining caron below + key { [ o, O, 0x1000323, 0x1000323 ] }; // combining dot below + key { [ p, P, 0x1000324, 0x1000324 ] }; // combining diaeresis below + key { [ bracketleft, braceleft, 0x1000331, 0x1000331 ] }; // combining macron below + key { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below + + key { [ a, A, ae, AE ] }; + key { [ s, S, ssharp, 0x1001E9E ] }; // uppercase S sharp + key { [ d, D, eth, ETH ] }; + key { [ f, F, thorn, THORN ] }; + key { [ h, H, sterling, sterling ] }; + key { [ j, J, EuroSign, EuroSign ] }; + key { [ semicolon, colon, masculine, ordfeminine ] }; + key { [ apostrophe, quotedbl, currency, currency ] }; + key { [ backslash, bar, section, section ] }; + + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ m, M, mu, mu ] }; + key { [ comma, less, guillemotleft, guillemotleft ] }; + key { [ period, greater, guillemotright, guillemotright ] }; + key { [ slash, question, questiondown, questiondown ] }; + + key { [ multiply, division, ISO_Next_Group, ISO_Prev_Group ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "olpc2" { + include "us(olpc)" + name[Group1]= "English (the divide/multiply toggle the layout)"; + include "group(olpc)" +}; + +xkb_symbols "olpcm" { + + // #HW-SPECIFIC + + include "us(basic)" + name[Group1]= "English (US)"; + + // Mechanical (non-membrane) OLPC int'l US English keyboard layout. + // See: http://wiki.laptop.org/go/OLPC_English_Non-membrane_Keyboard + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ 1, exclam, exclamdown, exclamdown ] }; + key { [ 2, at, notsign, notsign ] }; + key { [ 3, numbersign, 0x1000300, 0x1000300 ] }; // combining grave + key { [ 4, dollar, 0x1000301, 0x1000301 ] }; // combining acute + key { [ 5, percent, 0x1000306, 0x1000306 ] }; // combining breve above + key { [ 6,asciicircum, 0x100030A, 0x100030A ] }; // combining ring above + key { [ 7, ampersand, 0x1000302, 0x1000302 ] }; // combining circumflex above + key { [ 8, asterisk, 0x100030C, 0x100030C ] }; // combining caron above + key { [ 9, parenleft, 0x1000307, 0x1000307 ] }; // combining dot above + key { [ 0, parenright, 0x1000308, 0x1000308 ] }; // combining diaeresis above + key { [ minus, underscore, 0x1000304, 0x1000304 ] }; // combining macron above + + key { [ q, Q, Greek_omega, Greek_OMEGA ] }; + key { [ w, W, oslash, Oslash ] }; + key { [ e, E, oe, OE ] }; + key { [ r, R, 0x1000327, 0x1000327 ] }; // combining cedilla + key { [ t, T, 0x100032E, 0x100032E ] }; // combining breve below + key { [ y, Y, 0x1000325, 0x1000325 ] }; // combining ring below + key { [ u, U, 0x100032D, 0x100032D ] }; // combining circumflex below + key { [ i, I, 0x100032C, 0x100032C ] }; // combining caron below + key { [ o, O, 0x1000323, 0x1000323 ] }; // combining dot below + key { [ p, P, 0x1000324, 0x1000324 ] }; // combining diaeresis below + key { [ bracketleft, braceleft, 0x1000331, 0x1000331 ] }; // combining macron below + key { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below + + key { [ a, A, ae, AE ] }; + key { [ s, S, ssharp, 0x1001E9E ] }; // uppercase S sharp + key { [ d, D, eth, ETH ] }; + key { [ f, F, thorn, THORN ] }; + key { [ h, H, sterling, sterling ] }; + key { [ j, J, EuroSign, EuroSign ] }; + key { [ semicolon, colon, masculine, ordfeminine ] }; + // no AC11 or AC12 on olpcm + + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ m, M, mu, mu ] }; + key { [ comma, less, guillemotleft, guillemotleft ] }; + key { [ period, greater, guillemotright, guillemotright ] }; + key { [ slash, question, questiondown, questiondown ] }; + + key { [ backslash, bar, section, section ] }; + key { [ equal, plus, 0x1000303, 0x1000303 ] }; + key { [ apostrophe, quotedbl, currency, currency ] }; + + include "level3(ralt_switch)" +}; + +// Based on Cherokee Nation Official Layout +// http://www.cherokee.org/extras/downloads/font/Keyboard.htm + +partial alphanumeric_keys modifier_keys +xkb_symbols "chr" { + + name[Group1]= "Cherokee"; + key.type[group1]="ALPHABETIC"; + + key { [ grave, U13CA ] }; + key { [ 1, U13B1 ] }; + key { [ 2, U13C7 ] }; + key { [ 3, U13E7 ] }; + key { [ U13D9, U13B0 ] }; + key { [ U13E6, U13B9 ] }; + key { [ U13DC, U13DD ] }; + key { [ U13CB, U13E1 ] }; + key { [ U13D6, U13BA ] }; + key { [ U13D2, parenleft ] }; + key { [ U13C4, parenright ] }; + key { [ U13BF, U13BC ] }; + key { [ U13F3, U13BD ] }; + + key { [ U13AA, U13C6 ] }; + key { [ U13B3, U13EB ] }; + key { [ U13A1, U13E3 ] }; + key { [ U13DB, U13CF ] }; + key { [ U13D4, U13D8 ] }; + key { [ U13EF, U13F2 ] }; + key { [ U13A4, U13AD ] }; + key { [ U13A2, U13F1 ] }; + key { [ U13A3, U13EC ] }; + key { [ U13C1, U13EA ] }; + key { [ U13D5, U13D1 ] }; + key { [ U13B6, U13E4 ] }; + key { [ U13E9, U13EE ] }; + + key { [ U13A0, U13CC ] }; + key { [ U13CD, U13CE ] }; + key { [ U13D7, U13D0 ] }; + key { [ U13A9, U13C8 ] }; + key { [ U13A6, U13E5 ] }; + key { [ U13AF, U13B2 ] }; + key { [ U13DA, U13AB ] }; + key { [ U13B8, U13A7 ] }; + key { [ U13B5, U13AE ] }; + key { [ U13E8, U13E0 ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ U13AC, U13C3 ] }; + key { [ U13F4, U13ED ] }; + key { [ U13D3, U13DF ] }; + key { [ U13A5, U13DE ] }; + key { [ U13A8, U13F0 ] }; + key { [ U13BE, U13BB ] }; + key { [ U13C5, U13B7 ] }; + key { [ comma, U13E2 ] }; + key { [ period, U13B4 ] }; + key { [ U13C2, U13C9 ] }; +}; + +// Add Hawaiian `okina and kahako to US layout +// Author: Greg Meyer , 2020 +// this mapping follows the one for Windows here: http://www.olelo.hawaii.edu/enehana/winkbd.php +// `okina replaces apostrophe (apostrophe moves to level 3) +// vowels with kahako (macron) are level 3 symbols +partial alphanumeric_keys +xkb_symbols "haw" { + + include "us(basic)" + name[Group1] = "Hawaiian"; + + // `okina replaces single apostrophe + // alt gives the literal apostrophe + key {[ U02BB, quotedbl, apostrophe ] }; + + // kahako + key {[ a, A, amacron, Amacron ]}; + key {[ e, E, emacron, Emacron ]}; + key {[ u, U, umacron, Umacron ]}; + key {[ i, I, imacron, Imacron ]}; + key {[ o, O, omacron, Omacron ]}; + + include "level3(ralt_switch)" +}; + +// Serbian charecters added as third level symbols to US keyboard layout. + +partial alphanumeric_keys +xkb_symbols "hbs" { + + include "us" + name[Group1]= "Serbo-Croatian (US)"; + + key { [ grave, asciitilde ] }; + key { [ 6, dead_caron, asciicircum, asciicircum ] }; + key { [ 8, asterisk, multiply, division ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ l, L, U01C9, U01C8 ] }; // lj Lj + key { [ n, N, U01CC, U01CB ] }; // nj Nj + key { [ z, Z, U01C6, U01C5 ] }; // dž Dž + key { [ e, E, EuroSign, cent ] }; + key { [ d, D, dstroke, Dstroke ] }; + key { [ dead_acute, quotedbl, apostrophe, apostrophe ] }; + key { [ space, space, nobreakspace, nobreakspace ] }; + key { [ comma, less, U3003, guillemotright ] }; + key { [ period, greater, ellipsis, guillemotleft ] }; + + include "level3(ralt_switch)" +}; + +// Workman Keyboard Layout symbols for xkb on X.Org Server 7.x +// 09-06-2010 OJ Bucao. http://www.workmanlayout.com + +partial alphanumeric_keys +xkb_symbols "workman" { + + include "us(basic)" + name[Group1]= "English (Workman)"; + + key { [ q, Q ] }; + key { [ d, D ] }; + key { [ r, R ] }; + key { [ w, W ] }; + key { [ b, B ] }; + key { [ j, J ] }; + key { [ f, F ] }; + key { [ u, U ] }; + key { [ p, P ] }; + key { [ semicolon, colon ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ h, H ] }; + key { [ t, T ] }; + key { [ g, G ] }; + key { [ y, Y ] }; + key { [ n, N ] }; + key { [ e, E ] }; + key { [ o, O ] }; + key { [ i, I ] }; + + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ m, M ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ k, K ] }; + key { [ l, L ] }; + + key { [ BackSpace, Escape ] }; +}; + +partial alphanumeric_keys +xkb_symbols "workman-intl" { + + include "us(intl)" + name[Group1]= "English (Workman, intl., with dead keys)"; + + key { [ q, Q, adiaeresis, Adiaeresis ] }; + key { [ d, D, eth, ETH ] }; + key { [ r, R, registered, trademark ] }; + key { [ w, W, aring, Aring ] }; + key { [ b, B, b, B ] }; + key { [ j, J, idiaeresis, Idiaeresis ] }; + key { [ f, F, ediaeresis, Ediaeresis ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ p, P, odiaeresis, Odiaeresis ] }; + key { [ semicolon, colon, paragraph, degree ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ s, S, ssharp, section ] }; + key { [ h, H, h, H ] }; + key { [ t, T, thorn, THORN ] }; + key { [ g, G, g, G ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ i, I, iacute, Iacute ] }; + + key { [ z, Z, ae, AE ] }; + key { [ x, X, periodcentered, dead_stroke ] }; + key { [ m, M, mu, plusminus ] }; + key { [ c, C, copyright, cent ] }; + key { [ v, V, v, V ] }; + key { [ k, K, oe, OE ] }; + key { [ l, L, oslash, Oslash ] }; + + key { [ BackSpace, Escape, BackSpace, BackSpace ] }; + + include "level3(ralt_switch)" +}; + +// US Workman-P layout based on US Workman with top row digits switched only +// US Workman layout site: https://workmanlayout.org +partial alphanumeric_keys +xkb_symbols "workman-p" { + include "us(workman)" + name[Group1]= "English (Workman-P)"; + + key { [ exclam, 1 ] }; + key { [ at, 2 ] }; + key { [ numbersign, 3 ] }; + key { [ dollar, 4 ] }; + key { [ percent, 5 ] }; + key { [ asciicircum, 6 ] }; + key { [ ampersand, 7 ] }; + key { [ asterisk, 8 ] }; + key { [ parenleft, 9 ] }; + key { [ parenright, 0 ] }; +}; + +// Norman keyboard layout symbols for xkb on X.Org Server 7.x +// Written 11/23/2012, revised 3/7/2013 by David Norman http://normanlayout.info +// To the extent possible under law, the author(s) have dedicated all +// copyright and related and neighboring rights to this software to the +// public domain worldwide. This software is distributed without any warranty. + +partial alphanumeric_keys +xkb_symbols "norman" { + + include "us(basic)" + name[Group1]= "English (Norman)"; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ k, K ] }; + key { [ j, J ] }; + key { [ u, U ] }; + key { [ r, R ] }; + key { [ l, L ] }; + key { [ semicolon, colon ] }; + + key { [ a, A ] }; + key { [ s, S ] }; + key { [ e, E ] }; + key { [ t, T ] }; + key { [ g, G ] }; + key { [ y, Y ] }; + key { [ n, N ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ h, H ] }; + + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ p, P ] }; + key { [ m, M ] }; + + key { [ BackSpace ] }; + + include "level3(ralt_switch)" +}; + +// Carpalx layout created by Martin Krzywinski +// http://mkweb.bcgsc.ca/carpalx/ + +partial alphanumeric_keys +xkb_symbols "carpalx" { + + name[Group1]= "English (Carpalx)"; + + key { [ grave, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + key { [ q, Q ] }; + key { [ g, G ] }; + key { [ m, M ] }; + key { [ l, L ] }; + key { [ w, W ] }; + key { [ y, Y ] }; + key { [ f, F ] }; + key { [ u, U ] }; + key { [ b, B ] }; + key { [ semicolon, colon ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ d, D ] }; + key { [ s, S ] }; + key { [ t, T ] }; + key { [ n, N ] }; + key { [ r, R ] }; + key { [ i, I ] }; + key { [ a, A ] }; + key { [ e, E ] }; + key { [ o, O ] }; + key { [ h, H ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ p, P ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + key { [ backslash, bar ] }; +}; + +// Carpalx layout created by Martin Krzywinski +// http://mkweb.bcgsc.ca/carpalx/ +// Merged with us(intl) and modified to move +// accented vowels closer to the plain vowels + +partial alphanumeric_keys +xkb_symbols "carpalx-intl" { + + name[Group1]= "English (Carpalx, intl., with dead keys)"; + + key { [dead_grave, dead_tilde, grave, asciitilde ] }; + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, at, twosuperior, dead_doubleacute ] }; + key { [ 3, numbersign, threesuperior, dead_macron ] }; + key { [ 4, dollar, currency, sterling ] }; + key { [ 5, percent, EuroSign, dead_cedilla ] }; + key { [ 6, dead_circumflex, onequarter, asciicircum ] }; + key { [ 7, ampersand, onehalf, dead_horn ] }; + key { [ 8, asterisk, threequarters, dead_ogonek ] }; + key { [ 9, parenleft, leftsinglequotemark, dead_breve ] }; + key { [ 0, parenright, rightsinglequotemark, dead_abovering ] }; + key { [ minus, underscore, yen, dead_belowdot ] }; + key { [ equal, plus, multiply, division ] }; + + key { [ q, Q, degree, paragraph ] }; + key { [ g, G, U011F, U011E ] }; + key { [ m, M, mu, plusminus ] }; + key { [ l, L, copyright, cent ] }; + key { [ w, W, w, W ] }; + key { [ y, Y, idiaeresis, Idiaeresis ] }; + key { [ f, F, adiaeresis, Adiaeresis ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + key { [ b, B, odiaeresis, Odiaeresis ] }; + key { [ semicolon, colon, oslash, Oslash ] }; + key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; + key { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; + + key { [ d, D, eth, ETH ] }; + key { [ s, S, ssharp, section ] }; + key { [ t, T, thorn, THORN ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ r, R, registered, trademark ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ a, A, aacute, Aacute ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ h, H, uacute, Uacute ] }; + key { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] }; + + key { [ z, Z, periodcentered, dead_stroke ] }; + key { [ x, X, U015F, U015E ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, ae, AE ] }; + key { [ j, J, oe, OE ] }; + key { [ k, K, U0131, U0130 ] }; + key { [ p, P, aring, Aring ] }; + key { [ comma, less, ediaeresis, Ediaeresis ] }; + key { [ period, greater, dead_abovedot, dead_caron ] }; + key { [ slash, question, questiondown, dead_hook ] }; + key { [ backslash, bar, notsign, brokenbar ] }; + + key { [ backslash, bar, backslash, bar ] }; + + include "level3(ralt_switch)" +}; + +// Carpalx layout created by Martin Krzywinski +// http://mkweb.bcgsc.ca/carpalx/ +// Merged with us(intl) and us(altgr-intl) and modified to move +// accented vowels closer to the plain vowels + +partial alphanumeric_keys +xkb_symbols "carpalx-altgr-intl" { + + include "us(carpalx-intl)" + name[Group1]= "English (Carpalx, intl., with AltGr dead keys)"; + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [apostrophe,quotedbl, dead_acute, dead_diaeresis ] }; + + key { [ 1, exclam, onesuperior, exclamdown ] }; + + key { [ 6, asciicircum, dead_circumflex, onequarter ] }; + key { [ 7, ampersand, dead_horn, onehalf ] }; + key { [ 8, asterisk, dead_ogonek, threequarters ] }; + + include "level3(ralt_switch)" +}; + +// Carpalx layout created by Martin Krzywinski +// Full optimization variant without fixed QWERTY-like ZXCV keys +// http://mkweb.bcgsc.ca/carpalx/ + +partial alphanumeric_keys +xkb_symbols "carpalx-full" { + + include "us(carpalx)" + name[Group1]= "English (Carpalx, full optimization)"; + + key { [ b, B ] }; + key { [ y, Y ] }; + key { [ v, V ] }; + + key { [ f, F ] }; +}; + +// Carpalx layout created by Martin Krzywinski +// Full optimization variant without fixed QWERTY-like ZXCV keys +// http://mkweb.bcgsc.ca/carpalx/ +// Merged with us(intl) and modified to move +// accented vowels closer to the plain vowels + +partial alphanumeric_keys +xkb_symbols "carpalx-full-intl" { + + include "us(carpalx-intl)" + name[Group1]= "English (Carpalx, full optimization, intl., with dead keys)"; + + key { [ b, B, idiaeresis, Idiaeresis ] }; + key { [ y, Y, adiaeresis, Adiaeresis ] }; + key { [ v, V, odiaeresis, Odiaeresis ] }; + + key { [ f, F, ae, AE ] }; +}; + +// Carpalx layout created by Martin Krzywinski +// Full optimization variant without fixed QWERTY-like ZXCV keys +// http://mkweb.bcgsc.ca/carpalx/ +// Merged with us(intl) and us(altgr-intl) and modified to move +// accented vowels closer to the plain vowels + +partial alphanumeric_keys +xkb_symbols "carpalx-full-altgr-intl" { + + include "us(carpalx-altgr-intl)" + name[Group1]= "English (Carpalx, full optimization, intl., with AltGr dead keys)"; + + key { [ b, B, idiaeresis, Idiaeresis ] }; + key { [ y, Y, adiaeresis, Adiaeresis ] }; + key { [ v, V, odiaeresis, Odiaeresis ] }; + + key { [ f, F, ae, AE ] }; +}; + +// US Symbolic +// Author: Daniele Baisero +// Based on the default keyboard map from 'symbols/us', edited for scientific literature. +// Added simple Greek letters to alphas, and common symbols everywhere else. +// TLDE and BKSL are AltGr-inverse, to facilitate placement of ESC over TLDE on 60% keyboards. +// LGST (Iso Key) contains rarely used floor and ceiling brackets. +partial alphanumeric_keys modifier_keys +xkb_symbols "symbolic" { + + name[Group1]= "English (US, Symbolic)"; + + key { [ grave, asciitilde, backslash, bar ] }; // ` ~ \ | + key { [ 1, exclam, onesuperior, notsign ] }; // 1 ! ¹ ¬ + key { [ 2, at, twosuperior, therefore ] }; // 2 @ ² ∴ + key { [ 3, numbersign, threesuperior, sterling ] }; // 3 # ³ £ + key { [ 4, dollar, foursuperior, EuroSign ] }; // 4 $ ⁴ € + key { [ 5, percent, fivesuperior, permille ] }; // 5 % ⁵ ‰ + key { [ 6, asciicircum, sixsuperior, squareroot ] }; // 6 ^ ⁶ √ + key { [ 7, ampersand, sevensuperior, section ] }; // 7 & ⁷ § + key { [ 8, asterisk, eightsuperior, infinity ] }; // 8 * ⁸ ∞ + key { [ 9, parenleft, ninesuperior, periodcentered ] }; // 9 ( ⁹ · + key { [ 0, parenright, zerosuperior, degree ] }; // 0 ) ⁰ ° + key { [ minus, underscore, notequal, plusminus ] }; // - _ ≠ ± + key { [ equal, plus, multiply, division ] }; // = + × ÷ + + key { [ q, Q, U2200, U2203 ] }; // q Q ∀ ∃ + key { [ w, W, elementof, notelementof ] }; // w W ∈ ∉ + key { [ e, E, Greek_epsilon, Greek_EPSILON ] }; // e E ε Ε + key { [ r, R, Greek_rho, Greek_RHO ] }; // p P ρ Ρ + key { [ t, T, Greek_tau, Greek_TAU ] }; // t T τ Τ + key { [ y, Y, Greek_upsilon, Greek_UPSILON ] }; // y Y υ Υ + key { [ u, U, Greek_theta, Greek_THETA ] }; // u U θ Θ + key { [ i, I, Greek_iota, Greek_IOTA ] }; // i I ι Ι + key { [ o, O, Greek_omicron, Greek_OMICRON ] }; // o O ο Ο + key { [ p, P, Greek_pi, Greek_PI ] }; // p P π Π + key { [ bracketleft, braceleft, union, intersection ] }; // [ { ∪ ∩ + key { [ bracketright, braceright, includedin, includes ] }; // ] } ⊂ ⊃ + + key { [ a, A, Greek_alpha, Greek_ALPHA ] }; // a A α Α + key { [ s, S, Greek_sigma, Greek_SIGMA ] }; // s S σ Σ + key { [ d, D, Greek_delta, Greek_DELTA ] }; // d D δ Δ + key { [ f, F, Greek_phi, Greek_PHI ] }; // f F φ Φ + key { [ g, G, Greek_gamma, Greek_GAMMA ] }; // g G γ Γ + key { [ h, H, Greek_eta, Greek_ETA ] }; // h H η Η + key { [ j, J, Greek_xi, Greek_XI ] }; // j J ξ Ξ + key { [ k, K, Greek_kappa, Greek_KAPPA ] }; // k K κ Κ + key { [ l, L, Greek_lamda, Greek_LAMDA ] }; // l L λ Λ + key { [ semicolon, colon, downarrow, uparrow ] }; // ; : ↓ ↑ + key { [ apostrophe, quotedbl, rightarrow, leftarrow ] }; // ' " → ← + + key { [ z, Z, Greek_zeta, Greek_ZETA ] }; // z Z ζ Ζ + key { [ x, X, Greek_chi, Greek_CHI ] }; // x X χ Χ + key { [ c, C, Greek_psi, Greek_PSI ] }; // c C ψ Ψ + key { [ v, V, Greek_omega, Greek_OMEGA ] }; // v V ω Ω + key { [ b, B, Greek_beta, Greek_BETA ] }; // b B β Β + key { [ n, N, Greek_nu, Greek_NU ] }; // n N ν Ν + key { [ m, M, Greek_mu, Greek_MU ] }; // m M μ Μ + key { [ comma, less, lessthanequal, guillemotleft ] }; // , < ≤ « + key { [ period, greater, greaterthanequal, guillemotright ] }; // . > ≥ » + key { [ slash, question, U203D, U2766 ] }; // / ? ‽ ❦ + + key { [ backslash, bar, grave, asciitilde ] }; // \ | ` ~ + key { [ U230A, U230B, U2308, U2309 ] }; // ⌊ ⌋ ⌈ ⌉ + + include "level3(ralt_switch)" +}; + +// EXTRAS: + +// Czech, Slovak and German charecters added as third level symbols to US keyboard layout. +partial alphanumeric_keys +xkb_symbols "cz_sk_de" { + + include "us" + name[Group1]="Czech, Slovak and German (US)"; + + key { [grave, asciitilde, uring, Uring ] }; + key { [ 1, exclam, uacute, Uacute ] }; + key { [ 2, at, ecaron, Ecaron ] }; + key { [ 3, numbersign, scaron, Scaron ] }; + key { [ 4, dollar, ccaron, Ccaron ] }; + key { [ 5, percent, rcaron, Rcaron ] }; + key { [ 6, asciicircum, zcaron, Zcaron ] }; + key { [ 7, ampersand, yacute, Yacute ] }; + key { [ 8, asterisk, aacute, Aacute ] }; + key { [ 9, parenleft, iacute, Iacute ] }; + key { [ 0, parenright, eacute, Eacute ] }; + key { [minus, underscore, ssharp, 0x1001E9E ] }; + key { [equal, plus, dead_acute, dead_caron ] }; + + key { [ e, E, EuroSign, Eacute ] }; + + key { [bracketleft, braceleft, udiaeresis, Udiaeresis ] }; + key { [ semicolon, colon, odiaeresis, Odiaeresis ] }; + key { [apostrophe, quotedbl,adiaeresis, Adiaeresis ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ y, Y, yacute, Yacute ] }; + key { [ u, U, uring, Uring ] }; + + key { [ s, S, scaron, Scaron ] }; + key { [ z, Z, zcaron, Zcaron ] }; + key { [ c, C, ccaron, Ccaron ] }; + key { [ r, R, rcaron, Rcaron ] }; + key { [ t, T, tcaron, Tcaron ] }; + key { [ d, D, dcaron, Dcaron ] }; + key { [ n, N, ncaron, Ncaron ] }; + key { [ l, L, lcaron, Lcaron ] }; + key { [ p, P,ocircumflex, Ocircumflex ] }; + + key { [ space, space, nobreakspace, nobreakspace] }; + + include "level3(ralt_switch)" +}; + +// This is the above Jirka's us(cz_sk_de) layout variant extended with Polish, Spanish, Finnish and Swedish characters. +// This layout variant is primarily targeted to Czech and Slovak polyglots and SW engineers (like the original above one). +partial alphanumeric_keys +xkb_symbols "cz_sk_pl_de_es_fi_sv" { + + include "us" + name[Group1]="Czech, Slovak, Polish, Spanish, Finnish, Swedish and German (US)"; + + key { [grave, asciitilde, uring, Uring ] }; + key { [ 1, exclam, uacute, Uacute ] }; + key { [ 2, at, ecaron, Ecaron ] }; + key { [ 3, numbersign, scaron, Scaron ] }; + key { [ 4, dollar, ccaron, Ccaron ] }; + key { [ 5, percent, rcaron, Rcaron ] }; + key { [ 6, asciicircum, zcaron, Zcaron ] }; + key { [ 7, ampersand, yacute, Yacute ] }; + key { [ 8, asterisk, aacute, Aacute ] }; + key { [ 9, parenleft, iacute, Iacute ] }; + key { [ 0, parenright, eacute, Eacute ] }; + key { [minus, underscore, ssharp, 0x1001E9E ] }; + key { [equal, plus, dead_acute, dead_caron ] }; + + key { [ e, E, EuroSign, Eacute ] }; + + key { [bracketleft, braceleft, udiaeresis, Udiaeresis ] }; + key { [ semicolon, colon, odiaeresis, Odiaeresis ] }; + key { [apostrophe, quotedbl,adiaeresis, Adiaeresis ] }; + + key { [ a, A, aacute, Aacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ y, Y, yacute, Yacute ] }; + key { [ u, U, uring, Uring ] }; + + key { [ s, S, scaron, Scaron ] }; + key { [ z, Z, zcaron, Zcaron ] }; + key { [ c, C, ccaron, Ccaron ] }; + key { [ r, R, rcaron, Rcaron ] }; + key { [ t, T, tcaron, Tcaron ] }; + key { [ d, D, dcaron, Dcaron ] }; + key { [ n, N, ncaron, Ncaron ] }; + key { [ l, L, lcaron, Lcaron ] }; + key { [ p, P,ocircumflex, Ocircumflex ] }; + + key { [ space, space, nobreakspace, nobreakspace] }; + + // Polish + key { [ q, Q, aogonek, Aogonek ] }; + key { [ w, W, eogonek, Eogonek ] }; + key { [bracketright, braceright, guillemotleft, guillemotright ] }; + key { [ f, F, sacute, Sacute ] }; + key { [ g, G, copyright, registered ] }; + key { [ h, H, cent, trademark ] }; + key { [ j, J, plusminus, degree ] }; + key { [ k, K, lstroke, Lstroke ] }; + //alias = ; + key { [ backslash, bar, aring, Aring ] }; + //Requires pc105 compatibility + key { [ endash, emdash, zabovedot, Zabovedot ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ v, V, cacute, Cacute ] }; + key { [ b, B, ntilde, Ntilde ] }; + key { [ m, M, nacute, Nacute ] }; + key { [ comma, less,lessthanequal, multiply ] }; + key { [ period, greater, greaterthanequal, division ] }; + key { [ slash, question, exclamdown, questiondown ] }; + + include "level3(ralt_switch)" +}; + +// 03 December 2017 - Added us(scn), please refer to +// Cadèmia Siciliana +partial alphanumeric_keys +xkb_symbols "scn" { + + include "us(intl)" + name[Group1]="Sicilian (US keyboard)"; + + key { [ e, E, schwa, SCHWA ] }; + key { [ d, D, U1E0D, U1E0C ] }; + key { [ f, F, U0111, U0110 ] }; + key { [ h, H, U1E25, U1E24 ] }; + key { [ x, X, U03C7, U03A7 ] }; + key { [ period, greater, U1D58, dead_caron ] }; + + include "level3(ralt_switch)" +}; + +// XCompose is out! Unicode combining is in! For those of us who live +// on the edge: A keymap using Unicode combining characters instead of +// deadkeys. This variation does not deviate from the lame MS-style +// US-intl layout; but it uses AltGr for combining, like altgr-intl. +// +// This might break your font layout systems (because they suck), +// caveat emptor. Also, most of today's software will count +// individual combining marks for selection, deletion, character +// counting &c., and won't be smart enough to do canonical equivalence +// when searching, &c. +// +// With Unicode combining you use "handwriting order", not +// "typewriting order" as with deadkeys. That is, you first type the +// base character, then the diacritics/accents/modifiers. This has +// the advantage of avoiding hidden states --- each keypress changes +// something on screen. +// +// TODO: as of now, this duplicates all us(intl) functionality with +// combining. With care, perhaps we could add more combining marks +// not present in intl, and support all major languages. +partial alphanumeric_keys +xkb_symbols "intl-unicode" { + + include "us(intl)" + include "level3(ralt_switch)" + + name[Group1]= "English (US, intl., AltGr Unicode combining)"; + + key { [ grave, asciitilde, U0300, U0303 ] }; // grave, tilde + key { [ 2, at, twosuperior, U030B ] }; // double acute + key { [ 3, numbersign, threesuperior, U0304 ] }; // macron + key { [ 6, asciicircum, onequarter, U0302 ] }; // circumflex + key { [ 7, ampersand, onehalf, U031B ] }; // horn + key { [ 8, asterisk, threequarters, U0328 ] }; // ogonek + key { [ 9, parenleft, leftsinglequotemark, U0306 ] }; // breve + key { [ 0, parenright, rightsinglequotemark, U030A ] }; // abovering + + key { [ minus, underscore, yen, U0323 ] }; // belowdot + key { [ apostrophe, quotedbl, U0301, U0308 ] }; // acute, diaeresis + key { [ period, greater, U0307, U030C ] }; // abovedot, caron + key { [ slash, question, questiondown, U0309 ] }; // hook + + // alt-intl compatibility + key { [ comma, less, U0327, U030C ] }; // cedilla, caron + key { [ semicolon, colon, U0328, U0308 ] }; // ogonek, diaeresis + key { [ equal, plus, U030B, U031B ] }; // doubleacute, horn + + // We don't do combining latin letters and combining enclosures, + // because support for those is very rare. +}; + +// XCompose is out! Unicode combining is in! For those of us who live +// on the edge: A keymap using Unicode combining characters instead of +// deadkeys. This variation does break compatibility with us-intl, +// whenever I thought it would be more mnemonic or Unicodeish. +partial alphanumeric_keys +xkb_symbols "alt-intl-unicode" { + + include "us(intl-unicode)" + + name[Group1]= "English (US, intl., AltGr Unicode combining, alt.)"; + + // easier macron; em-dash. + // em-dash is available via compose, but I added here since it's such + // an important typographic character. + key { [ minus, underscore, U0304, U2014 ] }; + + // belowdot, abovedot (caron at coma/less key, per above) + key { [ period, greater, U0323, U0307 ] }; +}; + +partial alphanumeric_keys +xkb_symbols "ats" { + + include "us" + name[Group1]= "Atsina"; + + //Using Dead key to get COMBINING COMMA ABOVE for ejectives on + //q, l, t, s, m, g, k, p, w, y, r + //XCompose key is used for the other accute and grave. + + key { [ e, E, eacute, Eacute ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ bracketleft, braceleft, U03B8 ] }; + key { [ bracketright, braceright, U010D, U010C ] }; + //U+010C (uppercase Č) and U+010D (lowercase č). + + key { [ a, A, aacute, Aacute ] }; + + //Small letter Open use compose to key get acute accent + key { [ c, C, U0254, U0186 ] }; + key { [ comma, less, U0313 ] }; + key { [ slash, question, U0294 ] }; + + include "level3(ralt_switch)" + include "compose(rctrl)" +}; + +partial alphanumeric_keys +xkb_symbols "crd" { + + include "us" + name[Group1]= "Coeur d'Alene Salish"; + + key { [ w, W, U02B7, U02B7 ] }; + key { [ 7, ampersand, U0294 ] }; + key { [ q, Q, U221A ] }; + key { [ v, V, schwa ] }; + key { [ backslash, bar, U026B ] }; + key { [ e, E, U025B ] }; + key { [ i, I, U026A ] }; + key { [ j, J, U01F0 ] }; + key { [ 6, asciicircum, U0295 ] }; + key { [ s, S, U0161 ] }; + key { [ c, C, U010D ] }; + key { [ o, O, U0254 ] }; + key { [ period, greater, U0323 ] }; + + include "level3(ralt_switch)" + include "compose(rctrl)" +}; + + +partial alphanumeric_keys + xkb_symbols "sun_type6" { + include "sun_vndr/us(sun_type6)" +}; + +// Implementation of the 3l keyboard layout +// See https://github.com/jackrosenthal/threelayout for specification +partial alphanumeric_keys modifier_keys +xkb_symbols "3l" { + name[Group1] = "English (3l)"; + + key.type[Group1] = "ONE_LEVEL"; + key { [ Escape ] }; + key { [ Tab ] }; + key { [ ISO_Level3_Shift ] }; // Sym Modifier + key { [ ISO_Level5_Shift ] }; // Cur/Num Modifier + + // Top row numbers - not part of spec, but given for convenience + key { [ 1 ] }; + key { [ 2 ] }; + key { [ 3 ] }; + key { [ 4 ] }; + key { [ 5 ] }; + key { [ 6 ] }; + key { [ 7 ] }; + key { [ 8 ] }; + key { [ 9 ] }; + key { [ 0 ] }; + + // Main keys + // Order of mods (defined by EIGHT_LEVEL_SEMIALPHABETIC) is: + // [ None, Shift, Sym, Shift+Sym, Num, Shift+Num, Sym+Num, Shift+Sym+Num ] + key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + + // Second row + key { [ q, Q, quotedbl, Greek_omicron, Prior, Prior, U21CD, Greek_OMICRON ] }; + key { [ f, F, underscore, Greek_phi, BackSpace, BackSpace, U21A4, Greek_PHI ] }; + key { [ u, U, bracketleft, Greek_upsilon, Up, Up, U2191, Greek_UPSILON ] }; + key { [ y, Y, bracketright, Greek_psi, Delete, Delete, U21A6, Greek_PSI ] }; + key { [ z, Z, asciicircum, Greek_zeta, Next, Next, U21CF, Greek_ZETA ] }; + key { [ x, X, exclam, Greek_xi, NoSymbol, NoSymbol, U2260, Greek_XI ] }; + key { [ k, K, less, Greek_kappa, 1, A, U2A7D, Greek_KAPPA ] }; + key { [ c, C, greater, Greek_chi, 2, B, U2A7E, Greek_CHI ] }; + key { [ w, W, equal, Greek_omega, 3, C, U2261, Greek_OMEGA ] }; + key { [ b, B, ampersand, Greek_beta, NoSymbol, NoSymbol, U2248, Greek_BETA ] }; + + // Home row + key { [ o, O, slash, Greek_omega, Home, Home, U21D0, Greek_OMEGA ] }; + key { [ h, H, minus, Greek_theta, Left, Left, U2190, Greek_THETA ] }; + key { [ e, E, braceleft, Greek_epsilon, Down, Down, U2193, Greek_EPSILON ] }; + key { [ a, A, braceright, Greek_alpha, Right, Right, U2192, Greek_ALPHA ] }; + key { [ i, I, asterisk, Greek_iota, End, End, U21D2, Greek_IOTA ] }; + key { [ d, D, question, Greek_delta, period, colon, U2286, Greek_DELTA ] }; + key { [ r, R, parenleft, Greek_rho, 4, D, U2227, Greek_RHO ] }; + key { [ t, T, parenright, Greek_tau, 5, E, U2228, Greek_TAU ] }; + key { [ n, N, apostrophe, Greek_eta, 6, F, U2200, Greek_ETA ] }; + key { [ s, S, colon, Greek_sigma, NoSymbol, NoSymbol, U2203, Greek_SIGMA ] }; + + // Bottom row + key { [ comma, comma, numbersign, NoSymbol, slash, NoSymbol, U21AE, NoSymbol ] }; + key { [ m, M, dollar, Greek_mu, asterisk, NoSymbol, U2194, Greek_MU ] }; + key { [ period, period, bar, NoSymbol, minus, NoSymbol, U21CE, NoSymbol ] }; + key { [ j, J, asciitilde, Greek_SIGMA, plus, NoSymbol, U21D4, NoSymbol ] }; + key { [ semicolon, semicolon, grave, NoSymbol, comma, NoSymbol, U2282, NoSymbol ] }; + key { [ g, G, plus, Greek_gamma, 0, NoSymbol, U2229, Greek_GAMMA ] }; + key { [ l, L, percent, Greek_lambda, 7, parenleft, U222A, Greek_LAMBDA ] }; + key { [ p, P, backslash, Greek_pi, 8, parenright, U2208, Greek_PI ] }; + key { [ v, V, at, Greek_nu, 9, NoSymbol, U2209, Greek_NU ] }; +}; + +// Chromebooks typically have the key which is normally in the caps +// lock position mapped to keycode 133 (LWIN). For 3l, it is critical +// that the key in this positon correspond to tab, so there is a +// variant available for chromebook hardware. +partial modifier_keys +xkb_symbols "3l-cros" { + include "us(3l)" + name[Group1] = "English (3l, Chromebook)"; + key { + type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ Tab ] + }; +}; + +// A 3l variant for emacs users, which maps control to caps lock and (re)maps +// tab back to tab. +partial modifier_keys +xkb_symbols "3l-emacs" { + include "us(3l)" + name[Group1] = "English (3l, emacs)"; + + key { [ Tab ] }; + key { [ Control_L ] }; + + modifier_map Control { }; +}; + +// Drix EU Latin - version 3.1 (2019-10-07) +// Author: Jerome Leclanche +// Latin layout based on classic US qwerty, with azerty-style second-row m key. +// Features: +// - Programmer-centric punctuation keys (All common symbols on right hand except < and > on left) +// - Most common dead accents on altgr-shift number row +// - Unicode arrows on Altgr+shift+WASD +// - Some commonly used special characters available: +// - Most common european special characters +// - Misc currency symbols, copyright/registered/trademark symbols +// - Common math symbols + some common greek letters +// - Compose key replaces Mod5 +// +// This layout is in the Public Domain. +// +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ +// │ ~ ~ │ " ´ │ ' ` │ ^ ^ │ ` ¨ │ ´ ° │ 6 ¯ │ 7 ¸ │ 8 ˛ │ 9 ˇ │ | ˝ │ _ ± │ = ≠ ┃Backspace┃ +// │ @ £ │ 1 ¹ │ 2 ² │ 3 ³ │ 4 ⁴ │ 5 ⁵ │ 6 ⁶ │ 7 ⁷ │ 8 ⁸ │ 9 ⁹ │ 0 ⁰ │ - " │ + ' ┃ ⌫ ┃ +// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ +// ┃Tab ┃ Q Ø │ W ↑ │ E € │ R ₽ │ T τ │ Y ¥ │ U U │ I ’ │ O Ω │ P ₱ │ [ « │ ] » ┃ ⏎ ┃ +// ┃ ↹ ┃ q ø │ w w │ e € │ r ® │ t ™ │ y ¥ │ u u │ i ‘ │ o œ │ p π │ ( { │ ) } ┃ Enter ┃ +// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ +// ┃Caps ┃ A ← │ S ↓ │ D → │ F Ƒ │ G G │ H H │ J ” │ K „ │ L λ │ M M │ % ‰ │ & × ┃ ┃ +// ┃Lock ⇬ ┃ a æ │ s ß │ d Δ │ f ƒ │ g g │ h h │ j “ │ k ‚ │ l £ │ m µ │ # ~ │ * $ ┃ ┃ +// ┣━━━━━━┳━┹───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┲━┷━━━━━┻━━━━━━┫ +// ┃Shift ┃ > ≥ │ Z ¶ │ X ÷ │ C ¢ │ V V │ B ₿ │ N N │ ? ¿ │ , · │ ; ´ │ \ ¦ ┃Shift ┃ +// ┃ ⇧ ┃ < ≤ │ z § │ x × │ c © │ v ♀ │ b ♂ │ n ⚥ │ ! ¡ │ . … │ : ` │ / | ┃ ⇧ ┃ +// ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴────┲┷━━━━━╈━━━━━┻┳━━━━━━┳━━━━━━┫ +// ┃Ctrl ┃ Fn ┃Alt ┃ ␣ Space Nobreakspace ⍽ ┃AltGr ┃Multi ┃ Ctxt ┃ Ctrl ┃ +// ┃ ┃ ┃ ┃ ␣ Space Nobreakspace ⍽ ┃ ┃ ┃ Menu ┃ ┃ +// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛ + +partial alphanumeric_keys modifier_keys +xkb_symbols "drix" { + + name[Group1] = "English (Drix)"; + + // First row + key {[ at, asciitilde, sterling, dead_tilde ]}; // @ ~ £ ~ + key {[ 1, quotedbl, onesuperior, dead_grave ]}; // 1 " ¹ ` + key {[ 2, apostrophe, twosuperior, dead_acute ]}; // 2 ' ² ´ + key {[ 3, asciicircum, threesuperior, dead_circumflex ]}; // 3 ^ ³ ^ + key {[ 4, grave, foursuperior, dead_diaeresis ]}; // 4 4 ⁴ ¨ + key {[ 5, degree, fivesuperior, dead_abovering ]}; // 5 ° ⁵ ° + key {[ 6, 6, sixsuperior, dead_macron ]}; // 6 6 ⁶ ¯ + key {[ 7, 7, sevensuperior, dead_cedilla ]}; // 7 7 ⁷ ¸ + key {[ 8, 8, eightsuperior, dead_ogonek ]}; // 8 8 ⁸ ˛ + key {[ 9, 9, ninesuperior, dead_caron ]}; // 9 9 ⁹ ˇ + key {[ 0, bar, zerosuperior, dead_doubleacute ]}; // 0 | ⁰ ˝ + key {[ minus, underscore, quotedbl, plusminus ]}; // - _ " ± + key {[ plus, equal, apostrophe, notequal ]}; // + = ' ≠ + + // Second row + key {[ q, Q, oslash, Oslash ]}; // q Q ø Ø + key {[ w, W, w, uparrow ]}; // w W w ↑ + key {[ e, E, EuroSign, EuroSign ]}; // e E € € + key {[ r, R, registered, 0x10020bd ]}; // r R ® ₽ + key {[ t, T, trademark, Greek_tau ]}; // t T ™ τ + key {[ y, Y, yen, yen ]}; // y Y ¥ ¥ + key {[ u, U, u, U ]}; // u U u U + key {[ i, I, leftsinglequotemark, rightsinglequotemark ]}; // i I ‘ ’ + key {[ o, O, oe, Greek_OMEGA ]}; // o O œ Ω + key {[ p, P, Greek_pi, 0x10020b1 ]}; // p P π ₱ + key {[ parenleft, bracketleft, braceleft, guillemotleft ]}; // ( [ { « + key {[ parenright, bracketright, braceright, guillemotright ]}; // ) ] } » + + // Third row + key {[ a, A, ae, leftarrow ]}; // a A æ ← + key {[ s, S, ssharp, downarrow ]}; // s S ß ↓ + key {[ d, D, Greek_DELTA, rightarrow ]}; // d D Δ → + key {[ f, F, 0x1000192, 0x1000191 ]}; // f F ƒ Ƒ + key {[ g, G, g, G ]}; // g G g G + key {[ h, H, h, H ]}; // h H h H + key {[ j, J, leftdoublequotemark, rightdoublequotemark ]}; // j J “ ” + key {[ k, K, singlelowquotemark, doublelowquotemark ]}; // k K ‚ „ + key {[ l, L, sterling, Greek_lambda ]}; // l L £ λ + key {[ m, M, mu, M ]}; // m M µ M + key {[ numbersign, percent, asciitilde, permille ]}; // # % ~ ‰ + + // Fourth row + key {[ less, greater, lessthanequal, greaterthanequal ]}; // < > ≤ ≥ + key {[ z, Z, section, paragraph ]}; // z Z § ¶ + key {[ x, X, multiply, division ]}; // x X × ÷ + key {[ c, C, copyright, cent ]}; // c C © ¢ + key {[ v, V, 0x1002640, V ]}; // v V ♀ V + key {[ b, B, 0x1002642, 0x10020bf ]}; // b B ♂ ₿ + key {[ n, N, 0x10026a5, N ]}; // n N ⚥ N + key {[ exclam, question, exclamdown, questiondown ]}; // ! ? ¡ ¿ + key {[ period, comma, 0x1002026, periodcentered ]}; // . , … · + key {[ colon, semicolon, grave, acute ]}; // : ; ` ´ + key {[ slash, backslash, bar, brokenbar ]}; // / \ | ¦ + + // Next to the enter key + key {[ asterisk, ampersand, dollar, multiply ]}; // * & $ × + + // Rebind right Super (windows key) into a Compose key + key {[ Multi_key ]}; + + // Implement AltGr and AltGr+Shift + // For some reason, include "level3(ralt_switch)" doesn't do the trick. + key { + type[Group1]="TWO_LEVEL", + [ ISO_Level3_Shift, Multi_key ] + }; +}; + +// German and Swedish characters added as third level symbols to the US keyboard layout +// Author: Stephan Lachnit , 2019 +// the german umlauts are placed over the characters without diaeresis, the sharp-s over the s +// the swedish ao is placed over the p, since it's closed to the position on a swedish keyboard +// the euro sign is placed over the e, as it is usual for german and swedish keyboards +partial alphanumeric_keys +xkb_symbols "de_se_fi" { + + include "us(basic)" + include "eurosign(e)" + name[Group1] = "German, Swedish and Finnish (US)"; + + key {[ a, A, adiaeresis, Adiaeresis ]}; + key {[ s, S, ssharp, U1E9E ]}; + key {[ q, Q, at ]}; + key {[ u, U, udiaeresis, Udiaeresis ]}; + key {[ o, O, odiaeresis, Odiaeresis ]}; + key {[ p, P, aring, Aring ]}; + key {[ bracketright, braceright, asciitilde ]}; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/symbols/uz b/nixos/xkb/symbols/uz new file mode 100644 index 00000000..20e4273c --- /dev/null +++ b/nixos/xkb/symbols/uz @@ -0,0 +1,77 @@ +// Keyboard layouts for Uzbekistan. + +// The Cyrillic variant (the default) is standard compliant. +// The standard was accepted by the official body of Uzbekistan. +// http://www.uznet.net/index.php?option=com_content&task=view&id=288&Itemid=58 +// +// February 2007, Mashrab Kuvatov + +default partial alphanumeric_keys +xkb_symbols "cyrillic" { + + name[Group1]= "Uzbek"; + + key {[ 1, exclam ]}; + key {[ 2, quotedbl ]}; + key {[ 3, numerosign ]}; + key {[ 4, semicolon ]}; + key {[ 5, percent ]}; + key {[ 6, colon ]}; + key {[ 7, question ]}; + key {[ 8, asterisk ]}; + key {[ 9, parenleft ]}; + key {[ 0, parenright ]}; + key {[ backslash, bar ]}; + key {[ period, comma ]}; + key {[ slash, bar ]}; + + key.type[group1]="ALPHABETIC"; + + key {[ Cyrillic_ghe_bar, Cyrillic_GHE_bar ]}; + key {[Cyrillic_ha_descender, Cyrillic_HA_descender]}; + key {[ Cyrillic_io, Cyrillic_IO ]}; + + key {[ Cyrillic_shorti, Cyrillic_SHORTI ]}; + key {[ Cyrillic_tse, Cyrillic_TSE ]}; + key {[ Cyrillic_u, Cyrillic_U ]}; + key {[ Cyrillic_ka, Cyrillic_KA ]}; + key {[ Cyrillic_ie, Cyrillic_IE ]}; + key {[ Cyrillic_en, Cyrillic_EN ]}; + key {[ Cyrillic_ghe, Cyrillic_GHE ]}; + key {[ Cyrillic_sha, Cyrillic_SHA ]}; + key {[Byelorussian_shortu, Byelorussian_SHORTU]}; + key {[ Cyrillic_ze, Cyrillic_ZE ]}; + key {[ Cyrillic_ha, Cyrillic_HA ]}; + key {[Cyrillic_hardsign, Cyrillic_HARDSIGN]}; + + key {[ Cyrillic_ef, Cyrillic_EF ]}; + key {[Cyrillic_ka_descender, Cyrillic_KA_descender]}; + key {[ Cyrillic_ve, Cyrillic_VE ]}; + key {[ Cyrillic_a, Cyrillic_A ]}; + key {[ Cyrillic_pe, Cyrillic_PE ]}; + key {[ Cyrillic_er, Cyrillic_ER ]}; + key {[ Cyrillic_o, Cyrillic_O ]}; + key {[ Cyrillic_el, Cyrillic_EL ]}; + key {[ Cyrillic_de, Cyrillic_DE ]}; + key {[ Cyrillic_zhe, Cyrillic_ZHE ]}; + key {[ Cyrillic_e, Cyrillic_E ]}; + + key {[ Cyrillic_ya, Cyrillic_YA ]}; + key {[ Cyrillic_che, Cyrillic_CHE ]}; + key {[ Cyrillic_es, Cyrillic_ES ]}; + key {[ Cyrillic_em, Cyrillic_EM ]}; + key {[ Cyrillic_te, Cyrillic_TE ]}; + key {[ Cyrillic_i, Cyrillic_I ]}; + key {[Cyrillic_softsign, Cyrillic_SOFTSIGN]}; + key {[ Cyrillic_be, Cyrillic_BE ]}; + key {[ Cyrillic_yu, Cyrillic_YU ]}; +}; + +// The Latin variant is experimental, as there is no official standard for it. + +partial alphanumeric_keys +xkb_symbols "latin" { + include "us" + name[Group1]= "Uzbek (Latin)"; + key {[ U02BB, quotedbl ]}; +}; diff --git a/nixos/xkb/symbols/vn b/nixos/xkb/symbols/vn new file mode 100644 index 00000000..2fd34451 --- /dev/null +++ b/nixos/xkb/symbols/vn @@ -0,0 +1,149 @@ +// Keyboard layouts for Vietnam. + +// Vietnamese keyboard layout, somehow based on TCVN 5712:1993. +// Original author: Le Hong Boi , 1999. +// Modified by Ashley Clark , 2000. +// Accents to combining marks, Samuel Thibault , 2009. + +default partial alphanumeric_keys +xkb_symbols "basic" { + + include "us" + + name[Group1]= "Vietnamese"; + + key { [ grave, asciitilde ] }; + key { [ abreve, Abreve ] }; + key { [ acircumflex, Acircumflex ] }; + key { [ ecircumflex, Ecircumflex ] }; + key { [ ocircumflex, Ocircumflex ] }; + key { [ 0x1000300, percent, dead_grave, percent ] }; + key { [ 0x1000309, asciicircum, dead_hook, asciicircum ] }; + key { [ 0x1000303, ampersand, dead_tilde, ampersand ] }; + key { [ 0x1000301, asterisk, dead_acute, asterisk ] }; + key { [ 0x1000323, parenleft, dead_belowdot, parenleft ] }; + key { [ dstroke, Dstroke ] }; + key { [ minus, underscore ] }; + key { [ DongSign, plus ] }; + + key { [ uhorn, Uhorn ] }; + key { [ ohorn, Ohorn ] }; + + include "level3(ralt_switch)" +}; + + +// US keyboard made Vietnamese +// +// Copyright (C) 2018, Florent Gallaire Phong + +partial alphanumeric_keys +xkb_symbols "us" { + + include "us(basic)" + name[Group1]= "Vietnamese (US)"; + + key { [dead_grave, dead_tilde, grave, asciitilde ] }; + key { [ 4, dollar, DongSign, currency ] }; // ₫ ¤ + + key { [ e, E, ecircumflex, Ecircumflex ] }; // ê Ê + key { [ u, U, uhorn, Uhorn ] }; // ư Ư + key { [ o, O, ocircumflex, Ocircumflex ] }; // ô Ô + key { [ p, P, ohorn, Ohorn ] }; // ơ Ơ + + key { [ a, A, acircumflex, Acircumflex ] }; // â  + key { [ s, S, abreve, Abreve ] }; // ă Ă + key { [ d, D, dstroke, Dstroke ] }; // đ Đ + key { [dead_acute, quotedbl, apostrophe ] }; + + key { [dead_belowdot, greater, period ] }; + key { [ dead_hook, question, slash ] }; + + include "level3(ralt_switch)" + include "eurosign(5)" +}; + +// French keyboard made Vietnamese +// +// Copyright (C) 2018, Florent Gallaire Phong + +partial alphanumeric_keys +xkb_symbols "fr" { + + include "fr(basic)" + + name[Group1]="Vietnamese (France)"; + + key { [dead_tilde, 2, eacute, asciitilde ] }; + key { [dead_acute, 4, apostrophe, braceleft ] }; + key { [dead_grave, 7, egrave, grave ] }; + + key { [ a, A, abreve, Abreve ] }; // ă Ă + key { [ u, U, uhorn, Uhorn ] }; // ư Ư + key { [ o, O, ohorn, Ohorn ] }; // ơ Ơ + key { [ dollar, sterling, DongSign, currency ] }; // ₫ ¤ + + key { [ d, D, dstroke, Dstroke ] }; // đ Đ + + key { [ dead_hook, question, comma ] }; + key { [dead_belowdot, period, semicolon ] }; +}; + + +// EXTRAS: + +// Vietnamese AÐERTY (60s typewriters adaptation) +// +// Copyright (C) 2018, Florent Gallaire Phong + +partial alphanumeric_keys +xkb_symbols "aderty" { + + include "fr(basic)" + + name[Group1]="Vietnamese (AÐERTY)"; + + key { [dead_tilde, 2, eacute, asciitilde ] }; + key { [dead_acute, 4, apostrophe, braceleft ] }; + key { [dead_grave, 7, egrave, grave ] }; + + key { [ dstroke, Dstroke, z, Z ] }; // đ Đ + key { [ dollar, sterling, DongSign, currency ] }; // ₫ ¤ + + key { [ uhorn, Uhorn, f, F ] }; // ư Ư + key { [ ohorn, Ohorn, j, J ] }; // ơ Ơ + + key { [ abreve, Abreve, w, W ] }; // ă Ă + key { [ dead_hook, question, comma ] }; + key { [dead_belowdot, period, semicolon ] }; +}; + +// Vietnamese QĐERTY (AĐERTY qwertification) +// +// Copyright (C) 2018, Florent Gallaire Phong + +partial alphanumeric_keys +xkb_symbols "qderty" { + + include "us(basic)" + name[Group1]= "Vietnamese (QĐERTY)"; + + key { [dead_grave, dead_tilde, grave, asciitilde ] }; + key { [ 4, dollar, DongSign, currency ] }; // ₫ ¤ + + key { [ dstroke, Dstroke, w, W ] }; // đ Đ + key { [ e, E, ecircumflex, Ecircumflex ] }; // ê Ê + key { [ o, O, ocircumflex, Ocircumflex ] }; // ô Ô + + key { [ a, A, acircumflex, Acircumflex ] }; // â  + key { [ uhorn, Uhorn, f, F ] }; // ư Ư + key { [ ohorn, Ohorn, j, J ] }; // ơ Ơ + key { [dead_acute, quotedbl, apostrophe ] }; + + key { [ abreve, Abreve, z, Z ] }; // ă Ă + key { [dead_belowdot, greater, period ] }; + key { [ dead_hook, question, slash ] }; + + include "level3(ralt_switch)" + include "eurosign(5)" +}; diff --git a/nixos/xkb/symbols/xfree68_vndr/amiga b/nixos/xkb/symbols/xfree68_vndr/amiga new file mode 100644 index 00000000..f785288b --- /dev/null +++ b/nixos/xkb/symbols/xfree68_vndr/amiga @@ -0,0 +1,125 @@ +default xkb_symbols "usa1" { + + name[Group1]= "usa1"; + key { [ Escape ] }; + + // Begin "Function" section + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + // End "Function" section + + // Alphanumeric section + key { [ grave, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ backslash, bar ] }; + key { [ BackSpace ] }; + + key { [ Tab, ISO_Left_Tab ] }; + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ Return ] }; + + key { [ Control_L ] }; + key { [ Caps_Lock ] }; + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ Shift_L ] }; + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + key { [ Shift_R ] }; + + key { [ Alt_L, Meta_L ] }; + key { [ Mode_switch ] }; + key { [ space ] }; + key { [ Multi_key ] }; + key { [ Alt_R, Meta_R ] }; + // End alphanumeric section + + // Begin "Editing" section + key { [ Delete ] }; + key { [ Help ] }; + key { [ Up ] }; + key { [ Left ] }; + key { [ Down ] }; + key { [ Right ] }; + // End "Editing" section + + // Begin "Keypad" section + key { [ Num_Lock ] }; + key { [ Scroll_Lock ] }; + key { [ KP_Divide ] }; + key { [ KP_Multiply, Print ] }; + + key { [ KP_7, KP_Home ] }; + key { [ KP_8, KP_Up ] }; + key { [ KP_9, KP_Prior ] }; + key { [ KP_Subtract ] }; + + key { [ KP_4, KP_Left ] }; + key { [ KP_5 ] }; + key { [ KP_6, KP_Right ] }; + key { [ KP_Add ] }; + + key { [ KP_1, KP_End ] }; + key { [ KP_2, KP_Down ] }; + key { [ KP_3, KP_Next ] }; + + key { [ KP_0, KP_Insert ] }; + key { [ KP_Decimal, KP_Delete ] }; + key { [ KP_Enter ] }; + // End "Keypad" section + + modifier_map Shift { Shift_L, Shift_R }; + modifier_map Lock { Caps_Lock }; + modifier_map Control{ Control_L }; + modifier_map Mod1 { Alt_L, Alt_R }; + modifier_map Mod2 { Mode_switch }; + modifier_map Mod3 { Meta_L, Meta_R }; +}; diff --git a/nixos/xkb/symbols/xfree68_vndr/ataritt b/nixos/xkb/symbols/xfree68_vndr/ataritt new file mode 100644 index 00000000..c8791f5c --- /dev/null +++ b/nixos/xkb/symbols/xfree68_vndr/ataritt @@ -0,0 +1,154 @@ +default xkb_symbols "us" { + + name[Group1]= "US/ASCII"; + + key { [ Escape ] }; + + // Alphanumeric section + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + key { [ grave, asciitilde ] }; + key { [ BackSpace ] }; + + key { [ Tab, ISO_Left_Tab ] }; + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E ] }; + key { [ r, R ] }; + key { [ t, T ] }; + key { [ y, Y ] }; + key { [ u, U ] }; + key { [ i, I ] }; + key { [ o, O ] }; + key { [ p, P ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ Return ] }; + key { [ Delete ] }; + + key { [ Control_L ] }; + key { [ a, A ] }; + key { [ s, S ] }; + key { [ d, D ] }; + key { [ f, F ] }; + key { [ g, G ] }; + key { [ h, H ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ l, L ] }; + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + key { [ backslash, bar ] }; + + key { [ Shift_L ] }; + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ b, B ] }; + key { [ n, N ] }; + key { [ m, M ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + key { [ Shift_R ] }; + + key { [ Meta_L ] }; + key { [ space ] }; + key { [ Caps_Lock ] }; + // End alphanumeric section + + // Begin "Function" section + key { [ F1 ] }; + key { [ F2 ] }; + key { [ F3 ] }; + key { [ F4 ] }; + key { [ F5 ] }; + key { [ F6 ] }; + key { [ F7 ] }; + key { [ F8 ] }; + key { [ F9 ] }; + key { [ F10 ] }; + // End "Function" section + + // Begin "Editing" section + key { [ Help ] }; + key { [ Undo ] }; + key { [ Insert ] }; + key { [ Up ] }; + key { [ Home, Clear ] }; + key { [ Left ] }; + key { [ Down ] }; + key { [ Right ] }; + // End "Editing" section + + // Begin "Keypad" section + key { [ KP_F1 ] }; + key { [ KP_F2 ] }; + key { [ KP_Divide ] }; + key { [ KP_Multiply ] }; + key { [ KP_7 ] }; + key { [ KP_8 ] }; + key { [ KP_9 ] }; + key { [ KP_Subtract ] }; + key { [ KP_4 ] }; + key { [ KP_5 ] }; + key { [ KP_6 ] }; + key { [ KP_Add ] }; + key { [ KP_1 ] }; + key { [ KP_2 ] }; + key { [ KP_3 ] }; + key { [ KP_0 ] }; + key { [ KP_Decimal ] }; + key { [ KP_Enter ] }; + // End "Keypad" section + + modifier_map Shift { Shift_L, Shift_R }; + modifier_map Lock { Caps_Lock }; + modifier_map Control{ Control_L }; + modifier_map Mod1 { Meta_L }; +}; + +xkb_symbols "de" { + include "xfree68_vndr/ataritt(us)" + + name[Group1]= "German"; + + key { [ 2, quotedbl ] }; + key { [ 3, section ] }; + key { [ 6, ampersand ] }; + key { [ 7, slash ] }; + key { [ 8, parenleft ] }; + key { [ 9, parenright ] }; + key { [ 0, equal ] }; + key { [ ssharp, question ] }; + key { [ apostrophe, grave ] }; + key { [ numbersign, asciicircum ] }; + + key { [ z, Z ] }; + key { [ udiaeresis, Udiaeresis ], + [ at, backslash ] }; + key { [ plus, asterisk ] }; + + key { [ odiaeresis, Odiaeresis ], + [ bracketleft, braceleft ] }; + key { [ adiaeresis, Adiaeresis ], + [ bracketright, braceright ] }; + key { [ asciitilde, bar ] }; + + key { [ less, greater ] }; + key { [ y, Y ] }; + key { [ comma, semicolon ] }; + key { [ period, colon ] }; + key { [ minus, underscore ] }; +}; diff --git a/nixos/xkb/symbols/za b/nixos/xkb/symbols/za new file mode 100644 index 00000000..6d885668 --- /dev/null +++ b/nixos/xkb/symbols/za @@ -0,0 +1,42 @@ +// Keyboard layout for South Africa. + +// Dead keys and letters with diacritics on the upper levels. +// Original author: Dwayne Bailey (dwayne@translate.org.za). +default partial alphanumeric_keys modifier_keys +xkb_symbols "basic" { + + include "latin" + + name[Group1]="English (South Africa)"; + + key { [ grave, asciitilde, dead_grave ] }; + key { [ 2, at, yen ] }; + key { [ 3, numbersign, sterling ] }; + key { [ 4, dollar, dollar ] }; + key { [ 5, percent, EuroSign ] }; + key { [ 6,asciicircum, dead_circumflex ] }; + + key { [ e, E, ediaeresis, Ediaeresis ] }; + key { [ r, R, ecircumflex, Ecircumflex ] }; + key { [ t, T, U1e71, U1e70 ] }; + key { [ y, Y, ucircumflex, Ucircumflex ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + key { [ i, I, idiaeresis, Idiaeresis ] }; + key { [ o, O, odiaeresis, Odiaeresis ] }; + key { [ p, P, ocircumflex, Ocircumflex ] }; + + key { [ a, A, adiaeresis, Adiaeresis ] }; + key { [ s, S, scaron, Scaron ] }; + key { [ d, D, U1e13, U1e12 ] }; + key { [ l, L, U1e3d, U1e3c ] }; + key { [ semicolon, colon, dead_diaeresis ] }; + key { [apostrophe, quotedbl, dead_acute ] }; + + key { [ v, V, doublelowquotemark, leftsinglequotemark ] }; + key { [ b, B, rightdoublequotemark, leftdoublequotemark ] }; + key { [ n, N, U1e4b, U1e4a ] }; + key { [ m, M, U1e45, U1e44 ] }; + key { [ period, greater, dead_abovedot ] }; + + include "level3(ralt_switch)" +}; diff --git a/nixos/xkb/types/README b/nixos/xkb/types/README new file mode 100644 index 00000000..ff0f61b9 --- /dev/null +++ b/nixos/xkb/types/README @@ -0,0 +1,4 @@ +The types component of a keyboard mapping specifies the key types that can be +associated with the various keyboard keys. The types component can optionally +contain also real modifier bindings and symbolic names for one or more virtual +modifiers. diff --git a/nixos/xkb/types/basic b/nixos/xkb/types/basic new file mode 100644 index 00000000..709f4c90 --- /dev/null +++ b/nixos/xkb/types/basic @@ -0,0 +1,28 @@ +default xkb_types "basic" { + + // Standard definitions for three of the four required key types. + // The fourth type "KEYPAD" is defined in the "numpad" file. + + virtual_modifiers NumLock; + + type "ONE_LEVEL" { + modifiers = None; + map[None] = Level1; + level_name[Level1] = "Any"; + }; + + type "TWO_LEVEL" { + modifiers = Shift; + map[Shift] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + }; + + type "ALPHABETIC" { + modifiers = Shift + Lock; + map[Shift] = Level2; + map[Lock] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Caps"; + }; +}; diff --git a/nixos/xkb/types/cancel b/nixos/xkb/types/cancel new file mode 100644 index 00000000..bcbb57d3 --- /dev/null +++ b/nixos/xkb/types/cancel @@ -0,0 +1,10 @@ +default partial xkb_types "Shift_Cancels_Caps" { + + override type "TWO_LEVEL" { + modifiers = Shift + Lock; + map[Shift] = Level2; + preserve[Lock] = Lock; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + }; +}; diff --git a/nixos/xkb/types/caps b/nixos/xkb/types/caps new file mode 100644 index 00000000..0101b32c --- /dev/null +++ b/nixos/xkb/types/caps @@ -0,0 +1,171 @@ +// CapsLock uses internal capitalization rules, +// Shift "pauses" CapsLock. +partial xkb_types "internal" { + type "ALPHABETIC" { + modifiers = Shift + Lock; + map[Shift] = Level2; + preserve[Lock] = Lock; + level_name[Level1] = "Base"; + level_name[Level2] = "Caps"; + }; + + type "FOUR_LEVEL_ALPHABETIC" { + modifiers = Shift + Lock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + preserve[Lock] = Lock; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level3; + map[Shift+Lock+LevelThree] = Level3; + preserve[Lock+LevelThree] = Lock; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; + + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers = Shift + Lock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + preserve[Lock] = Lock; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level3; + map[Shift+Lock+LevelThree] = Level4; + preserve[Lock+LevelThree] = Lock; + preserve[Shift+Lock+LevelThree] = Lock; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; +}; + +// CapsLock uses internal capitalization rules, +// Shift does not cancel CapsLock. +partial xkb_types "internal_nocancel" { + type "ALPHABETIC" { + modifiers = Shift; + map[Shift] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Caps"; + }; + + type "FOUR_LEVEL_ALPHABETIC" { + modifiers = Shift + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; + + type "FOUR_LEVEL_SEMIALPHABETIC" { + // the same as FOUR_LEVEL_ALPHABETIC + modifiers = Shift + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; +}; + +// CapsLock acts as Shift with locking, +// Shift "pauses" CapsLock. +partial xkb_types "shift" { + type "ALPHABETIC" { + modifiers = Shift + Lock; + map[Shift] = Level2; + map[Lock] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Caps"; + }; + + type "FOUR_LEVEL_ALPHABETIC" { + modifiers = Shift + Lock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level4; + map[Shift+Lock+LevelThree] = Level3; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; + + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers = Shift + Lock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level3; + map[Shift+Lock+LevelThree] = Level4; + preserve[Lock+LevelThree] = Lock; + preserve[Shift+Lock+LevelThree] = Lock; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; +}; + +// CapsLock acts as Shift with locking, +// Shift does not cancel CapsLock. +partial xkb_types "shift_nocancel" { + type "ALPHABETIC" { + modifiers = Shift + Lock; + map[Shift] = Level2; + map[Lock] = Level2; + map[Shift+Lock] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Caps"; + }; + + type "FOUR_LEVEL_ALPHABETIC" { + modifiers = Shift + Lock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[Shift+Lock] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level4; + map[Shift+Lock+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; + + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers = Shift + Lock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[Shift+Lock] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level3; + map[Shift+Lock+LevelThree] = Level4; + preserve[Lock+LevelThree] = Lock; + preserve[Shift+Lock+LevelThree] = Lock; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; +}; diff --git a/nixos/xkb/types/complete b/nixos/xkb/types/complete new file mode 100644 index 00000000..17b383df --- /dev/null +++ b/nixos/xkb/types/complete @@ -0,0 +1,9 @@ +default xkb_types "complete" { + include "basic" + include "pc" + include "iso9995" + include "extra" + include "level5" + include "numpad" + include "mousekeys" +}; diff --git a/nixos/xkb/types/default b/nixos/xkb/types/default new file mode 100644 index 00000000..444e1a00 --- /dev/null +++ b/nixos/xkb/types/default @@ -0,0 +1,9 @@ +default xkb_types "default" { + include "basic" + include "pc" + include "iso9995" + include "extra" + include "level5" + include "numpad" + include "mousekeys" +}; diff --git a/nixos/xkb/types/extra b/nixos/xkb/types/extra new file mode 100644 index 00000000..04e33515 --- /dev/null +++ b/nixos/xkb/types/extra @@ -0,0 +1,143 @@ +default partial xkb_types "default" { + + // Defines types with a four-level shift, similar to the three-level + // type from iso9995, but they let the Shift key behave "normally". + + virtual_modifiers LevelThree; + + type "FOUR_LEVEL" { + modifiers = Shift + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; + + type "FOUR_LEVEL_ALPHABETIC" { + modifiers = Shift + Lock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[Shift+Lock] = Level1; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level4; + map[Shift+Lock+LevelThree] = Level3; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; + + type "FOUR_LEVEL_SEMIALPHABETIC" { + modifiers = Shift + Lock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[Shift+Lock] = Level1; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level3; + map[Shift+Lock+LevelThree] = Level4; + preserve[Lock+LevelThree] = Lock; + preserve[Shift+Lock+LevelThree] = Lock; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; + + type "FOUR_LEVEL_KEYPAD" { + modifiers = Shift + NumLock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[NumLock] = Level2; + map[Shift+NumLock] = Level1; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[NumLock+LevelThree] = Level4; + map[Shift+NumLock+LevelThree] = Level3; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift/Numlock"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift/Numlock AltGr"; + }; + + // A four-level keypad variant. The first two levels are controlled by + // NumLock (with active shifting like in KEYPAD). LevelThree overrides + // this mode, with two additional shifted levels. + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers = Shift + NumLock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[NumLock] = Level2; + map[Shift+NumLock] = Level1; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[NumLock+LevelThree] = Level3; + map[Shift+NumLock+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + }; + + // Base level, two shifted LevelThree levels, one Ctrl+Alt command level. + type "FOUR_LEVEL_X" { + modifiers = Shift + LevelThree + Control + Alt; + map[None] = Level1; + map[Shift] = Level1; + map[LevelThree] = Level2; + map[Shift+LevelThree] = Level3; + map[Control+Alt] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "AltGr"; + level_name[Level3] = "Shift AltGr"; + level_name[Level4] = "Ctrl+Alt"; + }; + + // A special type for keys used in the Serbian Latin Unicode keymap. + // It makes it possible to use all three forms of latin letters + // present in Unicode that are made up of two separate letters + // (forms like LJ, Lj, and lj; NJ, Nj, and nj; etcetera). + type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" { + modifiers = Shift + Lock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level4; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level3; + map[Shift+Lock+LevelThree] = Level3; + preserve[Lock] = Lock; + preserve[Lock+LevelThree] = Lock; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Caps / Shift AltGr"; + }; + + // Five levels: the normal four levels with Shift and LevelThree, + // plus a fifth level when CapsLock (and only CapsLock) is active + // -- CapsLock is ignored when Shift and/or LevelThree is held. + type "FOUR_LEVEL_PLUS_LOCK" { + modifiers = Shift + Lock + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock] = Level5; + map[Shift+Lock] = Level2; + map[Lock+LevelThree] = Level3; + map[Shift+Lock+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + level_name[Level5] = "Lock"; + }; +}; diff --git a/nixos/xkb/types/iso9995 b/nixos/xkb/types/iso9995 new file mode 100644 index 00000000..9d12a928 --- /dev/null +++ b/nixos/xkb/types/iso9995 @@ -0,0 +1,18 @@ +default partial xkb_types "default" { + + // A key type which can be used to implement + // an ISO9995-style level-three shift. + + virtual_modifiers LevelThree; + + type "THREE_LEVEL" { + modifiers = Shift + LevelThree; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level3; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Level3"; + }; +}; diff --git a/nixos/xkb/types/level5 b/nixos/xkb/types/level5 new file mode 100644 index 00000000..71152fdc --- /dev/null +++ b/nixos/xkb/types/level5 @@ -0,0 +1,227 @@ +default partial xkb_types "default" { + + // Defines types with an eight-level shift, similar to the three-level + // type used for iso9995, but it lets the Shift key behave "normally". + + virtual_modifiers LevelThree, LevelFive; + + type "EIGHT_LEVEL" { + modifiers = Shift + LevelThree + LevelFive; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[LevelFive] = Level5; + map[Shift+LevelFive] = Level6; + map[LevelThree+LevelFive] = Level7; + map[Shift+LevelThree+LevelFive] = Level8; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + level_name[Level5] = "X"; + level_name[Level6] = "X Shift"; + level_name[Level7] = "X AltGr"; + level_name[Level8] = "X Shift AltGr"; + }; + + type "EIGHT_LEVEL_ALPHABETIC" { + modifiers = Shift + Lock + LevelThree + LevelFive; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[Shift+Lock] = Level1; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level4; + map[Shift+Lock+LevelThree] = Level3; + + map[LevelFive] = Level5; + map[Shift+LevelFive] = Level6; + map[Lock+LevelFive] = Level6; + map[Shift+Lock+LevelFive] = Level5; + map[LevelThree+LevelFive] = Level7; + map[Shift+LevelThree+LevelFive] = Level8; + map[Lock+LevelThree+LevelFive] = Level8; + map[Shift+Lock+LevelThree+LevelFive] = Level7; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + level_name[Level5] = "X"; + level_name[Level6] = "X Shift"; + level_name[Level7] = "X AltGr"; + level_name[Level8] = "X Shift AltGr"; + }; + + type "EIGHT_LEVEL_SEMIALPHABETIC" { + modifiers = Shift + Lock + LevelThree + LevelFive; + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[Shift+Lock] = Level1; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level3; + map[Shift+Lock+LevelThree] = Level4; + + map[LevelFive] = Level5; + map[Shift+LevelFive] = Level6; + map[Lock+LevelFive] = Level6; + map[Shift+Lock+LevelFive] = Level5; + map[LevelThree+LevelFive] = Level7; + map[Shift+LevelThree+LevelFive] = Level8; + map[Lock+LevelThree+LevelFive] = Level7; + map[Shift+Lock+LevelThree+LevelFive] = Level8; + + preserve[Lock+LevelThree] = Lock; + preserve[Shift+Lock+LevelThree] = Lock; + preserve[Lock+LevelThree+LevelFive] = Lock; + preserve[Shift+Lock+LevelThree+LevelFive] = Lock; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + level_name[Level5] = "X"; + level_name[Level6] = "X Shift"; + level_name[Level7] = "X AltGr"; + level_name[Level8] = "X Shift AltGr"; + }; + + type "EIGHT_LEVEL_WITH_LEVEL5_LOCK" { + // Level5-Lock is implemented with virtual modifier NumLock. + + modifiers = Shift + LevelThree + LevelFive + NumLock; + + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[LevelThree+Shift] = Level4; + + map[LevelFive] = Level5; + map[LevelFive+Shift] = Level6; + map[LevelFive+LevelThree] = Level7; + map[LevelFive+LevelThree+Shift] = Level8; + + map[NumLock] = Level5; + map[NumLock+Shift] = Level6; + map[NumLock+LevelThree] = Level7; + map[NumLock+LevelThree+Shift] = Level8; + + map[NumLock+LevelFive] = Level1; + map[NumLock+LevelFive+Shift] = Level2; + map[NumLock+LevelFive+LevelThree] = Level3; + map[NumLock+LevelFive+LevelThree+Shift] = Level4; + + preserve[LevelFive+Shift] = Shift; + preserve[NumLock+Shift] = Shift; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + level_name[Level5] = "X"; + level_name[Level6] = "X Shift"; + level_name[Level7] = "X AltGr"; + level_name[Level8] = "X Shift AltGr"; + }; + + type "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK" { + // Level5-Lock is implemented with virtual modifier NumLock. + + modifiers = Shift + Lock + LevelThree + LevelFive + NumLock; + + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[LevelThree+Shift] = Level4; + + map[LevelFive] = Level5; + map[LevelFive+Shift] = Level6; + map[LevelFive+LevelThree] = Level7; + map[LevelFive+LevelThree+Shift] = Level8; + + map[NumLock] = Level5; + map[NumLock+Shift] = Level6; + map[NumLock+LevelThree] = Level7; + map[NumLock+LevelThree+Shift] = Level8; + + map[NumLock+LevelFive] = Level1; + map[NumLock+LevelFive+Shift] = Level2; + map[NumLock+LevelFive+LevelThree] = Level3; + map[NumLock+LevelFive+LevelThree+Shift] = Level4; + + // Lock interchanges Level1 and Level2 + map[Lock] = Level2; + map[Lock+Shift] = Level1; + map[Lock+LevelThree] = Level3; + map[Lock+LevelThree+Shift] = Level4; + + map[Lock+LevelFive] = Level5; + map[Lock+LevelFive+Shift] = Level6; + map[Lock+LevelFive+LevelThree] = Level7; + map[Lock+LevelFive+LevelThree+Shift] = Level8; + + map[Lock+NumLock] = Level5; + map[Lock+NumLock+Shift] = Level6; + map[Lock+NumLock+LevelThree] = Level7; + map[Lock+NumLock+LevelThree+Shift] = Level8; + + map[Lock+NumLock+LevelFive] = Level2; + map[Lock+NumLock+LevelFive+Shift] = Level1; + map[Lock+NumLock+LevelFive+LevelThree] = Level3; + map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4; + + preserve[LevelFive+Shift] = Shift; + preserve[NumLock+Shift] = Shift; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + level_name[Level5] = "X"; + level_name[Level6] = "X Shift"; + level_name[Level7] = "X AltGr"; + level_name[Level8] = "X Shift AltGr"; + }; + + // When you want part of your layout to have eight levels but cannot use + // LevelFive as modifier, as this would take over the right Ctrl key for + // the whole layout and is too invasive for the average four-level user. + // Needed to fix https://bugs.freedesktop.org/9529. + type "EIGHT_LEVEL_BY_CTRL" { + modifiers = Shift + Lock + LevelThree + Control; + + map[None] = Level1; + map[Shift] = Level2; + map[Lock] = Level2; + map[Shift+Lock] = Level1; + + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Lock+LevelThree] = Level4; + map[Shift+Lock+LevelThree] = Level3; + + map[Control] = Level5; + map[Shift+Control] = Level6; + map[Lock+Control] = Level6; + map[Shift+Lock+Control] = Level5; + + map[LevelThree+Control] = Level7; + map[Shift+LevelThree+Control] = Level8; + map[Lock+LevelThree+Control] = Level8; + map[Shift+Lock+LevelThree+Control] = Level7; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Level3"; + level_name[Level4] = "Shift Level3"; + level_name[Level5] = "Ctrl"; + level_name[Level6] = "Shift Ctrl"; + level_name[Level7] = "Level3 Ctrl"; + level_name[Level8] = "Shift Level3 Ctrl"; + }; + +}; diff --git a/nixos/xkb/types/mousekeys b/nixos/xkb/types/mousekeys new file mode 100644 index 00000000..daaafed6 --- /dev/null +++ b/nixos/xkb/types/mousekeys @@ -0,0 +1,11 @@ +default partial xkb_types "default" { + + virtual_modifiers Alt; + + type "SHIFT+ALT" { + modifiers = Shift + Alt; + map[Shift+Alt] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift+Alt"; + }; +}; diff --git a/nixos/xkb/types/numpad b/nixos/xkb/types/numpad new file mode 100644 index 00000000..8d7677a6 --- /dev/null +++ b/nixos/xkb/types/numpad @@ -0,0 +1,62 @@ +default partial xkb_types "pc" { + type "KEYPAD" { + modifiers = Shift + NumLock; + map[None] = Level1; + map[NumLock] = Level2; + map[Shift+NumLock] = Level1; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + }; +}; + +// On Mac keypads, levels 1 and 2 are swapped. +partial xkb_types "mac" { + type "KEYPAD" { + modifiers = None; + map[None] = Level2; + level_name[Level2] = "Number"; + }; +}; + +partial xkb_types "microsoft" { + type "KEYPAD" { + modifiers = Shift + NumLock; + map[None] = Level1; + preserve[Shift] = Shift; + map[NumLock] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + }; +}; + +// Swiss-German style numeric keypad: Shift and NumLock operate as +// two independent modifiers; however, since we want shift state for +// the cursor keys, only three levels are used from the key mappings. +// Closest type is actually FOUR_LEVEL_X, but most numpad layouts use +// FOUR_LEVEL_MIXED_KEYPAD, so that's the one we are going to override. +partial xkb_types "shift3" { + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers = Shift + NumLock + Control + Alt; + + // NumLock Off => navigate using cursor keys + map[None] = Level1; + + // NumLock Off + Shift pressed => select using cursor keys + preserve[Shift] = Shift; + + // NumLock On => decimal digits + map[NumLock] = Level2; + + // NumLock On + Shift pressed => auxiliary symbols, + // e.g. hexadecimal digits + map[Shift+NumLock] = Level3; + + // Ctrl + Alt, regardless of NumLock and Shift => command keys + map[Control+Alt] = Level4; + + level_name[Level1] = "Base"; + level_name[Level2] = "NumLock"; + level_name[Level3] = "Shift+NumLock"; + level_name[Level4] = "Ctrl+Alt"; + }; +}; diff --git a/nixos/xkb/types/pc b/nixos/xkb/types/pc new file mode 100644 index 00000000..f3f3000b --- /dev/null +++ b/nixos/xkb/types/pc @@ -0,0 +1,49 @@ +default partial xkb_types "default" { + + // Some types that are necessary + // for a full implementation of + // a PC-compatible keyboard. + + virtual_modifiers Alt, LevelThree; + + type "PC_ALT_LEVEL2" { + modifiers = Alt; + map[None] = Level1; + map[Alt] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Alt"; + }; + + type "PC_SUPER_LEVEL2" { + modifiers = Mod4; + map[None] = Level1; + map[Mod4] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Super"; + }; + + type "PC_CONTROL_LEVEL2" { + modifiers = Control; + map[None] = Level1; + map[Control] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Control"; + }; + + type "CTRL+ALT" { + modifiers = Shift + LevelThree + Control + Alt; + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Control+Alt] = Level5; + preserve[Shift] = Shift; + preserve[Shift+LevelThree] = Shift; + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "AltGr"; + level_name[Level4] = "Shift AltGr"; + level_name[Level5] = "Ctrl+Alt"; + }; + +};