177 lines
		
	
	
	
		
			6.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
	
		
			6.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // Copyright 2025 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
 | ||
| 
 | ||
| #define QMK_FARSI_KEYCODES_VERSION "0.0.1"
 | ||
| #define QMK_FARSI_KEYCODES_VERSION_BCD 0x00000001
 | ||
| #define QMK_FARSI_KEYCODES_VERSION_MAJOR 0
 | ||
| #define QMK_FARSI_KEYCODES_VERSION_MINOR 0
 | ||
| #define QMK_FARSI_KEYCODES_VERSION_PATCH 1
 | ||
| 
 | ||
| // 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_RE)   // ٖ
 | ||
| #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)
 | ||
| 
 | 
