You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qmk_firmware/quantum/keymap_extras/keymap_canadian_multilingual.h

192 lines
6.8 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#ifndef KEYMAP_CANADIAN_MULTILINGUAG_H
#define KEYMAP_CANADIAN_MULTILINGUAG_H
#include "keymap_common.h"
// Alt gr
#ifndef ALTGR
#define ALTGR(kc) RALT(kc)
#endif
#ifndef ALGR
#define ALGR(kc) ALTGR(kc)
#endif
#define CSA_ALTGR KC_RALT
#define CSA_ALGR CSA_ALTGR
#ifndef GR2A
#define GR2A(kc) RCTL(kc)
#endif
// Normal characters
// First row
#define CSA_SLASH KC_GRV // /
#define CSA_SLSH CSA_SLASH
// Second row
#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 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 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 CSA_BACKSLASH LSFT(CSA_SLASH) /* \ */
#define CSA_BSLS CSA_BACKSLASH
#define CSA_QUESTION LSFT(KC_6) // ?
#define CSA_QEST CSA_QUESTION
// Second row
#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 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 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 CSA_EURO ALTGR(KC_E) // €
#define CSA_DEAD_GRAVE ALTGR(CSA_DEAD_CIRCUMFLEX)
#define CSA_DGRV CSA_DEAD_GRAVE // dead `
#define CSA_TILDE ALTGR(CSA_C_CEDILLA) // ~
#define CSA_TILD CSA_TILDE
// Third row
#define CSA_DEGREE ALTGR(KC_SCOLON) // °
#define CSA_DEGR CSA_DEGREE
// Fourth row
#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 CSA_NON_BREAKING_SPACE ALTGR(KC_SPACE)
#define CSA_NBSP CSA_NON_BREAKING_SPACE
// GR2A-ed characters (non-exhaustive list)
// First row
#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 CSA_DEAD_CEDILLA GR2A(KC_EQUAL) // dead ¸
#define CSA_DCED CSA_DEAD_CEDILLA
// Second row
#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 CSA_DEAD_TILDE GR2A(CSA_C_CEDILLA) // dead ~
#define CSA_DTLD CSA_DEAD_TILDE
// Third row
#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 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 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_DOTA CSA_DEAD_DOT_ABOVE
// GR2A-shifted characters (non-exhaustive list)
// First row
#define CSA_PLUS_MINUS LSFT(GR2A(KC_9)) // ±
#define CSA_PSMS CSA_PLUS_MINUS
// Fourth row
#define CSA_LEFT_QUOTE LSFT(GR2A(KC_V)) //
#define CSA_LQOT CSA_LEFT_QUOTE
#define CSA_RIGHT_QUOTE LSFT(GR2A(KC_B)) //
#define CSA_RQOT CSA_RIGHT_QUOTE
#endif