summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNebuleon <2391500+Nebuleon@users.noreply.github.com>2024-01-09 06:11:59 -0500
committerGitHub <noreply@github.com>2024-01-09 22:11:59 +1100
commite67d2c2f6fd3a50ac109eabbe93985f4e055963a (patch)
treec3168e35b4b3401bbff675bdaae92e85941883dd
parent744ac91f5e0e56156d31c7d583b78a71384eef24 (diff)
Add Canadian French input locale (#21456)
Co-authored-by: Ryan <fauxpark@gmail.com>
-rw-r--r--data/constants/keycodes/extras/keycodes_canadian_french_0.0.1.hjson407
-rw-r--r--docs/reference_keymap_extras.md1
-rw-r--r--quantum/keymap_extras/keymap_canadian_french.h122
-rw-r--r--quantum/keymap_extras/sendstring_canadian_french.h120
4 files changed, 650 insertions, 0 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
new file mode 100644
index 0000000000..6fefd11f59
--- /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": "FR_HASH",
+ "label": "#",
+ }
+ "KC_1": {
+ "key": "FR_1",
+ "label": "1",
+ }
+ "KC_2": {
+ "key": "FR_2",
+ "label": "2",
+ }
+ "KC_3": {
+ "key": "FR_3",
+ "label": "3",
+ }
+ "KC_4": {
+ "key": "FR_4",
+ "label": "4",
+ }
+ "KC_5": {
+ "key": "FR_5",
+ "label": "5",
+ }
+ "KC_6": {
+ "key": "FR_6",
+ "label": "6",
+ }
+ "KC_7": {
+ "key": "FR_7",
+ "label": "7",
+ }
+ "KC_8": {
+ "key": "FR_8",
+ "label": "8",
+ }
+ "KC_9": {
+ "key": "FR_9",
+ "label": "9",
+ }
+ "KC_0": {
+ "key": "FR_0",
+ "label": "0",
+ }
+ "KC_MINS": {
+ "key": "FR_MINS",
+ "label": "-",
+ }
+ "KC_EQL": {
+ "key": "FR_EQL",
+ "label": "=",
+ }
+ "KC_Q": {
+ "key": "FR_Q",
+ "label": "Q",
+ }
+ "KC_W": {
+ "key": "FR_W",
+ "label": "W",
+ }
+ "KC_E": {
+ "key": "FR_E",
+ "label": "E",
+ }
+ "KC_R": {
+ "key": "FR_R",
+ "label": "R",
+ }
+ "KC_T": {
+ "key": "FR_T",
+ "label": "T",
+ }
+ "KC_Y": {
+ "key": "FR_Y",
+ "label": "Y",
+ }
+ "KC_U": {
+ "key": "FR_U",
+ "label": "U",
+ }
+ "KC_I": {
+ "key": "FR_I",
+ "label": "I",
+ }
+ "KC_O": {
+ "key": "FR_O",
+ "label": "O",
+ }
+ "KC_P": {
+ "key": "FR_P",
+ "label": "P",
+ }
+ "KC_LBRC": {
+ "key": "FR_DCIR",
+ "label": "^ (dead)",
+ }
+ "KC_RBRC": {
+ "key": "FR_CEDL",
+ "label": "¸ (dead)",
+ }
+ "KC_A": {
+ "key": "FR_A",
+ "label": "A",
+ }
+ "KC_S": {
+ "key": "FR_S",
+ "label": "S",
+ }
+ "KC_D": {
+ "key": "FR_D",
+ "label": "D",
+ }
+ "KC_F": {
+ "key": "FR_F",
+ "label": "F",
+ }
+ "KC_G": {
+ "key": "FR_G",
+ "label": "G",
+ }
+ "KC_H": {
+ "key": "FR_H",
+ "label": "H",
+ }
+ "KC_J": {
+ "key": "FR_J",
+ "label": "J",
+ }
+ "KC_K": {
+ "key": "FR_K",
+ "label": "K",
+ }
+ "KC_L": {
+ "key": "FR_L",
+ "label": "L",
+ }
+ "KC_SCLN": {
+ "key": "FR_SCLN",
+ "label": ";",
+ }
+ "KC_QUOT": {
+ "key": "FR_DGRV",
+ "label": "` (dead)",
+ }
+ "KC_NUHS": {
+ "key": "FR_LABK",
+ "label": "<",
+ }
+ "KC_NUBS": {
+ "key": "FR_LDAQ",
+ "label": "«",
+ }
+ "KC_Z": {
+ "key": "FR_Z",
+ "label": "Z",
+ }
+ "KC_X": {
+ "key": "FR_X",
+ "label": "X",
+ }
+ "KC_C": {
+ "key": "FR_C",
+ "label": "C",
+ }
+ "KC_V": {
+ "key": "FR_V",
+ "label": "V",
+ }
+ "KC_B": {
+ "key": "FR_B",
+ "label": "B",
+ }
+ "KC_N": {
+ "key": "FR_N",
+ "label": "N",
+ }
+ "KC_M": {
+ "key": "FR_M",
+ "label": "M",
+ }
+ "KC_COMM": {
+ "key": "FR_COMM",
+ "label": ",",
+ }
+ "KC_DOT": {
+ "key": "FR_DOT",
+ "label": ".",
+ }
+ "KC_SLSH": {
+ "key": "FR_EACU",
+ "label": "É",
+ }
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ | │ ! │ " │ / │ $ │ % │ ? │ & │ * │ ( │ ) │ _ │ + │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ : │ │ > │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ » │ │ │ │ │ │ │ │ ' │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "S(FR_HASH)": {
+ "key": "FR_PIPE",
+ "label": "|",
+ }
+ "S(FR_1)": {
+ "key": "FR_EXLM",
+ "label": "!",
+ }
+ "S(FR_2)": {
+ "key": "FR_DQUO",
+ "label": "\"",
+ }
+ "S(FR_3)": {
+ "key": "FR_SLSH",
+ "label": "/",
+ }
+ "S(FR_4)": {
+ "key": "FR_DLR",
+ "label": "$",
+ }
+ "S(FR_5)": {
+ "key": "FR_PERC",
+ "label": "%",
+ }
+ "S(FR_6)": {
+ "key": "FR_QUES",
+ "label": "?",
+ }
+ "S(FR_7)": {
+ "key": "FR_AMPR",
+ "label": "&",
+ }
+ "S(FR_8)": {
+ "key": "FR_ASTR",
+ "label": "*",
+ }
+ "S(FR_9)": {
+ "key": "FR_LPRN",
+ "label": "(",
+ }
+ "S(FR_0)": {
+ "key": "FR_RPRN",
+ "label": ")",
+ }
+ "S(FR_MINS)": {
+ "key": "FR_UNDS",
+ "label": "_",
+ }
+ "S(FR_EQL)": {
+ "key": "FR_PLUS",
+ "label": "+",
+ }
+ "S(FR_CEDL)": {
+ "key": "FR_DIAE",
+ "label": "¨ (dead)",
+ }
+ "S(FR_SCLN)": {
+ "key": "FR_COLN",
+ "label": ":",
+ }
+ "S(FR_LABK)": {
+ "key": "FR_RABK",
+ "label": ">",
+ }
+ "S(FR_LDAQ)": {
+ "key": "FR_RDAQ",
+ "label": "»",
+ }
+ "S(FR_COMM)": {
+ "key": "FR_QUOT",
+ "label": "'",
+ }
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ \ │ ± │ @ │ £ │ ¢ │ ¤ │ ¬ │ ¦ │ ² │ ³ │ ¼ │ ½ │ ¾ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ § │ ¶ │ [ │ ] │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ ~ │ { │ } │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ ° │ │ │ │ │ │ │ µ │ ¯ │ - │ ´ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "ALGR(FR_HASH)": {
+ "key": "FR_BSLS",
+ "label": "\\",
+ }
+ "ALGR(FR_1)": {
+ "key": "FR_PLMN",
+ "label": "±",
+ }
+ "ALGR(FR_2)": {
+ "key": "FR_AT",
+ "label": "@",
+ }
+ "ALGR(FR_3)": {
+ "key": "FR_PND",
+ "label": "£",
+ }
+ "ALGR(FR_4)": {
+ "key": "FR_CENT",
+ "label": "¢",
+ }
+ "ALGR(FR_5)": {
+ "key": "FR_CURR",
+ "label": "¤",
+ }
+ "ALGR(FR_6)": {
+ "key": "FR_NOT",
+ "label": "¬",
+ }
+ "ALGR(FR_7)": {
+ "key": "FR_BRKP",
+ "label": "¦",
+ }
+ "ALGR(FR_8)": {
+ "key": "FR_SUP2",
+ "label": "²",
+ }
+ "ALGR(FR_9)": {
+ "key": "FR_SUP3",
+ "label": "³",
+ }
+ "ALGR(FR_0)": {
+ "key": "FR_QRTR",
+ "label": "¼",
+ }
+ "ALGR(FR_MINS)": {
+ "key": "FR_HALF",
+ "label": "½",
+ }
+ "ALGR(FR_EQL)": {
+ "key": "FR_TQTR",
+ "label": "¾",
+ }
+ "ALGR(FR_O)": {
+ "key": "FR_SECT",
+ "label": "§",
+ }
+ "ALGR(FR_P)": {
+ "key": "FR_PARA",
+ "label": "¶",
+ }
+ "ALGR(FR_DCIR)": {
+ "key": "FR_LBRC",
+ "label": "[",
+ }
+ "ALGR(FR_CEDL)": {
+ "key": "FR_RBRC",
+ "label": "]",
+ }
+ "ALGR(FR_SCLN)": {
+ "key": "FR_TILD",
+ "label": "~",
+ }
+ "ALGR(FR_DGRV)": {
+ "key": "FR_LCBR",
+ "label": "{",
+ }
+ "ALGR(FR_LABK)": {
+ "key": "FR_RCBR",
+ "label": "}",
+ }
+ "ALGR(FR_LDAQ)": {
+ "key": "FR_DEG",
+ "label": "°",
+ }
+ "ALGR(FR_M)": {
+ "key": "FR_MICR",
+ "label": "µ",
+ }
+ "ALGR(FR_COMM)": {
+ "key": "FR_MACR",
+ "label": "¯",
+ }
+ "ALGR(FR_DOT)": {
+ "key": "FR_SHYP",
+ "label": "­ (soft hyphen)",
+ }
+ "ALGR(FR_EACU)": {
+ "key": "FR_ACUT",
+ "label": "´ (dead)",
+ }
+ }
+}
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
index 0a51c85853..cf2ab28876 100644
--- a/docs/reference_keymap_extras.md
+++ b/docs/reference_keymap_extras.md
@@ -36,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
new file mode 100644
index 0000000000..a61d48d3ed
--- /dev/null
+++ b/quantum/keymap_extras/keymap_canadian_french.h
@@ -0,0 +1,122 @@
+// 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 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_RABK S(FR_LABK) // >
+#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_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)
+
diff --git a/quantum/keymap_extras/sendstring_canadian_french.h b/quantum/keymap_extras/sendstring_canadian_french.h
new file mode 100644
index 0000000000..2abba3a9d3
--- /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 <http://www.gnu.org/licenses/>.
+ */
+
+// Sendstring lookup tables for Canadian French layouts
+
+#pragma once
+
+#include "keymap_canadian_french.h"
+#include "send_string.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, FR_1, FR_2, FR_HASH, FR_4, FR_5, FR_7, FR_COMM,
+ // ( ) * + , - . /
+ FR_9, FR_0, FR_8, FR_EQL, FR_COMM, FR_MINS, FR_DOT, FR_3,
+ // 0 1 2 3 4 5 6 7
+ FR_0, FR_1, FR_2, FR_3, FR_4, FR_5, FR_6, FR_7,
+ // 8 9 : ; < = > ?
+ FR_8, FR_9, FR_SCLN, FR_SCLN, FR_LABK, FR_EQL, FR_LABK, FR_6,
+ // @ A B C D E F 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
+ FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
+ // P Q R S T U V W
+ FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
+ // X Y Z [ \ ] ^ _
+ FR_X, FR_Y, FR_Z, FR_DCIR, FR_HASH, FR_CEDL, FR_DCIR, FR_MINS,
+ // ` a b c d e f 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
+ FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
+ // p q r s t u v w
+ FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
+ // x y z { | } ~ DEL
+ FR_X, FR_Y, FR_Z, FR_DGRV, FR_HASH, FR_LABK, FR_SCLN, KC_DEL
+};