From 28939d40ad32d8e00a43bfbb8da9be5f3eb99a36 Mon Sep 17 00:00:00 2001
From: Nebuleon Fumika <2391500+Nebuleon@users.noreply.github.com>
Date: Wed, 5 Jul 2023 02:49:38 -0400
Subject: [PATCH 1/9] Add Canadian French input locale
---
.../keycodes_canadian_french_0.0.1.hjson | 407 ++++++++++++++++++
docs/reference_keymap_extras.md | 1 +
.../keymap_extras/keymap_canadian_french.h | 123 ++++++
.../sendstring_canadian_french.h | 120 ++++++
4 files changed, 651 insertions(+)
create mode 100644 data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
create mode 100644 quantum/keymap_extras/keymap_canadian_french.h
create mode 100644 quantum/keymap_extras/sendstring_canadian_french.h
diff --git a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
new file mode 100644
index 000000000000..349077d748cb
--- /dev/null
+++ b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
@@ -0,0 +1,407 @@
+{
+ "aliases": {
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ # │ 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 │ , │ . │ É │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "KC_GRV": {
+ "key": "FC_HASH",
+ "label": "#",
+ }
+ "KC_1": {
+ "key": "FC_1",
+ "label": "1",
+ }
+ "KC_2": {
+ "key": "FC_2",
+ "label": "2",
+ }
+ "KC_3": {
+ "key": "FC_3",
+ "label": "3",
+ }
+ "KC_4": {
+ "key": "FC_4",
+ "label": "4",
+ }
+ "KC_5": {
+ "key": "FC_5",
+ "label": "5",
+ }
+ "KC_6": {
+ "key": "FC_6",
+ "label": "6",
+ }
+ "KC_7": {
+ "key": "FC_7",
+ "label": "7",
+ }
+ "KC_8": {
+ "key": "FC_8",
+ "label": "8",
+ }
+ "KC_9": {
+ "key": "FC_9",
+ "label": "9",
+ }
+ "KC_0": {
+ "key": "FC_0",
+ "label": "0",
+ }
+ "KC_MINS": {
+ "key": "FC_MINS",
+ "label": "-",
+ }
+ "KC_EQL": {
+ "key": "FC_EQL",
+ "label": "=",
+ }
+ "KC_Q": {
+ "key": "FC_Q",
+ "label": "Q",
+ }
+ "KC_W": {
+ "key": "FC_W",
+ "label": "W",
+ }
+ "KC_E": {
+ "key": "FC_E",
+ "label": "E",
+ }
+ "KC_R": {
+ "key": "FC_R",
+ "label": "R",
+ }
+ "KC_T": {
+ "key": "FC_T",
+ "label": "T",
+ }
+ "KC_Y": {
+ "key": "FC_Y",
+ "label": "Y",
+ }
+ "KC_U": {
+ "key": "FC_U",
+ "label": "U",
+ }
+ "KC_I": {
+ "key": "FC_I",
+ "label": "I",
+ }
+ "KC_O": {
+ "key": "FC_O",
+ "label": "O",
+ }
+ "KC_P": {
+ "key": "FC_P",
+ "label": "P",
+ }
+ "KC_LBRC": {
+ "key": "FC_DCIR",
+ "label": "^ (dead)",
+ }
+ "KC_RBRC": {
+ "key": "FC_CEDL",
+ "label": "¸ (dead)",
+ }
+ "KC_A": {
+ "key": "FC_A",
+ "label": "A",
+ }
+ "KC_S": {
+ "key": "FC_S",
+ "label": "S",
+ }
+ "KC_D": {
+ "key": "FC_D",
+ "label": "D",
+ }
+ "KC_F": {
+ "key": "FC_F",
+ "label": "F",
+ }
+ "KC_G": {
+ "key": "FC_G",
+ "label": "G",
+ }
+ "KC_H": {
+ "key": "FC_H",
+ "label": "H",
+ }
+ "KC_J": {
+ "key": "FC_J",
+ "label": "J",
+ }
+ "KC_K": {
+ "key": "FC_K",
+ "label": "K",
+ }
+ "KC_L": {
+ "key": "FC_L",
+ "label": "L",
+ }
+ "KC_SCLN": {
+ "key": "FC_SCLN",
+ "label": ";",
+ }
+ "KC_QUOT": {
+ "key": "FC_DGRV",
+ "label": "` (dead)",
+ }
+ "KC_NUHS": {
+ "key": "FC_LABK",
+ "label": "<",
+ }
+ "KC_NUBS": {
+ "key": "FC_LDAQ",
+ "label": "«",
+ }
+ "KC_Z": {
+ "key": "FC_Z",
+ "label": "Z",
+ }
+ "KC_X": {
+ "key": "FC_X",
+ "label": "X",
+ }
+ "KC_C": {
+ "key": "FC_C",
+ "label": "C",
+ }
+ "KC_V": {
+ "key": "FC_V",
+ "label": "V",
+ }
+ "KC_B": {
+ "key": "FC_B",
+ "label": "B",
+ }
+ "KC_N": {
+ "key": "FC_N",
+ "label": "N",
+ }
+ "KC_M": {
+ "key": "FC_M",
+ "label": "M",
+ }
+ "KC_COMM": {
+ "key": "FC_COMM",
+ "label": ",",
+ }
+ "KC_DOT": {
+ "key": "FC_DOT",
+ "label": ".",
+ }
+ "KC_SLSH": {
+ "key": "FC_EACU",
+ "label": "É",
+ }
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ | │ ! │ " │ / │ $ │ % │ ? │ & │ * │ ( │ ) │ _ │ + │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ : │ │ > │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ » │ │ │ │ │ │ │ │ ' │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "S(FC_HASH)": {
+ "key": "FC_PIPE",
+ "label": "|",
+ }
+ "S(FC_1)": {
+ "key": "FC_EXLM",
+ "label": "!",
+ }
+ "S(FC_2)": {
+ "key": "FC_DQUO",
+ "label": "\"",
+ }
+ "S(FC_3)": {
+ "key": "FC_SLSH",
+ "label": "/",
+ }
+ "S(FC_4)": {
+ "key": "FC_DLR",
+ "label": "$",
+ }
+ "S(FC_5)": {
+ "key": "FC_PERC",
+ "label": "%",
+ }
+ "S(FC_6)": {
+ "key": "FC_QUES",
+ "label": "?",
+ }
+ "S(FC_7)": {
+ "key": "FC_AMPR",
+ "label": "&",
+ }
+ "S(FC_8)": {
+ "key": "FC_ASTR",
+ "label": "*",
+ }
+ "S(FC_9)": {
+ "key": "FC_LPRN",
+ "label": "(",
+ }
+ "S(FC_0)": {
+ "key": "FC_RPRN",
+ "label": ")",
+ }
+ "S(FC_MINS)": {
+ "key": "FC_UNDS",
+ "label": "_",
+ }
+ "S(FC_EQL)": {
+ "key": "FC_PLUS",
+ "label": "+",
+ }
+ "S(FC_CEDL)": {
+ "key": "FC_DIAE",
+ "label": "¨ (dead)",
+ }
+ "S(FC_SCLN)": {
+ "key": "FC_COLN",
+ "label": ":",
+ }
+ "S(FC_LDAQ)": {
+ "key": "FC_RDAQ",
+ "label": "»",
+ }
+ "S(FC_COMM)": {
+ "key": "FC_QUOT",
+ "label": "'",
+ }
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ \ │ ± │ @ │ £ │ ¢ │ ¤ │ ¬ │ ¦ │ ² │ ³ │ ¼ │ ½ │ ¾ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ € │ │ │ │ │ │ § │ ¶ │ [ │ ] │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ ~ │ { │ } │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ ° │ │ │ │ │ │ │ µ │ ¯ │shy│ ´ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "ALGR(FC_HASH)": {
+ "key": "FC_BSLS",
+ "label": "\\",
+ }
+ "ALGR(FC_1)": {
+ "key": "FC_PLMN",
+ "label": "±",
+ }
+ "ALGR(FC_2)": {
+ "key": "FC_AT",
+ "label": "@",
+ }
+ "ALGR(FC_3)": {
+ "key": "FC_PND",
+ "label": "£",
+ }
+ "ALGR(FC_4)": {
+ "key": "FC_CENT",
+ "label": "¢",
+ }
+ "ALGR(FC_5)": {
+ "key": "FC_CURR",
+ "label": "¤",
+ }
+ "ALGR(FC_6)": {
+ "key": "FC_NOT",
+ "label": "¬",
+ }
+ "ALGR(FC_7)": {
+ "key": "FC_BRKP",
+ "label": "¦",
+ }
+ "ALGR(FC_8)": {
+ "key": "FC_SUP2",
+ "label": "²",
+ }
+ "ALGR(FC_9)": {
+ "key": "FC_SUP3",
+ "label": "³",
+ }
+ "ALGR(FC_0)": {
+ "key": "FC_QRTR",
+ "label": "¼",
+ }
+ "ALGR(FC_MINS)": {
+ "key": "FC_HALF",
+ "label": "½",
+ }
+ "ALGR(FC_EQL)": {
+ "key": "FC_TQTR",
+ "label": "¾",
+ }
+ "ALGR(FC_E)": {
+ "key": "FC_EURO",
+ "label": "€",
+ }
+ "ALGR(FC_O)": {
+ "key": "FC_SECT",
+ "label": "§",
+ }
+ "ALGR(FC_P)": {
+ "key": "FC_PARA",
+ "label": "¶",
+ }
+ "ALGR(FC_DCIR)": {
+ "key": "FC_LBRC",
+ "label": "[",
+ }
+ "ALGR(FC_CEDL)": {
+ "key": "FC_RBRC",
+ "label": "]",
+ }
+ "ALGR(FC_SCLN)": {
+ "key": "FC_TILD",
+ "label": "~",
+ }
+ "ALGR(FC_DGRV)": {
+ "key": "FC_LCBR",
+ "label": "{",
+ }
+ "ALGR(FC_LABK)": {
+ "key": "FC_RCBR",
+ "label": "}",
+ }
+ "ALGR(FC_LDAQ)": {
+ "key": "FC_DEG",
+ "label": "°",
+ }
+ "ALGR(FC_M)": {
+ "key": "FC_MICR",
+ "label": "µ",
+ }
+ "ALGR(FC_COMM)": {
+ "key": "FC_MACR",
+ "label": "¯",
+ }
+ "ALGR(FC_DOT)": {
+ "key": "FC_SHYP",
+ "label": " (soft hyphen)",
+ }
+ "ALGR(FC_EACU)": {
+ "key": "FC_ACUT",
+ "label": "´ (dead)",
+ }
+ }
+}
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
index b70d505f1f2e..954b6ad7800b 100644
--- a/docs/reference_keymap_extras.md
+++ b/docs/reference_keymap_extras.md
@@ -20,6 +20,7 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|Layout |Keycodes Header |Sendstring LUT Header |
|---------------------------------|---------------------------------|------------------------------------|
+|Canadian French |`keymap_canadian_french.h` |`sendstring_canadian_french.h` |
|Canadian Multilingual (CSA) |`keymap_canadian_multilingual.h` |`sendstring_canadian_multilingual.h`|
|Croatian |`keymap_croatian.h` |`sendstring_croatian.h` |
|Czech |`keymap_czech.h` |`sendstring_czech.h` |
diff --git a/quantum/keymap_extras/keymap_canadian_french.h b/quantum/keymap_extras/keymap_canadian_french.h
new file mode 100644
index 000000000000..b9625aea3908
--- /dev/null
+++ b/quantum/keymap_extras/keymap_canadian_french.h
@@ -0,0 +1,123 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/*******************************************************************************
+ 88888888888 888 d8b .d888 d8b 888 d8b
+ 888 888 Y8P d88P" Y8P 888 Y8P
+ 888 888 888 888
+ 888 88888b. 888 .d8888b 888888 888 888 .d88b. 888 .d8888b
+ 888 888 "88b 888 88K 888 888 888 d8P Y8b 888 88K
+ 888 888 888 888 "Y8888b. 888 888 888 88888888 888 "Y8888b.
+ 888 888 888 888 X88 888 888 888 Y8b. 888 X88
+ 888 888 888 888 88888P' 888 888 888 "Y8888 888 88888P'
+ 888 888
+ 888 888
+ 888 888
+ .d88b. .d88b. 88888b. .d88b. 888d888 8888b. 888888 .d88b. .d88888
+ d88P"88b d8P Y8b 888 "88b d8P Y8b 888P" "88b 888 d8P Y8b d88" 888
+ 888 888 88888888 888 888 88888888 888 .d888888 888 88888888 888 888
+ Y88b 888 Y8b. 888 888 Y8b. 888 888 888 Y88b. Y8b. Y88b 888
+ "Y88888 "Y8888 888 888 "Y8888 888 "Y888888 "Y888 "Y8888 "Y88888
+ 888
+ Y8b d88P
+ "Y88P"
+*******************************************************************************/
+
+#pragma once
+#include "keycodes.h"
+// clang-format off
+
+// Aliases
+#define FC_HASH KC_GRV // #
+#define FC_1 KC_1 // 1
+#define FC_2 KC_2 // 2
+#define FC_3 KC_3 // 3
+#define FC_4 KC_4 // 4
+#define FC_5 KC_5 // 5
+#define FC_6 KC_6 // 6
+#define FC_7 KC_7 // 7
+#define FC_8 KC_8 // 8
+#define FC_9 KC_9 // 9
+#define FC_0 KC_0 // 0
+#define FC_MINS KC_MINS // -
+#define FC_EQL KC_EQL // =
+#define FC_Q KC_Q // Q
+#define FC_W KC_W // W
+#define FC_E KC_E // E
+#define FC_R KC_R // R
+#define FC_T KC_T // T
+#define FC_Y KC_Y // Y
+#define FC_U KC_U // U
+#define FC_I KC_I // I
+#define FC_O KC_O // O
+#define FC_P KC_P // P
+#define FC_DCIR KC_LBRC // ^ (dead)
+#define FC_CEDL KC_RBRC // ¸ (dead)
+#define FC_A KC_A // A
+#define FC_S KC_S // S
+#define FC_D KC_D // D
+#define FC_F KC_F // F
+#define FC_G KC_G // G
+#define FC_H KC_H // H
+#define FC_J KC_J // J
+#define FC_K KC_K // K
+#define FC_L KC_L // L
+#define FC_SCLN KC_SCLN // ;
+#define FC_DGRV KC_QUOT // ` (dead)
+#define FC_LABK KC_NUHS // <
+#define FC_LDAQ KC_NUBS // «
+#define FC_Z KC_Z // Z
+#define FC_X KC_X // X
+#define FC_C KC_C // C
+#define FC_V KC_V // V
+#define FC_B KC_B // B
+#define FC_N KC_N // N
+#define FC_M KC_M // M
+#define FC_COMM KC_COMM // ,
+#define FC_DOT KC_DOT // .
+#define FC_EACU KC_SLSH // É
+#define FC_PIPE S(FC_HASH) // |
+#define FC_EXLM S(FC_1) // !
+#define FC_DQUO S(FC_2) // "
+#define FC_SLSH S(FC_3) // /
+#define FC_DLR S(FC_4) // $
+#define FC_PERC S(FC_5) // %
+#define FC_QUES S(FC_6) // ?
+#define FC_AMPR S(FC_7) // &
+#define FC_ASTR S(FC_8) // *
+#define FC_LPRN S(FC_9) // (
+#define FC_RPRN S(FC_0) // )
+#define FC_UNDS S(FC_MINS) // _
+#define FC_PLUS S(FC_EQL) // +
+#define FC_DIAE S(FC_CEDL) // ¨ (dead)
+#define FC_COLN S(FC_SCLN) // :
+#define FC_RDAQ S(FC_LDAQ) // »
+#define FC_QUOT S(FC_COMM) // '
+#define FC_BSLS ALGR(FC_HASH) // (backslash)
+#define FC_PLMN ALGR(FC_1) // ±
+#define FC_AT ALGR(FC_2) // @
+#define FC_PND ALGR(FC_3) // £
+#define FC_CENT ALGR(FC_4) // ¢
+#define FC_CURR ALGR(FC_5) // ¤
+#define FC_NOT ALGR(FC_6) // ¬
+#define FC_BRKP ALGR(FC_7) // ¦
+#define FC_SUP2 ALGR(FC_8) // ²
+#define FC_SUP3 ALGR(FC_9) // ³
+#define FC_QRTR ALGR(FC_0) // ¼
+#define FC_HALF ALGR(FC_MINS) // ½
+#define FC_TQTR ALGR(FC_EQL) // ¾
+#define FC_EURO ALGR(FC_E) // €
+#define FC_SECT ALGR(FC_O) // §
+#define FC_PARA ALGR(FC_P) // ¶
+#define FC_LBRC ALGR(FC_DCIR) // [
+#define FC_RBRC ALGR(FC_CEDL) // ]
+#define FC_TILD ALGR(FC_SCLN) // ~
+#define FC_LCBR ALGR(FC_DGRV) // {
+#define FC_RCBR ALGR(FC_LABK) // }
+#define FC_DEG ALGR(FC_LDAQ) // °
+#define FC_MICR ALGR(FC_M) // µ
+#define FC_MACR ALGR(FC_COMM) // ¯
+#define FC_SHYP ALGR(FC_DOT) // (soft hyphen)
+#define FC_ACUT ALGR(FC_EACU) // ´ (dead)
+
+
diff --git a/quantum/keymap_extras/sendstring_canadian_french.h b/quantum/keymap_extras/sendstring_canadian_french.h
new file mode 100644
index 000000000000..7b872befb58b
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_canadian_french.h
@@ -0,0 +1,120 @@
+/* Copyright 2023 Nebuleon
+ *
+ * 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 French layouts
+
+#pragma once
+
+#include "keymap_canadian_french.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, 0, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 0, 0, 0, 1, 1),
+ KCLUT_ENTRY(0, 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, 0, 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, 1, 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, 0, 0, 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, 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, 1, 0, 1, 1, 0)
+};
+
+const uint8_t ascii_to_dead_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, 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, 1, 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, 0, 0, 0, 0, 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, FC_1, FC_2, FC_HASH, FC_4, FC_5, FC_7, FC_COMM,
+ // ( ) * + , - . /
+ FC_9, FC_0, FC_8, FC_EQL, FC_COMM, FC_MINS, FC_DOT, FC_3,
+ // 0 1 2 3 4 5 6 7
+ FC_0, FC_1, FC_2, FC_3, FC_4, FC_5, FC_6, FC_7,
+ // 8 9 : ; < = > ?
+ FC_8, FC_9, FC_SCLN, FC_SCLN, FC_LABK, FC_EQL, FC_LABK, FC_6,
+ // @ A B C D E F G
+ FC_2, FC_A, FC_B, FC_C, FC_D, FC_E, FC_F, FC_G,
+ // H I J K L M N O
+ FC_H, FC_I, FC_J, FC_K, FC_L, FC_M, FC_N, FC_O,
+ // P Q R S T U V W
+ FC_P, FC_Q, FC_R, FC_S, FC_T, FC_U, FC_V, FC_W,
+ // X Y Z [ \ ] ^ _
+ FC_X, FC_Y, FC_Z, FC_DCIR, FC_HASH, FC_CEDL, FC_DCIR, FC_MINS,
+ // ` a b c d e f g
+ FC_DGRV, FC_A, FC_B, FC_C, FC_D, FC_E, FC_F, FC_G,
+ // h i j k l m n o
+ FC_H, FC_I, FC_J, FC_K, FC_L, FC_M, FC_N, FC_O,
+ // p q r s t u v w
+ FC_P, FC_Q, FC_R, FC_S, FC_T, FC_U, FC_V, FC_W,
+ // x y z { | } ~ DEL
+ FC_X, FC_Y, FC_Z, FC_DGRV, FC_HASH, FC_LABK, FC_SCLN, KC_DEL
+};
From 06f48de0b0ecdb35f4e9bc49e8c26d793c9fa9b9 Mon Sep 17 00:00:00 2001
From: Nebuleon Fumika <2391500+Nebuleon@users.noreply.github.com>
Date: Wed, 5 Jul 2023 13:36:24 -0400
Subject: [PATCH 2/9] Fix file requiring regeneration in the previous commit
---
quantum/keymap_extras/keymap_canadian_french.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/quantum/keymap_extras/keymap_canadian_french.h b/quantum/keymap_extras/keymap_canadian_french.h
index b9625aea3908..795b03e65ef4 100644
--- a/quantum/keymap_extras/keymap_canadian_french.h
+++ b/quantum/keymap_extras/keymap_canadian_french.h
@@ -120,4 +120,3 @@
#define FC_SHYP ALGR(FC_DOT) // (soft hyphen)
#define FC_ACUT ALGR(FC_EACU) // ´ (dead)
-
From 12815db88f4a96eb42f0ab88af4375bddf1dc535 Mon Sep 17 00:00:00 2001
From: Nebuleon Fumika <2391500+Nebuleon@users.noreply.github.com>
Date: Thu, 6 Jul 2023 02:49:50 -0400
Subject: [PATCH 3/9] Change Canadian French key prefix to FR_ and its name to
French (Canada)
---
.../keycodes_canadian_french_0.0.1.hjson | 268 +++++++++---------
docs/reference_keymap_extras.md | 2 +-
.../keymap_extras/keymap_canadian_french.h | 182 ++++++------
3 files changed, 226 insertions(+), 226 deletions(-)
diff --git a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
index 349077d748cb..130abf1fe2d5 100644
--- a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
+++ b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
@@ -14,195 +14,195 @@
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
"KC_GRV": {
- "key": "FC_HASH",
+ "key": "FR_HASH",
"label": "#",
}
"KC_1": {
- "key": "FC_1",
+ "key": "FR_1",
"label": "1",
}
"KC_2": {
- "key": "FC_2",
+ "key": "FR_2",
"label": "2",
}
"KC_3": {
- "key": "FC_3",
+ "key": "FR_3",
"label": "3",
}
"KC_4": {
- "key": "FC_4",
+ "key": "FR_4",
"label": "4",
}
"KC_5": {
- "key": "FC_5",
+ "key": "FR_5",
"label": "5",
}
"KC_6": {
- "key": "FC_6",
+ "key": "FR_6",
"label": "6",
}
"KC_7": {
- "key": "FC_7",
+ "key": "FR_7",
"label": "7",
}
"KC_8": {
- "key": "FC_8",
+ "key": "FR_8",
"label": "8",
}
"KC_9": {
- "key": "FC_9",
+ "key": "FR_9",
"label": "9",
}
"KC_0": {
- "key": "FC_0",
+ "key": "FR_0",
"label": "0",
}
"KC_MINS": {
- "key": "FC_MINS",
+ "key": "FR_MINS",
"label": "-",
}
"KC_EQL": {
- "key": "FC_EQL",
+ "key": "FR_EQL",
"label": "=",
}
"KC_Q": {
- "key": "FC_Q",
+ "key": "FR_Q",
"label": "Q",
}
"KC_W": {
- "key": "FC_W",
+ "key": "FR_W",
"label": "W",
}
"KC_E": {
- "key": "FC_E",
+ "key": "FR_E",
"label": "E",
}
"KC_R": {
- "key": "FC_R",
+ "key": "FR_R",
"label": "R",
}
"KC_T": {
- "key": "FC_T",
+ "key": "FR_T",
"label": "T",
}
"KC_Y": {
- "key": "FC_Y",
+ "key": "FR_Y",
"label": "Y",
}
"KC_U": {
- "key": "FC_U",
+ "key": "FR_U",
"label": "U",
}
"KC_I": {
- "key": "FC_I",
+ "key": "FR_I",
"label": "I",
}
"KC_O": {
- "key": "FC_O",
+ "key": "FR_O",
"label": "O",
}
"KC_P": {
- "key": "FC_P",
+ "key": "FR_P",
"label": "P",
}
"KC_LBRC": {
- "key": "FC_DCIR",
+ "key": "FR_DCIR",
"label": "^ (dead)",
}
"KC_RBRC": {
- "key": "FC_CEDL",
+ "key": "FR_CEDL",
"label": "¸ (dead)",
}
"KC_A": {
- "key": "FC_A",
+ "key": "FR_A",
"label": "A",
}
"KC_S": {
- "key": "FC_S",
+ "key": "FR_S",
"label": "S",
}
"KC_D": {
- "key": "FC_D",
+ "key": "FR_D",
"label": "D",
}
"KC_F": {
- "key": "FC_F",
+ "key": "FR_F",
"label": "F",
}
"KC_G": {
- "key": "FC_G",
+ "key": "FR_G",
"label": "G",
}
"KC_H": {
- "key": "FC_H",
+ "key": "FR_H",
"label": "H",
}
"KC_J": {
- "key": "FC_J",
+ "key": "FR_J",
"label": "J",
}
"KC_K": {
- "key": "FC_K",
+ "key": "FR_K",
"label": "K",
}
"KC_L": {
- "key": "FC_L",
+ "key": "FR_L",
"label": "L",
}
"KC_SCLN": {
- "key": "FC_SCLN",
+ "key": "FR_SCLN",
"label": ";",
}
"KC_QUOT": {
- "key": "FC_DGRV",
+ "key": "FR_DGRV",
"label": "` (dead)",
}
"KC_NUHS": {
- "key": "FC_LABK",
+ "key": "FR_LABK",
"label": "<",
}
"KC_NUBS": {
- "key": "FC_LDAQ",
+ "key": "FR_LDAQ",
"label": "«",
}
"KC_Z": {
- "key": "FC_Z",
+ "key": "FR_Z",
"label": "Z",
}
"KC_X": {
- "key": "FC_X",
+ "key": "FR_X",
"label": "X",
}
"KC_C": {
- "key": "FC_C",
+ "key": "FR_C",
"label": "C",
}
"KC_V": {
- "key": "FC_V",
+ "key": "FR_V",
"label": "V",
}
"KC_B": {
- "key": "FC_B",
+ "key": "FR_B",
"label": "B",
}
"KC_N": {
- "key": "FC_N",
+ "key": "FR_N",
"label": "N",
}
"KC_M": {
- "key": "FC_M",
+ "key": "FR_M",
"label": "M",
}
"KC_COMM": {
- "key": "FC_COMM",
+ "key": "FR_COMM",
"label": ",",
}
"KC_DOT": {
- "key": "FC_DOT",
+ "key": "FR_DOT",
"label": ".",
}
"KC_SLSH": {
- "key": "FC_EACU",
+ "key": "FR_EACU",
"label": "É",
}
/* Shifted symbols
@@ -218,72 +218,72 @@
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
- "S(FC_HASH)": {
- "key": "FC_PIPE",
+ "S(FR_HASH)": {
+ "key": "FR_PIPE",
"label": "|",
}
- "S(FC_1)": {
- "key": "FC_EXLM",
+ "S(FR_1)": {
+ "key": "FR_EXLM",
"label": "!",
}
- "S(FC_2)": {
- "key": "FC_DQUO",
+ "S(FR_2)": {
+ "key": "FR_DQUO",
"label": "\"",
}
- "S(FC_3)": {
- "key": "FC_SLSH",
+ "S(FR_3)": {
+ "key": "FR_SLSH",
"label": "/",
}
- "S(FC_4)": {
- "key": "FC_DLR",
+ "S(FR_4)": {
+ "key": "FR_DLR",
"label": "$",
}
- "S(FC_5)": {
- "key": "FC_PERC",
+ "S(FR_5)": {
+ "key": "FR_PERC",
"label": "%",
}
- "S(FC_6)": {
- "key": "FC_QUES",
+ "S(FR_6)": {
+ "key": "FR_QUES",
"label": "?",
}
- "S(FC_7)": {
- "key": "FC_AMPR",
+ "S(FR_7)": {
+ "key": "FR_AMPR",
"label": "&",
}
- "S(FC_8)": {
- "key": "FC_ASTR",
+ "S(FR_8)": {
+ "key": "FR_ASTR",
"label": "*",
}
- "S(FC_9)": {
- "key": "FC_LPRN",
+ "S(FR_9)": {
+ "key": "FR_LPRN",
"label": "(",
}
- "S(FC_0)": {
- "key": "FC_RPRN",
+ "S(FR_0)": {
+ "key": "FR_RPRN",
"label": ")",
}
- "S(FC_MINS)": {
- "key": "FC_UNDS",
+ "S(FR_MINS)": {
+ "key": "FR_UNDS",
"label": "_",
}
- "S(FC_EQL)": {
- "key": "FC_PLUS",
+ "S(FR_EQL)": {
+ "key": "FR_PLUS",
"label": "+",
}
- "S(FC_CEDL)": {
- "key": "FC_DIAE",
+ "S(FR_CEDL)": {
+ "key": "FR_DIAE",
"label": "¨ (dead)",
}
- "S(FC_SCLN)": {
- "key": "FC_COLN",
+ "S(FR_SCLN)": {
+ "key": "FR_COLN",
"label": ":",
}
- "S(FC_LDAQ)": {
- "key": "FC_RDAQ",
+ "S(FR_LDAQ)": {
+ "key": "FR_RDAQ",
"label": "»",
}
- "S(FC_COMM)": {
- "key": "FC_QUOT",
+ "S(FR_COMM)": {
+ "key": "FR_QUOT",
"label": "'",
}
/* AltGr symbols
@@ -299,108 +299,108 @@
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
- "ALGR(FC_HASH)": {
- "key": "FC_BSLS",
+ "ALGR(FR_HASH)": {
+ "key": "FR_BSLS",
"label": "\\",
}
- "ALGR(FC_1)": {
- "key": "FC_PLMN",
+ "ALGR(FR_1)": {
+ "key": "FR_PLMN",
"label": "±",
}
- "ALGR(FC_2)": {
- "key": "FC_AT",
+ "ALGR(FR_2)": {
+ "key": "FR_AT",
"label": "@",
}
- "ALGR(FC_3)": {
- "key": "FC_PND",
+ "ALGR(FR_3)": {
+ "key": "FR_PND",
"label": "£",
}
- "ALGR(FC_4)": {
- "key": "FC_CENT",
+ "ALGR(FR_4)": {
+ "key": "FR_CENT",
"label": "¢",
}
- "ALGR(FC_5)": {
- "key": "FC_CURR",
+ "ALGR(FR_5)": {
+ "key": "FR_CURR",
"label": "¤",
}
- "ALGR(FC_6)": {
- "key": "FC_NOT",
+ "ALGR(FR_6)": {
+ "key": "FR_NOT",
"label": "¬",
}
- "ALGR(FC_7)": {
- "key": "FC_BRKP",
+ "ALGR(FR_7)": {
+ "key": "FR_BRKP",
"label": "¦",
}
- "ALGR(FC_8)": {
- "key": "FC_SUP2",
+ "ALGR(FR_8)": {
+ "key": "FR_SUP2",
"label": "²",
}
- "ALGR(FC_9)": {
- "key": "FC_SUP3",
+ "ALGR(FR_9)": {
+ "key": "FR_SUP3",
"label": "³",
}
- "ALGR(FC_0)": {
- "key": "FC_QRTR",
+ "ALGR(FR_0)": {
+ "key": "FR_QRTR",
"label": "¼",
}
- "ALGR(FC_MINS)": {
- "key": "FC_HALF",
+ "ALGR(FR_MINS)": {
+ "key": "FR_HALF",
"label": "½",
}
- "ALGR(FC_EQL)": {
- "key": "FC_TQTR",
+ "ALGR(FR_EQL)": {
+ "key": "FR_TQTR",
"label": "¾",
}
- "ALGR(FC_E)": {
- "key": "FC_EURO",
+ "ALGR(FR_E)": {
+ "key": "FR_EURO",
"label": "€",
}
- "ALGR(FC_O)": {
- "key": "FC_SECT",
+ "ALGR(FR_O)": {
+ "key": "FR_SECT",
"label": "§",
}
- "ALGR(FC_P)": {
- "key": "FC_PARA",
+ "ALGR(FR_P)": {
+ "key": "FR_PARA",
"label": "¶",
}
- "ALGR(FC_DCIR)": {
- "key": "FC_LBRC",
+ "ALGR(FR_DCIR)": {
+ "key": "FR_LBRC",
"label": "[",
}
- "ALGR(FC_CEDL)": {
- "key": "FC_RBRC",
+ "ALGR(FR_CEDL)": {
+ "key": "FR_RBRC",
"label": "]",
}
- "ALGR(FC_SCLN)": {
- "key": "FC_TILD",
+ "ALGR(FR_SCLN)": {
+ "key": "FR_TILD",
"label": "~",
}
- "ALGR(FC_DGRV)": {
- "key": "FC_LCBR",
+ "ALGR(FR_DGRV)": {
+ "key": "FR_LCBR",
"label": "{",
}
- "ALGR(FC_LABK)": {
- "key": "FC_RCBR",
+ "ALGR(FR_LABK)": {
+ "key": "FR_RCBR",
"label": "}",
}
- "ALGR(FC_LDAQ)": {
- "key": "FC_DEG",
+ "ALGR(FR_LDAQ)": {
+ "key": "FR_DEG",
"label": "°",
}
- "ALGR(FC_M)": {
- "key": "FC_MICR",
+ "ALGR(FR_M)": {
+ "key": "FR_MICR",
"label": "µ",
}
- "ALGR(FC_COMM)": {
- "key": "FC_MACR",
+ "ALGR(FR_COMM)": {
+ "key": "FR_MACR",
"label": "¯",
}
- "ALGR(FC_DOT)": {
- "key": "FC_SHYP",
+ "ALGR(FR_DOT)": {
+ "key": "FR_SHYP",
"label": " (soft hyphen)",
}
- "ALGR(FC_EACU)": {
- "key": "FC_ACUT",
+ "ALGR(FR_EACU)": {
+ "key": "FR_ACUT",
"label": "´ (dead)",
}
}
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
index 954b6ad7800b..6c5ba24673c6 100644
--- a/docs/reference_keymap_extras.md
+++ b/docs/reference_keymap_extras.md
@@ -20,7 +20,6 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|Layout |Keycodes Header |Sendstring LUT Header |
|---------------------------------|---------------------------------|------------------------------------|
-|Canadian French |`keymap_canadian_french.h` |`sendstring_canadian_french.h` |
|Canadian Multilingual (CSA) |`keymap_canadian_multilingual.h` |`sendstring_canadian_multilingual.h`|
|Croatian |`keymap_croatian.h` |`sendstring_croatian.h` |
|Czech |`keymap_czech.h` |`sendstring_czech.h` |
@@ -37,6 +36,7 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|French (AFNOR) |`keymap_french_afnor.h` |`sendstring_french_afnor.h` |
|French (BÉPO) |`keymap_bepo.h` |`sendstring_bepo.h` |
|French (Belgium) |`keymap_belgian.h` |`sendstring_belgian.h` |
+|French (Canada) |`keymap_canadian_french.h` |`sendstring_canadian_french.h` |
|French (Switzerland) |`keymap_swiss_fr.h` |`sendstring_swiss_fr.h` |
|French (macOS, ISO) |`keymap_french_mac_iso.h` |`sendstring_french_mac_iso.h` |
|German |`keymap_german.h` |`sendstring_german.h` |
diff --git a/quantum/keymap_extras/keymap_canadian_french.h b/quantum/keymap_extras/keymap_canadian_french.h
index 795b03e65ef4..bb8ae3e15eb0 100644
--- a/quantum/keymap_extras/keymap_canadian_french.h
+++ b/quantum/keymap_extras/keymap_canadian_french.h
@@ -28,95 +28,95 @@
// clang-format off
// Aliases
-#define FC_HASH KC_GRV // #
-#define FC_1 KC_1 // 1
-#define FC_2 KC_2 // 2
-#define FC_3 KC_3 // 3
-#define FC_4 KC_4 // 4
-#define FC_5 KC_5 // 5
-#define FC_6 KC_6 // 6
-#define FC_7 KC_7 // 7
-#define FC_8 KC_8 // 8
-#define FC_9 KC_9 // 9
-#define FC_0 KC_0 // 0
-#define FC_MINS KC_MINS // -
-#define FC_EQL KC_EQL // =
-#define FC_Q KC_Q // Q
-#define FC_W KC_W // W
-#define FC_E KC_E // E
-#define FC_R KC_R // R
-#define FC_T KC_T // T
-#define FC_Y KC_Y // Y
-#define FC_U KC_U // U
-#define FC_I KC_I // I
-#define FC_O KC_O // O
-#define FC_P KC_P // P
-#define FC_DCIR KC_LBRC // ^ (dead)
-#define FC_CEDL KC_RBRC // ¸ (dead)
-#define FC_A KC_A // A
-#define FC_S KC_S // S
-#define FC_D KC_D // D
-#define FC_F KC_F // F
-#define FC_G KC_G // G
-#define FC_H KC_H // H
-#define FC_J KC_J // J
-#define FC_K KC_K // K
-#define FC_L KC_L // L
-#define FC_SCLN KC_SCLN // ;
-#define FC_DGRV KC_QUOT // ` (dead)
-#define FC_LABK KC_NUHS // <
-#define FC_LDAQ KC_NUBS // «
-#define FC_Z KC_Z // Z
-#define FC_X KC_X // X
-#define FC_C KC_C // C
-#define FC_V KC_V // V
-#define FC_B KC_B // B
-#define FC_N KC_N // N
-#define FC_M KC_M // M
-#define FC_COMM KC_COMM // ,
-#define FC_DOT KC_DOT // .
-#define FC_EACU KC_SLSH // É
-#define FC_PIPE S(FC_HASH) // |
-#define FC_EXLM S(FC_1) // !
-#define FC_DQUO S(FC_2) // "
-#define FC_SLSH S(FC_3) // /
-#define FC_DLR S(FC_4) // $
-#define FC_PERC S(FC_5) // %
-#define FC_QUES S(FC_6) // ?
-#define FC_AMPR S(FC_7) // &
-#define FC_ASTR S(FC_8) // *
-#define FC_LPRN S(FC_9) // (
-#define FC_RPRN S(FC_0) // )
-#define FC_UNDS S(FC_MINS) // _
-#define FC_PLUS S(FC_EQL) // +
-#define FC_DIAE S(FC_CEDL) // ¨ (dead)
-#define FC_COLN S(FC_SCLN) // :
-#define FC_RDAQ S(FC_LDAQ) // »
-#define FC_QUOT S(FC_COMM) // '
-#define FC_BSLS ALGR(FC_HASH) // (backslash)
-#define FC_PLMN ALGR(FC_1) // ±
-#define FC_AT ALGR(FC_2) // @
-#define FC_PND ALGR(FC_3) // £
-#define FC_CENT ALGR(FC_4) // ¢
-#define FC_CURR ALGR(FC_5) // ¤
-#define FC_NOT ALGR(FC_6) // ¬
-#define FC_BRKP ALGR(FC_7) // ¦
-#define FC_SUP2 ALGR(FC_8) // ²
-#define FC_SUP3 ALGR(FC_9) // ³
-#define FC_QRTR ALGR(FC_0) // ¼
-#define FC_HALF ALGR(FC_MINS) // ½
-#define FC_TQTR ALGR(FC_EQL) // ¾
-#define FC_EURO ALGR(FC_E) // €
-#define FC_SECT ALGR(FC_O) // §
-#define FC_PARA ALGR(FC_P) // ¶
-#define FC_LBRC ALGR(FC_DCIR) // [
-#define FC_RBRC ALGR(FC_CEDL) // ]
-#define FC_TILD ALGR(FC_SCLN) // ~
-#define FC_LCBR ALGR(FC_DGRV) // {
-#define FC_RCBR ALGR(FC_LABK) // }
-#define FC_DEG ALGR(FC_LDAQ) // °
-#define FC_MICR ALGR(FC_M) // µ
-#define FC_MACR ALGR(FC_COMM) // ¯
-#define FC_SHYP ALGR(FC_DOT) // (soft hyphen)
-#define FC_ACUT ALGR(FC_EACU) // ´ (dead)
+#define FR_HASH KC_GRV // #
+#define FR_1 KC_1 // 1
+#define FR_2 KC_2 // 2
+#define FR_3 KC_3 // 3
+#define FR_4 KC_4 // 4
+#define FR_5 KC_5 // 5
+#define FR_6 KC_6 // 6
+#define FR_7 KC_7 // 7
+#define FR_8 KC_8 // 8
+#define FR_9 KC_9 // 9
+#define FR_0 KC_0 // 0
+#define FR_MINS KC_MINS // -
+#define FR_EQL KC_EQL // =
+#define FR_Q KC_Q // Q
+#define FR_W KC_W // W
+#define FR_E KC_E // E
+#define FR_R KC_R // R
+#define FR_T KC_T // T
+#define FR_Y KC_Y // Y
+#define FR_U KC_U // U
+#define FR_I KC_I // I
+#define FR_O KC_O // O
+#define FR_P KC_P // P
+#define FR_DCIR KC_LBRC // ^ (dead)
+#define FR_CEDL KC_RBRC // ¸ (dead)
+#define FR_A KC_A // A
+#define FR_S KC_S // S
+#define FR_D KC_D // D
+#define FR_F KC_F // F
+#define FR_G KC_G // G
+#define FR_H KC_H // H
+#define FR_J KC_J // J
+#define FR_K KC_K // K
+#define FR_L KC_L // L
+#define FR_SCLN KC_SCLN // ;
+#define FR_DGRV KC_QUOT // ` (dead)
+#define FR_LABK KC_NUHS // <
+#define FR_LDAQ KC_NUBS // «
+#define FR_Z KC_Z // Z
+#define FR_X KC_X // X
+#define FR_C KC_C // C
+#define FR_V KC_V // V
+#define FR_B KC_B // B
+#define FR_N KC_N // N
+#define FR_M KC_M // M
+#define FR_COMM KC_COMM // ,
+#define FR_DOT KC_DOT // .
+#define FR_EACU KC_SLSH // É
+#define FR_PIPE S(FR_HASH) // |
+#define FR_EXLM S(FR_1) // !
+#define FR_DQUO S(FR_2) // "
+#define FR_SLSH S(FR_3) // /
+#define FR_DLR S(FR_4) // $
+#define FR_PERC S(FR_5) // %
+#define FR_QUES S(FR_6) // ?
+#define FR_AMPR S(FR_7) // &
+#define FR_ASTR S(FR_8) // *
+#define FR_LPRN S(FR_9) // (
+#define FR_RPRN S(FR_0) // )
+#define FR_UNDS S(FR_MINS) // _
+#define FR_PLUS S(FR_EQL) // +
+#define FR_DIAE S(FR_CEDL) // ¨ (dead)
+#define FR_COLN S(FR_SCLN) // :
+#define FR_RDAQ S(FR_LDAQ) // »
+#define FR_QUOT S(FR_COMM) // '
+#define FR_BSLS ALGR(FR_HASH) // (backslash)
+#define FR_PLMN ALGR(FR_1) // ±
+#define FR_AT ALGR(FR_2) // @
+#define FR_PND ALGR(FR_3) // £
+#define FR_CENT ALGR(FR_4) // ¢
+#define FR_CURR ALGR(FR_5) // ¤
+#define FR_NOT ALGR(FR_6) // ¬
+#define FR_BRKP ALGR(FR_7) // ¦
+#define FR_SUP2 ALGR(FR_8) // ²
+#define FR_SUP3 ALGR(FR_9) // ³
+#define FR_QRTR ALGR(FR_0) // ¼
+#define FR_HALF ALGR(FR_MINS) // ½
+#define FR_TQTR ALGR(FR_EQL) // ¾
+#define FR_EURO ALGR(FR_E) // €
+#define FR_SECT ALGR(FR_O) // §
+#define FR_PARA ALGR(FR_P) // ¶
+#define FR_LBRC ALGR(FR_DCIR) // [
+#define FR_RBRC ALGR(FR_CEDL) // ]
+#define FR_TILD ALGR(FR_SCLN) // ~
+#define FR_LCBR ALGR(FR_DGRV) // {
+#define FR_RCBR ALGR(FR_LABK) // }
+#define FR_DEG ALGR(FR_LDAQ) // °
+#define FR_MICR ALGR(FR_M) // µ
+#define FR_MACR ALGR(FR_COMM) // ¯
+#define FR_SHYP ALGR(FR_DOT) // (soft hyphen)
+#define FR_ACUT ALGR(FR_EACU) // ´ (dead)
From 423b6bfd83436da4e804eeabecc5fd7b83614169 Mon Sep 17 00:00:00 2001
From: Nebuleon Fumika <2391500+Nebuleon@users.noreply.github.com>
Date: Sun, 9 Jul 2023 03:57:57 -0400
Subject: [PATCH 4/9] Add missing FR_RABK to the Canadian French input locale
---
.../keycodes/extras/keycodes_canadian_french_0.0.1.hjson | 4 ++++
quantum/keymap_extras/keymap_canadian_french.h | 2 ++
2 files changed, 6 insertions(+)
diff --git a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
index 130abf1fe2d5..b8c2eb6524a2 100644
--- a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
+++ b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
@@ -278,6 +278,10 @@
"key": "FR_COLN",
"label": ":",
}
+ "S(FR_LABK)": {
+ "key": "FR_RABK",
+ "label": ">",
+ }
"S(FR_LDAQ)": {
"key": "FR_RDAQ",
"label": "»",
diff --git a/quantum/keymap_extras/keymap_canadian_french.h b/quantum/keymap_extras/keymap_canadian_french.h
index bb8ae3e15eb0..a18ce37dc395 100644
--- a/quantum/keymap_extras/keymap_canadian_french.h
+++ b/quantum/keymap_extras/keymap_canadian_french.h
@@ -91,6 +91,7 @@
#define FR_PLUS S(FR_EQL) // +
#define FR_DIAE S(FR_CEDL) // ¨ (dead)
#define FR_COLN S(FR_SCLN) // :
+#define FR_RABK S(FR_LABK) // >
#define FR_RDAQ S(FR_LDAQ) // »
#define FR_QUOT S(FR_COMM) // '
#define FR_BSLS ALGR(FR_HASH) // (backslash)
@@ -120,3 +121,4 @@
#define FR_SHYP ALGR(FR_DOT) // (soft hyphen)
#define FR_ACUT ALGR(FR_EACU) // ´ (dead)
+
From 2de2297cbaf693487a901b50da0268503ea24e6a Mon Sep 17 00:00:00 2001
From: Nebuleon <2391500+Nebuleon@users.noreply.github.com>
Date: Sun, 9 Jul 2023 13:21:11 -0400
Subject: [PATCH 5/9] Update sendstring header include for Canadian French per
#21485
Co-authored-by: Ryan
---
quantum/keymap_extras/sendstring_canadian_french.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/quantum/keymap_extras/sendstring_canadian_french.h b/quantum/keymap_extras/sendstring_canadian_french.h
index 7b872befb58b..66d40cd915dd 100644
--- a/quantum/keymap_extras/sendstring_canadian_french.h
+++ b/quantum/keymap_extras/sendstring_canadian_french.h
@@ -19,7 +19,7 @@
#pragma once
#include "keymap_canadian_french.h"
-#include "quantum.h"
+#include "send_string.h"
// clang-format off
From 81c9d0235c59e46f9f877de6363af70a58f66b38 Mon Sep 17 00:00:00 2001
From: Nebuleon Fumika <2391500+Nebuleon@users.noreply.github.com>
Date: Sun, 10 Dec 2023 03:01:41 -0500
Subject: [PATCH 6/9] Remove FR_EURO, not present in common Windows builds,
from AltGr in Canadian French
---
.../keycodes/extras/keycodes_canadian_french_0.0.1.hjson | 6 +-----
quantum/keymap_extras/keymap_canadian_french.h | 1 -
2 files changed, 1 insertion(+), 6 deletions(-)
diff --git a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
index b8c2eb6524a2..b901d8d336cc 100644
--- a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
+++ b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
@@ -294,7 +294,7 @@
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │ \ │ ± │ @ │ £ │ ¢ │ ¤ │ ¬ │ ¦ │ ² │ ³ │ ¼ │ ½ │ ¾ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ │ │ € │ │ │ │ │ │ § │ ¶ │ [ │ ] │ │
+ * │ │ │ │ │ │ │ │ │ │ § │ ¶ │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ ~ │ { │ } │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
@@ -355,10 +355,6 @@
"key": "FR_TQTR",
"label": "¾",
}
- "ALGR(FR_E)": {
- "key": "FR_EURO",
- "label": "€",
- }
"ALGR(FR_O)": {
"key": "FR_SECT",
"label": "§",
diff --git a/quantum/keymap_extras/keymap_canadian_french.h b/quantum/keymap_extras/keymap_canadian_french.h
index a18ce37dc395..f0cf380cbb8d 100644
--- a/quantum/keymap_extras/keymap_canadian_french.h
+++ b/quantum/keymap_extras/keymap_canadian_french.h
@@ -107,7 +107,6 @@
#define FR_QRTR ALGR(FR_0) // ¼
#define FR_HALF ALGR(FR_MINS) // ½
#define FR_TQTR ALGR(FR_EQL) // ¾
-#define FR_EURO ALGR(FR_E) // €
#define FR_SECT ALGR(FR_O) // §
#define FR_PARA ALGR(FR_P) // ¶
#define FR_LBRC ALGR(FR_DCIR) // [
From 19a113ce6fb0853f564b90caf56bb1488cb18352 Mon Sep 17 00:00:00 2001
From: Nebuleon Fumika <2391500+Nebuleon@users.noreply.github.com>
Date: Sun, 10 Dec 2023 03:09:37 -0500
Subject: [PATCH 7/9] Fix file requiring regeneration in the previous commit
---
quantum/keymap_extras/keymap_canadian_french.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/quantum/keymap_extras/keymap_canadian_french.h b/quantum/keymap_extras/keymap_canadian_french.h
index f0cf380cbb8d..a61d48d3ed39 100644
--- a/quantum/keymap_extras/keymap_canadian_french.h
+++ b/quantum/keymap_extras/keymap_canadian_french.h
@@ -120,4 +120,3 @@
#define FR_SHYP ALGR(FR_DOT) // (soft hyphen)
#define FR_ACUT ALGR(FR_EACU) // ´ (dead)
-
From d328803e740b39deea09d27c3c97c7c4bc757caa Mon Sep 17 00:00:00 2001
From: Nebuleon Fumika <2391500+Nebuleon@users.noreply.github.com>
Date: Tue, 12 Dec 2023 21:03:03 -0500
Subject: [PATCH 8/9] Fix change from FC_ to FR_ also in the sendstring header
---
.../sendstring_canadian_french.h | 24 +++++++++----------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/quantum/keymap_extras/sendstring_canadian_french.h b/quantum/keymap_extras/sendstring_canadian_french.h
index 66d40cd915dd..2abba3a9d308 100644
--- a/quantum/keymap_extras/sendstring_canadian_french.h
+++ b/quantum/keymap_extras/sendstring_canadian_french.h
@@ -94,27 +94,27 @@ const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// ! " # $ % & '
- KC_SPC, FC_1, FC_2, FC_HASH, FC_4, FC_5, FC_7, FC_COMM,
+ KC_SPC, FR_1, FR_2, FR_HASH, FR_4, FR_5, FR_7, FR_COMM,
// ( ) * + , - . /
- FC_9, FC_0, FC_8, FC_EQL, FC_COMM, FC_MINS, FC_DOT, FC_3,
+ FR_9, FR_0, FR_8, FR_EQL, FR_COMM, FR_MINS, FR_DOT, FR_3,
// 0 1 2 3 4 5 6 7
- FC_0, FC_1, FC_2, FC_3, FC_4, FC_5, FC_6, FC_7,
+ FR_0, FR_1, FR_2, FR_3, FR_4, FR_5, FR_6, FR_7,
// 8 9 : ; < = > ?
- FC_8, FC_9, FC_SCLN, FC_SCLN, FC_LABK, FC_EQL, FC_LABK, FC_6,
+ FR_8, FR_9, FR_SCLN, FR_SCLN, FR_LABK, FR_EQL, FR_LABK, FR_6,
// @ A B C D E F G
- FC_2, FC_A, FC_B, FC_C, FC_D, FC_E, FC_F, FC_G,
+ FR_2, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
// H I J K L M N O
- FC_H, FC_I, FC_J, FC_K, FC_L, FC_M, FC_N, FC_O,
+ FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
// P Q R S T U V W
- FC_P, FC_Q, FC_R, FC_S, FC_T, FC_U, FC_V, FC_W,
+ FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
// X Y Z [ \ ] ^ _
- FC_X, FC_Y, FC_Z, FC_DCIR, FC_HASH, FC_CEDL, FC_DCIR, FC_MINS,
+ FR_X, FR_Y, FR_Z, FR_DCIR, FR_HASH, FR_CEDL, FR_DCIR, FR_MINS,
// ` a b c d e f g
- FC_DGRV, FC_A, FC_B, FC_C, FC_D, FC_E, FC_F, FC_G,
+ FR_DGRV, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
// h i j k l m n o
- FC_H, FC_I, FC_J, FC_K, FC_L, FC_M, FC_N, FC_O,
+ FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
// p q r s t u v w
- FC_P, FC_Q, FC_R, FC_S, FC_T, FC_U, FC_V, FC_W,
+ FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
// x y z { | } ~ DEL
- FC_X, FC_Y, FC_Z, FC_DGRV, FC_HASH, FC_LABK, FC_SCLN, KC_DEL
+ FR_X, FR_Y, FR_Z, FR_DGRV, FR_HASH, FR_LABK, FR_SCLN, KC_DEL
};
From f6e9da03668f30bc405b2afdf1bb0fc2715ed74a Mon Sep 17 00:00:00 2001
From: Nebuleon <2391500+Nebuleon@users.noreply.github.com>
Date: Tue, 12 Dec 2023 21:06:14 -0500
Subject: [PATCH 9/9] Canadian French: update the description of soft hyphen
from "shy" to "-"
Co-authored-by: Ryan
---
.../keycodes/extras/keycodes_canadian_french_0.0.1.hjson | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
index b901d8d336cc..6fefd11f59d5 100644
--- a/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
+++ b/data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson
@@ -298,7 +298,7 @@
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
* │ │ │ │ │ │ │ │ │ │ │ ~ │ { │ } │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
- * │ │ ° │ │ │ │ │ │ │ µ │ ¯ │shy│ ´ │ │
+ * │ │ ° │ │ │ │ │ │ │ µ │ ¯ │ - │ ´ │ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘