;; -*- Coding: iso-2022-7bit -*-
;;
;; mac-im greek and cyrillic convertion
;;
;;   Copyright (C) 2004  MURAMATSU Atsushi
;;     version 0.2   2004/07/03

(setq mac-im-to-japanese-translate (make-hash-table))

;; this is for translating Yen mark to Backslash
(puthash 2213 ?\\ mac-im-to-japanese-translate)
(mapc
 (lambda (pair)
   (let ((internal (decode-char 'ucs (car pair)))
	 (char (cadr pair)))
     (puthash internal char mac-im-to-japanese-translate)))
 '(
   ;; jisx0208
   (#xa2 ?$B!q(B)
   (#xa3 ?$B!r(B)
   (#xa7 ?$B!x(B)
   (#xa8 ?$B!/(B)
   (#xac ?$B"L(B)
   (#xb0 ?$B!k(B)
   (#xb1 ?$B!^(B)
   (#xb4 ?$B!-(B)
   (#xb6 ?$B"y(B)
   (#xd7 ?$B!_(B)
   (#xf7 ?$B!`(B)
   (#x391 ?$B&!(B)
   (#x392 ?$B&"(B)
   (#x393 ?$B&#(B)
   (#x394 ?$B&$(B)
   (#x395 ?$B&%(B)
   (#x396 ?$B&&(B)
   (#x397 ?$B&'(B)
   (#x398 ?$B&((B)
   (#x399 ?$B&)(B)
   (#x39a ?$B&*(B)
   (#x39b ?$B&+(B)
   (#x39c ?$B&,(B)
   (#x39d ?$B&-(B)
   (#x39e ?$B&.(B)
   (#x39f ?$B&/(B)
   (#x3a0 ?$B&0(B)
   (#x3a1 ?$B&1(B)
   (#x3a3 ?$B&2(B)
   (#x3a4 ?$B&3(B)
   (#x3a5 ?$B&4(B)
   (#x3a6 ?$B&5(B)
   (#x3a7 ?$B&6(B)
   (#x3a8 ?$B&7(B)
   (#x3a9 ?$B&8(B)
   (#x3b1 ?$B&A(B)
   (#x3b2 ?$B&B(B)
   (#x3b3 ?$B&C(B)
   (#x3b4 ?$B&D(B)
   (#x3b5 ?$B&E(B)
   (#x3b6 ?$B&F(B)
   (#x3b7 ?$B&G(B)
   (#x3b8 ?$B&H(B)
   (#x3b9 ?$B&I(B)
   (#x3ba ?$B&J(B)
   (#x3bb ?$B&K(B)
   (#x3bc ?$B&L(B)
   (#x3bd ?$B&M(B)
   (#x3be ?$B&N(B)
   (#x3bf ?$B&O(B)
   (#x3c0 ?$B&P(B)
   (#x3c1 ?$B&Q(B)
   (#x3c3 ?$B&R(B)
   (#x3c4 ?$B&S(B)
   (#x3c5 ?$B&T(B)
   (#x3c6 ?$B&U(B)
   (#x3c7 ?$B&V(B)
   (#x3c8 ?$B&W(B)
   (#x3c9 ?$B&X(B)
   (#x401 ?$B''(B)
   (#x410 ?$B'!(B)
   (#x411 ?$B'"(B)
   (#x412 ?$B'#(B)
   (#x413 ?$B'$(B)
   (#x414 ?$B'%(B)
   (#x415 ?$B'&(B)
   (#x416 ?$B'((B)
   (#x417 ?$B')(B)
   (#x418 ?$B'*(B)
   (#x419 ?$B'+(B)
   (#x41a ?$B',(B)
   (#x41b ?$B'-(B)
   (#x41c ?$B'.(B)
   (#x41d ?$B'/(B)
   (#x41e ?$B'0(B)
   (#x41f ?$B'1(B)
   (#x420 ?$B'2(B)
   (#x421 ?$B'3(B)
   (#x422 ?$B'4(B)
   (#x423 ?$B'5(B)
   (#x424 ?$B'6(B)
   (#x425 ?$B'7(B)
   (#x426 ?$B'8(B)
   (#x427 ?$B'9(B)
   (#x428 ?$B':(B)
   (#x429 ?$B';(B)
   (#x42a ?$B'<(B)
   (#x42b ?$B'=(B)
   (#x42c ?$B'>(B)
   (#x42d ?$B'?(B)
   (#x42e ?$B'@(B)
   (#x42f ?$B'A(B)
   (#x430 ?$B'Q(B)
   (#x431 ?$B'R(B)
   (#x432 ?$B'S(B)
   (#x433 ?$B'T(B)
   (#x434 ?$B'U(B)
   (#x435 ?$B'V(B)
   (#x436 ?$B'X(B)
   (#x437 ?$B'Y(B)
   (#x438 ?$B'Z(B)
   (#x439 ?$B'[(B)
   (#x43a ?$B'\(B)
   (#x43b ?$B'](B)
   (#x43c ?$B'^(B)
   (#x43d ?$B'_(B)
   (#x43e ?$B'`(B)
   (#x43f ?$B'a(B)
   (#x440 ?$B'b(B)
   (#x441 ?$B'c(B)
   (#x442 ?$B'd(B)
   (#x443 ?$B'e(B)
   (#x444 ?$B'f(B)
   (#x445 ?$B'g(B)
   (#x446 ?$B'h(B)
   (#x447 ?$B'i(B)
   (#x448 ?$B'j(B)
   (#x449 ?$B'k(B)
   (#x44a ?$B'l(B)
   (#x44b ?$B'm(B)
   (#x44c ?$B'n(B)
   (#x44d ?$B'o(B)
   (#x44e ?$B'p(B)
   (#x44f ?$B'q(B)
   (#x451 ?$B'W(B)
   (#x2010 ?$B!>(B)
   (#x2015 ?$B!=(B)
   (#x2016 ?$B!B(B)
   (#x2018 ?$B!F(B)
   (#x2019 ?$B!G(B)
   (#x201c ?$B!H(B)
   (#x201d ?$B!I(B)
   (#x2020 ?$B"w(B)
   (#x2021 ?$B"x(B)
   (#x2025 ?$B!E(B)
   (#x2026 ?$B!D(B)
   (#x2030 ?$B"s(B)
   (#x2032 ?$B!l(B)
   (#x2033 ?$B!m(B)
   (#x203b ?$B"((B)
   (#x2103 ?$B!n(B)
   (#x212b ?$B"r(B)
   (#x2190 ?$B"+(B)
   (#x2191 ?$B",(B)
   (#x2192 ?$B"*(B)
   (#x2193 ?$B"-(B)
   (#x21d2 ?$B"M(B)
   (#x21d4 ?$B"N(B)
   (#x2200 ?$B"O(B)
   (#x2202 ?$B"_(B)
   (#x2203 ?$B"P(B)
   (#x2207 ?$B"`(B)
   (#x2208 ?$B":(B)
   (#x220b ?$B";(B)
   (#x2212 ?$B!](B)
   (#x221a ?$B"e(B)
   (#x221d ?$B"g(B)
   (#x221e ?$B!g(B)
   (#x2220 ?$B"\(B)
   (#x2227 ?$B"J(B)
   (#x2228 ?$B"K(B)
   (#x2229 ?$B"A(B)
   (#x222a ?$B"@(B)
   (#x222b ?$B"i(B)
   (#x222c ?$B"j(B)
   (#x2234 ?$B!h(B)
   (#x2235 ?$B"h(B)
   (#x223d ?$B"f(B)
   (#x2252 ?$B"b(B)
   (#x2260 ?$B!b(B)
   (#x2261 ?$B"a(B)
   (#x2266 ?$B!e(B)
   (#x2267 ?$B!f(B)
   (#x226a ?$B"c(B)
   (#x226b ?$B"d(B)
   (#x2282 ?$B">(B)
   (#x2283 ?$B"?(B)
   (#x2286 ?$B"<(B)
   (#x2287 ?$B"=(B)
   (#x22a5 ?$B"](B)
   (#x2312 ?$B"^(B)
   (#x2500 ?$B(!(B)
   (#x2501 ?$B(,(B)
   (#x2502 ?$B("(B)
   (#x2503 ?$B(-(B)
   (#x250c ?$B(#(B)
   (#x250f ?$B(.(B)
   (#x2510 ?$B($(B)
   (#x2513 ?$B(/(B)
   (#x2514 ?$B(&(B)
   (#x2517 ?$B(1(B)
   (#x2518 ?$B(%(B)
   (#x251b ?$B(0(B)
   (#x251c ?$B('(B)
   (#x251d ?$B(<(B)
   (#x2520 ?$B(7(B)
   (#x2523 ?$B(2(B)
   (#x2524 ?$B()(B)
   (#x2525 ?$B(>(B)
   (#x2528 ?$B(9(B)
   (#x252b ?$B(4(B)
   (#x252c ?$B(((B)
   (#x252f ?$B(8(B)
   (#x2530 ?$B(=(B)
   (#x2533 ?$B(3(B)
   (#x2534 ?$B(*(B)
   (#x2537 ?$B(:(B)
   (#x2538 ?$B(?(B)
   (#x253b ?$B(5(B)
   (#x253c ?$B(+(B)
   (#x253f ?$B(;(B)
   (#x2542 ?$B(@(B)
   (#x254b ?$B(6(B)
   (#x25a0 ?$B"#(B)
   (#x25a1 ?$B""(B)
   (#x25b2 ?$B"%(B)
   (#x25b3 ?$B"$(B)
   (#x25bc ?$B"'(B)
   (#x25bd ?$B"&(B)
   (#x25c6 ?$B"!(B)
   (#x25c7 ?$B!~(B)
   (#x25cb ?$B!{(B)
   (#x25ce ?$B!}(B)
   (#x25cf ?$B!|(B)
   (#x25ef ?$B"~(B)
   (#x2605 ?$B!z(B)
   (#x2606 ?$B!y(B)
   (#x2640 ?$B!j(B)
   (#x2642 ?$B!i(B)
   (#x266a ?$B"v(B)
   (#x266d ?$B"u(B)
   (#x266f ?$B"t(B)
))

(defun mac-im-insert (str)
  (defun mac-im-insert-internal (str len index)
    (when (< index len)
	(let ((jis (gethash (aref str index) mac-im-to-japanese-translate)))
	  (if jis (store-substring str index jis)))
	(mac-im-insert-internal str len (+ index 1))
      ))
  (mac-im-insert-internal str (length str) 0)
  (insert str)
  (setq mac-im-insert-text-length (length str)))
