79 lines
2.4 KiB
Plaintext
79 lines
2.4 KiB
Plaintext
|
;; unicode.mim -- Input method for Unicode characters by typing character code
|
||
|
;; Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009
|
||
|
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
||
|
;; Registration Number H15PRO112
|
||
|
|
||
|
;; This file is part of the m17n database; a sub-part of the m17n
|
||
|
;; library.
|
||
|
|
||
|
;; The m17n library is free software; you can redistribute it and/or
|
||
|
;; modify it under the terms of the GNU Lesser General Public License
|
||
|
;; as published by the Free Software Foundation; either version 2.1 of
|
||
|
;; the License, or (at your option) any later version.
|
||
|
|
||
|
;; The m17n library is distributed in the hope that it will be useful,
|
||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
;; Lesser General Public License for more details.
|
||
|
|
||
|
;; You should have received a copy of the GNU Lesser General Public
|
||
|
;; License along with the m17n library; if not, write to the Free
|
||
|
;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||
|
;; Boston, MA 02110-1301, USA.
|
||
|
|
||
|
(input-method t unicode)
|
||
|
|
||
|
(description (_"Input method for Unicode characters using hexadigits.
|
||
|
Type C-u followed by hexadecimal numbers [0-9A-Fa-f]
|
||
|
of a Unicode character code.
|
||
|
To finish and insert the resulting character, type a space.
|
||
|
|
||
|
If you type more than 5 hex digits and finish with space,
|
||
|
the result is empty and nothing at all is inserted.
|
||
|
"))
|
||
|
|
||
|
(title "UNICODE")
|
||
|
|
||
|
(variable
|
||
|
(prompt (_"Preedit prompt
|
||
|
Prompt string shown in the preedit area while typing hexadecimal numbers.")
|
||
|
"U+"))
|
||
|
(command
|
||
|
(start (_"Start Unicode
|
||
|
Start typing hexadecimal numbers of Unicode character.")
|
||
|
(C-U)))
|
||
|
|
||
|
(map
|
||
|
(starter
|
||
|
(start prompt))
|
||
|
|
||
|
(hex
|
||
|
(" " " ") ; The space key is used to commit
|
||
|
("0" "0") ("1" "1") ("2" "2") ("3" "3") ("4" "4")
|
||
|
("5" "5") ("6" "6") ("7" "7") ("8" "8") ("9" "9")
|
||
|
("A" "A") ("B" "B") ("C" "C") ("D" "D") ("E" "E") ("F" "F")
|
||
|
("a" "A") ("b" "B") ("c" "C") ("d" "D") ("e" "E") ("f" "F"))
|
||
|
|
||
|
(backspace
|
||
|
((BackSpace))))
|
||
|
|
||
|
(state
|
||
|
(init
|
||
|
(starter (set code 0) (set count 0) (shift uni-hex)))
|
||
|
|
||
|
(uni-hex
|
||
|
(hex (set this @-1)
|
||
|
(cond ((< @-1 ?A) (sub this 48))
|
||
|
(1 (sub this 55)))
|
||
|
(cond ((= @-1 0x0020) (set code code))
|
||
|
((> count 4) (set code 0))
|
||
|
(1 (set code (+ (* code 16) this))))
|
||
|
(set count (+ count 1))
|
||
|
(cond ((= @-1 0x0020)
|
||
|
(delete @<) (insert code) (shift init))))
|
||
|
(backspace (undo))))
|
||
|
|
||
|
;; Local Variables:
|
||
|
;; mode: lisp
|
||
|
;; End:
|