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