keymap_canadian_multilingual.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. #ifndef KEYMAP_CANADIAN_MULTILINGUAG_H
  2. #define KEYMAP_CANADIAN_MULTILINGUAG_H
  3. #include "keymap_common.h"
  4. // Alt gr
  5. #ifndef ALTGR
  6. #define ALTGR(kc) RALT(kc)
  7. #endif
  8. #ifndef ALGR
  9. #define ALGR(kc) ALTGR(kc)
  10. #endif
  11. #define CM_ALTGR KC_RALT
  12. #define CM_ALGR CM_ALTGR
  13. #ifndef GR2A
  14. #define GR2A(kc) RCTL(kc)
  15. #endif
  16. // Normal characters
  17. // First row
  18. #define CM_SLASH KC_GRV // /
  19. #define CM_SLSH CM_SLASH
  20. // Second row
  21. #define CM_DEAD_CIRCUMFLEX KC_LBRACKET // dead ^
  22. #define CM_DCRC CM_DEAD_CIRCUMFLEX
  23. #define CM_C_CEDILLA KC_RBRACKET // Ç
  24. #define CM_CCED CM_C_CEDILLA
  25. // Third row
  26. #define CM_E_GRAVE KC_QUOT // è
  27. #define CM_EGRV CM_E_GRAVE
  28. #define CM_A_GRAVE KC_BSLASH // à
  29. #define CM_AGRV CM_A_GRAVE
  30. // Fourth row
  31. #define CM_U_GRAVE KC_NONUS_BSLASH // ù
  32. #define CM_UGRV CM_U_GRAVE
  33. #define CM_E_ACUTE KC_SLSH // é
  34. #define CM_ECUT CM_E_ACUTE
  35. // Shifted characters
  36. // First row
  37. #define CM_BACKSLASH LSFT(CM_SLASH) /* \ */
  38. #define CM_BSLS CM_BACKSLASH
  39. #define CM_QUESTION LSFT(KC_6) // ?
  40. #define CM_QEST CM_QUESTION
  41. // Second row
  42. #define CM_DEAD_TREMA LSFT(CM_DEAD_CIRCUMFLEX) // dead trema/umlaut/diaresis for ä ë ï ö ü
  43. #define CM_DTRM CM_DEAD_TREMA
  44. // Third row
  45. // all same as US-QWERTY, or capitalised character of the non-shifted key
  46. // Fourth row
  47. #define CM_APOSTROPHE LSFT(KC_COMMA) // '
  48. #define CM_APOS CM_APOSTROPHE
  49. #define CM_DOUBLE_QUOTE LSFT(KC_DOT) // "
  50. #define CM_DQOT CM_DOUBLE_QUOTE
  51. // Alt Gr-ed characters
  52. // First row
  53. #define CM_PIPE ALTGR(CM_SLASH) // |
  54. #define CM_CURRENCY ALTGR(KC_4) // ¤
  55. #define CM_CURR CM_CURRENCY
  56. #define CM_LEFT_CURLY_BRACE ALTGR(KC_7) // {
  57. #define CM_LCBR CM_LEFT_CURLY_BRACE
  58. #define CM_RIGHT_CURLY_BRACE ALTGR(KC_8) // }
  59. #define CM_RCBR CM_RIGHT_CURLY_BRACE
  60. #define CM_LBRACKET ALTGR(KC_9) // [
  61. #define CM_LBRC CM_LBRACKET
  62. #define CM_RBRACKET ALTGR(KC_0) // ]
  63. #define CM_RBRC CM_RBRACKET
  64. #define CM_NEGATION ALTGR(KC_EQUAL) // ¬
  65. #define CM_NEGT CM_NEGATION
  66. // Second row
  67. // euro symbol not available on Linux? (X.org)
  68. #define CM_EURO ALTGR(KC_E) // €
  69. #define CM_DEAD_GRAVE ALTGR(CM_DEAD_CIRCUMFLEX)
  70. #define CM_DGRV CM_DEAD_GRAVE // dead `
  71. #define CM_TILDE ALTGR(CM_C_CEDILLA) // ~
  72. #define CM_TILD CM_TILDE
  73. // Third row
  74. #define CM_DEGREE ALTGR(KC_SCOLON) // °
  75. #define CM_DEGR CM_DEGREE
  76. // Fourth row
  77. #define CM_LEFT_GUILLEMET ALTGR(KC_Z) // «
  78. #define CM_LGIL CM_LEFT_GUILLEMET
  79. #define CM_RIGHT_GUILLEMET ALTGR(KC_X) // »
  80. #define CM_RGIL CM_RIGHT_GUILLEMET
  81. #define CM_LESS ALTGR(KC_COMMA) // <
  82. #define CM_GREATER ALTGR(KC_DOT) // >
  83. #define CM_GRTR CM_GREATER
  84. // Space bar
  85. #define CM_NON_BREAKING_SPACE ALTGR(KC_SPACE)
  86. #define CM_NBSP CM_NON_BREAKING_SPACE
  87. // GR2A-ed characters (non-exhaustive list)
  88. // First row
  89. #define CM_SUPERSCRIPT_ONE GR2A(KC_1) // ¹
  90. #define CM_SUP1 CM_SUPERSCRIPT_ONE
  91. #define CM_SUPERSCRIPT_TWO GR2A(KC_2) // ²
  92. #define CM_SUP2 CM_SUPERSCRIPT_TWO
  93. #define CM_SUPERSCRIPT_THREE GR2A(KC_3) // ³
  94. #define CM_SUP3 CM_SUPERSCRIPT_THREE
  95. #define CM_ONE_QUARTER GR2A(KC_4) // ¼
  96. #define CM_1QRT CM_ONE_QUARTER
  97. #define CM_ONE_HALF GR2A(KC_5) // ½
  98. #define CM_1HLF CM_ONE_HALF
  99. #define CM_THREE_QUARTERS GR2A(KC_6) // ¾
  100. #define CM_3QRT CM_THREE_QUARTERS
  101. // nothing on 7-0 and -
  102. #define CM_DEAD_CEDILLA GR2A(KC_EQUAL) // dead ¸
  103. #define CM_DCED CM_DEAD_CEDILLA
  104. // Second row
  105. #define CM_OMEGA GR2A(KC_Q) // ω
  106. #define CM_OMEG CM_OMEGA
  107. #define CM_L_STROKE GR2A(KC_W) // ł
  108. #define CM_LSTK CM_L_STROKE
  109. #define CM_OE_LIGATURE GR2A(KC_E) // œ
  110. #define CM_OE CM_OE_LIGATURE
  111. #define CM_PARAGRAPH GR2A(KC_R) // ¶
  112. #define CM_PARG CM_PARAGRAPH
  113. #define CM_T_STROKE GR2A(KC_T) // ŧ
  114. #define CM_LEFT_ARROW GR2A(KC_Y) // ←
  115. #define CM_LARW CM_LEFT_ARROW
  116. #define CM_DOWN_ARROW GR2A(KC_U) // ↓
  117. #define CM_DARW CM_DOWN_ARROW
  118. #define CM_RIGHT_ARROW GR2A(KC_I) // →
  119. #define CM_RARW CM_RIGHT_ARROW
  120. #define CM_O_STROKE GR2A(KC_O) // ø
  121. #define CM_OSTK CM_O_STROKE
  122. #define CM_THORN GR2A(KC_P) // þ
  123. #define CM_THRN CM_THORN
  124. // nothing on ^
  125. #define CM_DEAD_TILDE GR2A(CM_C_CEDILLA) // dead ~
  126. #define CM_DTLD CM_DEAD_TILDE
  127. // Third row
  128. #define CM_AE_LIGATURE GR2A(KC_A) // æ
  129. #define CM_AE CM_AE_LIGATURE
  130. #define CM_SHARP_S GR2A(KC_S) // ß
  131. #define CM_SRPS CM_SHARP_S
  132. #define CM_ETH GR2A(KC_D) // ð
  133. // nothing on F
  134. #define CM_ENG GR2A(KC_G) // ŋ
  135. #define CM_H_SRTOKE GR2A(KC_H) // ħ
  136. #define CM_HSTK CM_H_SRTOKE
  137. #define CM_IJ_LIGATURE GR2A(KC_J) // ij
  138. #define CM_IJ CM_IJ_LIGATURE
  139. #define CM_KRA GR2A(KC_K) // ĸ
  140. #define CM_L_FLOWN_DOT GR2A(KC_L) // ŀ
  141. #define CM_LFLD CM_L_FLOWN_DOT
  142. #define CM_DEAD_ACUTE GR2A(KC_SCLN) // dead acute accent
  143. #define CM_DACT CM_DEAD_ACUTE
  144. // nothing on È & À
  145. // Fourth row
  146. #define CM_CENT GR2A(KC_C) // ¢
  147. #define CM_LEFT_DOUBLE_QUOTE GR2A(KC_V) // “
  148. #define CM_LDQT CM_LEFT_DOUBLE_QUOTE
  149. #define CM_RIGHT_DOUBLE_QUOTE GR2A(KC_B) // ”
  150. #define CM_RDQT CM_RIGHT_DOUBLE_QUOTE
  151. #define CM_N_APOSTROPHE GR2A(KC_N) // ʼn (deprecated unicode codepoint)
  152. #define CM_NAPO CM_N_APOSTROPHE
  153. #define CM_MU GR2A(KC_M) // μ
  154. // ─ TODO box drawing character?
  155. #define CM_HYPHENATION_POINT GR2A(CM_DOT) // ‧ TODO not an interpunct ?
  156. // GR2A-shifted characters (non-exhaustive list)
  157. // First row
  158. #define CM_PLUS_MINUS LSFT(GR2A(KC_9)) // ±
  159. #define CM_PSMS CM_PLUS_MINUS
  160. // Fourth row
  161. #define CM_LEFT_QUOTE LSFT(GR2A(KC_V)) // ‘
  162. #define CM_LQOT CM_LEFT_QUOTE
  163. #define CM_RIGHT_QUOTE LSFT(GR2A(KC_B)) // ’
  164. #define CM_RQOT CM_RIGHT_QUOTE
  165. #endif