logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

keypad (23758B)


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