Subject: bug#10893: New input mode: bulgarian-new-phonetic

From: Йордан Миладинов <[email-masked]>
Date: Sun, 26 Feb 2012 22:50:59 +0200

Hello, everyone!

Here, in Bulgaria, a lot of people use the new bulgarian phonetic keyboard
layout. It was issued as a national standard (BDS) in 2006 but, oddly, it's
not yet supported by Emacs.
I'm using it too and it's always hard and uncomfy to use Emacs for writing
in Bulgarian, since one have to switch the layout to English for navigating
in the text and to Bulgarian to actually type letters.
That's why I made a patch to add the new phonetic layout as an input
method. Here the layout is commonly called 'New Bulgarian Phonetic' and
hence the name 'bulgarian-new-phonetic'.

I was advised to send the patch here on this email list. Also I already
applied for the FSF form for past and future changes.

I would be more than happy if you apply the patch. :)

Regards!
Yordan
=== modified file 'leim/quail/cyrillic.el'
--- old/leim/quail/cyrillic.el	2012-01-19 07:21:25 +0000
+++ new/leim/quail/cyrillic.el	2012-02-26 20:16:33 +0000
@@ -1236,6 +1236,126 @@
  ("." ?$,1(n(B)
  ("/" ?.))
 
+;; bulgarian-new-phonetic (as defined by BDS 5237:2006)
+;; contributed by Yordan Miladinov <[email-masked]>
+;; 2012-02-26
+
+(quail-define-package
+ "bulgarian-new-phonetic" "Bulgarian" "$,1(1(=(D(B"
+ nil
+ "Bulgarian New Phonetic keyboard layout, producing Unicode.
+
+This is the official Bulgarian phonetic keyboard layout, which was
+issued as a BDS (Bulgarian National Standard) in 2006.
+Pleaes refer to BDS 5237:2006 for more information.
+
+You can see the layout map here:
+http://en.wikipedia.org/wiki/File:Bulgarian_new_Phonetic_layout.svg
+
+The BDS phonetic layout replaces all the Latin letters with Bulgarian
+\(Cyrillic\) letters based on similarities in their pronunciation or
+look.
+
+The BDS layout also changes:
+# to ,Lp(B
+& to ,A'(B
+< to ,Y%(B
+> to ,Y4(B
+^ to ,F$(B
+_ to $(G!9(B
+and:
+[ to ,Lo(B
+\ to ,Ll(B
+] to ,Li(B
+` to ,Ln(B
+{ to ,LO(B
+| to $,1(}(B
+} to ,LI(B
+~ to ,LN(B
+
+You still can type these symbols this way:
+/# for #
+/& for &
+/< for <
+/> for >
+/^ for ^
+/_ for _
+and:
+/[ for [
+/\ for \
+/] for ]
+/` for `
+/{ for {
+/| for |
+/} for }
+/~ for ~
+
+Please note that, as the letters ',Li(B', ',Ll(B', ',Ln(B' and ',Lo(B' are attached to
+the ']', '\', '`' and '[' keys respectively, they are not affected by
+Caps Lock."
+nil t t t t nil nil nil nil nil t)
+
+;;  $,1(N(B  1! 2@ 3$,1uV(B 4$ 5% 6$,1tL(B 7,A'(B 8* 9( 0) -$,1rs(B =+ $,1(l(}(B
+;;      $,1(G(B  $,1(H(B  $,1(5(B  $,1(@(B  $,1(B(B  $,1(J(B  $,1(C(B  $,1(8(B  $,1(>(B  $,1(?(B  $,1(O(B  $,1(I(B
+;;       ,L0(B  $,1(A(B  $,1(4(B  $,1(D(B  $,1(3(B  $,1(E(B  $,1(9(B  $,1(:(B  $,1(;(B  :; '"
+;;        $,1(7(B  $,1(6(B  $,1(F(B  $,1(2(B  $,1(1(B  $,1(=(B  $,1(<(B  ,$,1r~(B .$,1r|(B /?
+
+(quail-define-rules
+ ("#" ?,Lp(B)
+ ("&" ?,A'(B)
+ ("/#" ?#)
+ ("/&" ?&)
+ ("/<" ?<)
+ ("/>" ?>)
+ ("/[" ?\[)
+ ("/\\" ?\\)
+ ("/]" ?\])
+ ("/^" ?^)
+ ("/_" ?_)
+ ("/`" ?`)
+ ("/{" ?{)
+ ("/|" ?|)
+ ("/}" ?})
+ ("/~" ?~)
+ ("<" ?$,1r~(B)
+ (">" ?$,1r|(B)
+ ("A" ?$,1(0(B) ("a" ?$,1(P(B)
+ ("B" ?$,1(1(B) ("b" ?$,1(Q(B)
+ ("C" ?$,1(F(B) ("c" ?$,1(f(B)
+ ("D" ?$,1(4(B) ("d" ?$,1(T(B)
+ ("E" ?$,1(5(B) ("e" ?$,1(U(B)
+ ("F" ?$,1(D(B) ("f" ?$,1(d(B)
+ ("G" ?$,1(3(B) ("g" ?$,1(S(B)
+ ("H" ?$,1(E(B) ("h" ?$,1(e(B)
+ ("I" ?$,1(8(B) ("i" ?$,1(X(B)
+ ("J" ?$,1(9(B) ("j" ?$,1(Y(B)
+ ("K" ?$,1(:(B) ("k" ?$,1(Z(B)
+ ("L" ?$,1(;(B) ("l" ?$,1([(B)
+ ("M" ?$,1(<(B) ("m" ?$,1(\(B)
+ ("N" ?$,1(=(B) ("n" ?$,1(](B)
+ ("O" ?$,1(>(B) ("o" ?$,1(^(B)
+ ("P" ?$,1(?(B) ("p" ?$,1(_(B)
+ ("Q" ?$,1(G(B) ("q" ?$,1(g(B)
+ ("R" ?$,1(@(B) ("r" ?$,1(`(B)
+ ("S" ?$,1(A(B) ("s" ?$,1(a(B)
+ ("T" ?$,1(B(B) ("t" ?$,1(b(B)
+ ("U" ?$,1(C(B) ("u" ?$,1(c(B)
+ ("V" ?$,1(2(B) ("v" ?$,1(R(B)
+ ("W" ?$,1(H(B) ("w" ?$,1(h(B)
+ ("X" ?$,1(6(B) ("x" ?$,1(V(B)
+ ("Y" ?$,1(J(B) ("y" ?$,1(j(B)
+ ("Z" ?$,1(7(B) ("z" ?$,1(W(B)
+ ("[" ?$,1(o(B)
+ ("\\" ?$,1(l(B)
+ ("]" ?$,1(i(B)
+ ("^" ?$,1tL(B)
+ ("_" ?$,1rs(B)
+ ("`" ?$,1(n(B)
+ ("{" ?$,1(O(B)
+ ("|" ?$,1(}(B)
+ ("}" ?$,1(I(B)
+ ("~" ?$,1(N(B))
+
 ;; From `Bulgarian-PHO.kmap for Yudit', Alexander Shopov
 ;; <[email-masked]>.