keypad revision 1.1.1.12 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 doesn't 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 fourth level.
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