aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/constants/keycodes/extras/keycodes_farsi_0.0.1.hjson616
-rw-r--r--docs/reference_keymap_extras.md1
-rw-r--r--quantum/keymap_extras/keymap_farsi.h171
3 files changed, 788 insertions, 0 deletions
diff --git a/data/constants/keycodes/extras/keycodes_farsi_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_farsi_0.0.1.hjson
new file mode 100644
index 0000000000..d59b6fab26
--- /dev/null
+++ b/data/constants/keycodes/extras/keycodes_farsi_0.0.1.hjson
@@ -0,0 +1,616 @@
+{
+ "aliases": {
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ │ ۱ │ ۲ │ ۳ │ ۴ │ ۵ │ ۶ │ ۷ │ ۸ │ ۹ │ ۰ │ - │ = │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ ض │ ص │ ث │ ق │ ف │ غ │ ع │ ه │ خ │ ح │ ج │ چ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ ش │ س │ ی │ ب │ ل │ ا │ ت │ ن │ م │ ک │ گ │ \ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ < │ ظ │ ط │ ز │ ر │ ذ │ د │ پ │ و │ . │ / │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "KC_GRV": {
+ "key": "FA_ZWJ",
+ "label": "(zero-width joiner)",
+ }
+ "KC_1": {
+ "key": "FA_1A",
+ "label": "۱",
+ }
+ "KC_2": {
+ "key": "FA_2A",
+ "label": "۲",
+ }
+ "KC_3": {
+ "key": "FA_3A",
+ "label": "۳",
+ }
+ "KC_4": {
+ "key": "FA_4A",
+ "label": "۴",
+ }
+ "KC_5": {
+ "key": "FA_5A",
+ "label": "۵",
+ }
+ "KC_6": {
+ "key": "FA_6A",
+ "label": "۶",
+ }
+ "KC_7": {
+ "key": "FA_7A",
+ "label": "۷",
+ }
+ "KC_8": {
+ "key": "FA_8A",
+ "label": "۸",
+ }
+ "KC_9": {
+ "key": "FA_9A",
+ "label": "۹",
+ }
+ "KC_0": {
+ "key": "FA_0A",
+ "label": "۰",
+ }
+ "KC_MINS": {
+ "key": "FA_MINS",
+ "label": "-",
+ }
+ "KC_EQL": {
+ "key": "FA_EQL",
+ "label": "=",
+ }
+ "KC_Q": {
+ "key": "FA_ZAD",
+ "label": "ض",
+ }
+ "KC_W": {
+ "key": "FA_SAD",
+ "label": "ص",
+ }
+ "KC_E": {
+ "key": "FA_SE",
+ "label": "ث",
+ }
+ "KC_R": {
+ "key": "FA_QAF",
+ "label": "ق",
+ }
+ "KC_T": {
+ "key": "FA_FE",
+ "label": "ف",
+ }
+ "KC_Y": {
+ "key": "FA_GHYN",
+ "label": "غ",
+ }
+ "KC_U": {
+ "key": "FA_EYN",
+ "label": "ع",
+ }
+ "KC_I": {
+ "key": "FA_HE",
+ "label": "ه",
+ }
+ "KC_O": {
+ "key": "FA_KHE",
+ "label": "خ",
+ }
+ "KC_P": {
+ "key": "FA_HEJ",
+ "label": "ح",
+ }
+ "KC_LBRC": {
+ "key": "FA_JIM",
+ "label": "ج",
+ }
+ "KC_RBRC": {
+ "key": "FA_CHE",
+ "label": "چ",
+ }
+ "KC_A": {
+ "key": "FA_SHIN",
+ "label": "ش",
+ }
+ "KC_S": {
+ "key": "FA_SIN",
+ "label": "س",
+ }
+ "KC_D": {
+ "key": "FA_YE",
+ "label": "ی",
+ }
+ "KC_F": {
+ "key": "FA_BE",
+ "label": "ب",
+ }
+ "KC_G": {
+ "key": "FA_LAM",
+ "label": "ل",
+ }
+ "KC_H": {
+ "key": "FA_ALEF",
+ "label": "ا",
+ }
+ "KC_J": {
+ "key": "FA_TE",
+ "label": "ت",
+ }
+ "KC_K": {
+ "key": "FA_NOON",
+ "label": "ن",
+ }
+ "KC_L": {
+ "key": "FA_MIM",
+ "label": "م",
+ }
+ "KC_SCLN": {
+ "key": "FA_KAF",
+ "label": "ک",
+ }
+ "KC_QUOT": {
+ "key": "FA_GAF",
+ "label": "گ",
+ }
+ "KC_BSLS": {
+ "key": "FA_BSLS",
+ "label": "\\",
+ }
+ "KC_LT": {
+ "key": "FA_LT",
+ "label": "<",
+ }
+ "KC_Z": {
+ "key": "FA_ZA",
+ "label": "ظ",
+ }
+ "KC_X": {
+ "key": "FA_TA",
+ "label": "ط",
+ }
+ "KC_C": {
+ "key": "FA_ZE",
+ "label": "ز",
+ }
+ "KC_V": {
+ "key": "FA_RE",
+ "label": "ر",
+ }
+ "KC_B": {
+ "key": "FA_ZAL",
+ "label": "ذ",
+ }
+ "KC_N": {
+ "key": "FA_DAL",
+ "label": "د",
+ }
+ "KC_M": {
+ "key": "FA_PE",
+ "label": "پ",
+ }
+ "KC_COMM": {
+ "key": "FA_WAW",
+ "label": "و",
+ }
+ "KC_DOT": {
+ "key": "FA_DOT",
+ "label": ".",
+ }
+ "KC_SLSH": {
+ "key": "FA_SLSH",
+ "label": "/",
+ }
+ "KC_SPC": {
+ "key": "FA_SPC",
+ "label": " ",
+ }
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ÷ │ ! │ ٬ │ ٫ │ ﷼ │ ٪ │ × │ ، │ * │ ) │ ( │ ـ │ + │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ ْ │ ٌ │ ٍ │ ً │ ُ │ ِ │ َ │ ّ │ ] │ [ │ } │ { │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ ؤ │ ئ │ ي │ إ │ أ │ آ │ ة │ » │ « │ : │ ؛ │ | │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ > │ ك │ ٓ │ ژ │ ٰ │ │ ٔ │ ء │ │ │ ؟ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "S(FA_ZWJ)": {
+ "key": "FA_DIV",
+ "label": "÷",
+ }
+ "S(FA_1A)": {
+ "key": "FA_EXLM",
+ "label": "!",
+ }
+ "S(FA_2A)": {
+ "key": "FA_THS",
+ "label": "٬",
+ }
+ "S(FA_3A)": {
+ "key": "FA_DECS",
+ "label": "٫",
+ }
+ "S(FA_4A)": {
+ "key": "FA_RIAL",
+ "label": "﷼",
+ }
+ "S(FA_5A)": {
+ "key": "FA_PRCA",
+ "label": "٪",
+ }
+ "S(FA_6A)": {
+ "key": "FA_MUL",
+ "label": "×",
+ }
+ "S(FA_7A)": {
+ "key": "FA_COMA",
+ "label": "،",
+ }
+ "S(FA_8A)": {
+ "key": "FA_ASTR",
+ "label": "*",
+ }
+ "S(FA_9A)": {
+ "key": "FA_RPRN",
+ "label": ")",
+ }
+ "S(FA_0A)": {
+ "key": "FA_LPRN",
+ "label": "(",
+ }
+ "S(FA_MINS)": {
+ "key": "FA_TATW",
+ "label": "ـ",
+ }
+ "S(FA_EQL)": {
+ "key": "FA_PLUS",
+ "label": "+",
+ }
+ "S(FA_ZAD)": {
+ "key": "FA_SUK",
+ "label": "ْ",
+ }
+ "S(FA_SAD)": {
+ "key": "FA_DMTN",
+ "label": "ٌ",
+ }
+ "S(FA_SE)": {
+ "key": "FA_KSTN",
+ "label": "ٍ",
+ }
+ "S(FA_QAF)": {
+ "key": "FA_FTHN",
+ "label": "ً",
+ }
+ "S(FA_FE)": {
+ "key": "FA_DMM",
+ "label": "ُ",
+ }
+ "S(FA_GHYN)": {
+ "key": "FA_KAS",
+ "label": "ِ",
+ }
+ "S(FA_EYN)": {
+ "key": "FA_FAT",
+ "label": "َ",
+ }
+ "S(FA_HE)": {
+ "key": "FA_TSDD",
+ "label": "",
+ }
+ "S(FA_KHE)": {
+ "key": "FA_RBRC",
+ "label": "]",
+ }
+ "S(FA_HEJ)": {
+ "key": "FA_LBRC",
+ "label": "[",
+ }
+ "S(FA_JIM)": {
+ "key": "FA_RCBR",
+ "label": "}",
+ }
+ "S(FA_CHE)": {
+ "key": "FA_LCBR",
+ "label": "{",
+ }
+ "S(FA_SHIN)": {
+ "key": "FA_HMZV",
+ "label": "ؤ",
+ }
+ "S(FA_SIN)": {
+ "key": "FA_HMZY",
+ "label": "ئ",
+ }
+ "S(FA_YE)": {
+ "key": "FA_YEA",
+ "label": "ي",
+ }
+ "S(FA_BE)": {
+ "key": "FA_HMZU",
+ "label": "إ",
+ }
+ "S(FA_LAM)": {
+ "key": "FA_HMZO",
+ "label": "أ",
+ }
+ "S(FA_ALEF)": {
+ "key": "FA_MALF",
+ "label": "آ",
+ }
+ "S(FA_TE)": {
+ "key": "FA_TEHM",
+ "label": "ة",
+ }
+ "S(FA_NOON)": {
+ "key": "FA_RQOT",
+ "label": "»",
+ }
+ "S(FA_MIM)": {
+ "key": "FA_LQOT",
+ "label": "«",
+ }
+ "S(FA_KAF)": {
+ "key": "FA_COLN",
+ "label": ":",
+ }
+ "S(FA_GAF)": {
+ "key": "FA_SCLA",
+ "label": "؛",
+ }
+ "S(FA_LT)": {
+ "key": "FA_GT",
+ "label": ">",
+ }
+ "S(FA_ZA)": {
+ "key": "FA_KAFA",
+ "label": "ك",
+ }
+ "S(FA_TA)": {
+ "key": "FA_MADO",
+ "label": "ٓ",
+ }
+ "S(FA_ZE)": {
+ "key": "FA_JEH",
+ "label": "ژ",
+ }
+ "S(FA_RE)": {
+ "key": "FA_SUPA",
+ "label": "ٰ",
+ }
+ "S(FA_ZAL)": {
+ "key": "FA_ZWNJ",
+ "label": "(zero-width non-joiner)",
+ }
+ "S(FA_DAL)": {
+ "key": "FA_HMZA",
+ "label": "ٔ",
+ }
+ "S(FA_PE)": {
+ "key": "FA_HMZ",
+ "label": "ء",
+ }
+ "S(FA_SLSH)": {
+ "key": "FA_QSA",
+ "label": "؟",
+ }
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ~ │ ` │ @ │ # │ $ │ % │ ^ │ & │ • │ │ │ _ │ − │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ ° │ │ € │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ ى │ │ │ ٱ │ │ ﴾ │ ﴿ │ ; │ " │ ‐ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ | │ │ │ │ ٖ │ │ ٕ │ … │ , │ ' │ ? │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "ALGR(FA_ZWJ)": {
+ "key": "FA_TILD",
+ "label": "~",
+ }
+ "ALGR(FA_1A)": {
+ "key": "FA_GRV",
+ "label": "`",
+ }
+ "ALGR(FA_2A)": {
+ "key": "FA_AT",
+ "label": "@",
+ }
+ "ALGR(FA_3A)": {
+ "key": "FA_HASH",
+ "label": "#",
+ }
+ "ALGR(FA_4A)": {
+ "key": "FA_DLR",
+ "label": "$",
+ }
+ "ALGR(FA_5A)": {
+ "key": "FA_PERC",
+ "label": "%",
+ }
+ "ALGR(FA_6A)": {
+ "key": "FA_CIRC",
+ "label": "^",
+ }
+ "ALGR(FA_7A)": {
+ "key": "FA_AMPR",
+ "label": "&",
+ }
+ "ALGR(FA_8A)": {
+ "key": "FA_BULT",
+ "label": "•",
+ }
+ "ALGR(FA_9A)": {
+ "key": "FA_LRM",
+ "label": "(left-to-right mark)",
+ }
+ "ALGR(FA_0A)": {
+ "key": "FA_RLM",
+ "label": "(right-to-left mark)",
+ }
+ "ALGR(FA_MINS)": {
+ "key": "FA_UNDS",
+ "label": "_",
+ }
+ "ALGR(FA_EQL)": {
+ "key": "FA_DMNS",
+ "label": "− (dead)",
+ }
+ "ALGR(FA_ZAD)": {
+ "key": "FA_DEG",
+ "label": "°",
+ }
+ "ALGR(FA_SE)": {
+ "key": "FA_EURO",
+ "label": "€",
+ }
+ "ALGR(FA_HE)": {
+ "key": "FA_LRO",
+ "label": "(left-to-right override)",
+ }
+ "ALGR(FA_KHE)": {
+ "key": "FA_RLO",
+ "label": "(right-to-left override)",
+ }
+ "ALGR(FA_HEJ)": {
+ "key": "FA_PDF",
+ "label": "(pop directional formatting)",
+ }
+ "ALGR(FA_JIM)": {
+ "key": "FA_LRE",
+ "label": "(left-to-right embedding)",
+ }
+ "ALGR(FA_CHE)": {
+ "key": "FA_RLE",
+ "label": "(right-to-left embedding)",
+ }
+ "ALGR(FA_YE)": {
+ "key": "FA_ALFM",
+ "label": "ى",
+ }
+ "ALGR(FA_ALEF)": {
+ "key": "FA_ALFW",
+ "label": "ٱ",
+ }
+ "ALGR(FA_NOON)": {
+ "key": "FA_LORP",
+ "label": "﴾",
+ }
+ "ALGR(FA_MIM)": {
+ "key": "FA_RORP",
+ "label": "﴿",
+ }
+ "ALGR(FA_KAF)": {
+ "key": "FA_SCLN",
+ "label": ";",
+ }
+ "ALGR(FA_GAF)": {
+ "key": "FA_DQT",
+ "label": "\"",
+ }
+ "ALGR(FA_BSLS)": {
+ "key": "FA_MINA",
+ "label": "-",
+ }
+ "ALGR(FA_ZA)": {
+ "key": "FA_PIPE",
+ "label": "|",
+ }
+ "ALGR(FA_RA)": {
+ "key": "FA_SUBA",
+ "label": "ٖ",
+ }
+ "ALGR(FA_DAL)": {
+ "key": "FA_HMZB",
+ "label": "ء",
+ }
+ "ALGR(FA_PE)": {
+ "key": "FA_ELLP",
+ "label": "…",
+ }
+ "ALGR(FA_WAW)": {
+ "key": "FA_COMM",
+ "label": ",",
+ }
+ "ALGR(FA_DOT)": {
+ "key": "FA_QUOT",
+ "label": "'",
+ }
+ "ALGR(FA_SLSH)": {
+ "key": "FA_QUES",
+ "label": "?",
+ }
+/* Shift+AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ ¦ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ "S(ALGR(FA_1A))": {
+ "key": "FA_1",
+ "label": "1",
+ }
+ "S(ALGR(FA_2A))": {
+ "key": "FA_2",
+ "label": "2",
+ }
+ "S(ALGR(FA_3A))": {
+ "key": "FA_3",
+ "label": "3",
+ }
+ "S(ALGR(FA_4A))": {
+ "key": "FA_4",
+ "label": "4",
+ }
+ "S(ALGR(FA_5A))": {
+ "key": "FA_5",
+ "label": "5",
+ }
+ "S(ALGR(FA_6A))": {
+ "key": "FA_6",
+ "label": "6",
+ }
+ "S(ALGR(FA_7A))": {
+ "key": "FA_7",
+ "label": "7",
+ }
+ "S(ALGR(FA_8A))": {
+ "key": "FA_8",
+ "label": "8",
+ }
+ "S(ALGR(FA_9A))": {
+ "key": "FA_9",
+ "label": "9",
+ }
+ "S(ALGR(FA_0A))": {
+ "key": "FA_0",
+ "label": "0",
+ }
+ "S(ALGR(FA_LT))": {
+ "key": "FA_BRKP",
+ "label": "¦",
+ }
+ "S(ALGR(FA_SPC))": {
+ "key": "FA_NNBS",
+ "label": "(narrow non-breaking space)",
+ }
+ }
+}
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
index 191e0d4ea8..d45183b6c6 100644
--- a/docs/reference_keymap_extras.md
+++ b/docs/reference_keymap_extras.md
@@ -33,6 +33,7 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|English (US International) |`keymap_us_international.h` |`sendstring_us_international.h` |
|English (US International, Linux)|`keymap_us_international_linux.h`| |
|Estonian |`keymap_estonian.h` |`sendstring_estonian.h` |
+|Farsi |`keymap_farsi.h` | |
|Finnish |`keymap_finnish.h` |`sendstring_finnish.h` |
|French |`keymap_french.h` |`sendstring_french.h` |
|French (AFNOR) |`keymap_french_afnor.h` |`sendstring_french_afnor.h` |
diff --git a/quantum/keymap_extras/keymap_farsi.h b/quantum/keymap_extras/keymap_farsi.h
new file mode 100644
index 0000000000..d268917513
--- /dev/null
+++ b/quantum/keymap_extras/keymap_farsi.h
@@ -0,0 +1,171 @@
+// Copyright 2024 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 FA_ZWJ KC_GRV // (zero-width joiner)
+#define FA_1A KC_1 // ۱
+#define FA_2A KC_2 // ۲
+#define FA_3A KC_3 // ۳
+#define FA_4A KC_4 // ۴
+#define FA_5A KC_5 // ۵
+#define FA_6A KC_6 // ۶
+#define FA_7A KC_7 // ۷
+#define FA_8A KC_8 // ۸
+#define FA_9A KC_9 // ۹
+#define FA_0A KC_0 // ۰
+#define FA_MINS KC_MINS // -
+#define FA_EQL KC_EQL // =
+#define FA_ZAD KC_Q // ض
+#define FA_SAD KC_W // ص
+#define FA_SE KC_E // ث
+#define FA_QAF KC_R // ق
+#define FA_FE KC_T // ف
+#define FA_GHYN KC_Y // غ
+#define FA_EYN KC_U // ع
+#define FA_HE KC_I // ه
+#define FA_KHE KC_O // خ
+#define FA_HEJ KC_P // ح
+#define FA_JIM KC_LBRC // ج
+#define FA_CHE KC_RBRC // چ
+#define FA_SHIN KC_A // ش
+#define FA_SIN KC_S // س
+#define FA_YE KC_D // ی
+#define FA_BE KC_F // ب
+#define FA_LAM KC_G // ل
+#define FA_ALEF KC_H // ا
+#define FA_TE KC_J // ت
+#define FA_NOON KC_K // ن
+#define FA_MIM KC_L // م
+#define FA_KAF KC_SCLN // ک
+#define FA_GAF KC_QUOT // گ
+#define FA_BSLS KC_BSLS // (backslash)
+#define FA_LT KC_LT // <
+#define FA_ZA KC_Z // ظ
+#define FA_TA KC_X // ط
+#define FA_ZE KC_C // ز
+#define FA_RE KC_V // ر
+#define FA_ZAL KC_B // ذ
+#define FA_DAL KC_N // د
+#define FA_PE KC_M // پ
+#define FA_WAW KC_COMM // و
+#define FA_DOT KC_DOT // .
+#define FA_SLSH KC_SLSH // /
+#define FA_SPC KC_SPC //
+#define FA_DIV S(FA_ZWJ) // ÷
+#define FA_EXLM S(FA_1A) // !
+#define FA_THS S(FA_2A) // ٬
+#define FA_DECS S(FA_3A) // ٫
+#define FA_RIAL S(FA_4A) // ﷼
+#define FA_PRCA S(FA_5A) // ٪
+#define FA_MUL S(FA_6A) // ×
+#define FA_COMA S(FA_7A) // ،
+#define FA_ASTR S(FA_8A) // *
+#define FA_RPRN S(FA_9A) // )
+#define FA_LPRN S(FA_0A) // (
+#define FA_TATW S(FA_MINS) // ـ
+#define FA_PLUS S(FA_EQL) // +
+#define FA_SUK S(FA_ZAD) // ْ
+#define FA_DMTN S(FA_SAD) // ٌ
+#define FA_KSTN S(FA_SE) // ٍ
+#define FA_FTHN S(FA_QAF) // ً
+#define FA_DMM S(FA_FE) // ُ
+#define FA_KAS S(FA_GHYN) // ِ
+#define FA_FAT S(FA_EYN) // َ
+#define FA_TSDD S(FA_HE) //
+#define FA_RBRC S(FA_KHE) // ]
+#define FA_LBRC S(FA_HEJ) // [
+#define FA_RCBR S(FA_JIM) // }
+#define FA_LCBR S(FA_CHE) // {
+#define FA_HMZV S(FA_SHIN) // ؤ
+#define FA_HMZY S(FA_SIN) // ئ
+#define FA_YEA S(FA_YE) // ي
+#define FA_HMZU S(FA_BE) // إ
+#define FA_HMZO S(FA_LAM) // أ
+#define FA_MALF S(FA_ALEF) // آ
+#define FA_TEHM S(FA_TE) // ة
+#define FA_RQOT S(FA_NOON) // »
+#define FA_LQOT S(FA_MIM) // «
+#define FA_COLN S(FA_KAF) // :
+#define FA_SCLA S(FA_GAF) // ؛
+#define FA_GT S(FA_LT) // >
+#define FA_KAFA S(FA_ZA) // ك
+#define FA_MADO S(FA_TA) // ٓ
+#define FA_JEH S(FA_ZE) // ژ
+#define FA_SUPA S(FA_RE) // ٰ
+#define FA_ZWNJ S(FA_ZAL) // (zero-width non-joiner)
+#define FA_HMZA S(FA_DAL) // ٔ
+#define FA_HMZ S(FA_PE) // ء
+#define FA_QSA S(FA_SLSH) // ؟
+#define FA_TILD ALGR(FA_ZWJ) // ~
+#define FA_GRV ALGR(FA_1A) // `
+#define FA_AT ALGR(FA_2A) // @
+#define FA_HASH ALGR(FA_3A) // #
+#define FA_DLR ALGR(FA_4A) // $
+#define FA_PERC ALGR(FA_5A) // %
+#define FA_CIRC ALGR(FA_6A) // ^
+#define FA_AMPR ALGR(FA_7A) // &
+#define FA_BULT ALGR(FA_8A) // •
+#define FA_LRM ALGR(FA_9A) // (left-to-right mark)
+#define FA_RLM ALGR(FA_0A) // (right-to-left mark)
+#define FA_UNDS ALGR(FA_MINS) // _
+#define FA_DMNS ALGR(FA_EQL) // − (dead)
+#define FA_DEG ALGR(FA_ZAD) // °
+#define FA_EURO ALGR(FA_SE) // €
+#define FA_LRO ALGR(FA_HE) // (left-to-right override)
+#define FA_RLO ALGR(FA_KHE) // (right-to-left override)
+#define FA_PDF ALGR(FA_HEJ) // (pop directional formatting)
+#define FA_LRE ALGR(FA_JIM) // (left-to-right embedding)
+#define FA_RLE ALGR(FA_CHE) // (right-to-left embedding)
+#define FA_ALFM ALGR(FA_YE) // ى
+#define FA_ALFW ALGR(FA_ALEF) // ٱ
+#define FA_LORP ALGR(FA_NOON) // ﴾
+#define FA_RORP ALGR(FA_MIM) // ﴿
+#define FA_SCLN ALGR(FA_KAF) // ;
+#define FA_DQT ALGR(FA_GAF) // "
+#define FA_MINA ALGR(FA_BSLS) // -
+#define FA_PIPE ALGR(FA_ZA) // |
+#define FA_SUBA ALGR(FA_RA) // ٖ
+#define FA_HMZB ALGR(FA_DAL) // ء
+#define FA_ELLP ALGR(FA_PE) // …
+#define FA_COMM ALGR(FA_WAW) // ,
+#define FA_QUOT ALGR(FA_DOT) // '
+#define FA_QUES ALGR(FA_SLSH) // ?
+#define FA_1 S(ALGR(FA_1A)) // 1
+#define FA_2 S(ALGR(FA_2A)) // 2
+#define FA_3 S(ALGR(FA_3A)) // 3
+#define FA_4 S(ALGR(FA_4A)) // 4
+#define FA_5 S(ALGR(FA_5A)) // 5
+#define FA_6 S(ALGR(FA_6A)) // 6
+#define FA_7 S(ALGR(FA_7A)) // 7
+#define FA_8 S(ALGR(FA_8A)) // 8
+#define FA_9 S(ALGR(FA_9A)) // 9
+#define FA_0 S(ALGR(FA_0A)) // 0
+#define FA_BRKP S(ALGR(FA_LT)) // ¦
+#define FA_NNBS S(ALGR(FA_SPC)) // (narrow non-breaking space)
+