xkeyboard-config
629 строк · 23.4 Кб
1default hidden partial keypad_keys
2xkb_symbols "x11" {
3
4include "keypad(operators)"
5
6key <KP7> { [ KP_Home, KP_7 ] };
7key <KP8> { [ KP_Up, KP_8 ] };
8key <KP9> { [ KP_Prior, KP_9 ] };
9
10key <KP4> { [ KP_Left, KP_4 ] };
11key <KP5> { [ KP_Begin, KP_5 ] };
12key <KP6> { [ KP_Right, KP_6 ] };
13
14key <KP1> { [ KP_End, KP_1 ] };
15key <KP2> { [ KP_Down, KP_2 ] };
16key <KP3> { [ KP_Next, KP_3 ] };
17key <KPEN> { [ KP_Enter ] };
18key <KPEQ> { [ KP_Equal ] };
19
20key <KP0> { [ KP_Insert, KP_0 ] };
21key <KPDL> { [ KP_Delete, KP_Decimal ] };
22key <KPPT> { [ KP_Decimal, KP_Decimal ] };
23};
24
25hidden partial keypad_keys
26xkb_symbols "overlay" {
27include "keypad(overlay1)"
28};
29
30hidden partial keypad_keys
31xkb_symbols "overlay1" {
32
33key <KP7> { [ KP_Home ], overlay1=<KO7> };
34key <KP8> { [ KP_Up ], overlay1=<KO8> };
35key <KP9> { [ KP_Prior ], overlay1=<KO9> };
36
37key <KP4> { [ KP_Left ], overlay1=<KO4> };
38key <KP5> { [ KP_Begin ], overlay1=<KO5> };
39key <KP6> { [ KP_Right ], overlay1=<KO6> };
40
41key <KP1> { [ KP_End ], overlay1=<KO1> };
42key <KP2> { [ KP_Down ], overlay1=<KO2> };
43key <KP3> { [ KP_Next ], overlay1=<KO3> };
44
45key <KP0> { [ KP_Insert ], overlay1=<KO0> };
46key <KPDL> { [ KP_Delete ], overlay1=<KODL> };
47
48key <KO7> { [ KP_7 ] };
49key <KO8> { [ KP_8 ] };
50key <KO9> { [ KP_9 ] };
51
52key <KO4> { [ KP_4 ] };
53key <KO5> { [ KP_5 ] };
54key <KO6> { [ KP_6 ] };
55
56key <KO1> { [ KP_1 ] };
57key <KO2> { [ KP_2 ] };
58key <KO3> { [ KP_3 ] };
59
60key <KO0> { [ KP_0 ] };
61key <KODL> { [ KP_Decimal ] };
62};
63
64hidden partial keypad_keys
65xkb_symbols "overlay2" {
66
67key <KP7> { [ KP_Home ], overlay2=<KO7> };
68key <KP8> { [ KP_Up ], overlay2=<KO8> };
69key <KP9> { [ KP_Prior ], overlay2=<KO9> };
70
71key <KP4> { [ KP_Left ], overlay2=<KO4> };
72key <KP5> { [ KP_Begin ], overlay2=<KO5> };
73key <KP6> { [ KP_Right ], overlay2=<KO6> };
74
75key <KP1> { [ KP_End ], overlay2=<KO1> };
76key <KP2> { [ KP_Down ], overlay2=<KO2> };
77key <KP3> { [ KP_Next ], overlay2=<KO3> };
78
79key <KP0> { [ KP_Insert ], overlay2=<KO0> };
80key <KPDL> { [ KP_Delete ], overlay2=<KODL> };
81
82key <KO7> { [ KP_7 ] };
83key <KO8> { [ KP_8 ] };
84key <KO9> { [ KP_9 ] };
85
86key <KO4> { [ KP_4 ] };
87key <KO5> { [ KP_5 ] };
88key <KO6> { [ KP_6 ] };
89
90key <KO1> { [ KP_1 ] };
91key <KO2> { [ KP_2 ] };
92key <KO3> { [ KP_3 ] };
93
94key <KO0> { [ KP_0 ] };
95key <KODL> { [ KP_Decimal ] };
96};
97
98hidden partial keypad_keys
99xkb_symbols "operators" {
100// Puts some commands to control the X server on
101// the fifth level of the keypad's operator keys.
102key <KPDV> {
103type="CTRL+ALT", // Ungrab cancels server/keyboard/pointer grabs
104symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ]
105};
106key <KPMU> {
107type="CTRL+ALT", // ClsGrb kills whichever client has a grab in effect
108symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ]
109};
110key <KPSU> {
111type="CTRL+ALT", // -VMode switches to the previous video mode
112symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ]
113};
114key <KPAD> {
115type="CTRL+ALT", // +VMode switches to the next video mode
116symbols[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>
122keypad_keys
123xkb_symbols "legacy" {
124
125include "keypad(core)"
126include "keypad(legacymath)"
127include "keypad(legacynumber)"
128include "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>
134keypad_keys
135xkb_symbols "legacy_wang" {
136
137include "keypad(core)"
138include "keypad(legacymath)"
139include "keypad(legacynumber_wang)"
140include "kpdl(dot)"
141};
142
143
144// Complete new keypad definition
145// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
146keypad_keys
147xkb_symbols "oss" {
148
149include "keypad(core)"
150include "keypad(ossmath)"
151include "keypad(ossnumber)"
152include "kpdl(dotoss)"
153};
154
155
156// Latin9 restriction of new keypad definition
157// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
158keypad_keys
159xkb_symbols "oss_latin9" {
160
161include "keypad(core)"
162include "keypad(ossmath_latin9)"
163include "keypad(legacynumber)"
164include "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>
170keypad_keys
171xkb_symbols "oss_wang" {
172
173include "keypad(core)"
174include "keypad(ossmath)"
175include "keypad(ossnumber_wang)"
176include "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>
183keypad_keys
184xkb_symbols "future" {
185
186include "keypad(core)"
187include "keypad(futuremath)"
188include "keypad(ossnumber)"
189include "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>
196keypad_keys
197xkb_symbols "future_wang" {
198
199include "keypad(core)"
200include "keypad(futuremath)"
201include "keypad(ossnumber_wang)"
202include "kpdl(commaoss)"
203};
204
205
206// Keypad keys nobody changes
207// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
208partial keypad_keys
209xkb_symbols "core" {
210
211modifier_map Mod2 { Num_Lock };
212
213key <NMLK> { [ Num_Lock ] };
214key <KPEN> { [ KP_Enter ] };
215key <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// ╆━━━━━┪
232partial keypad_keys
233xkb_symbols "legacymath" {
234
235key.type[Group1]="CTRL+ALT" ;
236
237key <KPDV> { [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ] }; // / <XF86_Ungrab>
238key <KPMU> { [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ] }; // * <XF86_ClearGrab>
239key <KPSU> { [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ] }; // - <XF86_Prev_VMode>
240
241key <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
258partial keypad_keys
259xkb_symbols "ossmath" {
260
261key.type[Group1]="CTRL+ALT" ;
262
263key <KPDV> { [ KP_Divide, 0x1002215, 0x10000F7, VoidSymbol, XF86_Ungrab ] }; // / ∕ ÷ <XF86_Ungrab>
264key <KPMU> { [ KP_Multiply, 0x10022C5, 0x10000D7, VoidSymbol, XF86_ClearGrab ] }; // * ⋅ × <XF86_ClearGrab>
265key <KPSU> { [ KP_Subtract, 0x1002212, 0x1002212, VoidSymbol, XF86_Prev_VMode ] }; // - − − <XF86_Prev_VMode>
266
267key <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
285partial keypad_keys
286xkb_symbols "futuremath" {
287
288key.type[Group1]="FOUR_LEVEL_X" ;
289
290key <KPDV> { [ 0x1002215, KP_Divide, 0x10000F7, XF86_Ungrab ] }; // ∕ / ÷ <XF86_Ungrab>
291key <KPMU> { [ 0x10022C5, KP_Multiply, 0x10000D7, XF86_ClearGrab ] }; // ⋅ * × <XF86_ClearGrab>
292key <KPSU> { [ 0x1002212, KP_Subtract, 0x1002212, XF86_Prev_VMode ] }; // − - − <XF86_Prev_VMode>
293
294key <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
311partial keypad_keys
312xkb_symbols "ossmath_latin9" {
313
314key.type[Group1]="FOUR_LEVEL_X";
315
316key <KPDV> { [ KP_Divide, slash, division, XF86_Ungrab ] }; // / / ÷ <XF86_Ungrab>
317key <KPMU> { [ KP_Multiply, periodcentered, multiply, XF86_ClearGrab ] }; // * · × <XF86_ClearGrab>
318key <KPSU> { [ KP_Subtract, minus, minus, XF86_Prev_VMode ] }; // - - - <XF86_Prev_VMode>
319
320key <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// └───────────┴
343partial keypad_keys
344xkb_symbols "legacynumber" {
345
346key.type[Group1]="KEYPAD" ;
347
348key <KP7> { [ KP_Home, KP_7 ] }; // <home> 7
349key <KP8> { [ KP_Up, KP_8 ] }; // <up> 8
350key <KP9> { [ KP_Prior, KP_9 ] }; // <prior> 9
351
352key <KP4> { [ KP_Left, KP_4 ] }; // <left> 4
353key <KP5> { [ KP_Begin, KP_5 ] }; // <begin> 5
354key <KP6> { [ KP_Right, KP_6 ] }; // <right> 6
355
356key <KP1> { [ KP_End, KP_1 ] }; // <end> 1
357key <KP2> { [ KP_Down, KP_2 ] }; // <down> 2
358key <KP3> { [ KP_Next, KP_3 ] }; // <next> 3
359
360key <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// └───────────┴
385partial keypad_keys
386xkb_symbols "legacynumber_wang" {
387
388key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
389
390key <KP7> { [ KP_Home, KP_7, less ] }; // <home> 7 <
391key <KP8> { [ KP_Up, KP_8, greater ] }; // <up> 8 >
392key <KP9> { [ KP_Prior, KP_9, asciicircum ] }; // <prior> 9 ^
393
394key <KP4> { [ KP_Left, KP_4, bracketleft ] }; // <left> 4 [
395key <KP5> { [ KP_Begin, KP_5, bracketright ] }; // <begin> 5 ]
396key <KP6> { [ KP_Right, KP_6, dollar ] }; // <right> 6 $
397
398key <KP1> { [ KP_End, KP_1, ampersand ] }; // <end> 1 &
399key <KP2> { [ KP_Down, KP_2, at ] }; // <down> 2 @
400key <KP3> { [ KP_Next, KP_3, numbersign ] }; // <next> 3 #
401
402key <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// └───────────┴
425partial keypad_keys
426xkb_symbols "ossnumber" {
427
428key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
429
430key <KP7> { [ KP_Home, KP_7, 0x1002196, 0x10021D6 ] }; // <home> 7 ↖ ⇖
431key <KP8> { [ KP_Up, KP_8, 0x1002191, 0x10021D1 ] }; // <up> 8 ↑ ⇑
432key <KP9> { [ KP_Prior, KP_9, 0x1002197, 0x10021D7 ] }; // <prior> 9 ↗ ⇗
433
434key <KP4> { [ KP_Left, KP_4, 0x1002190, 0x10021D0 ] }; // <left> 4 ← ⇐
435key <KP5> { [ KP_Begin, KP_5, 0x1002194, 0x10021D4 ] }; // <begin> 5 ↔ ⇔
436key <KP6> { [ KP_Right, KP_6, 0x1002192, 0x10021D2 ] }; // <right> 6 → ⇒
437
438key <KP1> { [ KP_End, KP_1, 0x1002199, 0x10021D9 ] }; // <end> 1 ↙ ⇙
439key <KP2> { [ KP_Down, KP_2, 0x1002193, 0x10021D3 ] }; // <down> 2 ↓ ⇓
440key <KP3> { [ KP_Next, KP_3, 0x1002198, 0x10021D8 ] }; // <next> 3 ↘ ⇘
441
442key <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// └───────────┴
465partial keypad_keys
466xkb_symbols "ossnumber_wang" {
467
468key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
469
470key <KP7> { [ KP_Home, KP_7, less, 0x1002196 ] }; // <home> 7 < ↖
471key <KP8> { [ KP_Up, KP_8, greater, 0x1002191 ] }; // <up> 8 > ↑
472key <KP9> { [ KP_Prior, KP_9, asciicircum, 0x1002197 ] }; // <prior> 9 ^ ↗
473
474key <KP4> { [ KP_Left, KP_4, bracketleft, 0x1002190 ] }; // <left> 4 [ ←
475key <KP5> { [ KP_Begin, KP_5, bracketright, 0x1002194 ] }; // <begin> 5 ] ↔
476key <KP6> { [ KP_Right, KP_6, dollar, 0x1002192 ] }; // <right> 6 $ →
477
478key <KP1> { [ KP_End, KP_1, ampersand, 0x1002199 ] }; // <end> 1 & ↙
479key <KP2> { [ KP_Down, KP_2, at, 0x1002193 ] }; // <down> 2 @ ↓
480key <KP3> { [ KP_Next, KP_3, numbersign, 0x1002198 ] }; // <next> 3 # ↘
481
482key <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.
497partial keypad_keys
498xkb_symbols "ops" {
499key <KPDV> { [ NoSymbol, slash, NoSymbol, XF86_Ungrab ] };
500key <KPMU> { [ NoSymbol, asterisk, NoSymbol, XF86_ClearGrab ] };
501key <KPSU> { [ NoSymbol, minus, NoSymbol, XF86_Prev_VMode ] };
502key <KPAD> { [ NoSymbol, plus, NoSymbol, XF86_Next_VMode ] };
503key <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".
520partial keypad_keys
521xkb_symbols "hex" {
522key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
523
524include "keypad(ops)"
525
526// None NumLock AltGr
527// symbol row
528key <KPDV> { [ NoSymbol, NoSymbol, parenleft ] };
529key <KPMU> { [ NoSymbol, NoSymbol, parenright ] };
530key <KPSU> { [ NoSymbol, NoSymbol, dollar ] };
531
532// upper row
533key <KP7> { [ NoSymbol, NoSymbol, a ] };
534key <KP8> { [ NoSymbol, NoSymbol, b ] };
535key <KP9> { [ NoSymbol, NoSymbol, c ] };
536
537// home row
538key <KP4> { [ NoSymbol, NoSymbol, d ] };
539key <KP5> { [ NoSymbol, NoSymbol, e ] };
540key <KP6> { [ NoSymbol, NoSymbol, f ] };
541key <KPAD> { [ NoSymbol, NoSymbol, comma ] };
542
543// lower row
544key <KP1> { [ NoSymbol, NoSymbol, equal ] };
545key <KP2> { [ NoSymbol, NoSymbol, x ] };
546key <KP3> { [ NoSymbol, NoSymbol, colon ] };
547
548// decimal row
549key <KP0> { [ NoSymbol, NoSymbol, backslash ] };
550};
551
552// Main numbers follows the traditions from ATMs and phones with
553// numbers increasing downwards to the right. (It is easier to
554// change the keyboard layout than to reprogram your local ATM;
555// also cell-phones are becoming more common while calculators are
556// becoming more rare).
557// First level is left unspecified, so it may be combined with another
558// layout, e.g. "legacy".
559partial keypad_keys
560xkb_symbols "atm" {
561include "keypad(ops)"
562include "keypad(hex)"
563
564// upper row
565key <KP7> { [ NoSymbol, KP_1 ] };
566key <KP8> { [ NoSymbol, KP_2 ] };
567key <KP9> { [ NoSymbol, KP_3 ] };
568
569// lower row
570key <KP1> { [ NoSymbol, KP_7 ] };
571key <KP2> { [ NoSymbol, KP_8 ] };
572key <KP3> { [ NoSymbol, KP_9 ] };
573};
574
575
576partial modifier_keys
577xkb_symbols "pointerkeys" {
578key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] };
579};
580
581
582// Only numbers, operators and decimal separator,
583// as seen on keypad overlay on Japanese keyboard.
584// ┌───┬───┬───┬───┐
585// │ 7 │ 8 │ 9 │ * │
586// ├───┼───┼───┼───┤
587// │ 4 │ 5 │ 6 │ - │
588// ├───┼───┼───┼───┤
589// │ 1 │ 2 │ 3 │ + │
590// ├───┼───┼───┼───┤
591// │ 0 │ │ · │ / │
592// └───┴───┴───┴───┘
593partial keypad_keys
594xkb_symbols "numoperdecsep" {
595key <KO7> { [ KP_7 ] };
596key <KO8> { [ KP_8 ] };
597key <KO9> { [ KP_9 ] };
598// ClsGrb kills whichever client has a grab in effect
599key <KOMU> {
600type="CTRL+ALT",
601symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ]
602};
603
604key <KO4> { [ KP_4 ] };
605key <KO5> { [ KP_5 ] };
606key <KO6> { [ KP_6 ] };
607// -VMode switches to the previous video mode
608key <KOSU> {
609type="CTRL+ALT",
610symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ]
611};
612
613key <KO1> { [ KP_1 ] };
614key <KO2> { [ KP_2 ] };
615key <KO3> { [ KP_3 ] };
616// +VMode switches to the next video mode
617key <KOAD> {
618type="CTRL+ALT",
619symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode ]
620};
621
622key <KO0> { [ KP_0 ] };
623key <KODL> { [ KP_Decimal ] };
624// Ungrab cancels server/keyboard/pointer grabs
625key <KODV> {
626type="CTRL+ALT",
627symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ]
628};
629};
630