]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - quantum/keymap_extras/keymap_canadian_multilingual.h
Add grave key
[qmk_firmware.git] / quantum / keymap_extras / keymap_canadian_multilingual.h
index 9b13b1e4e60f730777711abeac33fe9e926bb9dd..1d45bee32e9a03187f66957c06e7379b119febfb 100644 (file)
@@ -1,7 +1,22 @@
+/* Copyright 2016 Didier Loiseau
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #ifndef KEYMAP_CANADIAN_MULTILINGUAG_H
 #define KEYMAP_CANADIAN_MULTILINGUAG_H
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Alt gr
 #ifndef ALTGR
@@ -11,8 +26,8 @@
 #define ALGR(kc)    ALTGR(kc)
 #endif
 
-#define CM_ALTGR    KC_RALT
-#define CM_ALGR     CM_ALTGR
+#define CSA_ALTGR   KC_RALT
+#define CSA_ALGR    CSA_ALTGR
 
 #ifndef GR2A
 #define GR2A(kc)    RCTL(kc)
 
 // Normal characters
 // First row
-#define CM_SLASH    KC_GRV      // /
-#define CM_SLSH     CM_SLASH
+#define CSA_SLASH   KC_GRV      // /
+#define CSA_SLSH    CSA_SLASH
 
 // Second row
-#define CM_DEAD_CIRCUMFLEX  KC_LBRACKET         // dead ^
-#define CM_DCRC             CM_DEAD_CIRCUMFLEX
-#define CM_C_CEDILLA        KC_RBRACKET         // Ç
-#define CM_CCED             CM_C_CEDILLA
+#define CSA_DEAD_CIRCUMFLEX     KC_LBRACKET         // dead ^
+#define CSA_DCRC                CSA_DEAD_CIRCUMFLEX
+#define CSA_C_CEDILLA           KC_RBRACKET         // Ç
+#define CSA_CCED                CSA_C_CEDILLA
 
 // Third row
-#define CM_E_GRAVE  KC_QUOT     // è
-#define CM_EGRV     CM_E_GRAVE
-#define CM_A_GRAVE  KC_BSLASH   // à
-#define CM_AGRV     CM_A_GRAVE
+#define CSA_E_GRAVE     KC_QUOT     // è
+#define CSA_EGRV        CSA_E_GRAVE
+#define CSA_A_GRAVE     KC_BSLASH   // à
+#define CSA_AGRV        CSA_A_GRAVE
 
 // Fourth row
-#define CM_U_GRAVE  KC_NONUS_BSLASH     // ù
-#define CM_UGRV     CM_U_GRAVE
-#define CM_E_ACUTE  KC_SLSH             // é
-#define CM_ECUT     CM_E_ACUTE
+#define CSA_U_GRAVE     KC_NONUS_BSLASH     // ù
+#define CSA_UGRV        CSA_U_GRAVE
+#define CSA_E_ACUTE     KC_SLSH             // é
+#define CSA_ECUT        CSA_E_ACUTE
 
 // Shifted characters
 // First row
-#define CM_BACKSLASH    LSFT(CM_SLASH)  /* \ */
-#define CM_BSLS         CM_BACKSLASH
-#define CM_QUESTION     LSFT(KC_6)      // ?
-#define CM_QEST         CM_QUESTION
+#define CSA_BACKSLASH   LSFT(CSA_SLASH) /* \ */
+#define CSA_BSLS        CSA_BACKSLASH
+#define CSA_QUESTION    LSFT(KC_6)      // ?
+#define CSA_QEST        CSA_QUESTION
 
 // Second row
-#define CM_DEAD_TREMA   LSFT(CM_DEAD_CIRCUMFLEX)    // dead trema/umlaut/diaresis for ä ë ï ö ü
-#define CM_DTRM         CM_DEAD_TREMA
+#define CSA_DEAD_TREMA  LSFT(CSA_DEAD_CIRCUMFLEX)    // dead trema/umlaut/diaresis for ä ë ï ö ü
+#define CSA_DTRM        CSA_DEAD_TREMA
 
 // Third row
 // all same as US-QWERTY, or capitalised character of the non-shifted key
 
 // Fourth row
-#define CM_APOSTROPHE   LSFT(KC_COMMA)  // '
-#define CM_APOS         CM_APOSTROPHE
-#define CM_DOUBLE_QUOTE LSFT(KC_DOT)    // "
-#define CM_DQOT         CM_DOUBLE_QUOTE
+#define CSA_APOSTROPHE      LSFT(KC_COMMA)  // '
+#define CSA_APOS            CSA_APOSTROPHE
+#define CSA_DOUBLE_QUOTE    LSFT(KC_DOT)    // "
+#define CSA_DQOT            CSA_DOUBLE_QUOTE
 
 // Alt Gr-ed characters
 // First row
-#define CM_PIPE                 ALTGR(CM_SLASH)         // |
-#define CM_CURRENCY             ALTGR(KC_4)             // ¤
-#define CM_CURR                 CM_CURRENCY
-#define CM_LEFT_CURLY_BRACE     ALTGR(KC_7)             // {
-#define CM_LCBR                 CM_LEFT_CURLY_BRACE
-#define CM_RIGHT_CURLY_BRACE    ALTGR(KC_8)             // }
-#define CM_RCBR                 CM_RIGHT_CURLY_BRACE
-#define CM_LBRACKET             ALTGR(KC_9)             // [
-#define CM_LBRC                 CM_LBRACKET
-#define CM_RBRACKET             ALTGR(KC_0)             // ]
-#define CM_RBRC                 CM_RBRACKET
-#define CM_NEGATION             ALTGR(KC_EQUAL)         // ¬
-#define CM_NEGT                 CM_NEGATION
+#define CSA_PIPE                ALTGR(CSA_SLASH)        // |
+#define CSA_CURRENCY            ALTGR(KC_4)             // ¤
+#define CSA_CURR                CSA_CURRENCY
+#define CSA_LEFT_CURLY_BRACE    ALTGR(KC_7)             // {
+#define CSA_LCBR                CSA_LEFT_CURLY_BRACE
+#define CSA_RIGHT_CURLY_BRACE   ALTGR(KC_8)             // }
+#define CSA_RCBR                CSA_RIGHT_CURLY_BRACE
+#define CSA_LBRACKET            ALTGR(KC_9)             // [
+#define CSA_LBRC                CSA_LBRACKET
+#define CSA_RBRACKET            ALTGR(KC_0)             // ]
+#define CSA_RBRC                CSA_RBRACKET
+#define CSA_NEGATION            ALTGR(KC_EQUAL)         // ¬
+#define CSA_NEGT                CSA_NEGATION
 
 // Second row
 // euro symbol not available on Linux? (X.org)
-#define CM_EURO         ALTGR(KC_E)                 // €
-#define CM_DEAD_GRAVE   ALTGR(CM_DEAD_CIRCUMFLEX)
-#define CM_DGRV         CM_DEAD_GRAVE               // dead `
-#define CM_TILDE        ALTGR(CM_C_CEDILLA)         // ~
-#define CM_TILD         CM_TILDE
+#define CSA_EURO        ALTGR(KC_E)                 // €
+#define CSA_DEAD_GRAVE  ALTGR(CSA_DEAD_CIRCUMFLEX)
+#define CSA_DGRV        CSA_DEAD_GRAVE              // dead `
+#define CSA_DEAD_TILDE  ALTGR(CSA_C_CEDILLA)        // ~
+#define CSA_DTLD        CSA_DEAD_TILDE
 
 // Third row
-#define CM_DEGREE   ALTGR(KC_SCOLON)    // °
-#define CM_DEGR     CM_DEGREE
+#define CSA_DEGREE  ALTGR(KC_SCOLON)    // °
+#define CSA_DEGR    CSA_DEGREE
 
 // Fourth row
-#define CM_LEFT_GUILLEMET   ALTGR(KC_Z)         // «
-#define CM_LGIL             CM_LEFT_GUILLEMET
-#define CM_RIGHT_GUILLEMET  ALTGR(KC_X)         // »
-#define CM_RGIL             CM_RIGHT_GUILLEMET
-#define CM_LESS             ALTGR(KC_COMMA)     // <
-#define CM_GREATER          ALTGR(KC_DOT)       // >
-#define CM_GRTR             CM_GREATER
+#define CSA_LEFT_GUILLEMET      ALTGR(KC_Z)         // «
+#define CSA_LGIL                CSA_LEFT_GUILLEMET
+#define CSA_RIGHT_GUILLEMET     ALTGR(KC_X)         // »
+#define CSA_RGIL                CSA_RIGHT_GUILLEMET
+#define CSA_LESS                ALTGR(KC_COMMA)     // <
+#define CSA_GREATER             ALTGR(KC_DOT)       // >
+#define CSA_GRTR                CSA_GREATER
 
 // Space bar
-#define CM_NON_BREAKING_SPACE   ALTGR(KC_SPACE)
-#define CM_NBSP                 CM_NON_BREAKING_SPACE
+#define CSA_NON_BREAKING_SPACE  ALTGR(KC_SPACE)
+#define CSA_NBSP                CSA_NON_BREAKING_SPACE
 
-// GR2A-ed characters (non-exhaustive list)
+// GR2A-ed characters
 // First row
-#define CM_SUPERSCRIPT_ONE      GR2A(KC_1)  // ¹
-#define CM_SUP1                 CM_SUPERSCRIPT_ONE
-#define CM_SUPERSCRIPT_TWO      GR2A(KC_2)  // ²
-#define CM_SUP2                 CM_SUPERSCRIPT_TWO
-#define CM_SUPERSCRIPT_THREE    GR2A(KC_3)  // ³
-#define CM_SUP3                 CM_SUPERSCRIPT_THREE
-#define CM_ONE_QUARTER          GR2A(KC_4)  // ¼
-#define CM_1QRT                 CM_ONE_QUARTER
-#define CM_ONE_HALF             GR2A(KC_5)  // ½
-#define CM_1HLF                 CM_ONE_HALF
-#define CM_THREE_QUARTERS       GR2A(KC_6)  // ¾
-#define CM_3QRT                 CM_THREE_QUARTERS
+#define CSA_SUPERSCRIPT_ONE     GR2A(KC_1)  // ¹
+#define CSA_SUP1                CSA_SUPERSCRIPT_ONE
+#define CSA_SUPERSCRIPT_TWO     GR2A(KC_2)  // ²
+#define CSA_SUP2                CSA_SUPERSCRIPT_TWO
+#define CSA_SUPERSCRIPT_THREE   GR2A(KC_3)  // ³
+#define CSA_SUP3                CSA_SUPERSCRIPT_THREE
+#define CSA_ONE_QUARTER         GR2A(KC_4)  // ¼
+#define CSA_1QRT                CSA_ONE_QUARTER
+#define CSA_ONE_HALF            GR2A(KC_5)  // ½
+#define CSA_1HLF                CSA_ONE_HALF
+#define CSA_THREE_QUARTERS      GR2A(KC_6)  // ¾
+#define CSA_3QRT                CSA_THREE_QUARTERS
 // nothing on 7-0 and -
-#define CM_DEAD_CEDILLA         GR2A(KC_EQUAL)  // dead ¸
-#define CM_DCED                 CM_DEAD_CEDILLA
+#define CSA_DEAD_CEDILLA        GR2A(KC_EQUAL)  // dead ¸
+#define CSA_DCED                CSA_DEAD_CEDILLA
 
 // Second row
-#define CM_OMEGA            GR2A(KC_Q)  // ω
-#define CM_OMEG             CM_OMEGA
-#define CM_L_STROKE         GR2A(KC_W)  // ł
-#define CM_LSTK             CM_L_STROKE
-#define CM_OE_LIGATURE      GR2A(KC_E)  // œ
-#define CM_OE               CM_OE_LIGATURE
-#define CM_PARAGRAPH        GR2A(KC_R)  // ¶
-#define CM_PARG             CM_PARAGRAPH
-#define CM_T_STROKE         GR2A(KC_T)  // ŧ
-#define CM_LEFT_ARROW       GR2A(KC_Y)  // ←
-#define CM_LARW             CM_LEFT_ARROW
-#define CM_DOWN_ARROW       GR2A(KC_U)  // ↓
-#define CM_DARW             CM_DOWN_ARROW
-#define CM_RIGHT_ARROW      GR2A(KC_I)  // →
-#define CM_RARW             CM_RIGHT_ARROW
-#define CM_O_STROKE         GR2A(KC_O)  // ø
-#define CM_OSTK             CM_O_STROKE
-#define CM_THORN            GR2A(KC_P)  // þ
-#define CM_THRN             CM_THORN
+#define CSA_OMEGA           GR2A(KC_Q)  // ω
+#define CSA_OMEG            CSA_OMEGA
+#define CSA_L_STROKE        GR2A(KC_W)  // ł
+#define CSA_LSTK            CSA_L_STROKE
+#define CSA_OE_LIGATURE     GR2A(KC_E)  // œ
+#define CSA_OE              CSA_OE_LIGATURE
+#define CSA_PARAGRAPH       GR2A(KC_R)  // ¶
+#define CSA_PARG            CSA_PARAGRAPH
+#define CSA_T_STROKE        GR2A(KC_T)  // ŧ
+#define CSA_LEFT_ARROW      GR2A(KC_Y)  // ←
+#define CSA_LARW            CSA_LEFT_ARROW
+#define CSA_DOWN_ARROW      GR2A(KC_U)  // ↓
+#define CSA_DARW            CSA_DOWN_ARROW
+#define CSA_RIGHT_ARROW     GR2A(KC_I)  // →
+#define CSA_RARW            CSA_RIGHT_ARROW
+#define CSA_O_STROKE        GR2A(KC_O)  // ø
+#define CSA_OSTK            CSA_O_STROKE
+#define CSA_THORN           GR2A(KC_P)  // þ
+#define CSA_THRN            CSA_THORN
 // nothing on ^
-#define CM_DEAD_TILDE       GR2A(CM_C_CEDILLA)  // dead ~
-#define CM_DTLD             CM_DEAD_TILDE
+#define CSA_TILDE           GR2A(CSA_C_CEDILLA)  // dead ~
+#define CSA_TILD            CSA_TILDE
 
 // Third row
-#define CM_AE_LIGATURE  GR2A(KC_A)      // æ
-#define CM_AE           CM_AE_LIGATURE
-#define CM_SHARP_S      GR2A(KC_S)      // ß
-#define CM_SRPS         CM_SHARP_S
-#define CM_ETH          GR2A(KC_D)      // ð
+#define CSA_AE_LIGATURE     GR2A(KC_A)      // æ
+#define CSA_AE              CSA_AE_LIGATURE
+#define CSA_SHARP_S         GR2A(KC_S)      // ß
+#define CSA_SRPS            CSA_SHARP_S
+#define CSA_ETH             GR2A(KC_D)      // ð
 // nothing on F
-#define CM_ENG          GR2A(KC_G)      // ŋ
-#define CM_H_SRTOKE     GR2A(KC_H)      // ħ
-#define CM_HSTK         CM_H_SRTOKE
-#define CM_IJ_LIGATURE  GR2A(KC_J)      // ij
-#define CM_IJ           CM_IJ_LIGATURE
-#define CM_KRA          GR2A(KC_K)      // ĸ
-#define CM_L_FLOWN_DOT  GR2A(KC_L)      // ŀ
-#define CM_LFLD         CM_L_FLOWN_DOT
-#define CM_DEAD_ACUTE   GR2A(KC_SCLN)   // dead acute accent
-#define CM_DACT         CM_DEAD_ACUTE
+#define CSA_ENG             GR2A(KC_G)      // ŋ
+#define CSA_H_SRTOKE        GR2A(KC_H)      // ħ
+#define CSA_HSTK            CSA_H_SRTOKE
+#define CSA_IJ_LIGATURE     GR2A(KC_J)      // ij
+#define CSA_IJ              CSA_IJ_LIGATURE
+#define CSA_KRA             GR2A(KC_K)      // ĸ
+#define CSA_L_FLOWN_DOT     GR2A(KC_L)      // ŀ
+#define CSA_LFLD            CSA_L_FLOWN_DOT
+#define CSA_DEAD_ACUTE      GR2A(KC_SCLN)   // dead acute accent
+#define CSA_DACT            CSA_DEAD_ACUTE
 // nothing on È & À
 
 // Fourth row
-#define CM_CENT                 GR2A(KC_C)  // ¢
-#define CM_LEFT_DOUBLE_QUOTE    GR2A(KC_V)  // “
-#define CM_LDQT                 CM_LEFT_DOUBLE_QUOTE
-#define CM_RIGHT_DOUBLE_QUOTE   GR2A(KC_B)  // ”
-#define CM_RDQT                 CM_RIGHT_DOUBLE_QUOTE
-#define CM_N_APOSTROPHE         GR2A(KC_N)  // ʼn (deprecated unicode codepoint)
-#define CM_NAPO                 CM_N_APOSTROPHE
-#define CM_MU   GR2A(KC_M)      // μ
-// ─ TODO box drawing character?
-#define CM_HYPHENATION_POINT    GR2A(CM_DOT)    // ‧  TODO not an interpunct ?
-
-// GR2A-shifted characters (non-exhaustive list)
+#define CSA_CENT                GR2A(KC_C)  // ¢
+#define CSA_LEFT_DOUBLE_QUOTE   GR2A(KC_V)  // “
+#define CSA_LDQT                CSA_LEFT_DOUBLE_QUOTE
+#define CSA_RIGHT_DOUBLE_QUOTE  GR2A(KC_B)  // ”
+#define CSA_RDQT                CSA_RIGHT_DOUBLE_QUOTE
+#define CSA_N_APOSTROPHE        GR2A(KC_N)  // ʼn (deprecated unicode codepoint)
+#define CSA_NAPO                CSA_N_APOSTROPHE
+#define CSA_MU                  GR2A(KC_M)  // μ
+#define CSA_HORIZONTAL_BAR      GR2A(KC_COMMA)  // ―
+#define CSA_HZBR                CSA_HORIZONTAL_BAR
+#define CSA_DEAD_DOT_ABOVE      GR2A(KC_DOT)    // dead ˙
+#define CSA_DDTA                CSA_DEAD_DOT_ABOVE
+
+// GR2A-shifted characters (different from capitalised GR2A-ed characters)
 // First row
-#define CM_PLUS_MINUS   LSFT(GR2A(KC_9))    // ±
-#define CM_PSMS         CM_PLUS_MINUS
+#define CSA_SOFT_HYPHEN         GR2A(LSFT(CSA_SLASH))   // soft-hyphen, appears as a hyphen in wrapped word
+#define CSA_SHYP                CSA_SOFT_HYPHEN
+#define CSA_INVERTED_EXCLAIM    GR2A(KC_EXCLAIM)    // ¡
+#define CSA_IXLM                CSA_INVERTED_EXCLAIM
+// nothing on 2
+#define CSA_POUND               GR2A(LSFT(KC_3))    // £
+#define CSA_GBP                 CSA_POUND_SIGN
+// already on ALTGR(KC_E)
+#define CSA_EURO_BIS            GR2A(LSFT(KC_4))    // €
+#define CSA_EURB                CSA_EURO_BIS
+#define CSA_THREE_EIGHTHS       GR2A(LSFT(KC_5))    // ⅜
+#define CSA_3ON8                CSA_THREE_EIGHTHS
+#define CSA_FIVE_EIGHTHS        GR2A(LSFT(KC_6))    // ⅝
+#define CSA_5ON8                CSA_FIVE_EIGHTHS
+#define CSA_SEVEN_EIGHTHS       GR2A(LSFT(KC_7))    // ⅞
+#define CSA_7ON8                CSA_SEVEN_EIGHTHS
+#define CSA_TRADEMARK           GR2A(LSFT(KC_8))    // ™
+#define CSA_TM                  CSA_TRADEMARK
+#define CSA_PLUS_MINUS          GR2A(LSFT(KC_9))    // ±
+#define CSA_PSMS                CSA_PLUS_MINUS
+// nothing on 0
+#define CSA_INVERTED_QUESTION   GR2A(LSFT(KC_MINUS))    // ¿
+#define CSA_IQST                CSA_INVERTED_QUESTION
+#define CSA_DEAD_OGONEK         GR2A(LSFT(KC_EQUAL))    // dead ˛
+#define CSA_DOGO                CSA_DEAD_OGONEK
+
+// Second row
+#define CSA_REGISTERED_TRADEMARK    GR2A(LSFT(KC_R))        // ®
+#define CSA_RTM                     CSA_REGISTERED_TRADEMARK
+#define CSA_YEN                     GR2A(LSFT(KC_Y))        // ¥
+#define CSA_YUAN                    CSA_YEN
+#define CSA_UP_ARROW                LSFT(CSA_DOWN_ARROW)    // ↑
+#define CSA_DOTLESS_I               GR2A(LSFT(KC_I))        // ı
+#define CSA_DLSI                    CSA_DOTLESS_I
+#define CSA_DEAD_RING               GR2A(LSFT(CSA_DCRC))    // dead °
+#define CSA_DRNG                    CSA_DEAD_RING
+#define CSA_DEAD_MACRON             GR2A(LSFT(CSA_C_CEDILLA))   // dead ¯
+#define CSA_DMCR                    CSA_DEAD_MACRON
+
+// Third row
+#define CSA_SECTION                 GR2A(LSFT(KC_S))        // §
+#define CSA_SECT                    CSA_SECTION
+#define CSA_ORDINAL_INDICATOR_A     GR2A(LSFT(KC_F))        // ª
+#define CSA_ORDA                    CSA_ORDINAL_INDICATOR_A
+#define CSA_DEAD_DOUBLE_ACUTE       LSFT(CSA_DEAD_ACUTE)    // ˝
+#define CSA_DDCT                    CSA_DEAD_DOUBLE_ACUTE
+#define CSA_DEAD_CARON              GR2A(LSFT(CSA_E_GRAVE)) // dead ˇ
+#define CSA_DCAR                    CSA_DEAD_CARON
+#define CSA_DEAD_BREVE              GR2A(LSFT(CSA_A_GRAVE)) // dead ˘
+#define CSA_DBRV                    CSA_DEAD_BREVE
 
 // Fourth row
-#define CM_LEFT_QUOTE           LSFT(GR2A(KC_V))    // ‘
-#define CM_LQOT                 CM_LEFT_QUOTE
-#define CM_RIGHT_QUOTE          LSFT(GR2A(KC_B))    // ’
-#define CM_RQOT                 CM_RIGHT_QUOTE
+#define CSA_BROKEN_PIPE         GR2A(LSFT(CSA_U_GRAVE)) // ¦
+#define CSA_BPIP                CSA_BROKEN_PIPE
+#define CSA_COPYRIGHT           GR2A(LSFT(KC_C))        // ©
+#define CSA_CPRT                CSA_COPYRIGHT
+#define CSA_LEFT_QUOTE          GR2A(LSFT(KC_V))        // ‘
+#define CSA_LQOT                CSA_LEFT_QUOTE
+#define CSA_RIGHT_QUOTE         GR2A(LSFT(KC_B))        // ’
+#define CSA_RQOT                CSA_RIGHT_QUOTE
+#define CSA_EIGHTH_NOTE         GR2A(LSFT(KC_N))        // ♪
+#define CSA_8NOT                CSA_EIGHTH_NOTE
+#define CSA_ORDINAL_INDICATOR_O GR2A(LSFT(KC_M))        // º
+#define CSA_ORDO                CSA_ORDINAL_INDICATOR_O
+#define CSA_TIMES               GR2A(LSFT(KC_COMMA))    // ×
+#define CSA_TIMS                CSA_TIMES
+#define CSA_OBELUS              GR2A(LSFT(KC_DOT))      // ÷
+#define CSA_OBEL                CSA_OBELUS
+// more conventional name of the symbol
+#define CSA_DIVISION_SIGN       CSA_OBELUS
+#define CSA_DVSN                CSA_DIVISION_SIGN
+// TODO GR2A(LSFT(CSA_E_ACUTE))
 
 #endif