Guest User

Untitled

a guest
Apr 18th, 2024
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.94 KB | None | 0 0
  1. services.xserver.xkb.extraLayouts.optimot = {
  2. description = "Optimot v1.8";
  3. languages = [ "fra" "eng" ];
  4. symbolsFile = pkgs.writeText "optimot-xkb-symbols" ''
  5. partial alphanumeric_keys
  6. xkb_symbols "optimot" {
  7.  
  8. name[Group1]= "France - Optimot Ergo v1.8.0";
  9.  
  10. include "latin"
  11.  
  12. key <TLDE> { type[group1] = "FOUR_LEVEL_CONTROL", [ dollar, EuroSign, dead_currency, copyright, dollar, dollar ] }; // $ € ¤ ©
  13. key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ guillemotleft, 1, leftdoublequotemark, onequarter, 1, 1 ] }; // « 1 “ ¼
  14. key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ guillemotright, 2, rightdoublequotemark, onehalf, 2, 2 ] }; // » 2 ” ½
  15. key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ quotedbl, 3, doublelowquotemark, threequarters, 3, 3 ] }; // " 3 „ ¾
  16. key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ minus, 4, U2011, onethird, 4, 4 ] }; // - 4 ‑ ⅓
  17. key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ plus, 5, plusminus, twothirds, 5, 5 ] }; // + 5 ± ⅔
  18. key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ asterisk, 6, multiply, U273B, 6, 6 ] }; // * 6 × ✻
  19. key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ slash, 7, backslash, division, 7, 7 ] }; // / 7 \ ÷
  20. key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ equal, 8, notequal, U2248, 8, 8 ] }; // = 8 ≠ ≈
  21. key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ parenleft, 9, bracketleft, minutes, 9, 9 ] }; // ( 9 [ ′
  22. key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ parenright, 0, bracketright, seconds, 0, 0 ] }; // ) 0 ] ″
  23. key <AE11> { type[group1] = "FOUR_LEVEL_CONTROL", [ at, underscore, U2212, figdash, minus, minus ] }; // @ _ − ‒
  24. key <AE12> { type[group1] = "FOUR_LEVEL_CONTROL", [ numbersign, percent, degree, masculine, plus, plus ] }; // # % ° º
  25. key <AD01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ agrave, Agrave, less, U2A7D, q, q ] }; // à À < ⩽
  26. key <AD02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ j, J, greater, U2A7E, j, j ] }; // j J > ⩾
  27. key <AD03> { type[group1] = "FOUR_LEVEL_ALPHABETIC_CONTROL", [ o, O, oe, OE, o, o ] }; // o O œ Œ
  28. key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ eacute, Eacute, dead_acute, Cyrillic_zhe, x, x ] }; // é É ´ ж
  29. key <AD05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ b, B, emdash, U274F, b, b ] }; // b B — ❏
  30. key <AD06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ f, F, leftsinglequotemark, U2726, f, f ] }; // f F ‘ ✦
  31. key <AD07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ d, D, braceleft, dagger, d, d ] }; // d D { †
  32. key <AD08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ l, L, braceright, doubledagger, l, l ] }; // l L } ‡
  33. key <AD09> { type[group1] = "FOUR_LEVEL_CONTROL", [ apostrophe, question, rightsinglequotemark, questiondown, semicolon, semicolon ] }; // ' ? ’ ¿
  34. key <AD10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ q, Q, dead_abovering, U2E2E, q, q ] }; // q Q ˚ ⸮
  35. key <AD11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ x, X, bar, registered, x, x ] }; // x X | ®
  36. key <AD12> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ z, Z, rightarrow, trademark, z, z ] }; // z Z → ™
  37. key <AC01> { type[group1] = "FOUR_LEVEL_ALPHABETIC_CONTROL", [ a, A, ae, AE, a, a ] }; // a A æ Æ
  38. key <AC02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ i, I, downarrow, section, i, i ] }; // i I ↓ §
  39. key <AC03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ e, E, uparrow, paragraph, e, e ] }; // e E ↑ ¶
  40. key <AC04> { type[group1] = "FOUR_LEVEL_ALPHABETIC_CONTROL", [ u, U, ugrave, Ugrave, u, u ] }; // u U ù Ù
  41. key <AC05> { type[group1] = "FOUR_LEVEL_CONTROL", [ comma, semicolon, endash, checkmark, comma, comma ] }; // , ; – ✓
  42. key <AC06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ p, P, grave, U2605, p, p ] }; // p P ` ★
  43. key <AC07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ t, T, ampersand, U2B05, t, t ] }; // t T & ⬅
  44. key <AC08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ s, S, infinity, U2B07, s, s ] }; // s S ∞ ⬇
  45. key <AC09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ r, R, Lcaron, U2B06, r, r ] }; // r R Ľ ⬆
  46. key <AC10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ n, N, dead_tilde, U27A1, n, n ] }; // n N ~ ➡
  47. key <AC11> { type[group1] = "FOUR_LEVEL_CONTROL", [ dead_circumflex, exclam, dead_diaeresis, exclamdown, a, a ] }; // ^ ! ¨ ¡
  48. key <BKSL> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ ccedilla, Ccedilla, dead_horn, U1F12F, w, w ] }; // ç Ç 🄯
  49. key <LSGT> { type[group1] = "FOUR_LEVEL_CONTROL", [ dead_caron, dead_cedilla, asciitilde, U2248, z, z ] }; // ˇ ¸ ~ ≈
  50. key <AB01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ k, K, oslash, U2388, k, k ] }; // k K ø ⎈
  51. key <AB02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ y, Y, dead_abovedot, U2325, y, y ] }; // y Y ˙ ⌥
  52. key <AB03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ egrave, Egrave, dead_grave, U2318, c, c ] }; // è È ` ⌘
  53. key <AB04> { type[group1] = "FOUR_LEVEL_CONTROL", [ period, colon, ellipsis, periodcentered, v, v ] }; // . : … ·
  54. key <AB05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ w, W, U2022, ballotcross, w, w ] }; // w W • ✗
  55. key <AB06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ g, G, mu, U2723, g, g ] }; // g G µ ✣
  56. key <AB07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ c, C, dead_cedilla, U2660, c, c ] }; // c C ¸ ♠
  57. key <AB08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ m, M, dead_macron, heart, m, m ] }; // m M ¯ ♥
  58. key <AB09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ h, H, dead_breve, diamond, h, h ] }; // h H ˘ ♦
  59. key <AB10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC_CONTROL", [ v, V, dead_caron, club, v, v ] }; // v V ˇ ♣
  60. key <SPCE> { type[group1] = "FOUR_LEVEL_CONTROL", [ space, U202F, nobreakspace, hyphen, space, space ] }; //     ­
  61.  
  62. include "level3(ralt_switch)"
  63. };
  64. '';
  65. typesFile = pkgs.writeText "optimot-xkb-types" ''
  66. xkb_types "optimot" {
  67. include "complete"
  68.  
  69. type "FOUR_LEVEL_CONTROL" {
  70. modifiers = Shift+LevelThree+Control;
  71.  
  72. map[None] = Level1;
  73. map[Shift] = Level2;
  74. map[LevelThree] = Level3;
  75. map[Shift+LevelThree] = Level4;
  76. map[Control] = Level5;
  77. map[Control+Shift] = Level6;
  78.  
  79. preserve[Control] = Control;
  80. preserve[Shift+Control] = Control;
  81.  
  82. level_name[Level1] = "Base";
  83. level_name[Level2] = "Shift";
  84. level_name[Level3] = "Alt Base";
  85. level_name[Level4] = "Shift Alt";
  86. level_name[Level5] = "Control";
  87. level_name[Level6] = "Shift Control";
  88. };
  89.  
  90. type "FOUR_LEVEL_ALPHABETIC_CONTROL" {
  91. modifiers = Shift+Lock+LevelThree+Control;
  92.  
  93. map[None] = Level1;
  94. map[Shift] = Level2;
  95. map[Lock] = Level2;
  96. map[LevelThree] = Level3;
  97. map[Shift+LevelThree] = Level4;
  98. map[Lock+LevelThree] = Level4;
  99. map[Lock+Shift+LevelThree] = Level3;
  100. map[Control] = Level5;
  101. map[Control+Shift] = Level6;
  102.  
  103. preserve[Control] = Control;
  104. preserve[Shift+Control] = Control;
  105.  
  106. level_name[Level1] = "Base";
  107. level_name[Level2] = "Shift";
  108. level_name[Level3] = "Alt Base";
  109. level_name[Level4] = "Shift Alt";
  110. level_name[Level5] = "Control";
  111. level_name[Level6] = "Shift Control";
  112. };
  113.  
  114. type "FOUR_LEVEL_SEMIALPHABETIC_CONTROL" {
  115. modifiers = Shift+Lock+LevelThree+Control;
  116.  
  117. map[None] = Level1;
  118. map[Shift] = Level2;
  119. map[Lock] = Level2;
  120. map[LevelThree] = Level3;
  121. map[Shift+LevelThree] = Level4;
  122. map[Lock+LevelThree] = Level3;
  123. map[Lock+Shift+LevelThree] = Level4;
  124. map[Control] = Level5;
  125. map[Control+Shift] = Level6;
  126.  
  127. preserve[Control] = Control;
  128. preserve[Shift+Control] = Control;
  129. preserve[Lock+LevelThree] = Lock;
  130. preserve[Lock+Shift+LevelThree] = Lock;
  131.  
  132. level_name[Level1] = "Base";
  133. level_name[Level2] = "Shift";
  134. level_name[Level3] = "Alt Base";
  135. level_name[Level4] = "Shift Alt";
  136. level_name[Level5] = "Control";
  137. level_name[Level6] = "Shift Control";
  138. };
  139.  
  140. };
  141. '';
  142. keycodesFile = pkgs.writeText "optimot-xkb-keycodes" ''
  143. xkb_keycodes "optimot" { include "evdev+aliases(azerty)" };
  144. '';
  145. compatFile = pkgs.writeText "optimot-xkb-compat" ''
  146. xkb_compatibility "optimot" { include "complete" };
  147. '';
  148. geometryFile = pkgs.writeText "optimot-xkb-geometry" ''
  149. xkb_geometry "optimot" { include "latin" };
  150. '';
  151. };
Add Comment
Please, Sign In to add comment