keymap_canadian_multilingual.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. /* Copyright 2016 Didier Loiseau
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #ifndef KEYMAP_CANADIAN_MULTILINGUAG_H
  17. #define KEYMAP_CANADIAN_MULTILINGUAG_H
  18. #include "keymap.h"
  19. // Alt gr
  20. #ifndef ALTGR
  21. #define ALTGR(kc) RALT(kc)
  22. #endif
  23. #ifndef ALGR
  24. #define ALGR(kc) ALTGR(kc)
  25. #endif
  26. #define CSA_ALTGR KC_RALT
  27. #define CSA_ALGR CSA_ALTGR
  28. #ifndef GR2A
  29. #define GR2A(kc) RCTL(kc)
  30. #endif
  31. // Normal characters
  32. // First row
  33. #define CSA_SLASH KC_GRV // /
  34. #define CSA_SLSH CSA_SLASH
  35. // Second row
  36. #define CSA_DEAD_CIRCUMFLEX KC_LBRACKET // dead ^
  37. #define CSA_DCRC CSA_DEAD_CIRCUMFLEX
  38. #define CSA_C_CEDILLA KC_RBRACKET // Ç
  39. #define CSA_CCED CSA_C_CEDILLA
  40. // Third row
  41. #define CSA_E_GRAVE KC_QUOT // è
  42. #define CSA_EGRV CSA_E_GRAVE
  43. #define CSA_A_GRAVE KC_BSLASH // à
  44. #define CSA_AGRV CSA_A_GRAVE
  45. // Fourth row
  46. #define CSA_U_GRAVE KC_NONUS_BSLASH // ù
  47. #define CSA_UGRV CSA_U_GRAVE
  48. #define CSA_E_ACUTE KC_SLSH // é
  49. #define CSA_ECUT CSA_E_ACUTE
  50. // Shifted characters
  51. // First row
  52. #define CSA_BACKSLASH LSFT(CSA_SLASH) /* \ */
  53. #define CSA_BSLS CSA_BACKSLASH
  54. #define CSA_QUESTION LSFT(KC_6) // ?
  55. #define CSA_QEST CSA_QUESTION
  56. // Second row
  57. #define CSA_DEAD_TREMA LSFT(CSA_DEAD_CIRCUMFLEX) // dead trema/umlaut/diaresis for ä ë ï ö ü
  58. #define CSA_DTRM CSA_DEAD_TREMA
  59. // Third row
  60. // all same as US-QWERTY, or capitalised character of the non-shifted key
  61. // Fourth row
  62. #define CSA_APOSTROPHE LSFT(KC_COMMA) // '
  63. #define CSA_APOS CSA_APOSTROPHE
  64. #define CSA_DOUBLE_QUOTE LSFT(KC_DOT) // "
  65. #define CSA_DQOT CSA_DOUBLE_QUOTE
  66. // Alt Gr-ed characters
  67. // First row
  68. #define CSA_PIPE ALTGR(CSA_SLASH) // |
  69. #define CSA_CURRENCY ALTGR(KC_4) // ¤
  70. #define CSA_CURR CSA_CURRENCY
  71. #define CSA_LEFT_CURLY_BRACE ALTGR(KC_7) // {
  72. #define CSA_LCBR CSA_LEFT_CURLY_BRACE
  73. #define CSA_RIGHT_CURLY_BRACE ALTGR(KC_8) // }
  74. #define CSA_RCBR CSA_RIGHT_CURLY_BRACE
  75. #define CSA_LBRACKET ALTGR(KC_9) // [
  76. #define CSA_LBRC CSA_LBRACKET
  77. #define CSA_RBRACKET ALTGR(KC_0) // ]
  78. #define CSA_RBRC CSA_RBRACKET
  79. #define CSA_NEGATION ALTGR(KC_EQUAL) // ¬
  80. #define CSA_NEGT CSA_NEGATION
  81. // Second row
  82. // euro symbol not available on Linux? (X.org)
  83. #define CSA_EURO ALTGR(KC_E) // €
  84. #define CSA_DEAD_GRAVE ALTGR(CSA_DEAD_CIRCUMFLEX)
  85. #define CSA_DGRV CSA_DEAD_GRAVE // dead `
  86. #define CSA_DEAD_TILDE ALTGR(CSA_C_CEDILLA) // ~
  87. #define CSA_DTLD CSA_DEAD_TILDE
  88. // Third row
  89. #define CSA_DEGREE ALTGR(KC_SCOLON) // °
  90. #define CSA_DEGR CSA_DEGREE
  91. // Fourth row
  92. #define CSA_LEFT_GUILLEMET ALTGR(KC_Z) // «
  93. #define CSA_LGIL CSA_LEFT_GUILLEMET
  94. #define CSA_RIGHT_GUILLEMET ALTGR(KC_X) // »
  95. #define CSA_RGIL CSA_RIGHT_GUILLEMET
  96. #define CSA_LESS ALTGR(KC_COMMA) // <
  97. #define CSA_GREATER ALTGR(KC_DOT) // >
  98. #define CSA_GRTR CSA_GREATER
  99. // Space bar
  100. #define CSA_NON_BREAKING_SPACE ALTGR(KC_SPACE)
  101. #define CSA_NBSP CSA_NON_BREAKING_SPACE
  102. // GR2A-ed characters
  103. // First row
  104. #define CSA_SUPERSCRIPT_ONE GR2A(KC_1) // ¹
  105. #define CSA_SUP1 CSA_SUPERSCRIPT_ONE
  106. #define CSA_SUPERSCRIPT_TWO GR2A(KC_2) // ²
  107. #define CSA_SUP2 CSA_SUPERSCRIPT_TWO
  108. #define CSA_SUPERSCRIPT_THREE GR2A(KC_3) // ³
  109. #define CSA_SUP3 CSA_SUPERSCRIPT_THREE
  110. #define CSA_ONE_QUARTER GR2A(KC_4) // ¼
  111. #define CSA_1QRT CSA_ONE_QUARTER
  112. #define CSA_ONE_HALF GR2A(KC_5) // ½
  113. #define CSA_1HLF CSA_ONE_HALF
  114. #define CSA_THREE_QUARTERS GR2A(KC_6) // ¾
  115. #define CSA_3QRT CSA_THREE_QUARTERS
  116. // nothing on 7-0 and -
  117. #define CSA_DEAD_CEDILLA GR2A(KC_EQUAL) // dead ¸
  118. #define CSA_DCED CSA_DEAD_CEDILLA
  119. // Second row
  120. #define CSA_OMEGA GR2A(KC_Q) // ω
  121. #define CSA_OMEG CSA_OMEGA
  122. #define CSA_L_STROKE GR2A(KC_W) // ł
  123. #define CSA_LSTK CSA_L_STROKE
  124. #define CSA_OE_LIGATURE GR2A(KC_E) // œ
  125. #define CSA_OE CSA_OE_LIGATURE
  126. #define CSA_PARAGRAPH GR2A(KC_R) // ¶
  127. #define CSA_PARG CSA_PARAGRAPH
  128. #define CSA_T_STROKE GR2A(KC_T) // ŧ
  129. #define CSA_LEFT_ARROW GR2A(KC_Y) // ←
  130. #define CSA_LARW CSA_LEFT_ARROW
  131. #define CSA_DOWN_ARROW GR2A(KC_U) // ↓
  132. #define CSA_DARW CSA_DOWN_ARROW
  133. #define CSA_RIGHT_ARROW GR2A(KC_I) // →
  134. #define CSA_RARW CSA_RIGHT_ARROW
  135. #define CSA_O_STROKE GR2A(KC_O) // ø
  136. #define CSA_OSTK CSA_O_STROKE
  137. #define CSA_THORN GR2A(KC_P) // þ
  138. #define CSA_THRN CSA_THORN
  139. // nothing on ^
  140. #define CSA_TILDE GR2A(CSA_C_CEDILLA) // dead ~
  141. #define CSA_TILD CSA_TILDE
  142. // Third row
  143. #define CSA_AE_LIGATURE GR2A(KC_A) // æ
  144. #define CSA_AE CSA_AE_LIGATURE
  145. #define CSA_SHARP_S GR2A(KC_S) // ß
  146. #define CSA_SRPS CSA_SHARP_S
  147. #define CSA_ETH GR2A(KC_D) // ð
  148. // nothing on F
  149. #define CSA_ENG GR2A(KC_G) // ŋ
  150. #define CSA_H_SRTOKE GR2A(KC_H) // ħ
  151. #define CSA_HSTK CSA_H_SRTOKE
  152. #define CSA_IJ_LIGATURE GR2A(KC_J) // ij
  153. #define CSA_IJ CSA_IJ_LIGATURE
  154. #define CSA_KRA GR2A(KC_K) // ĸ
  155. #define CSA_L_FLOWN_DOT GR2A(KC_L) // ŀ
  156. #define CSA_LFLD CSA_L_FLOWN_DOT
  157. #define CSA_DEAD_ACUTE GR2A(KC_SCLN) // dead acute accent
  158. #define CSA_DACT CSA_DEAD_ACUTE
  159. // nothing on È & À
  160. // Fourth row
  161. #define CSA_CENT GR2A(KC_C) // ¢
  162. #define CSA_LEFT_DOUBLE_QUOTE GR2A(KC_V) // “
  163. #define CSA_LDQT CSA_LEFT_DOUBLE_QUOTE
  164. #define CSA_RIGHT_DOUBLE_QUOTE GR2A(KC_B) // ”
  165. #define CSA_RDQT CSA_RIGHT_DOUBLE_QUOTE
  166. #define CSA_N_APOSTROPHE GR2A(KC_N) // ʼn (deprecated unicode codepoint)
  167. #define CSA_NAPO CSA_N_APOSTROPHE
  168. #define CSA_MU GR2A(KC_M) // μ
  169. #define CSA_HORIZONTAL_BAR GR2A(KC_COMMA) // ―
  170. #define CSA_HZBR CSA_HORIZONTAL_BAR
  171. #define CSA_DEAD_DOT_ABOVE GR2A(KC_DOT) // dead ˙
  172. #define CSA_DDTA CSA_DEAD_DOT_ABOVE
  173. // GR2A-shifted characters (different from capitalised GR2A-ed characters)
  174. // First row
  175. #define CSA_SOFT_HYPHEN GR2A(LSFT(CSA_SLASH)) // soft-hyphen, appears as a hyphen in wrapped word
  176. #define CSA_SHYP CSA_SOFT_HYPHEN
  177. #define CSA_INVERTED_EXCLAIM GR2A(KC_EXCLAIM) // ¡
  178. #define CSA_IXLM CSA_INVERTED_EXCLAIM
  179. // nothing on 2
  180. #define CSA_POUND GR2A(LSFT(KC_3)) // £
  181. #define CSA_GBP CSA_POUND_SIGN
  182. // already on ALTGR(KC_E)
  183. #define CSA_EURO_BIS GR2A(LSFT(KC_4)) // €
  184. #define CSA_EURB CSA_EURO_BIS
  185. #define CSA_THREE_EIGHTHS GR2A(LSFT(KC_5)) // ⅜
  186. #define CSA_3ON8 CSA_THREE_EIGHTHS
  187. #define CSA_FIVE_EIGHTHS GR2A(LSFT(KC_6)) // ⅝
  188. #define CSA_5ON8 CSA_FIVE_EIGHTHS
  189. #define CSA_SEVEN_EIGHTHS GR2A(LSFT(KC_7)) // ⅞
  190. #define CSA_7ON8 CSA_SEVEN_EIGHTHS
  191. #define CSA_TRADEMARK GR2A(LSFT(KC_8)) // ™
  192. #define CSA_TM CSA_TRADEMARK
  193. #define CSA_PLUS_MINUS GR2A(LSFT(KC_9)) // ±
  194. #define CSA_PSMS CSA_PLUS_MINUS
  195. // nothing on 0
  196. #define CSA_INVERTED_QUESTION GR2A(LSFT(KC_MINUS)) // ¿
  197. #define CSA_IQST CSA_INVERTED_QUESTION
  198. #define CSA_DEAD_OGONEK GR2A(LSFT(KC_EQUAL)) // dead ˛
  199. #define CSA_DOGO CSA_DEAD_OGONEK
  200. // Second row
  201. #define CSA_REGISTERED_TRADEMARK GR2A(LSFT(KC_R)) // ®
  202. #define CSA_RTM CSA_REGISTERED_TRADEMARK
  203. #define CSA_YEN GR2A(LSFT(KC_Y)) // ¥
  204. #define CSA_YUAN CSA_YEN
  205. #define CSA_UP_ARROW LSFT(CSA_DOWN_ARROW) // ↑
  206. #define CSA_DOTLESS_I GR2A(LSFT(KC_I)) // ı
  207. #define CSA_DLSI CSA_DOTLESS_I
  208. #define CSA_DEAD_RING GR2A(LSFT(CSA_DCRC)) // dead °
  209. #define CSA_DRNG CSA_DEAD_RING
  210. #define CSA_DEAD_MACRON GR2A(LSFT(CSA_C_CEDILLA)) // dead ¯
  211. #define CSA_DMCR CSA_DEAD_MACRON
  212. // Third row
  213. #define CSA_SECTION GR2A(LSFT(KC_S)) // §
  214. #define CSA_SECT CSA_SECTION
  215. #define CSA_ORDINAL_INDICATOR_A GR2A(LSFT(KC_F)) // ª
  216. #define CSA_ORDA CSA_ORDINAL_INDICATOR_A
  217. #define CSA_DEAD_DOUBLE_ACUTE LSFT(CSA_DEAD_ACUTE) // ˝
  218. #define CSA_DDCT CSA_DEAD_DOUBLE_ACUTE
  219. #define CSA_DEAD_CARON GR2A(LSFT(CSA_E_GRAVE)) // dead ˇ
  220. #define CSA_DCAR CSA_DEAD_CARON
  221. #define CSA_DEAD_BREVE GR2A(LSFT(CSA_A_GRAVE)) // dead ˘
  222. #define CSA_DBRV CSA_DEAD_BREVE
  223. // Fourth row
  224. #define CSA_BROKEN_PIPE GR2A(LSFT(CSA_U_GRAVE)) // ¦
  225. #define CSA_BPIP CSA_BROKEN_PIPE
  226. #define CSA_COPYRIGHT GR2A(LSFT(KC_C)) // ©
  227. #define CSA_CPRT CSA_COPYRIGHT
  228. #define CSA_LEFT_QUOTE GR2A(LSFT(KC_V)) // ‘
  229. #define CSA_LQOT CSA_LEFT_QUOTE
  230. #define CSA_RIGHT_QUOTE GR2A(LSFT(KC_B)) // ’
  231. #define CSA_RQOT CSA_RIGHT_QUOTE
  232. #define CSA_EIGHTH_NOTE GR2A(LSFT(KC_N)) // ♪
  233. #define CSA_8NOT CSA_EIGHTH_NOTE
  234. #define CSA_ORDINAL_INDICATOR_O GR2A(LSFT(KC_M)) // º
  235. #define CSA_ORDO CSA_ORDINAL_INDICATOR_O
  236. #define CSA_TIMES GR2A(LSFT(KC_COMMA)) // ×
  237. #define CSA_TIMS CSA_TIMES
  238. #define CSA_OBELUS GR2A(LSFT(KC_DOT)) // ÷
  239. #define CSA_OBEL CSA_OBELUS
  240. // more conventional name of the symbol
  241. #define CSA_DIVISION_SIGN CSA_OBELUS
  242. #define CSA_DVSN CSA_DIVISION_SIGN
  243. // TODO GR2A(LSFT(CSA_E_ACUTE))
  244. #endif