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