diff options
| author | Rahguzar | 2023-10-29 17:14:02 +0100 |
|---|---|---|
| committer | Eli Zaretskii | 2023-11-18 11:30:51 +0200 |
| commit | 84e4bc6219af2c08097027d4b75043b23c1fcce6 (patch) | |
| tree | 822f5baa36b9d3f9f38b9d553e6a34a9c47900ba | |
| parent | 1c70458519b324c9403e8a9f57bd695fe39e8d2c (diff) | |
| download | emacs-84e4bc6219af2c08097027d4b75043b23c1fcce6.tar.gz emacs-84e4bc6219af2c08097027d4b75043b23c1fcce6.zip | |
Add input methods for Urdu, Pashto and Sindhi (bug#66470)
* lisp/leim/quail/pakistan.el ("urdu-keyboard")
("urdu-phonetic-keyboard", "urdu-custom", "sindhi-keyboard")
("pashto-keyboard"): New input methods.
(pakistan--define-quail-rules, pakistan--make-setter)
(pakistan--regenerate-translations, pakistan--set-prefixes)
(pakistan--define-numeral-translations)
(pakistan--set-numeral-translations):
Internal helper functions.
(pakistan-urdu-input): New customization group.
(pakistan-urdu-prefixes, pakistan-urdu-translations)
(pakistan-urdu-diacritics-and-other-symbols)
(pakistan-urdu-poetic-symbols, pakistan-urdu-religious-symbols)
(pakistan-extra-balochi-brahui-translations)
(pakistan-extra-pashto-translations)
(pakistan-extra-sindhi-translations)
(pakistan-extra-saraiki-hindko-translations)
(pakistan-urdu-use-roman-digits): New custom variables.
(pakistan): New package.
| -rw-r--r-- | lisp/leim/quail/pakistan.el | 726 |
1 files changed, 726 insertions, 0 deletions
diff --git a/lisp/leim/quail/pakistan.el b/lisp/leim/quail/pakistan.el new file mode 100644 index 00000000000..ff9257722e0 --- /dev/null +++ b/lisp/leim/quail/pakistan.el | |||
| @@ -0,0 +1,726 @@ | |||
| 1 | ;;; pakistan.el --- Input methods for some languages from Pakistan -*- lexical-binding: t; -*- | ||
| 2 | ;; | ||
| 3 | ;; Copyright (C) 2023 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Rahguzar <rahguzar@zohomail.eu> | ||
| 6 | ;; Keywords: convenience, multilingual, input method, Urdu, Balochi, Pashto, Sindhi, Hindko, Brahui | ||
| 7 | ;; | ||
| 8 | ;; This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 11 | ;; it under the terms of the GNU General Public License as published by | ||
| 12 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 13 | ;; (at your option) any later version. | ||
| 14 | |||
| 15 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | ;; GNU General Public License for more details. | ||
| 19 | |||
| 20 | ;; You should have received a copy of the GNU General Public License | ||
| 21 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. | ||
| 22 | ;; | ||
| 23 | ;;; Commentary: | ||
| 24 | ;; Provides a semi-phonetic input method for Urdu | ||
| 25 | ;; | ||
| 26 | ;;; Code: | ||
| 27 | (require 'quail) | ||
| 28 | |||
| 29 | ;;;; Urdu Input Methods | ||
| 30 | ;;;;; Keyboard | ||
| 31 | ;; Layout taken from https://www.branah.com/urdu | ||
| 32 | (quail-define-package | ||
| 33 | "urdu-keyboard" "Urdu" "ات" t | ||
| 34 | "Input method for Urdu. | ||
| 35 | Uses keyboard layout from https://www.branah.com/urdu" | ||
| 36 | nil t t t t nil nil nil nil nil t) | ||
| 37 | |||
| 38 | (quail-define-rules | ||
| 39 | ("q" ?ط) | ||
| 40 | ("w" ?ص) | ||
| 41 | ("e" ?ھ) | ||
| 42 | ("r" ?د) | ||
| 43 | ("t" ?ٹ) | ||
| 44 | ("y" ?پ) | ||
| 45 | ("u" ?ت) | ||
| 46 | ("i" ?ب) | ||
| 47 | ("o" ?ج) | ||
| 48 | ("p" ?ح) | ||
| 49 | ("a" ?م) | ||
| 50 | ("s" ?و) | ||
| 51 | ("d" ?ر) | ||
| 52 | ("f" ?ن) | ||
| 53 | ("g" ?ل) | ||
| 54 | ("h" ?ہ) | ||
| 55 | ("j" ?ا) | ||
| 56 | ("k" ?ک) | ||
| 57 | ("l" ?ی) | ||
| 58 | ("z" ?ق) | ||
| 59 | ("x" ?ف) | ||
| 60 | ("c" ?ے) | ||
| 61 | ("v" ?س) | ||
| 62 | ("b" ?ش) | ||
| 63 | ("n" ?غ) | ||
| 64 | ("m" ?ع) | ||
| 65 | ("Q" ?ظ) | ||
| 66 | ("W" ?ض) | ||
| 67 | ("E" ?ذ) | ||
| 68 | ("R" ?ڈ) | ||
| 69 | ("T" ?ث) | ||
| 70 | ("Y" ?ّ) | ||
| 71 | ("U" ?ۃ) | ||
| 72 | ("I" ?ـ) | ||
| 73 | ("O" ?چ) | ||
| 74 | ("P" ?خ) | ||
| 75 | ("A" ?ژ) | ||
| 76 | ("S" ?ز) | ||
| 77 | ("D" ?ڑ) | ||
| 78 | ("F" ?ں) | ||
| 79 | ("G" ?ۂ) | ||
| 80 | ("H" ?ء) | ||
| 81 | ("J" ?آ) | ||
| 82 | ("K" ?گ) | ||
| 83 | ("L" ?ي) | ||
| 84 | ("C" ?ۓ) | ||
| 85 | ("B" ?ؤ) | ||
| 86 | ("N" ?ئ) | ||
| 87 | ("[" ?\]) | ||
| 88 | ("]" ?\[) | ||
| 89 | ("{" ?}) | ||
| 90 | ("}" ?{) | ||
| 91 | (";" ?؛) | ||
| 92 | ("." ?۔) | ||
| 93 | ("," ?،) | ||
| 94 | ("?" ?؟)) | ||
| 95 | |||
| 96 | ;;;;; Phonetic Keyboard | ||
| 97 | (quail-define-package | ||
| 98 | "urdu-phonetic-keyboard" "Urdu" "اص" t | ||
| 99 | "Input method for Urdu. | ||
| 100 | Uses phonetic keyboard layout from https://www.branah.com/urdu" | ||
| 101 | nil t t t t nil nil nil nil nil t) | ||
| 102 | |||
| 103 | (quail-define-rules | ||
| 104 | ("q" ?ق) | ||
| 105 | ("w" ?و) | ||
| 106 | ("e" ?ع) | ||
| 107 | ("r" ?ر) | ||
| 108 | ("t" ?ت) | ||
| 109 | ("y" ?ے) | ||
| 110 | ("u" ?ء) | ||
| 111 | ("i" ?ی) | ||
| 112 | ("o" ?ہ) | ||
| 113 | ("p" ?پ) | ||
| 114 | ("a" ?ا) | ||
| 115 | ("s" ?س) | ||
| 116 | ("d" ?د) | ||
| 117 | ("f" ?ف) | ||
| 118 | ("g" ?گ) | ||
| 119 | ("h" ?ح) | ||
| 120 | ("j" ?ج) | ||
| 121 | ("k" ?ک) | ||
| 122 | ("l" ?ل) | ||
| 123 | ("z" ?ز) | ||
| 124 | ("x" ?ش) | ||
| 125 | ("c" ?چ) | ||
| 126 | ("v" ?ط) | ||
| 127 | ("b" ?ب) | ||
| 128 | ("n" ?ن) | ||
| 129 | ("m" ?م) | ||
| 130 | ("Q" ?ْ) | ||
| 131 | ("W" ?ٔ) | ||
| 132 | ("E" ?ٰ) | ||
| 133 | ("R" ?ڑ) | ||
| 134 | ("T" ?ٹ) | ||
| 135 | ("Y" ?َ) | ||
| 136 | ("U" ?ئ) | ||
| 137 | ("I" ?ِ) | ||
| 138 | ("O" ?ۃ) | ||
| 139 | ("P" ?ُ) | ||
| 140 | ("A" ?آ) | ||
| 141 | ("S" ?ص) | ||
| 142 | ("D" ?ڈ) | ||
| 143 | ("F" ?أ) | ||
| 144 | ("G" ?غ) | ||
| 145 | ("H" ?ھ) | ||
| 146 | ("J" ?ض) | ||
| 147 | ("K" ?خ) | ||
| 148 | ("L" ?ٖ) | ||
| 149 | ("Z" ?ذ) | ||
| 150 | ("X" ?ژ) | ||
| 151 | ("C" ?ث) | ||
| 152 | ("V" ?ظ) | ||
| 153 | ("B" ?ً) | ||
| 154 | ("N" ?ں) | ||
| 155 | ("M" ?ّ) | ||
| 156 | ("1" ?۱) | ||
| 157 | ("2" ?۲) | ||
| 158 | ("3" ?۳) | ||
| 159 | ("4" ?۴) | ||
| 160 | ("5" ?۵) | ||
| 161 | ("6" ?٦) | ||
| 162 | ("7" ?۷) | ||
| 163 | ("8" ?۸) | ||
| 164 | ("9" ?۹) | ||
| 165 | ("0" ?۰) | ||
| 166 | ("`" ?؏) | ||
| 167 | ("#" ?ؔ) | ||
| 168 | ("$" ?ؒ) | ||
| 169 | ("%" ?٪) | ||
| 170 | ("^" ?ؓ) | ||
| 171 | ("&" ?ؑ) | ||
| 172 | ("*" ?ؐ) | ||
| 173 | ("(" ?\)) | ||
| 174 | (")" ?\() | ||
| 175 | ("=" ?+) | ||
| 176 | (";" ?؛) | ||
| 177 | ("\\" ?÷) | ||
| 178 | ("|" ?x) | ||
| 179 | ("," ?،) | ||
| 180 | ("." ?۔) | ||
| 181 | ("<" ?ٗ) | ||
| 182 | (">" ?.) | ||
| 183 | ("?" ?؟) | ||
| 184 | ("[" ?﷽) | ||
| 185 | ("]" ?ﷲ) | ||
| 186 | ("{" ?ﷺ)) | ||
| 187 | |||
| 188 | ;;;;; Customizable Input Method | ||
| 189 | ;;;;;; Variable declarations | ||
| 190 | ;; We define these variables now so that byte-compiler does not complain. | ||
| 191 | ;; Later they will be changed to custom variables. Their value must be void | ||
| 192 | ;; here as otherwise cutsom will not initialize them to their standard value. | ||
| 193 | (defvar pakistan-urdu-prefixes) | ||
| 194 | (defvar pakistan-urdu-translations) | ||
| 195 | (defvar pakistan-urdu-diacritics-and-other-symbols) | ||
| 196 | (defvar pakistan-urdu-poetic-symbols) | ||
| 197 | (defvar pakistan-urdu-religious-symbols) | ||
| 198 | (defvar pakistan-urdu-use-roman-digits) | ||
| 199 | (defvar pakistan-extra-balochi-brahui-translations) | ||
| 200 | (defvar pakistan-extra-pashto-translations) | ||
| 201 | (defvar pakistan-extra-saraiki-hindko-translations) | ||
| 202 | (defvar pakistan-extra-sindhi-translations) | ||
| 203 | |||
| 204 | ;;;;;; Helper functions | ||
| 205 | (defun pakistan--define-quail-rules (rules &optional prefix package) | ||
| 206 | "Define translations for `urdu-custom' input method as determined by RULES. | ||
| 207 | PACKAGE determines the input method and defaults to `urdu-custom'. RULES is | ||
| 208 | the list of rules to define, see `quail-defrule' for details. If non-nil | ||
| 209 | PREFIX is a string that is prefixed to each string in RULES. PREFIX can be a | ||
| 210 | symbol in which case it is looked up in `pakistan-urdu-prefixes' to obtain the | ||
| 211 | string." | ||
| 212 | (setq package (or package "urdu-custom")) | ||
| 213 | (when (and prefix (symbolp prefix)) | ||
| 214 | (setq prefix (car (alist-get prefix pakistan-urdu-prefixes)))) | ||
| 215 | (dolist (rule rules) | ||
| 216 | (quail-defrule (concat prefix (car rule)) (cadr rule) package))) | ||
| 217 | |||
| 218 | (defun pakistan--define-numeral-translations (&optional package) | ||
| 219 | "Define translations to translate digits to arabic digits. | ||
| 220 | Translations are for PACKAGE which defaults to `urdu-custom'." | ||
| 221 | (pakistan--define-quail-rules | ||
| 222 | '(("0" ?۰) | ||
| 223 | ("1" ?۱) | ||
| 224 | ("2" ?۲) | ||
| 225 | ("3" ?۳) | ||
| 226 | ("4" ?۴) | ||
| 227 | ("5" ?۵) | ||
| 228 | ("6" ?۶) | ||
| 229 | ("7" ?۷) | ||
| 230 | ("8" ?۸) | ||
| 231 | ("9" ?۹) | ||
| 232 | ("%" ?٪)) | ||
| 233 | nil package)) | ||
| 234 | |||
| 235 | (defun pakistan--set-numeral-translations (var val) | ||
| 236 | "VAR should be `pakistan-urdu-use-roman-digits' and VAL its value. | ||
| 237 | This is a setter function for the custom-variable." | ||
| 238 | (set-default-toplevel-value var val) | ||
| 239 | (if val | ||
| 240 | (pakistan--regenerate-translations) | ||
| 241 | (pakistan--define-numeral-translations))) | ||
| 242 | |||
| 243 | (defun pakistan--regenerate-translations () | ||
| 244 | "Regenerate the translations for urdu-custom input method." | ||
| 245 | (quail-select-package "urdu-custom") | ||
| 246 | (quail-install-map (list nil)) | ||
| 247 | (pakistan--define-quail-rules pakistan-urdu-translations) | ||
| 248 | (unless pakistan-urdu-use-roman-digits | ||
| 249 | (pakistan--define-numeral-translations)) | ||
| 250 | (pakistan--define-quail-rules | ||
| 251 | pakistan-urdu-diacritics-and-other-symbols 'diacritics) | ||
| 252 | (pakistan--define-quail-rules pakistan-urdu-poetic-symbols 'poetic) | ||
| 253 | (pakistan--define-quail-rules pakistan-urdu-religious-symbols 'religious) | ||
| 254 | (pakistan--define-quail-rules | ||
| 255 | pakistan-extra-balochi-brahui-translations 'balochi-brahui) | ||
| 256 | (pakistan--define-quail-rules pakistan-extra-pashto-translations 'pashto) | ||
| 257 | (pakistan--define-quail-rules | ||
| 258 | pakistan-extra-saraiki-hindko-translations 'saraiki-hindko) | ||
| 259 | (pakistan--define-quail-rules pakistan-extra-sindhi-translations 'sindhi)) | ||
| 260 | |||
| 261 | (defun pakistan--set-prefixes (var val) | ||
| 262 | "VAR should be `pakistan-urdu-prefixes' and VAL is the value to be set. | ||
| 263 | Setter function for `pakistan-urdu-prefixes'." | ||
| 264 | (set-default-toplevel-value var val) | ||
| 265 | (when (boundp 'pakistan-urdu-use-roman-digits) | ||
| 266 | (pakistan--regenerate-translations))) | ||
| 267 | |||
| 268 | (defun pakistan--make-setter (&optional prefix) | ||
| 269 | "Return the setter function. | ||
| 270 | The function adds rules to `urdu-custom' with PREFIX." | ||
| 271 | (lambda (var val) | ||
| 272 | (set-default-toplevel-value var val) | ||
| 273 | (if (boundp 'pakistan-urdu-use-roman-digits) | ||
| 274 | (pakistan--regenerate-translations) | ||
| 275 | (pakistan--define-quail-rules val prefix)))) | ||
| 276 | |||
| 277 | ;;;;;; Package definition | ||
| 278 | (quail-define-package | ||
| 279 | "urdu-custom" "Urdu" "اا" t | ||
| 280 | "Intuitive and customizable transl input method for Urdu. | ||
| 281 | By default this input method doesn't try to follow the common romanization of | ||
| 282 | Urdu very closely. The reason for this is allow to for input efficiency. It | ||
| 283 | works as follows: | ||
| 284 | |||
| 285 | 1) All lower case letters on QWERTY keyboard are translated to an urdu | ||
| 286 | character. When more than one Urdu letter corresponds to the same Roman | ||
| 287 | letter, the most common Urdu letter has been chosen. The frequency analysis | ||
| 288 | was done on the basis of Urdu word list at | ||
| 289 | https://github.com/urduhack/urdu-words/blob/master/words.txt As a result some | ||
| 290 | of the translations are: | ||
| 291 | h → ہ | ||
| 292 | s → س , c → ص | ||
| 293 | z → ز | ||
| 294 | |||
| 295 | 2) For the next common letter the uppercase English letter is used, e.g. | ||
| 296 | r → ر , R → ڑ | ||
| 297 | n → ن , N → ں | ||
| 298 | |||
| 299 | 3) The letter x is used for postfix completions. There are two subcases: | ||
| 300 | 3a) When more than two urdu letter map to the same roman letter, | ||
| 301 | e.g. | ||
| 302 | t → ت, T → ٹ , tx → ط , Tx → ۃ | ||
| 303 | h → ہ , H → ھ , hx → ح , Hx → ۂ | ||
| 304 | s → س , c → ص , sx → ش , S → ث , cx → چ | ||
| 305 | z → ز , Z → ض, zx → ذ , Zx → ظ | ||
| 306 | 3b) The urdu letters that are commonly romanized by a English letter + h | ||
| 307 | can be obtained by the same English letter + x i.e. | ||
| 308 | gx → غ , cx → چ, kx → خ , sx → ش | ||
| 309 | |||
| 310 | 4) Y → ژ is somewhat of an abberation. All four of z, Z, zx and Zx are | ||
| 311 | used by more common letters. Y is used for ژ because it is sometimes | ||
| 312 | pronounced close to Y for some European languages. | ||
| 313 | |||
| 314 | These translations can be changed by customizing `pakistan-urdu-translations'. | ||
| 315 | |||
| 316 | 5) o is used for prefix completion of diacrtics or اعر۱ب as well as some | ||
| 317 | poetic and religious symbols. The most common three diacritics are mapped to | ||
| 318 | oa → zabr (a for above) | ||
| 319 | ob → zer (b for below) | ||
| 320 | oo → pesh (o for the circle in pesh) | ||
| 321 | |||
| 322 | 6) The poetic symbols are also available under G (for غزل), while religious | ||
| 323 | symbols are also available under M (for مزہب). | ||
| 324 | |||
| 325 | 7) Characters from Balochi, Brahui Pashto, Saraiki and Sindhi which are not | ||
| 326 | part of Urdu alphabet can also be input. Each set of these sets correspond to | ||
| 327 | a different prefixes. See `pakistan-urdu-prefixes' for the prefixes. | ||
| 328 | |||
| 329 | The translations and the prefixes described above can be customized. Various | ||
| 330 | customization options can be found under the customization group | ||
| 331 | `pakistan-urdu-input'." | ||
| 332 | nil t t t t nil nil nil nil nil t) | ||
| 333 | |||
| 334 | ;;;;;; Customizations | ||
| 335 | (defgroup pakistan-urdu-input nil | ||
| 336 | "Customization group for Urdu input methods." | ||
| 337 | :group 'quail) | ||
| 338 | |||
| 339 | (defcustom pakistan-urdu-prefixes | ||
| 340 | '((diacritics "o") | ||
| 341 | (poetic "G") | ||
| 342 | (religious "M") | ||
| 343 | (balochi-brahui "B") | ||
| 344 | (pashto "P") | ||
| 345 | (sindhi "C") | ||
| 346 | (saraiki-hindko "X")) | ||
| 347 | "Prefixes for `urdu-custom' input method." | ||
| 348 | :set #'pakistan--set-prefixes | ||
| 349 | :type '(repeat (list symbol string)) | ||
| 350 | :version "30.1") | ||
| 351 | |||
| 352 | (defcustom pakistan-urdu-translations | ||
| 353 | '(("a" ?ا) | ||
| 354 | ("y" ?ی) | ||
| 355 | ("r" ?ر) | ||
| 356 | ("n" ?ن) | ||
| 357 | ("v" ?و) | ||
| 358 | ("m" ?م) | ||
| 359 | ("t" ?ت) | ||
| 360 | ("l" ?ل) | ||
| 361 | ("k" ?ک) | ||
| 362 | ("b" ?ب) | ||
| 363 | ("d" ?د) | ||
| 364 | ("h" ?ہ) | ||
| 365 | ("s" ?س) | ||
| 366 | ("H" ?ھ) | ||
| 367 | ("p" ?پ) | ||
| 368 | ("N" ?ں) | ||
| 369 | ("g" ?گ) | ||
| 370 | ("sx" ?ش) | ||
| 371 | ("j" ?ج) | ||
| 372 | ("T" ?ٹ) | ||
| 373 | ("f" ?ف) | ||
| 374 | ("cx" ?چ) | ||
| 375 | ("z" ?ز) | ||
| 376 | ("u" ?ع) | ||
| 377 | ("q" ?ق) | ||
| 378 | ("kx" ?خ) | ||
| 379 | ("e" ?ے) | ||
| 380 | ("E" ?ۓ) | ||
| 381 | ("hx" ?ح) | ||
| 382 | ("i" ?ئ) | ||
| 383 | ("R" ?ڑ) | ||
| 384 | ("tx" ?ط) | ||
| 385 | ("c" ?ص) | ||
| 386 | ("D" ?ڈ) | ||
| 387 | ("gx" ?غ) | ||
| 388 | ("A" ?آ) | ||
| 389 | ("Z" ?ض) | ||
| 390 | ("V" ?ؤ) | ||
| 391 | ("zx" ?ذ) | ||
| 392 | ("S" ?ث) | ||
| 393 | ("Zx" ?ظ) | ||
| 394 | ("Hx" ?ۂ) | ||
| 395 | ("ix" ?ء) | ||
| 396 | ("Tx" ?ۃ) | ||
| 397 | ("Y" ?ژ) | ||
| 398 | ("ax" ?أ) | ||
| 399 | ("." ?۔) | ||
| 400 | ("," ?،) | ||
| 401 | (";" ?؛) | ||
| 402 | ("?" ?؟)) | ||
| 403 | "Translations for Urdu characters and common punctuations." | ||
| 404 | :set (pakistan--make-setter) | ||
| 405 | :type '(repeat (list string character)) | ||
| 406 | :version "30.1") | ||
| 407 | |||
| 408 | (defcustom pakistan-urdu-diacritics-and-other-symbols | ||
| 409 | '(("a" ?َ) ;; zabar زبر | ||
| 410 | ("b" ?ِ) ;; zer زير | ||
| 411 | ("o" ?ُ) ;; pesh پيش | ||
| 412 | ("j" ?ْ) ;; jazam جزم | ||
| 413 | ("S" ?ّ) ;; tashdid تشدید | ||
| 414 | ("k" ?ٰ) ;; khari zabar کھڑی زبر | ||
| 415 | ("u" ?٘) ;; ulti jazm الٹی جزم | ||
| 416 | ("s" ?؎) | ||
| 417 | ("m" ?؏) | ||
| 418 | ("t" ?ؔ) | ||
| 419 | ("c" ?ؐ) | ||
| 420 | ("r" ?ؒ) | ||
| 421 | ("R" ?ؓ) | ||
| 422 | ("A" ?ؑ)) | ||
| 423 | "Translations to input Urdu diacrtics. | ||
| 424 | These are available under the prefix specified in `pakistan-urdu-prefixes'." | ||
| 425 | :set (pakistan--make-setter 'diacritics) | ||
| 426 | :type '(repeat (list string character)) | ||
| 427 | :version "30.1") | ||
| 428 | |||
| 429 | (defcustom pakistan-urdu-poetic-symbols | ||
| 430 | '(("s" ?؎) | ||
| 431 | ("m" ?؏) | ||
| 432 | ("t" ?ؔ)) | ||
| 433 | "Translation to input Urdu peotic symbols. | ||
| 434 | These are available under the prefix specified in `pakistan-urdu-prefixes'." | ||
| 435 | :set (pakistan--make-setter 'poetic) | ||
| 436 | :type '(repeat (list string character)) | ||
| 437 | :version "30.1") | ||
| 438 | |||
| 439 | (defcustom pakistan-urdu-religious-symbols | ||
| 440 | '(("s" ?ؐ) | ||
| 441 | ("r" ?ؒ) | ||
| 442 | ("R" ?ؓ) | ||
| 443 | ("a" ?ؑ) | ||
| 444 | ("A" ?ﷲ) | ||
| 445 | ("S" ?ﷺ)) | ||
| 446 | "Translation to input Urdu peotic symbols. | ||
| 447 | These are available under the prefix specified in `pakistan-urdu-prefixes'." | ||
| 448 | :set (pakistan--make-setter 'religious) | ||
| 449 | :type '(repeat (list string character)) | ||
| 450 | :version "30.1") | ||
| 451 | |||
| 452 | ;; I don't understand how many of these letters are pronounced. | ||
| 453 | ;; So better translations are welcome. | ||
| 454 | (defcustom pakistan-extra-balochi-brahui-translations | ||
| 455 | '(("v" ?ۏ) | ||
| 456 | ("y" ?ݔ) | ||
| 457 | ;; Brahui | ||
| 458 | ("l" ?ڷ)) | ||
| 459 | "Translations to input Balochi and Brahui letters not found in Urdu. | ||
| 460 | These are available under the prefix specified in `pakistan-urdu-prefixes'." | ||
| 461 | :set (pakistan--make-setter 'balochi-brahui) | ||
| 462 | :type '(repeat (list string character)) | ||
| 463 | :version "30.1") | ||
| 464 | |||
| 465 | (defcustom pakistan-extra-pashto-translations | ||
| 466 | '(("t" ?ټ) | ||
| 467 | ("d" ?ډ) | ||
| 468 | ("r" ?ړ) | ||
| 469 | ("n" ?ڼ) | ||
| 470 | ("s" ?ښ) | ||
| 471 | ("R" ?ږ) | ||
| 472 | ("h" ?څ) | ||
| 473 | ("H" ?ځ)) | ||
| 474 | "Translations to input Pashto letters not found in Urdu. | ||
| 475 | These are available under the prefix specified in `pakistan-urdu-prefixes'." | ||
| 476 | :set (pakistan--make-setter 'pashto) | ||
| 477 | :type '(repeat (list string character)) | ||
| 478 | :version "30.1") | ||
| 479 | |||
| 480 | (defcustom pakistan-extra-sindhi-translations | ||
| 481 | '(("k" ?ڪ) | ||
| 482 | ("j" ?ڄ) | ||
| 483 | ("t" ?ٺ) | ||
| 484 | ("T" ?ٽ) | ||
| 485 | ("tx" ?ٿ) | ||
| 486 | ("b" ?ٻ) | ||
| 487 | ("B" ?ڀ) | ||
| 488 | ("r" ?ڙ) | ||
| 489 | ("d" ?ڌ) | ||
| 490 | ("D" ?ڏ) | ||
| 491 | ("dx" ?ڊ) | ||
| 492 | ("Dx" ?ڍ) | ||
| 493 | ("h" ?ڃ) | ||
| 494 | ("c" ?ڇ) | ||
| 495 | ("p" ?ڦ) | ||
| 496 | ("n" ?ڻ) | ||
| 497 | ("g" ?ڳ) | ||
| 498 | ("G" ?ڱ)) | ||
| 499 | "Translations to input Sindhi letters not found in Urdu. | ||
| 500 | These are available under the prefix specified in `pakistan-urdu-prefixes'." | ||
| 501 | :set (pakistan--make-setter 'sindhi) | ||
| 502 | :type '(repeat (list string character)) | ||
| 503 | :version "30.1") | ||
| 504 | |||
| 505 | (defcustom pakistan-extra-saraiki-hindko-translations | ||
| 506 | '(("b" ?ٻ) | ||
| 507 | ("h" ?ڄ) | ||
| 508 | ("g" ?ڳ) | ||
| 509 | ("d" ?ݙ) | ||
| 510 | ("n" ?ݨ) | ||
| 511 | ;; Hindko | ||
| 512 | ("r" ?ݬ) | ||
| 513 | ("v" ?ڨ) | ||
| 514 | ("N" ?ݩ) | ||
| 515 | ("V" ?ٷ)) | ||
| 516 | "Translations to input Saraiki letters not found in Urdu. | ||
| 517 | These are available under the prefix specified in `pakistan-urdu-prefixes'." | ||
| 518 | :set (pakistan--make-setter 'saraiki-hindko) | ||
| 519 | :type '(repeat (list string character)) | ||
| 520 | :version "30.1") | ||
| 521 | |||
| 522 | (defcustom pakistan-urdu-use-roman-digits | ||
| 523 | nil | ||
| 524 | "Whether urdu-custom input method should use roman digits." | ||
| 525 | :set #'pakistan--set-numeral-translations | ||
| 526 | :type 'boolean | ||
| 527 | :version "30.1") | ||
| 528 | |||
| 529 | ;;;; Sindhi Input Methods | ||
| 530 | ;;;;; Keyboard | ||
| 531 | ;; Layout taken from https://www.branah.com/sindhi | ||
| 532 | (quail-define-package | ||
| 533 | "sindhi-keyboard" "Sindhi" "سِ" t | ||
| 534 | "Input method for Sindhi. | ||
| 535 | Uses keyboard layout from https://www.branah.com/sindhi ." | ||
| 536 | nil t t t t nil nil nil nil nil t) | ||
| 537 | |||
| 538 | (quail-define-rules | ||
| 539 | ("q" ?ق) | ||
| 540 | ("w" ?ص) | ||
| 541 | ("e" ?ي) | ||
| 542 | ("r" ?ر) | ||
| 543 | ("t" ?ت) | ||
| 544 | ("y" ?ٿ) | ||
| 545 | ("u" ?ع) | ||
| 546 | ("i" ?ڳ) | ||
| 547 | ("o" ?و) | ||
| 548 | ("p" ?پ) | ||
| 549 | ("a" ?ا) | ||
| 550 | ("s" ?س) | ||
| 551 | ("d" ?د) | ||
| 552 | ("f" ?ف) | ||
| 553 | ("g" ?گ) | ||
| 554 | ("h" ?ه) | ||
| 555 | ("j" ?ج) | ||
| 556 | ("k" ?ڪ) | ||
| 557 | ("l" ?ل) | ||
| 558 | ("z" ?ز) | ||
| 559 | ("x" ?خ) | ||
| 560 | ("c" ?ط) | ||
| 561 | ("v" ?ڀ) | ||
| 562 | ("b" ?ب) | ||
| 563 | ("n" ?ن) | ||
| 564 | ("m" ?م) | ||
| 565 | ("Q" ?َ) | ||
| 566 | ("W" ?ض) | ||
| 567 | ("E" ?ِ) | ||
| 568 | ("R" ?ڙ) | ||
| 569 | ("T" ?ٽ) | ||
| 570 | ("Y" ?ث) | ||
| 571 | ("U" ?غ) | ||
| 572 | ("I" ?ھ) | ||
| 573 | ("O" ?ُ) | ||
| 574 | ("P" ?ڦ) | ||
| 575 | ("A" ?آ) | ||
| 576 | ("S" ?ش) | ||
| 577 | ("D" ?ڊ) | ||
| 578 | ("F" ?ڦ) | ||
| 579 | ("G" ?ً) | ||
| 580 | ("H" ?ح) | ||
| 581 | ("J" ?ٍ) | ||
| 582 | ("K" ?ۡ) | ||
| 583 | ("L" ?:) | ||
| 584 | ("Z" ?ذ) | ||
| 585 | ("X" ?ّ) | ||
| 586 | ("C" ?ظ) | ||
| 587 | ("V" ?ء) | ||
| 588 | ("B" ?ٻ) | ||
| 589 | ("N" ?ڻ) | ||
| 590 | ("M" ?۾) | ||
| 591 | ("1" ?۱) | ||
| 592 | ("2" ?۲) | ||
| 593 | ("3" ?۳) | ||
| 594 | ("4" ?۴) | ||
| 595 | ("5" ?۵) | ||
| 596 | ("6" ?٦) | ||
| 597 | ("7" ?۷) | ||
| 598 | ("8" ?۸) | ||
| 599 | ("9" ?۹) | ||
| 600 | ("0" ?۰) | ||
| 601 | ("`" ?’) | ||
| 602 | ("-" ?ڏ) | ||
| 603 | ("=" ?ڌ) | ||
| 604 | ("~" ?‘) | ||
| 605 | ("@" ?ى) | ||
| 606 | ("#" ?ؔ) | ||
| 607 | ("$" ?ؒ) | ||
| 608 | ("%" ?٪) | ||
| 609 | ("^" ?ؓ) | ||
| 610 | ("&" ?۽) | ||
| 611 | ("*" ?ؤ) | ||
| 612 | ("(" ?\)) | ||
| 613 | (")" ?\() | ||
| 614 | ("[" ?ڇ) | ||
| 615 | ("]" ?چ) | ||
| 616 | ("{" ?ڃ) | ||
| 617 | ("}" ?ڄ) | ||
| 618 | (";" ?ک) | ||
| 619 | ("'" ?ڱ) | ||
| 620 | ("\\" ?ڍ) | ||
| 621 | (":" ?؛) | ||
| 622 | ("|" ?ٺ) | ||
| 623 | ("," ?،) | ||
| 624 | ("/" ?ئ) | ||
| 625 | ("<" ?“) | ||
| 626 | (">" ?”) | ||
| 627 | ("?" ?؟)) | ||
| 628 | |||
| 629 | |||
| 630 | ;;;; Pashto Input Methods | ||
| 631 | ;;;;; Keyboard | ||
| 632 | (quail-define-package | ||
| 633 | "pashto-keyboard" "Pashto" "پ" t | ||
| 634 | "Input method for Pashto. | ||
| 635 | Uses keyboard layout from https://www.branah.com/pashto ." | ||
| 636 | nil t t t t nil nil nil nil nil t) | ||
| 637 | |||
| 638 | (quail-define-rules | ||
| 639 | ("q" ?ض) | ||
| 640 | ("w" ?ص) | ||
| 641 | ("e" ?ث) | ||
| 642 | ("r" ?ق) | ||
| 643 | ("t" ?ف) | ||
| 644 | ("y" ?غ) | ||
| 645 | ("u" ?ع) | ||
| 646 | ("i" ?ه) | ||
| 647 | ("o" ?خ) | ||
| 648 | ("p" ?ح) | ||
| 649 | ("a" ?ش) | ||
| 650 | ("s" ?س) | ||
| 651 | ("d" ?ی) | ||
| 652 | ("f" ?ب) | ||
| 653 | ("g" ?ل) | ||
| 654 | ("h" ?ا) | ||
| 655 | ("j" ?ت) | ||
| 656 | ("k" ?ن) | ||
| 657 | ("l" ?م) | ||
| 658 | ("z" ?ۍ) | ||
| 659 | ("x" ?ې) | ||
| 660 | ("c" ?ز) | ||
| 661 | ("v" ?ر) | ||
| 662 | ("b" ?ذ) | ||
| 663 | ("n" ?د) | ||
| 664 | ("m" ?ړ) | ||
| 665 | ("Q" ?ْ) | ||
| 666 | ("W" ?ٌ) | ||
| 667 | ("E" ?ٍ) | ||
| 668 | ("R" ?ً) | ||
| 669 | ("T" ?ُ) | ||
| 670 | ("Y" ?ِ) | ||
| 671 | ("U" ?َ) | ||
| 672 | ("I" ?ّ) | ||
| 673 | ("O" ?څ) | ||
| 674 | ("P" ?ځ) | ||
| 675 | ("A" ?ښ) | ||
| 676 | ("S" ?ﺉ) | ||
| 677 | ("D" ?ي) | ||
| 678 | ("F" ?پ) | ||
| 679 | ("G" ?أ) | ||
| 680 | ("H" ?آ) | ||
| 681 | ("J" ?ټ) | ||
| 682 | ("K" ?ڼ) | ||
| 683 | ("L" ?ة) | ||
| 684 | ("Z" ?ظ) | ||
| 685 | ("X" ?ط) | ||
| 686 | ("C" ?ژ) | ||
| 687 | ("V" ?ء) | ||
| 688 | ("B" ?) | ||
| 689 | ("N" ?ډ) | ||
| 690 | ("M" ?ؤ) | ||
| 691 | ("1" ?۱) | ||
| 692 | ("2" ?۲) | ||
| 693 | ("3" ?۳) | ||
| 694 | ("4" ?۴) | ||
| 695 | ("5" ?۵) | ||
| 696 | ("6" ?۶) | ||
| 697 | ("7" ?۷) | ||
| 698 | ("8" ?۸) | ||
| 699 | ("9" ?۹) | ||
| 700 | ("0" ?۰) | ||
| 701 | ("`" ?) | ||
| 702 | ("~" ?÷) | ||
| 703 | ("@" ?٬) | ||
| 704 | ("#" ?٫) | ||
| 705 | ("%" ?٪) | ||
| 706 | ("^" ?×) | ||
| 707 | ("&" ?«) | ||
| 708 | ("*" ?») | ||
| 709 | ("_" ?ـ) | ||
| 710 | ("[" ?ج) | ||
| 711 | ("]" ?چ) | ||
| 712 | ("{" ?\[) | ||
| 713 | ("}" ?\]) | ||
| 714 | (";" ?ک) | ||
| 715 | ("'" ?ګ) | ||
| 716 | ("\"" ?؛) | ||
| 717 | ("|" ?٭) | ||
| 718 | ("," ?و) | ||
| 719 | ("." ?ږ) | ||
| 720 | ("<" ?،) | ||
| 721 | (">" ?.) | ||
| 722 | ("?" ?؟)) | ||
| 723 | |||
| 724 | ;;; End Matter | ||
| 725 | (provide 'pakistan) | ||
| 726 | ;;; pakistan.el ends here | ||