keypad revision da6c6c0b
1// $XKeyboardConfig$ 2// $Xorg: keypad,v 1.3 2000/08/17 19:54:43 cpqbld Exp $ 3 4partial hidden keypad_keys 5xkb_symbols "overlay" { 6 include "keypad(overlay1)" 7}; 8 9partial hidden keypad_keys 10xkb_symbols "overlay1" { 11 12 // Begin "Keypad" section 13 14 key <KP7> { [ KP_Home ], overlay1=<KO7> }; 15 key <KP8> { [ KP_Up ], overlay1=<KO8> }; 16 key <KP9> { [ KP_Prior ], overlay1=<KO9> }; 17 18 key <KP4> { [ KP_Left ], overlay1=<KO4> }; 19 key <KP5> { [ KP_Begin ], overlay1=<KO5> }; 20 key <KP6> { [ KP_Right ], overlay1=<KO6> }; 21 22 key <KP1> { [ KP_End ], overlay1=<KO1> }; 23 key <KP2> { [ KP_Down ], overlay1=<KO2> }; 24 key <KP3> { [ KP_Next ], overlay1=<KO3> }; 25 26 key <KP0> { [ KP_Insert ], overlay1=<KO0> }; 27 key <KPDL> { [ KP_Delete ], overlay1=<KODL> }; 28 29 key <KO7> { [ KP_7 ] }; 30 key <KO8> { [ KP_8 ] }; 31 key <KO9> { [ KP_9 ] }; 32 33 key <KO4> { [ KP_4 ] }; 34 key <KO5> { [ KP_5 ] }; 35 key <KO6> { [ KP_6 ] }; 36 37 key <KO1> { [ KP_1 ] }; 38 key <KO2> { [ KP_2 ] }; 39 key <KO3> { [ KP_3 ] }; 40 41 key <KO0> { [ KP_0 ] }; 42 key <KODL> { [ KP_Decimal ] }; 43 44 // End "Keypad" section 45}; 46 47partial hidden keypad_keys 48xkb_symbols "overlay2" { 49 50 // Begin "Keypad" section 51 52 key <KP7> { [ KP_Home ], overlay2=<KO7> }; 53 key <KP8> { [ KP_Up ], overlay2=<KO8> }; 54 key <KP9> { [ KP_Prior ], overlay2=<KO9> }; 55 56 key <KP4> { [ KP_Left ], overlay2=<KO4> }; 57 key <KP5> { [ KP_Begin ], overlay2=<KO5> }; 58 key <KP6> { [ KP_Right ], overlay2=<KO6> }; 59 60 key <KP1> { [ KP_End ], overlay2=<KO1> }; 61 key <KP2> { [ KP_Down ], overlay2=<KO2> }; 62 key <KP3> { [ KP_Next ], overlay2=<KO3> }; 63 64 key <KP0> { [ KP_Insert ], overlay2=<KO0> }; 65 key <KPDL> { [ KP_Delete ], overlay2=<KODL> }; 66 67 key <KO7> { [ KP_7 ] }; 68 key <KO8> { [ KP_8 ] }; 69 key <KO9> { [ KP_9 ] }; 70 71 key <KO4> { [ KP_4 ] }; 72 key <KO5> { [ KP_5 ] }; 73 key <KO6> { [ KP_6 ] }; 74 75 key <KO1> { [ KP_1 ] }; 76 key <KO2> { [ KP_2 ] }; 77 key <KO3> { [ KP_3 ] }; 78 79 key <KO0> { [ KP_0 ] }; 80 key <KODL> { [ KP_Decimal ] }; 81 82 // End "Keypad" section 83}; 84 85partial hidden default keypad_keys 86xkb_symbols "x11" { 87// Ungrab cancels server/keyboard/pointer grabs 88 key <KPDV> { 89 type="CTRL+ALT", 90 symbols[Group1]= [ KP_Divide, XF86_Ungrab ] 91 }; 92 93// ClsGrb kills whichever client has a grab in effect 94 key <KPMU> { 95 type="CTRL+ALT", 96 symbols[Group1]= [ KP_Multiply, XF86_ClearGrab ] 97 }; 98 99// -VMode switches to the previous video mode 100 key <KPSU> { 101 type="CTRL+ALT", 102 symbols[Group1]= [ KP_Subtract, XF86_Prev_VMode ] 103 }; 104 105 key <KP7> { [ KP_Home, KP_7 ] }; 106 key <KP8> { [ KP_Up, KP_8 ] }; 107 key <KP9> { [ KP_Prior, KP_9 ] }; 108 109// +VMode switches to the next video mode 110 key <KPAD> { 111 type="CTRL+ALT", 112 symbols[Group1]= [ KP_Add, XF86_Next_VMode ] 113 }; 114 115 key <KP4> { [ KP_Left, KP_4 ] }; 116 key <KP5> { [ KP_Begin, KP_5 ] }; 117 key <KP6> { [ KP_Right, KP_6 ] }; 118 119 key <KP1> { [ KP_End, KP_1 ] }; 120 key <KP2> { [ KP_Down, KP_2 ] }; 121 key <KP3> { [ KP_Next, KP_3 ] }; 122 key <KPEN> { [ KP_Enter ] }; 123 key <KPEQ> { [ KP_Equal ] }; 124 125 key <KP0> { [ KP_Insert, KP_0 ] }; 126 key <KPDL> { [ KP_Delete, KP_Decimal ] }; 127 key <KPPT> { [ KP_Decimal, KP_Decimal ] }; 128}; 129 130 131// Legacy PC keypad definition 132// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 133keypad_keys 134xkb_symbols "legacy" { 135 136 include "keypad(core)" 137 include "keypad(legacymath)" 138 include "keypad(legacynumber)" 139 include "kpdl(dot)" 140}; 141 142 143// Legacy Wang 725-3771-ae and 725-3771-uk keypad definition 144// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 145keypad_keys 146xkb_symbols "legacy_wang" { 147 148 include "keypad(core)" 149 include "keypad(legacymath)" 150 include "keypad(legacynumber_wang)" 151 include "kpdl(dot)" 152}; 153 154 155// Complete new keypad definition 156// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 157keypad_keys 158xkb_symbols "oss" { 159 160 include "keypad(core)" 161 include "keypad(ossmath)" 162 include "keypad(ossnumber)" 163 include "kpdl(dotoss)" 164}; 165 166 167// Latin9 restriction of new keypad definition 168// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 169keypad_keys 170xkb_symbols "oss_latin9" { 171 172 include "keypad(core)" 173 include "keypad(ossmath_latin9)" 174 include "keypad(legacynumber)" 175 include "kpdl(dotoss_latin9)" 176}; 177 178 179// Wang 725-3771-ae and 725-3771-uk keypad variant of oss keypad 180// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 181keypad_keys 182xkb_symbols "oss_wang" { 183 184 include "keypad(core)" 185 include "keypad(ossmath)" 186 include "keypad(ossnumber_wang)" 187 include "kpdl(dotoss)" 188}; 189 190 191// Forward-looking keypad definition 192// Won't work with applications that make ASCII assumptions 193// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 194keypad_keys 195xkb_symbols "future" { 196 197 include "keypad(core)" 198 include "keypad(futuremath)" 199 include "keypad(ossnumber)" 200 include "kpdl(commaoss)" 201}; 202 203 204// Forward-looking keypad definition 205// Won't work with applications that make ASCII assumptions 206// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 207keypad_keys 208xkb_symbols "future_wang" { 209 210 include "keypad(core)" 211 include "keypad(futuremath)" 212 include "keypad(ossnumber_wang)" 213 include "kpdl(commaoss)" 214}; 215 216 217// Keypad keys nobody changes 218// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 219partial keypad_keys 220xkb_symbols "core" { 221 222 modifier_map Mod2 { Num_Lock }; 223 224 key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] }; 225 key <KPEN> { [ KP_Enter ] }; 226 key <KPEQ> { [ KP_Equal ] }; 227}; 228 229 230// Legacy keypad math area 231// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 232// 233// ┏━━━━━┱─────┬─────┬─────┐ 234// ┃Num ┃ ₁ │ ₂ │ ₃ │ ₁ <XF86_Ungrab> 235// ┃Lock⇭┃ / │ * │ - │ ₂ <XF86_ClearGrab> 236// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode> 237// │ ₄ │ ₄ <XF86_Next_VMode> 238// │ │ 239// ┤ │ 1 None 240// │ │ 2 Ctrl+Alt 241// │ + │ 242// ╆━━━━━┪ 243partial keypad_keys 244xkb_symbols "legacymath" { 245 246 key.type[Group1]="CTRL+ALT" ; 247 248 key <KPDV> { [ KP_Divide, XF86_Ungrab ] }; // / <XF86_Ungrab> 249 key <KPMU> { [ KP_Multiply, XF86_ClearGrab ] }; // * <XF86_ClearGrab> 250 key <KPSU> { [ KP_Subtract, XF86_Prev_VMode ] }; // - <XF86_Prev_VMode> 251 252 key <KPAD> { [ KP_Add, XF86_Next_VMode ] }; // + <XF86_Next_VMode> 253 254}; 255 256 257// Keypad math area with non-CS operators 258// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 259// 260// ┏━━━━━┱─────┬─────┬─────┐ 261// ┃Num ┃ ∕ ₁ │ . ₂ │ − ₃ │ ₁ <XF86_Ungrab> 262// ┃Lock⇭┃ / ÷ │ * × │ - − │ ₂ <XF86_ClearGrab> 263// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode> 264// │ + ₄ │ ₄ <XF86_Next_VMode> 265// │ │ 266// ┤ │ 1 None 267// │ │ 2 Level3 ⇮ 268// │ + + │ 3 Shift+Level3 ⇧⇮ 269// ╆━━━━━┪ 4 Ctrl+Alt 270partial keypad_keys 271xkb_symbols "ossmath" { 272 273 key.type[Group1]="FOUR_LEVEL_X" ; 274 275 key <KPDV> { [ KP_Divide, 0x1002215, 0x10000F7, XF86_Ungrab ] }; // / ∕ ÷ <XF86_Ungrab> 276 key <KPMU> { [ KP_Multiply, 0x10022C5, 0x10000D7, XF86_ClearGrab ] }; // * ⋅ × <XF86_ClearGrab> 277 key <KPSU> { [ KP_Subtract, 0x1002212, 0x1002212, XF86_Prev_VMode ] }; // - − − <XF86_Prev_VMode> 278 279 key <KPAD> { [ KP_Add, 0x100002B, 0x100002B, XF86_Next_VMode ] }; // + + + <XF86_Next_VMode> 280 281}; 282 283 284// Keypad math area with non-CS operators in first levels 285// As demanded by users not interested in legacy pre-unicode junk 286// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 287// 288// ┏━━━━━┱─────┬─────┬─────┐ 289// ┃Num ┃ / ₁ │ * ₂ │ - ₃ │ ₁ <XF86_Ungrab> 290// ┃Lock⇭┃ ∕ ÷ │ . × │ − − │ ₂ <XF86_ClearGrab> 291// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode> 292// │ + ₄ │ ₄ <XF86_Next_VMode> 293// │ │ 294// ┤ │ 1 None 295// │ │ 2 Level3 ⇮ 296// │ + + │ 3 Shift+Level3 ⇧⇮ 297// ╆━━━━━┪ 4 Ctrl+Alt 298partial keypad_keys 299xkb_symbols "futuremath" { 300 301 key.type[Group1]="FOUR_LEVEL_X" ; 302 303 key <KPDV> { [ 0x1002215, KP_Divide, 0x10000F7, XF86_Ungrab ] }; // ∕ / ÷ <XF86_Ungrab> 304 key <KPMU> { [ 0x10022C5, KP_Multiply, 0x10000D7, XF86_ClearGrab ] }; // ⋅ * × <XF86_ClearGrab> 305 key <KPSU> { [ 0x1002212, KP_Subtract, 0x1002212, XF86_Prev_VMode ] }; // − - − <XF86_Prev_VMode> 306 307 key <KPAD> { [ 0x100002B, KP_Add, 0x100002B, XF86_Next_VMode ] }; // + + + <XF86_Next_VMode> 308}; 309 310 311// Keypad math area with non-CS operators, restricted to latin9 312// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 313// 314// ┏━━━━━┱─────┬─────┬─────┐ 315// ┃Num ┃ / ₁ │ · ₂ │ - ₃ │ ₁ <XF86_Ungrab> 316// ┃Lock⇭┃ / ÷ │ * × │ - - │ ₂ <XF86_ClearGrab> 317// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode> 318// │ + ₄ │ ₄ <XF86_Next_VMode> 319// │ │ 320// ┤ │ 1 None 321// │ │ 2 Level3 ⇮ 322// │ + + │ 3 Shift+Level3 ⇧⇮ 323// ╆━━━━━┪ 4 Ctrl+Alt 324partial keypad_keys 325xkb_symbols "ossmath_latin9" { 326 327 key.type[Group1]="FOUR_LEVEL_X"; 328 329 key <KPDV> { [ KP_Divide, slash, division, XF86_Ungrab ] }; // / / ÷ <XF86_Ungrab> 330 key <KPMU> { [ KP_Multiply, periodcentered, multiply, XF86_ClearGrab ] }; // * · × <XF86_ClearGrab> 331 key <KPSU> { [ KP_Subtract, minus, minus, XF86_Prev_VMode ] }; // - - - <XF86_Prev_VMode> 332 333 key <KPAD> { [ KP_Add, plus, plus, XF86_Next_VMode ] }; // + + + <XF86_Next_VMode> 334}; 335 336 337// Legacy keypad number area 338// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 339// 340// ┏━━━━━┱ ⇱ Home 341// ┃Num ┃ ⇲ End 342// ┃Lock⇭┃ ⇞ Page up 343// ┡━━━━━╃─────┼─────┼ ⇟ Page down 344// │ 7 │ 8 │ 9 │ ⇞ Page up 345// │ ⇱ │ ⇧ │ ⇞ │ ⎀ Insert 346// ├─────┼─────┼─────┤ ␥ Delete 347// │ 4 │ 5 │ 6 │ ⇦⇧⇨⇩ Directions 348// │ ⇦ │ │ ⇨ │ 349// ├─────┼─────┼─────╆ 350// │ 1 │ 2 │ 3 ┃ 351// │ ⇲ │ ⇩ │ ⇟ ┃ 1 None 352// ├─────┴─────┼─────┨ 2 Num Lock ⇭ 353// │ 0 │ 354// │ ⎀ │ 355// └───────────┴ 356partial keypad_keys 357xkb_symbols "legacynumber" { 358 359 key.type[Group1]="KEYPAD" ; 360 361 key <KP7> { [ KP_Home, KP_7 ] }; // <home> 7 362 key <KP8> { [ KP_Up, KP_8 ] }; // <up> 8 363 key <KP9> { [ KP_Prior, KP_9 ] }; // <prior> 9 364 365 key <KP4> { [ KP_Left, KP_4 ] }; // <left> 4 366 key <KP5> { [ KP_Begin, KP_5 ] }; // <begin> 5 367 key <KP6> { [ KP_Right, KP_6 ] }; // <right> 6 368 369 key <KP1> { [ KP_End, KP_1 ] }; // <end> 1 370 key <KP2> { [ KP_Down, KP_2 ] }; // <down> 2 371 key <KP3> { [ KP_Next, KP_3 ] }; // <next> 3 372 373 key <KP0> { [ KP_Insert, KP_0 ] }; // <insert> 0 374}; 375 376 377// Legacy Wang 725-3771-ae and 725-3771-uk keypad number area 378// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 379// This is actually a three-level keypad, declared as four-level 380// to avoid defining a new type 381// 382// ┏━━━━━┱ ⇱ Home 383// ┃Num ┃ ⇲ End 384// ┃Lock⇭┃ ⇞ Page up 385// ┡━━━━━╃─────┼─────┼ ⇟ Page down 386// │ 7 │ 8 │ 9 │ ⇞ Page up 387// │ ⇱ < │ ⇧ > │ ⇞ ^ │ ⎀ Insert 388// ├─────┼─────┼─────┤ ␥ Delete 389// │ 4 │ 5 │ 6 │ ⇦⇧⇨⇩ Directions 390// │ ⇦ [ │ ] │ ⇨ $ │ 391// ├─────┼─────┼─────╆ 392// │ 1 │ 2 │ 3 ┃ 393// │ ⇲ & │ ⇩ @ │ ⇟ # ┃ 1 None 394// ├─────┴─────┼─────┨ 2 Num Lock ⇭ 395// │ 0 │ 3 Level3 ⇮ 396// │ ⎀ │ 397// └───────────┴ 398partial keypad_keys 399xkb_symbols "legacynumber_wang" { 400 401 key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; 402 403 key <KP7> { [ KP_Home, KP_7, less ] }; // <home> 7 < 404 key <KP8> { [ KP_Up, KP_8, greater ] }; // <up> 8 > 405 key <KP9> { [ KP_Prior, KP_9, asciicircum ] }; // <prior> 9 ^ 406 407 key <KP4> { [ KP_Left, KP_4, bracketleft ] }; // <left> 4 [ 408 key <KP5> { [ KP_Begin, KP_5, bracketright ] }; // <begin> 5 ] 409 key <KP6> { [ KP_Right, KP_6, dollar ] }; // <right> 6 $ 410 411 key <KP1> { [ KP_End, KP_1, ampersand ] }; // <end> 1 & 412 key <KP2> { [ KP_Down, KP_2, at ] }; // <down> 2 @ 413 key <KP3> { [ KP_Next, KP_3, numbersign ] }; // <next> 3 # 414 415 key <KP0> { [ KP_Insert, KP_0, apostrophe ] }; // <insert> 0 ' 416}; 417 418 419// Keypad number area with arrow symbols 420// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 421// 422// ┏━━━━━┱ ⇱ Home 423// ┃Num ┃ ⇲ End 424// ┃Lock⇭┃ ⇞ Page up 425// ┡━━━━━╃─────┼─────┼ ⇟ Page down 426// │ 7 ⇖ │ 8 ⇑ │ 9 ⇗ │ ⇞ Page up 427// │ ⇱ ↖ │ ⇧ ↑ │ ⇞ ↗ │ ⎀ Insert 428// ├─────┼─────┼─────┤ ␥ Delete 429// │ 4 ⇐ │ 5 ⇔ │ 6 ⇗ │ ⇦⇧⇨⇩ Directions 430// │ ⇦ ← │ ↔ │ ⇨ ↗ │ ⍽ narrow no-break space 431// ├─────┼─────┼─────╆ 432// │ 1 ⇙ │ 2 ⇓ │ 3 ⇘ ┃ 433// │ ⇲ ↙ │ ⇩ ↓ │ ⇟ ↘ ┃ 1 None 434// ├─────┴─────┼─────┨ 2 Num Lock ⇭ 435// │ 0 ⇕ │ 3 Level3 ⇮ 436// │ ⎀ ↕ │ 4 Shift+Level3 ⇧⇮ 437// └───────────┴ 438partial keypad_keys 439xkb_symbols "ossnumber" { 440 441 key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; 442 443 key <KP7> { [ KP_Home, KP_7, 0x1002196, 0x10021D6 ] }; // <home> 7 ↖ ⇖ 444 key <KP8> { [ KP_Up, KP_8, 0x1002191, 0x10021D1 ] }; // <up> 8 ↑ ⇑ 445 key <KP9> { [ KP_Prior, KP_9, 0x1002197, 0x10021D7 ] }; // <prior> 9 ↗ ⇗ 446 447 key <KP4> { [ KP_Left, KP_4, 0x1002190, 0x10021D0 ] }; // <left> 4 ← ⇐ 448 key <KP5> { [ KP_Begin, KP_5, 0x1002194, 0x10021D4 ] }; // <begin> 5 ↔ ⇔ 449 key <KP6> { [ KP_Right, KP_6, 0x1002192, 0x10021D2 ] }; // <right> 6 → ⇒ 450 451 key <KP1> { [ KP_End, KP_1, 0x1002199, 0x10021D9 ] }; // <end> 1 ↙ ⇙ 452 key <KP2> { [ KP_Down, KP_2, 0x1002193, 0x10021D3 ] }; // <down> 2 ↓ ⇓ 453 key <KP3> { [ KP_Next, KP_3, 0x1002198, 0x10021D8 ] }; // <next> 3 ↘ ⇘ 454 455 key <KP0> { [ KP_Insert, KP_0, 0x1002195, 0x10021D5 ] }; // <insert> 0 ↕ ⇕ 456}; 457 458 459// Wang 725-3771-ae and 725-3771-uk keypad number area with additional arrow symbols 460// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net> 461// 462// ┏━━━━━┱ ⇱ Home 463// ┃Num ┃ ⇲ End 464// ┃Lock⇭┃ ⇞ Page up 465// ┡━━━━━╃─────┼─────┼ ⇟ Page down 466// │ 7 ↖ │ 8 ↑ │ 9 ↗ │ ⇞ Page up 467// │ ⇱ < │ ⇧ > │ ⇞ ^ │ ⎀ Insert 468// ├─────┼─────┼─────┤ ␥ Delete 469// │ 4 ← │ 5 ↔ │ 6 → │ ⇦⇧⇨⇩ Directions 470// │ ⇦ [ │ ] │ ⇨ $ │ ⍽ narrow no-break space 471// ├─────┼─────┼─────╆ 472// │ 1 ↙ │ 2 ↓ │ 3 ↘ ┃ 473// │ ⇲ & │ ⇩ @ │ ⇟ # ┃ 1 None 474// ├─────┴─────┼─────┨ 2 Num Lock ⇭ 475// │ 0 ↕ │ 3 Level3 ⇮ 476// │ ⎀ ' │ 4 Shift+Level3 ⇧⇮ 477// └───────────┴ 478partial keypad_keys 479xkb_symbols "ossnumber_wang" { 480 481 key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; 482 483 key <KP7> { [ KP_Home, KP_7, less, 0x1002196 ] }; // <home> 7 < ↖ 484 key <KP8> { [ KP_Up, KP_8, greater, 0x1002191 ] }; // <up> 8 > ↑ 485 key <KP9> { [ KP_Prior, KP_9, asciicircum, 0x1002197 ] }; // <prior> 9 ^ ↗ 486 487 key <KP4> { [ KP_Left, KP_4, bracketleft, 0x1002190 ] }; // <left> 4 [ ← 488 key <KP5> { [ KP_Begin, KP_5, bracketright, 0x1002194 ] }; // <begin> 5 ] ↔ 489 key <KP6> { [ KP_Right, KP_6, dollar, 0x1002192 ] }; // <right> 6 $ → 490 491 key <KP1> { [ KP_End, KP_1, ampersand, 0x1002199 ] }; // <end> 1 & ↙ 492 key <KP2> { [ KP_Down, KP_2, at, 0x1002193 ] }; // <down> 2 @ ↓ 493 key <KP3> { [ KP_Next, KP_3, numbersign, 0x1002198 ] }; // <next> 3 # ↘ 494 495 key <KP0> { [ KP_Insert, KP_0, apostrophe, 0x1002195 ] }; // <insert> 0 ' ↕ 496}; 497 498// Standard base "pc" layout only contains cursor keys, and then gets 499// augmented with the digits later. If you define your own layout for 500// the numpad you can inherit the cursors, but you'll have to define 501// the digits yourself. This module can be included in the rules to 502// define math operators; these are the variants used in computer 503// languages that are based on ASCII. NoSymbol doesn't mean that 504// nothing is bound to the key but that no assignment is done here. 505// srvr_ctrl(stdkeypad) and keypad(x11) declare the operator keys to 506// be of type CTRL+ALT in order to assign server control events to 507// them, but it uses the second level which is overwritten if we have 508// more than one definition (shift state) for the key. Instead, here 509// the commands are put at the fourth level. 510partial keypad_keys 511xkb_symbols "ops" { 512 key <KPDV> { [ NoSymbol, slash, NoSymbol, XF86_Ungrab ] }; 513 key <KPMU> { [ NoSymbol, asterisk, NoSymbol, XF86_ClearGrab ] }; 514 key <KPSU> { [ NoSymbol, minus, NoSymbol, XF86_Prev_VMode ] }; 515 key <KPAD> { [ NoSymbol, plus, NoSymbol, XF86_Next_VMode ] }; 516 key <KPEQ> { [ NoSymbol, equal ] }; 517}; 518 519// Hexadecimal Numpad, by Roland Kaufmann <rlndkfmn at gmail dot com> 520// License: BSD (also covers variant with ATM digit order) 521// Third-level gives the letters used in hexadecimal numbers, or 522// columns in small spreadsheets. As a bonus, having 'e' available at 523// the center of the keyboard makes it easy to enter floating point 524// numbers in scientific notation. 525// Equal is added to start formulas (most numpads on PCs don't have 526// their own equal key), comma as a list separator (as most 527// programming languages wants period as a decimal separator) and 528// colon to enter times and ranges. Someone also may want to represent 529// multiplication and division in prose using x and colon. 530// Two first levels are specified as NoSymbol to not override any 531// previous specification. Combine this with another keypad specifier, 532// e.g. "legacy". 533partial keypad_keys 534xkb_symbols "hex" { 535 key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ; 536 537 // None NumLock AltGr 538 // symbol row 539 key <KPDV> { [ NoSymbol, NoSymbol, parenleft ] }; 540 key <KPMU> { [ NoSymbol, NoSymbol, parenright ] }; 541 key <KPSU> { [ NoSymbol, NoSymbol, dollar ] }; 542 543 // upper row 544 key <KP7> { [ NoSymbol, NoSymbol, a ] }; 545 key <KP8> { [ NoSymbol, NoSymbol, b ] }; 546 key <KP9> { [ NoSymbol, NoSymbol, c ] }; 547 548 // home row 549 key <KP4> { [ NoSymbol, NoSymbol, d ] }; 550 key <KP5> { [ NoSymbol, NoSymbol, e ] }; 551 key <KP6> { [ NoSymbol, NoSymbol, f ] }; 552 key <KPAD> { [ NoSymbol, NoSymbol, comma ] }; 553 554 // lower row 555 key <KP1> { [ NoSymbol, NoSymbol, equal ] }; 556 key <KP2> { [ NoSymbol, NoSymbol, x ] }; 557 key <KP3> { [ NoSymbol, NoSymbol, colon ] }; 558 559 // decimal row 560 key <KP0> { [ NoSymbol, NoSymbol, backslash ] }; 561}; 562 563// Main numbers follows the traditions from ATMs and phones with 564// numbers increasing downwards to the right. (It is easier to 565// change the keyboard layout than to reprogram your local ATM; 566// also cell-phones are becoming more common while calculators are 567// becoming more rare). 568// First level is left unspecified, so it may be combined with another 569// layout, e.g. "legacy". 570partial keypad_keys 571xkb_symbols "atm" { 572 // upper row 573 key <KP7> { [ NoSymbol, KP_1 ] }; 574 key <KP8> { [ NoSymbol, KP_2 ] }; 575 key <KP9> { [ NoSymbol, KP_3 ] }; 576 577 // lower row 578 key <KP1> { [ NoSymbol, KP_7 ] }; 579 key <KP2> { [ NoSymbol, KP_8 ] }; 580 key <KP3> { [ NoSymbol, KP_9 ] }; 581}; 582 583 584partial default modifier_keys 585xkb_symbols "pointerkeys" { 586 key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] }; 587}; 588 589// Only numbers, operators and decimal separator, 590// as seen on keypad overlay on Japanese keyboard. 591// ┌─┬─┬─┬─┐ 592// │7│8│9│*│ 593// ├─┼─┼─┼─┤ 594// │4│5│6│-│ 595// ├─┼─┼─┼─┤ 596// │1│2│3│+│ 597// ├─┼─┼─┼─┤ 598// │0│ │·│/│ 599// └─┴─┴─┴─┘ 600partial keypad_keys 601xkb_symbols "numoperdecsep" { 602 key <KO7> { [ KP_7 ] }; 603 key <KO8> { [ KP_8 ] }; 604 key <KO9> { [ KP_9 ] }; 605// ClsGrb kills whichever client has a grab in effect 606 key <KOMU> { 607 type="CTRL+ALT", 608 symbols[Group1]= [ KP_Multiply, XF86_ClearGrab ] 609 }; 610 611 key <KO4> { [ KP_4 ] }; 612 key <KO5> { [ KP_5 ] }; 613 key <KO6> { [ KP_6 ] }; 614// -VMode switches to the previous video mode 615 key <KOSU> { 616 type="CTRL+ALT", 617 symbols[Group1]= [ KP_Subtract, XF86_Prev_VMode ] 618 }; 619 620 key <KO1> { [ KP_1 ] }; 621 key <KO2> { [ KP_2 ] }; 622 key <KO3> { [ KP_3 ] }; 623// +VMode switches to the next video mode 624 key <KOAD> { 625 type="CTRL+ALT", 626 symbols[Group1]= [ KP_Add, XF86_Next_VMode ] 627 }; 628 629 key <KO0> { [ KP_0 ] }; 630 key <KODL> { [ KP_Decimal ] }; 631// Ungrab cancels server/keyboard/pointer grabs 632 key <KODV> { 633 type="CTRL+ALT", 634 symbols[Group1]= [ KP_Divide, XF86_Ungrab ] 635 }; 636}; 637