aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRahguzar2023-10-29 17:14:02 +0100
committerEli Zaretskii2023-11-18 11:30:51 +0200
commit84e4bc6219af2c08097027d4b75043b23c1fcce6 (patch)
tree822f5baa36b9d3f9f38b9d553e6a34a9c47900ba
parent1c70458519b324c9403e8a9f57bd695fe39e8d2c (diff)
downloademacs-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.el726
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.
35Uses 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.
100Uses 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.
207PACKAGE determines the input method and defaults to `urdu-custom'. RULES is
208the list of rules to define, see `quail-defrule' for details. If non-nil
209PREFIX is a string that is prefixed to each string in RULES. PREFIX can be a
210symbol in which case it is looked up in `pakistan-urdu-prefixes' to obtain the
211string."
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.
220Translations 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.
237This 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.
263Setter 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.
270The 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.
281By default this input method doesn't try to follow the common romanization of
282Urdu very closely. The reason for this is allow to for input efficiency. It
283works as follows:
284
2851) All lower case letters on QWERTY keyboard are translated to an urdu
286character. When more than one Urdu letter corresponds to the same Roman
287letter, the most common Urdu letter has been chosen. The frequency analysis
288was done on the basis of Urdu word list at
289https://github.com/urduhack/urdu-words/blob/master/words.txt As a result some
290of the translations are:
291h → ہ
292s → س , c → ص
293z → ز
294
2952) For the next common letter the uppercase English letter is used, e.g.
296r → ر , R → ڑ
297n → ن , N → ں
298
2993) The letter x is used for postfix completions. There are two subcases:
3003a) When more than two urdu letter map to the same roman letter,
301e.g.
302t → ت, T → ٹ , tx → ط , Tx → ۃ
303h → ہ , H → ھ , hx → ح , Hx → ۂ
304s → س , c → ص , sx → ش , S → ث , cx → چ
305z → ز , Z → ض, zx → ذ , Zx → ظ
3063b) The urdu letters that are commonly romanized by a English letter + h
307can be obtained by the same English letter + x i.e.
308gx → غ , cx → چ, kx → خ , sx → ش
309
3104) Y → ژ is somewhat of an abberation. All four of z, Z, zx and Zx are
311used by more common letters. Y is used for ژ because it is sometimes
312pronounced close to Y for some European languages.
313
314These translations can be changed by customizing `pakistan-urdu-translations'.
315
3165) o is used for prefix completion of diacrtics or اعر۱ب as well as some
317poetic and religious symbols. The most common three diacritics are mapped to
318oa → zabr (a for above)
319ob → zer (b for below)
320oo → pesh (o for the circle in pesh)
321
3226) The poetic symbols are also available under G (for غزل), while religious
323symbols are also available under M (for مزہب).
324
3257) Characters from Balochi, Brahui Pashto, Saraiki and Sindhi which are not
326part of Urdu alphabet can also be input. Each set of these sets correspond to
327a different prefixes. See `pakistan-urdu-prefixes' for the prefixes.
328
329The translations and the prefixes described above can be customized. Various
330customization 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.
424These 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.
434These 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.
447These 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.
460These 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.
475These 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.
500These 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.
517These 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.
535Uses 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.
635Uses 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