From 741c7d5eec7deb89a0043852ad711917137a5e61 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 14 May 2020 04:34:31 +1000 Subject: [PATCH] Update Canadian Multilingual keymap and add sendstring LUT (#8786) --- .../keymap_canadian_multilingual.h | 646 +++++++++++------- .../sendstring_canadian_multilingual.h | 100 +++ 2 files changed, 510 insertions(+), 236 deletions(-) create mode 100644 quantum/keymap_extras/sendstring_canadian_multilingual.h diff --git a/quantum/keymap_extras/keymap_canadian_multilingual.h b/quantum/keymap_extras/keymap_canadian_multilingual.h index 4fc174e7352..d980dc2e417 100644 --- a/quantum/keymap_extras/keymap_canadian_multilingual.h +++ b/quantum/keymap_extras/keymap_canadian_multilingual.h @@ -1,4 +1,4 @@ -/* Copyright 2016 Didier Loiseau +/* Copyright 2020 * * 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 @@ -13,247 +13,421 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef KEYMAP_CANADIAN_MULTILINGUAL_H -#define KEYMAP_CANADIAN_MULTILINGUAL_H -#include "keymap.h" - -#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 ALGR(CSA_SLASH) // | -#define CSA_CURRENCY ALGR(KC_4) // ¤ -#define CSA_CURR CSA_CURRENCY -#define CSA_LEFT_CURLY_BRACE ALGR(KC_7) // { -#define CSA_LCBR CSA_LEFT_CURLY_BRACE -#define CSA_RIGHT_CURLY_BRACE ALGR(KC_8) // } -#define CSA_RCBR CSA_RIGHT_CURLY_BRACE -#define CSA_LBRACKET ALGR(KC_9) // [ -#define CSA_LBRC CSA_LBRACKET -#define CSA_RBRACKET ALGR(KC_0) // ] -#define CSA_RBRC CSA_RBRACKET -#define CSA_NEGATION ALGR(KC_EQUAL) // ¬ -#define CSA_NEGT CSA_NEGATION +#pragma once -// Second row -// euro symbol not available on Linux? (X.org) -#define CSA_EURO ALGR(KC_E) // € -#define CSA_DEAD_GRAVE ALGR(CSA_DEAD_CIRCUMFLEX) -#define CSA_DGRV CSA_DEAD_GRAVE // dead ` -#define CSA_DEAD_TILDE ALGR(CSA_C_CEDILLA) // ~ -#define CSA_DTLD CSA_DEAD_TILDE - -// Third row -#define CSA_DEGREE ALGR(KC_SCOLON) // ° -#define CSA_DEGR CSA_DEGREE - -// Fourth row -#define CSA_LEFT_GUILLEMET ALGR(KC_Z) // « -#define CSA_LGIL CSA_LEFT_GUILLEMET -#define CSA_RIGHT_GUILLEMET ALGR(KC_X) // » -#define CSA_RGIL CSA_RIGHT_GUILLEMET -#define CSA_LESS ALGR(KC_COMMA) // < -#define CSA_GREATER ALGR(KC_DOT) // > -#define CSA_GRTR CSA_GREATER - -// Space bar -#define CSA_NON_BREAKING_SPACE ALGR(KC_SPACE) -#define CSA_NBSP CSA_NON_BREAKING_SPACE - -// GR2A-ed characters -// 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_TILDE GR2A(CSA_C_CEDILLA) // dead ~ -#define CSA_TILD CSA_TILDE +#include "keymap.h" -// 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 È & À +// clang-format off -// 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_DDTA CSA_DEAD_DOT_ABOVE +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ / │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ Ç │     │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ + * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ È │ À │    │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │    │ Ù │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ É │          │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │    │    │    │                        │    │    │    │    │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ +// Row 1 +#define CA_SLSH KC_GRV // / +#define CA_1 KC_1 // 1 +#define CA_2 KC_2 // 2 +#define CA_3 KC_3 // 3 +#define CA_4 KC_4 // 4 +#define CA_5 KC_5 // 5 +#define CA_6 KC_6 // 6 +#define CA_7 KC_7 // 7 +#define CA_8 KC_8 // 8 +#define CA_9 KC_9 // 9 +#define CA_0 KC_0 // 0 +#define CA_MINS KC_MINS // - +#define CA_EQL KC_EQL // = +// Row 2 +#define CA_Q KC_Q // Q +#define CA_W KC_W // W +#define CA_E KC_E // E +#define CA_R KC_R // R +#define CA_T KC_T // T +#define CA_Y KC_Y // Y +#define CA_U KC_U // U +#define CA_I KC_I // I +#define CA_O KC_O // O +#define CA_P KC_P // P +#define CA_CIRC KC_LBRC // ^ (dead) +#define CA_CCED KC_RBRC // Ç +// Row 3 +#define CA_A KC_A // A +#define CA_S KC_S // S +#define CA_D KC_D // D +#define CA_F KC_F // F +#define CA_G KC_G // G +#define CA_H KC_H // H +#define CA_J KC_J // J +#define CA_K KC_K // K +#define CA_L KC_L // L +#define CA_SCLN KC_SCLN // ; +#define CA_EGRV KC_QUOT // É +#define CA_AGRV KC_NUHS // À +// Row 4 +#define CA_UGRV KC_NUBS // Ù +#define CA_Z KC_Z // Z +#define CA_X KC_X // X +#define CA_C KC_C // C +#define CA_V KC_V // V +#define CA_B KC_B // B +#define CA_N KC_N // N +#define CA_M KC_M // M +#define CA_COMM KC_COMM // , +#define CA_DOT KC_DOT // . +#define CA_EACU KC_SLSH // É -// GR2A-shifted characters (different from capitalised GR2A-ed characters) -// First row -#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 ALGR(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 +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ \ │ ! │ @ │ # │ $ │ % │ ? │ & │ * │ ( │ ) │ _ │ + │       │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │     │   │   │   │   │   │   │   │   │   │   │ ¨ │   │     │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ + * │      │   │   │   │   │   │   │   │   │   │ : │   │   │    │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │    │   │   │   │   │   │   │   │   │ ' │ " │   │          │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │    │    │    │                        │    │    │    │    │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ +// Row 1 +#define CA_BSLS S(CA_SLSH) // (backslash) +#define CA_EXLM S(CA_1) // ! +#define CA_AT S(CA_2) // @ +#define CA_HASH S(CA_3) // # +#define CA_DLR S(CA_4) // $ +#define CA_PERC S(CA_5) // % +#define CA_QUES S(CA_6) // ? +#define CA_AMPR S(CA_7) // & +#define CA_ASTR S(CA_8) // * +#define CA_LPRN S(CA_9) // ( +#define CA_RPRN S(CA_0) // ) +#define CA_UNDS S(CA_MINS) // _ +#define CA_PLUS S(CA_EQL) // + +// Row 2 +#define CA_DIAE S(CA_CIRC) // ¨ (dead) +// Row 3 +#define CA_COLN S(CA_SCLN) // : +// Row 4 +#define CA_QUOT S(CA_COMM) // ' +#define CA_DQUO S(CA_DOT) // " -// 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 +/* AltGr symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ | │   │   │   │ ¤ │   │   │ { │ } │ [ │ ] │   │ ¬ │       │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │     │   │   │ € │   │   │   │   │   │   │   │ ` │ ~ │     │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ + * │      │   │   │   │   │   │   │   │   │   │ ° │   │   │    │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │    │   │ « │ » │   │   │   │   │   │ < │ > │   │          │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │    │    │    │                        │    │    │    │    │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ +// Row 1 +#define CA_PIPE ALGR(CA_SLSH) // | +#define CA_CURR ALGR(CA_4) // ¤ +#define CA_LCBR ALGR(CA_7) // { +#define CA_RCBR ALGR(CA_8) // } +#define CA_LBRC ALGR(CA_9) // [ +#define CA_RBRC ALGR(CA_0) // ] +#define CA_NOT ALGR(CA_EQL) // ¬ +// Row 2 +#define CA_EURO ALGR(CA_E) // € +#define CA_GRV ALGR(CA_CIRC) // ` (dead) +#define CA_DTIL ALGR(CA_CCED) // ~ (dead) +// Row 3 +#define CA_DEG ALGR(CA_SCLN) // ° +// Row 4 +#define CA_LDAQ ALGR(CA_X) // « +#define CA_RDAQ ALGR(CA_C) // » +#define CA_LABK ALGR(CA_DOT) // < +#define CA_RABK ALGR(CA_COMM) // > -// 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 +/* Right Ctrl symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │   │ ¹ │ ² │ ³ │ ¼ │ ½ │ ¾ │   │   │   │   │   │ ¸ │       │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │     │ Ω │ Ł │ Œ │ ¶ │ Ŧ │ ← │ ↓ │ → │ Ø │ Þ │   │ ~ │     │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ + * │      │ Æ │ ß │ Ð │   │ Ŋ │ Ħ │ IJ │ ĸ │ Ŀ │ ´ │   │   │    │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │    │   │   │   │ ¢ │ “ │ ” │ ʼn │ μ │ ― │ ˙ │   │          │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │    │    │    │                        │    │    │    │    │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ +// Row 1 +#define CA_SUP1 RCTL(CA_1) // ¹ +#define CA_SUP2 RCTL(CA_2) // ² +#define CA_SUP3 RCTL(CA_3) // ³ +#define CA_QRTR RCTL(CA_4) // ¼ +#define CA_HALF RCTL(CA_5) // ½ +#define CA_TQTR RCTL(CA_6) // ¾ +#define CA_CEDL RCTL(CA_EQL) // ¸ (dead) +// Row 2 +#define CA_OMEG RCTL(CA_Q) // Ω +#define CA_LSTR RCTL(CA_W) // Ł +#define CA_OE RCTL(CA_E) // Œ +#define CA_PARA RCTL(CA_R) // ¶ +#define CA_TSTR RCTL(CA_T) // Ŧ +#define CA_LARR RCTL(CA_Y) // ← +#define CA_DARR RCTL(CA_U) // ↓ +#define CA_RARR RCTL(CA_I) // → +#define CA_OSTR RCTL(CA_O) // Ø +#define CA_THRN RCTL(CA_P) // Þ +#define CA_TILD RCTL(CA_CCED) // ~ +// Row 3 +#define CA_AE RCTL(CA_A) // Æ +#define CA_SS RCTL(CA_S) // ß +#define CA_ETH RCTL(CA_D) // Ð +#define CA_ENG RCTL(CA_G) // Ŋ +#define CA_HSTR RCTL(CA_H) // Ħ +#define CA_IJ RCTL(CA_J) // IJ +#define CA_KRA RCTL(CA_K) // ĸ +#define CA_LMDT RCTL(CA_L) // Ŀ +#define CA_ACUT RCTL(CA_SCLN) // ´ (dead) +// Row 4 +#define CA_CENT RCTL(CA_C) // ¢ +#define CA_LDQU RCTL(CA_V) // “ +#define CA_RDQU RCTL(CA_B) // ” +#define CA_APSN RCTL(CA_N) // ʼn +#define CA_MICR RCTL(CA_M) // μ +#define CA_HRZB RCTL(CA_COMM) // ― +#define CA_DOTA ALGR(CA_DOT) // ˙ (dead) -// Fourth row -#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)) +/* Shift+Right Ctrl symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ - │ ¡ │   │ £ │   │ ⅜ │ ⅝ │ ⅞ │ ™ │ ± │   │ ¿ │ ˛ │       │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │     │   │   │   │ ® │   │ ¥ │ ↑ │ ı │   │   │ ° │ ¯ │     │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ + * │      │   │ § │   │ ª │   │   │   │   │   │ ˝ │ ˇ │ ˘ │    │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │    │ ¦ │   │   │ © │ ‘ │ ’ │ ♪ │ º │ × │ ÷ │   │          │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │    │    │    │                        │    │    │    │    │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ +// Row 1 +#define CA_SHYP RCTL(S(CA_SLSH)) // (soft hyphen) +#define CA_IEXL RCTL(S(CA_1)) // ¡ +#define CA_PND RCTL(S(CA_3)) // £ +#define CA_TEIG RCTL(S(CA_5)) // ⅜ +#define CA_FEIG RCTL(S(CA_6)) // ⅝ +#define CA_SEIG RCTL(S(CA_7)) // ⅞ +#define CA_TM RCTL(S(CA_8)) // ™ +#define CA_PLMN RCTL(S(CA_9)) // ± +#define CA_IQUE RCTL(S(CA_MINS)) // ¿ +#define CA_OGON RCTL(S(CA_EQL)) // ˛ (dead) +// Row 2 +#define CA_REGD RCTL(S(CA_R)) // ® +#define CA_YEN RCTL(S(CA_Y)) // ¥ +#define CA_UARR RCTL(S(CA_U)) // ↑ +#define CA_DLSI RCTL(S(CA_I)) // ı +#define CA_RNGA RCTL(S(CA_CIRC)) // ° (dead) +#define CA_MACR RCTL(S(CA_CCED)) // ¯ (dead) +// Row 3 +#define CA_SECT RCTL(S(CA_S)) // § +#define CA_FORD RCTL(S(CA_F)) // ª +#define CA_DACU RCTL(S(CA_SCLN)) // ˝ (dead) +#define CA_CARN RCTL(S(CA_EGRV)) // ˇ (dead) +#define CA_BREV RCTL(S(CA_AGRV)) // ˘ (dead) +// Row 4 +#define CA_BRKP RCTL(S(CA_UGRV)) // ¦ +#define CA_COPY RCTL(S(CA_C)) // © +#define CA_LSQU RCTL(S(CA_V)) // ‘ +#define CA_RSQU RCTL(S(CA_B)) // ’ +#define CA_ENOT RCTL(S(CA_N)) // ♪ +#define CA_MORD RCTL(S(CA_M)) // º +#define CA_MUL RCTL(S(CA_COMM)) // × +#define CA_DIV RCTL(S(CA_DOT)) // ÷ -#endif +// DEPRECATED +#define GR2A(kc) RCTL(kc) +#define CSA_SLASH CA_SLSH +#define CSA_SLSH CA_SLSH +#define CSA_DEAD_CIRCUMFLEX CA_CIRC +#define CSA_DCRC CA_CIRC +#define CSA_C_CEDILLA CA_CCED +#define CSA_CCED CA_CCED +#define CSA_E_GRAVE CA_EGRV +#define CSA_EGRV CA_EGRV +#define CSA_A_GRAVE CA_AGRV +#define CSA_AGRV CA_AGRV +#define CSA_U_GRAVE CA_UGRV +#define CSA_UGRV CA_UGRV +#define CSA_E_ACUTE CA_EACU +#define CSA_ECUT CA_EACU +#define CSA_BACKSLASH CA_BSLS +#define CSA_BSLS CA_BSLS +#define CSA_QUESTION CA_QUES +#define CSA_QEST CA_QUES +#define CSA_DEAD_TREMA CA_DIAE +#define CSA_DTRM CA_DIAE +#define CSA_APOSTROPHE CA_QUOT +#define CSA_APOS CA_QUOT +#define CSA_DOUBLE_QUOTE CA_DQUO +#define CSA_DQOT CA_DQUO +#define CSA_PIPE CA_PIPE +#define CSA_CURRENCY CA_CURR +#define CSA_CURR CA_CURR +#define CSA_LEFT_CURLY_BRACE CA_LCBR +#define CSA_LCBR CA_LCBR +#define CSA_RIGHT_CURLY_BRACE CA_RCBR +#define CSA_RCBR CA_RCBR +#define CSA_LBRACKET CA_LBRC +#define CSA_LBRC CA_LBRC +#define CSA_RBRACKET CA_RBRC +#define CSA_RBRC CA_RBRC +#define CSA_NEGATION CA_NOT +#define CSA_NEGT CA_NOT +#define CSA_EURO CA_EURO +#define CSA_DEAD_GRAVE CA_GRV +#define CSA_DGRV CA_GRV +#define CSA_DEAD_TILDE CA_DTIL +#define CSA_DTLD CA_DTIL +#define CSA_DEGREE CA_DEG +#define CSA_DEGR CA_DEG +#define CSA_LEFT_GUILLEMET CA_LDAQ +#define CSA_LGIL CA_LDAQ +#define CSA_RIGHT_GUILLEMET CA_RDAQ +#define CSA_RGIL CA_RDAQ +#define CSA_LESS CA_LABK +#define CSA_GREATER CA_RABK +#define CSA_GRTR CA_RABK +#define CSA_NON_BREAKING_SPACE ALGR(KC_SPC) +#define CSA_NBSP ALGR(KC_SPC) +#define CSA_SUPERSCRIPT_ONE CA_SUP1 +#define CSA_SUP1 CA_SUP1 +#define CSA_SUPERSCRIPT_TWO CA_SUP2 +#define CSA_SUP2 CA_SUP2 +#define CSA_SUPERSCRIPT_THREE CA_SUP3 +#define CSA_SUP3 CA_SUP3 +#define CSA_ONE_QUARTER CA_QRTR +#define CSA_1QRT CA_QRTR +#define CSA_ONE_HALF CA_HALF +#define CSA_1HLF CA_HALF +#define CSA_THREE_QUARTERS CA_TQTR +#define CSA_3QRT CA_TQTR +#define CSA_DEAD_CEDILLA CA_CEDL +#define CSA_DCED CA_CEDL +#define CSA_OMEGA CA_OMEG +#define CSA_OMEG CA_OMEG +#define CSA_L_STROKE CA_LSTR +#define CSA_LSTK CA_LSTR +#define CSA_OE_LIGATURE CA_OE +#define CSA_OE CA_OE +#define CSA_PARAGRAPH CA_PARA +#define CSA_PARG CA_PARA +#define CSA_T_STROKE CA_TSTR +#define CSA_LEFT_ARROW CA_LARR +#define CSA_LARW CA_LARR +#define CSA_DOWN_ARROW CA_DARR +#define CSA_DARW CA_DARR +#define CSA_RIGHT_ARROW CA_RARR +#define CSA_RARW CA_RARR +#define CSA_O_STROKE CA_OSTR +#define CSA_OSTK CA_OSTR +#define CSA_THORN CA_THRN +#define CSA_THRN CA_THRN +#define CSA_TILDE CA_TILD +#define CSA_TILD CA_TILD +#define CSA_AE_LIGATURE CA_AE +#define CSA_AE CA_AE +#define CSA_SHARP_S CA_SS +#define CSA_SRPS CA_SS +#define CSA_ETH CA_ETH +#define CSA_ENG CA_ENG +#define CSA_H_SRTOKE CA_HSTR +#define CSA_HSTK CA_HSTR +#define CSA_IJ_LIGATURE CA_IJ +#define CSA_IJ CA_IJ +#define CSA_KRA CA_KRA +#define CSA_L_FLOWN_DOT CA_LMDT +#define CSA_LFLD CA_LMDT +#define CSA_DEAD_ACUTE CA_ACUT +#define CSA_DACT CA_ACUT +#define CSA_CENT CA_CENT +#define CSA_LEFT_DOUBLE_QUOTE CA_LDQU +#define CSA_LDQT CA_LDQU +#define CSA_RIGHT_DOUBLE_QUOTE CA_RDQU +#define CSA_RDQT CA_RDQU +#define CSA_N_APOSTROPHE CA_APSN +#define CSA_NAPO CA_APSN +#define CSA_MU CA_MICR +#define CSA_HORIZONTAL_BAR CA_HRZB +#define CSA_HZBR CA_HRZB +#define CSA_DEAD_DOT_ABOVE CA_DOTA +#define CSA_DDTA CA_DOTA +#define CSA_SOFT_HYPHEN CA_SHYP +#define CSA_SHYP CA_SHYP +#define CSA_INVERTED_EXCLAIM CA_IEXL +#define CSA_IXLM CA_IEXL +#define CSA_POUND CA_PND +#define CSA_GBP CA_PND +#define CSA_EURO_BIS CA_EURO +#define CSA_EURB CA_EURO +#define CSA_THREE_EIGHTHS CA_TEIG +#define CSA_3ON8 CA_TEIG +#define CSA_FIVE_EIGHTHS CA_FEIG +#define CSA_5ON8 CA_FEIG +#define CSA_SEVEN_EIGHTHS CA_SEIG +#define CSA_7ON8 CA_SEIG +#define CSA_TRADEMARK CA_TM +#define CSA_TM CA_TM +#define CSA_PLUS_MINUS CA_PLMN +#define CSA_PSMS CA_PLMN +#define CSA_INVERTED_QUESTION CA_IQUE +#define CSA_IQST CA_IQUE +#define CSA_DEAD_OGONEK CA_OGON +#define CSA_DOGO CA_OGON +#define CSA_REGISTERED_TRADEMARK CA_REGD +#define CSA_RTM CA_REGD +#define CSA_YEN CA_YEN +#define CSA_YUAN CA_YEN +#define CSA_UP_ARROW CA_UARR +#define CSA_DOTLESS_I CA_DLSI +#define CSA_DLSI CA_DLSI +#define CSA_DEAD_RING CA_RNGA +#define CSA_DRNG CA_RNGA +#define CSA_DEAD_MACRON CA_MACR +#define CSA_DMCR CA_MACR +#define CSA_SECTION CA_SECT +#define CSA_SECT CA_SECT +#define CSA_ORDINAL_INDICATOR_A CA_FORD +#define CSA_ORDA CA_FORD +#define CSA_DEAD_DOUBLE_ACUTE CA_DACU +#define CSA_DDCT CA_DACU +#define CSA_DEAD_CARON CA_CARN +#define CSA_DCAR CA_CARN +#define CSA_DEAD_BREVE CA_BREV +#define CSA_DBRV CA_BREV +#define CSA_BROKEN_PIPE CA_BRKP +#define CSA_BPIP CA_BRKP +#define CSA_COPYRIGHT CA_COPY +#define CSA_CPRT CA_COPY +#define CSA_LEFT_QUOTE CA_LSQU +#define CSA_LQOT CA_LSQU +#define CSA_RIGHT_QUOTE CA_RSQU +#define CSA_RQOT CA_RSQU +#define CSA_EIGHTH_NOTE CA_ENOT +#define CSA_8NOT CA_ENOT +#define CSA_ORDINAL_INDICATOR_O CA_MORD +#define CSA_ORDO CA_MORD +#define CSA_TIMES CA_MUL +#define CSA_TIMS CA_MUL +#define CSA_OBELUS CA_DIV +#define CSA_OBEL CA_DIV +#define CSA_DIVISION_SIGN CA_DIV +#define CSA_DVSN CA_DIV diff --git a/quantum/keymap_extras/sendstring_canadian_multilingual.h b/quantum/keymap_extras/sendstring_canadian_multilingual.h new file mode 100644 index 00000000000..c3fcc62c377 --- /dev/null +++ b/quantum/keymap_extras/sendstring_canadian_multilingual.h @@ -0,0 +1,100 @@ +/* Copyright 2020 + * + * 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 . + */ + +// Sendstring lookup tables for Canadian Multilingual layouts + +#pragma once + +#include "keymap_canadian_multilingual.h" +#include "quantum.h" + +// clang-format off + +const uint8_t ascii_to_shift_lut[16] PROGMEM = { + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + + KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 1, 0, 0, 0, 0, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1), + KCLUT_ENTRY(1, 1, 1, 0, 1, 0, 0, 1), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0) +}; + +const uint8_t ascii_to_altgr_lut[16] PROGMEM = { + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 1, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0), + KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0), + KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0) +}; + +const uint8_t ascii_to_keycode_lut[128] PROGMEM = { + // NUL SOH STX ETX EOT ENQ ACK BEL + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // BS TAB LF VT FF CR SO SI + KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // DLE DC1 DC2 DC3 DC4 NAK SYN ETB + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // CAN EM SUB ESC FS GS RS US + XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + // ! " # $ % & ' + KC_SPC, CA_1, CA_DOT, CA_3, CA_4, CA_5, CA_7, CA_COMM, + // ( ) * + , - . / + CA_9, CA_0, CA_8, CA_EQL, CA_COMM, CA_MINS, CA_DOT, CA_SLSH, + // 0 1 2 3 4 5 6 7 + CA_0, CA_1, CA_2, CA_3, CA_4, CA_5, CA_6, CA_7, + // 8 9 : ; < = > ? + CA_8, CA_9, CA_SCLN, CA_SCLN, CA_DOT, CA_EQL, CA_COMM, CA_6, + // @ A B C D E F G + CA_2, CA_A, CA_B, CA_C, CA_D, CA_E, CA_F, CA_G, + // H I J K L M N O + CA_H, CA_I, CA_J, CA_K, CA_L, CA_M, CA_N, CA_O, + // P Q R S T U V W + CA_P, CA_Q, CA_R, CA_S, CA_T, CA_U, CA_V, CA_W, + // X Y Z [ \ ] ^ _ + CA_X, CA_Y, CA_Z, CA_9, CA_SLSH, CA_0, CA_CIRC, CA_MINS, + // ` a b c d e f g + CA_CIRC, CA_A, CA_B, CA_C, CA_D, CA_E, CA_F, CA_G, + // h i j k l m n o + CA_H, CA_I, CA_J, CA_K, CA_L, CA_M, CA_N, CA_O, + // p q r s t u v w + CA_P, CA_Q, CA_R, CA_S, CA_T, CA_U, CA_V, CA_W, + // x y z { | } ~ DEL + CA_X, CA_Y, CA_Z, CA_7, CA_SLSH, CA_8, CA_CCED, KC_DEL +};