瀏覽代碼

add farsi keymap extras (#23650)

Amir 2 年之前
父節點
當前提交
751a6b5bc4

+ 616 - 0
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)",
+        }
+    }
+}

+ 1 - 0
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`         |

+ 171 - 0
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)
+