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