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