カスタマイズ

出典: Uimwikija

目次

[編集] カスタマイズ方法

カスタマイズはuim-prefというGUI設定ツール、もしくは~/.uimファイルに自分で記述して行います。 ~/.uimファイルがない場合はsys-pkgdatadir/default.scmが読まれます。

uim-prefによる設定は~/.uim.d/customs以下のファイルに書き込まれますが、~/.uimに記述した設定はそれを上書きします。 uim-prefの設定を使う場合、~/.uimからuim-prefの設定と矛盾する記述を取り除いてください。

[編集] カスタマイズの注意点

[編集] ~/.uimから変更できない特別な設定

  • enable-lazy-loading?
  • enabled-im-list
  • installed-im-module-list

上記の変数に関する設定は、~/.uimに記述しても変更する事ができません。変更するにはuim-prefで設定するか、sys-pkgdatadir/installed-modules.scmを直接編集してください。

[編集] 文字コード

ファイル中の日本語はすべてEUC-JPで記述してください。例えばvimを使っているなら、ファイルの末尾あたりに

;; vim:ft=scheme:fenc=euc-jp

Emacsであれば

;; Local Variables:
;; mode: scheme
;; coding: euc-jp
;; End:

などと書いておくと便利かもしれません。

[編集] 記述ミス

記述に致命的な不備があっても、エラーメッセージなどを出さず、ただ無視されます。 それらは

$ cat ~/.uim | uim-sh -B

を実行すれば発見できるかもしれません。

[編集] 入力方式のカスタマイズ

[編集] 一般

基本的な書式

(require-module "モジュール名")
(define 変数名 値)
(define 変数名 値)
...

指定可能なモジュール名を取得するには、uim-shで以下を実行してください。

uim> installed-im-module-list

有効無効を指定する変数では、#tは有効、#fは無効を表します。

(define generic-use-candidate-window? #t)

任意の文字を指定できる変数では文字を"で囲む必要があります。

(define canna-segment-separator "|")

数字を指定する変数ではそのまま。

(define generic-candidate-op-count 1)

決められた文字列を指定する変数では文字列の先頭に'がつきます。

(define default-im-name 'anthy)

[編集] ホットキー

基本的な書式

(require-module "モジュール名")
(define-key キー変数名 '("キー名"))
(define-key キー変数名 '("キー名"))
...

キー名を複数指定する場合はスペースで区切ります。

(define-key generic-on-key? '("a" "b"))

また別のキー変数名を指定する事でキー指定を同期させる事ができます。

(define-key generic-on-key? '("a" "b"))
(define-key anthy-on-key? '(generic-on-key? "c"))

修飾キーは<>で囲みます。

(define-key generic-on-key? '("<Shift>a"))

また修飾キーを一般のキーとして使う時は_keyをつけます

(define-key generic-on-key? '("<Control>Alt_key"))

キー名の表記方法はuim-fep-Kオプションが役に立ちます。

[編集] キー名(抜粋)

[編集] 一般キー

uim Xmodmap
" " "space"
"up""Up"
"down""Down"
"left""Left"
"right""Right"
"home""Home"
"next""Next"
"prior""Prior"
"delete""Delete"
"end""End"
"insert""Insert"
"backspace""BackSpace"
"return""Return"
"tab""Tab"
"F1""F1"
"F35""F35"

[編集] 修飾キー

uim Xmodmap
"<Control>""Control_L" "Control_R"
"<Alt>""Alt_L" "Alt_R"
"<Shift>""Shift_L" "Shift_R"
"<Meta>""Meta_L" "Meta_R"
"<Super>""Super_L" "Super_R"
"<Hyper>""Hyper_L" "Hyper_R"

[編集] スペシャルキー

uim Xmodmap
"Multi_key""Multi_key"
"codeinput""Codeinput"
"single-candidate""SingleCandidate"
"multiple-candidate""MultipleCandidate"
"previous-candidate""PreviousCandidate"
"Mode_switch""Mode_switch"
"Kanji""Kanji"
"Muhenkan""Muhenkan"
"Henkan_Mode""Henkan_Mode"
"romaji""Romaji"
"hiragana""Hiragana"
"katakana""Katakana"
"hiragana-katakana""Hiragana_Katakana"
"zenkaku""Zenkaku"
"hankaku""Hankaku"
"zenkaku-hankaku""Zenkaku_Hankaku"
"touroku""Touroku"
"massyo""Massyo"
"kana-lock""Kana_Lock"
"kana-shift""Kana_Shift"
"eisu-shift""Eisu_Shift"
"eisu-toggle"Eisu_toggle"
"Private1
"Private30"

[編集] uim-anthy

[編集] 基本的な書式

(require-module "anthy")
(define 変数名 値)
(define 変数名 値)
...

[編集] Shift+アルファベットキーで大文字アルファベットを直接入力

ftp://ftp.linet.gr.jp/pub/Plamo/Plamo-4.2/contrib/FEP/

--- anthy.scm.orig
+++ anthy.scm
@@ -636,10 +636,7 @@
                                     (list (ja-wide key-str) (ja-wide key-str)
                                           (ja-wide key-str))))
              (ustr-insert-elem! (anthy-context-raw-ustr ac) key-str))
-           (let* ((key-str (charcode->string
-                            (if (= rule anthy-input-rule-kana)
-                                key
-                                (to-lower-char key))))
+           (let* ((key-str (charcode->string key))
                   (res (rk-push-key! rkc key-str)))
              (if res
                  (begin
@@ -1105,10 +1102,7 @@
                 (not (alphabet-char? key))
                 (not (string-find
                       (rk-expect rkc)
-                      (charcode->string
-                       (if (= rule anthy-input-rule-kana)
-                           key
-                           (to-lower-char key))))))
+                      (charcode->string key))))
            (let ((pend (rk-pending rkc))
                  (residual-kana (rk-push-key-last! rkc)))
              (if residual-kana
@@ -1132,10 +1126,7 @@
                                     (list (ja-wide key-str) (ja-wide key-str)
                                           (ja-wide key-str))))
              (ustr-insert-elem! raw-str key-str))
-           (let* ((key-str (charcode->string
-                            (if (= rule anthy-input-rule-kana)
-                                key
-                                (to-lower-char key))))
+           (let* ((key-str (charcode->string key))
                   (pend (rk-pending rkc))
                   (res (rk-push-key! rkc key-str)))
              (if (and res

[編集] 確定前入力文字がある状態でスペースを入力

http://pc10.2ch.net/test/read.cgi/linux/1135968795/581

--- anthy.scm.orig
+++ anthy.scm
@@ -1092,9 +1092,9 @@
    (ustr-cursor-move-end! raw-str))

    ;; modifiers (except shift) => ignore
-    ((and (modifier-key-mask key-state)
-      (not (shift-key-mask key-state)))
-    #f)
+;;    ((and (modifier-key-mask key-state)
+;;     (not (shift-key-mask key-state)))
+;;   #f)

    ((symbol? key)
     #f)

~/.uimに

(require-module "anthy")
(define ja-rk-rule (append '((((" ") . ())(" " " " " "))) ja-rk-rule))

で、修飾キー+SPC。


[編集] uim-skk

[編集] 基本的な書式

(require-module "skk")
(define 変数名 値)
(define 変数名 値)
...

[編集] 編集領域のビジュアルスタイルを独自のスタイルに

[編集] 基本的な書式
(require-module "skk")
(define skk-style-スタイル名
  '((変数名 . 値)
...
    (変数名 . 値)))
(define skk-style 'skk-style-スタイル名)
; 例
(require-module "skk")
(define skk-style-simple
  '((skk-preedit-attr-mode-mark            . preedit-none)
    (skk-preedit-attr-head                 . preedit-none)
    (skk-preedit-attr-okuri                . preedit-none)
    (skk-preedit-attr-pending-rk           . preedit-none)
    (skk-preedit-attr-conv-body            . preedit-none)
    (skk-preedit-attr-conv-okuri           . preedit-none)
    (skk-preedit-attr-conv-appendix        . preedit-none)
    (skk-preedit-attr-direct-pending-rk    . preedit-none)
    (skk-preedit-attr-child-beginning-mark . preedit-none)
    (skk-preedit-attr-child-end-mark       . preedit-none)
    (skk-preedit-attr-child-committed      . preedit-none)
    (skk-preedit-attr-child-dialog         . preedit-none)
    (skk-preedit-attr-dcomp                . preedit-none)
    (skk-child-context-beginning-mark      . "[")
    (skk-child-context-end-mark            . "]")
    (skk-show-cursor-on-preedit?           . #t)
    (skk-show-candidates-with-okuri?       . #f)))
(define skk-style 'skk-style-simple)
動作 変数名 指定できる値
モードマークskk-preedit-attr-mode-markpreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
▽モードの見出し語skk-preedit-attr-headpreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
再帰学習モードの送り仮名skk-preedit-attr-okuripreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
▽モードのローマ字プレフィックスskk-preedit-attr-pending-rkpreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
▼モードの見出し語skk-preedit-attr-conv-bodypreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
▼モードの送り仮名skk-preedit-attr-conv-okuripreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
skk-preedit-attr-conv-appendixpreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
ローマ字プレフィックスskk-preedit-attr-direct-pending-rkpreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
再帰学習エリアの先頭skk-preedit-attr-child-beginning-markpreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
再帰学習エリアの終わりskk-preedit-attr-child-end-markpreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
再帰学習エリアskk-preedit-attr-child-committedpreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
単語削除エリアskk-preedit-attr-child-dialogpreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
動的補完エリアskk-preedit-attr-dcomppreedit-none
preedit-reverse
preedit-underline
preedit-cursor
preedit-separator
再帰学習エリアの先頭を示す文字skk-child-context-beginning-mark"文字"
再帰学習エリアの終わりを示す文字skk-child-context-end-mark
▽モードで文字を入力している時にカーソルを表示するかskk-show-cursor-on-preedit?#t
#f
候補選択ウィンドウ中に表示される候補に送り仮名を付加するかskk-show-candidates-with-okuri?#t
#f

[編集] 変換候補の見出しキーを変更する

(require-module "skk")
(define skk-ddskk-like-heading-label-char-list '("a" "s" "d" "f" "j" "k" "l"))

[編集] 自動変換を始める文字を変更する

(require-module "skk")
(define skk-auto-start-henkan-keyword-list
  '("を" "、" "。" "." "," "?" "」" "!" ";" ":" ")" ";" ":" ")" "”"
    "】" "』" "》" "〉" "}" "]" "〕" "}" "]" "?" "." "," "!"))

[編集] KZIK(Kanji Zutto Ii Kanji)

http://ohac.pun.jp/old_pages/kzik.html

[編集] キャンセルした後に動的補完を表示しない

skk.scmに2箇所ある

;; don't clear dcomp (not compatible with ddskk's behavior)
;;(skk-reset-dcomp-word sc)

のコメントを外してください。

[編集] uim-prime

[編集] 基本的な書式

(require-module "prime")
(define キー変数名 '("キー名")
(define キー変数名 '("キー名")
...
動作 キー変数名
全角スペースprime-space-key?
半角スペースprime-altspace-key?

[編集] uim.el

[編集] IMのON/OFFでカーソルの色を変化させる

http://d.hatena.ne.jp/higepon/20061002/1159797987

;; uim-mode by higepon
;; ON/OFFでカーソルの色を変更。
;; ON時に必ず日本語入力モードにする
(defadvice uim-this-command-keys (around uim-send-zenkaku-hankaku)
  (setq ad-return-value `[zenkaku-hankaku]))
(defadvice uim-mode (around my-uim-mode)
  ad-do-it
  (set-face-background 'cursor (if ad-return-value "blue" "indian red"))
  (ad-activate-regexp "uim-send-zenkaku-hankaku")
  (uim-process-input)
  (ad-deactivate-regexp "uim-send-zenkaku-hankaku"))
(ad-activate-regexp "my-uim-mode")

[編集] その他

[編集] 編集領域の配色を独自配色に

[編集] 基本的な書式
(require "util.scm")
(define uim-color-配色名
  '((変数 . 値)
...
    (変数 . 値)))
(define uim-color 'uim-color-配色名)
; 例
(require "util.scm")
(define uim-color-mono
  '((reversed-preedit-foreground   . "white")
    (reversed-preedit-background   . "black")
    (separator-foreground          . "white")
    (separator-background          . "black")
    (reversed-separator-foreground . "white")
    (reversed-separator-background . "black")))
(define uim-color 'uim-color-mono)
動作 変数名 指定できる値
reversed-preedit-foreground"色名"
reversed-preedit-background
separator-foreground
separator-background
reversed-separator-foreground
reversed-separator-background

[編集] 3つ以上の入力方式を循環させるホットキーを追加する

;;
;; im-switching
;;

;; I think that current "im-switching by hotkey" feature is not
;; useful. So commented out them to avoid confusion of users.
;;   -- YamaKen 2005-02-01

;;(define-custom-group 'im-switching
;;                   (_ "Input method switching")
;;                   (_ "long description will be here."))
;;
;;(define-custom 'enable-im-switch #f
;;  '(global im-switching)
;;  '(boolean)
;;  (_ "Enable IM switching by hotkey")
;;  (_ "long description will be here."))
;;
;;(define-custom 'switch-im-key '("<Control>Shift_key" "<Shift>Control_key")
;;  '(global im-switching)
;;  '(key)
;;  (_ "IM switching key")
;;  (_ "long description will be here."))
;;
;;;; activity dependency
;;(custom-add-hook 'switch-im-key?
;;               'custom-activity-hooks
;;               (lambda ()
;;                 enable-im-switch))

scm/im-custom.scmから上記の部分のコメントを外してください。その後でuim-prefから設定すれば使えるようになります。

[編集] uimに新しいモジュールを追加する

uimアーカイブには含まれていないモジュールが色々と公開されています。どんなモジュールがあるかは、リンクページの「関係ソフトウェア」の項をどうぞ。

幾つか注意点あります。

インストール先に注意してください。 uimが/usr/lib下にインストールされているなら、モジュールも/usr/lib下にインストールする必要があります。

インストールが完了したら、uim-module-managerでuimのモジュールリストへ追加してください。例えばuim-festivalモジュールを追加するには

# uim-module-manager --register festival

後はuim-prefで「使用可能にする入力方式」の有効リストに入れましょう。

[編集] 変換用テーブルのカスタマイズ

[編集] ローマ字入力方式

[編集] 基本的な書式

(require "japanese.scm")
(set! ja-rk-rule (cons '(
  (("キー名") . ()) ("ひらがな入力モード" "カタカナ入力モード" "半角カタカナ入力モード")
 )
ja-rk-rule))

(require "japanese.scm")
(define ja-rk-rule (append '(
  ((("キー名") . ()) ("ひらがな入力モード" "カタカナ入力モード" "半角カタカナ入力モード"))
...
   ((("キー名") . ()) ("ひらがな入力モード" "カタカナ入力モード" "半角カタカナ入力モード")))
  ja-rk-rule)) 

スペースにはja-spaceja-alnum-spaceという専用の変数が用意されている。

(require "japanese.scm")
(define ja-space '("ひらがな入力モード "カタカナ入力モード" "半角カタカナ入力モード"))
(define ja-alnum-space '("半角英数入力モード" "全角英数入力モード"))

入力後、即座に確定するキーはja-direct-ruleという変数を使う。

(require "japanese.scm")
(set! ja-direct-rule (cons '(
 ("キー名" "文字")
 )
ja-direct-rule))

としてください。

[編集] 「。」を「.」、「、」を「,」としたい

(require "japanese.scm")
(define ja-rk-rule
  (append '(
            (((",") . ()) ("," "," ","))
            (((".") . ()) ("." "." "."))
            )
          ja-rk-rule))

[編集] 「/」を「・」、「\」を「¥」としたい

(require "japanese.scm")
(define ja-rk-rule
  (append '(
            ((("/") . ()) ("・" "・" "・"))
            ((("\\") . ()) ("¥" "¥" "¥"))
            )
          ja-rk-rule))

[編集] "z SPC"で全角スペースを入力する

これはuim-skkでのみ有効です。

(require-module "skk")
(define ja-rk-rule
  (append '(
    ((("z" " "). ())(" " " " " "))
    )
  ja-rk-rule))

[編集] MS-IME風ローマ字配列

(require "japanese.scm")
(define ja-rk-rule
  (append '(
            ((("c" "a"). ())("か" "カ" "カ"))
            ((("c" "i"). ())("し" "シ" "シ"))
            ((("c" "u"). ())("く" "ク" "ク"))
            ((("c" "e"). ())("せ" "セ" "セ"))
            ((("c" "o"). ())("そ" "ソ" "ソ"))
            ((("l" "y" "a"). ())("ゃ" "ャ" "ャ"))
            ((("l" "y" "i"). ())("ぃ" "ィ" "ィ"))
            ((("l" "y" "u"). ())("ゅ" "ュ" "ュ"))
            ((("l" "y" "e"). ())("ぇ" "ェ" "ェ"))
            ((("l" "y" "o"). ())("ょ" "ョ" "ョ"))
            ((("n" "'"). ())("ん" "ン" "ン"))
            ((("q" "a"). ())(("く" "ク" "ク") ("ぁ" "ァ" "ァ")))
            ((("q" "i"). ())(("く" "ク" "ク") ("ぃ" "ィ" "ィ")))
            ((("q" "u"). ())("く" "ク" "ク"))
            ((("q" "e"). ())(("く" "ク" "ク") ("ぇ" "ェ" "ェ")))
            ((("q" "o"). ())(("く" "ク" "ク") ("ぉ" "ォ" "ォ")))
            ((("q" "q"). ("q"))("っ" "ッ" "ッ"))
            ((("v" "y" "i"). ())(("う゛" "ヴ" "ヴ") ("ぃ" "ィ" "ィ")))
            ((("w" "y" "i"). ())("ゐ" "ヰ" "ィ"))
            ((("w" "y" "e"). ())("ゑ" "ヱ" "ェ"))
            ((("x" "n"). ())("ん" "ン" "ン"))
            ((("x" "x"). ("x"))("っ" "ッ" "ッ"))
            )
          ja-rk-rule))

[編集] ATOK風ローマ字配列

(require "japanese.scm")
(define ja-rk-rule
  (append '(
            ((("l" "y" "a"). ())("ゃ" "ャ" "ャ"))
            ((("l" "y" "i"). ())("ぃ" "ィ" "ィ"))
            ((("l" "y" "u"). ())("ゅ" "ュ" "ュ"))
            ((("l" "y" "e"). ())("ぇ" "ェ" "ェ"))
            ((("l" "y" "o"). ())("ょ" "ョ" "ョ"))
            ((("l" "k" "a"). ())("ヵ" "ヵ" "カ"))
            ((("l" "k" "e"). ())("ヶ" "ヶ" "ケ"))
            ((("l" "w" "a"). ())("ゎ" "ヮ" "ワ"))
            ((("n" "'"). ())("ん" "ン" "ン"))
            ((("w" "y" "i"). ())("ゐ" "ヰ" "ィ"))
            ((("w" "y" "e"). ())("ゑ" "ヱ" "ェ"))
            )
          ja-rk-rule))

[編集] Wnn風ローマ字配列

(require "japanese.scm")
(define ja-rk-rule
  (append '(
            ((("\\" "a"). ())("ぁ" "ァ" "ァ"))
            ((("\\" "i"). ())("ぃ" "ィ" "ィ"))
            ((("\\" "u"). ())("ぅ" "ゥ" "ゥ"))
            ((("\\" "e"). ())("ぇ" "ェ" "ェ"))
            ((("\\" "o"). ())("ぉ" "ォ" "ォ"))
            ((("\\" "k" "a"). ())("ヵ" "ヵ" "カ"))
            ((("\\" "k" "e"). ())("ヶ" "ヶ" "ケ"))
            ((("\\" "y" "a"). ())("ゃ" "ャ" "ャ"))
            ((("\\" "y" "u"). ())("ゅ" "ュ" "ュ"))
            ((("\\" "y" "o"). ())("ょ" "ョ" "ョ"))
            ((("g" "w" "a"). ())(("ぐ" "グ" "グ") ("ゎ" "ヮ" "ワ")))
            ((("g" "w" "u"). ())("ぐ" "グ" "グ"))
            ((("k" "w" "a"). ())(("く" "ク" "ク") ("ゎ" "ヮ" "ワ")))
            ((("k" "w" "u"). ())("く" "ク" "ク"))
            ((("l" "a"). ())("ら" "ラ" "ラ"))
            ((("l" "i"). ())("り" "リ" "リ"))
            ((("l" "u"). ())("る" "ル" "ル"))
            ((("l" "e"). ())("れ" "レ" "レ"))
            ((("l" "o"). ())("ろ" "ロ" "ロ"))
            ((("m" "m"). ("m"))("ん" "ン" "ン"))
            ((("n" "'"). ())("ん" "ン" "ン"))
            ((("t" "c" "h"). ("h" "c"))("っ" "ッ" "ッ"))
            ((("t" "s" "a"). ())(("つ" "ツ" "ツ") ("ぁ" "ァ" "ァ")))
            ((("t" "s" "i"). ())(("つ" "ツ" "ツ") ("ぃ" "ィ" "ィ")))
            ((("t" "s" "e"). ())(("つ" "ツ" "ツ") ("ぇ" "ェ" "ェ")))
            ((("t" "s" "o"). ())(("つ" "ツ" "ツ") ("ぉ" "ォ" "ォ")))
            ((("w" "i"). ())("ゐ" "ヰ" "ィ"))
            ((("w" "e"). ())("ゑ" "ヱ" "ェ"))
            ((("x" "/"). ())("/" "/" "/"))
            ((("x" "-"). ())("-" "-" "-"))
            ((("x" ","). ())("," "," ","))
            ((("x" "."). ())("." "." "."))
            ((("x" "~"). ())("~" "~" "~"))
            ((("x" "^"). ())("^" "^" "^"))
            ((("x" "\\"). ())("\" "\" "\\"))
            ((("x" "["). ())("[" "[" "["))
            ((("x" ";"). ())(";" ";" ";"))
            ((("x" ":"). ())(":" ":" ":"))
            ((("x" "]"). ())("]" "]" "]"))
            ((("x" "/"). ())("/" "/" "/"))
            ((("x" "d" "i"). ())(("で" "デ" "デ") ("ぃ" "ィ" "ィ")))
            ((("x" "d" "u"). ())(("ど" "ド" "ド") ("ぅ" "ゥ" "ゥ")))
            ((("x" "d" "e"). ())(("で" "デ" "デ") ("ぇ" "ェ" "ェ")))
            ((("x" "d" "o"). ())(("ど" "ド" "ド") ("ぉ" "ォ" "ォ")))
            ((("x" "t" "i"). ())(("て" "テ" "テ") ("ぃ" "ィ" "ィ")))
            ((("x" "w" "i"). ())(("う" "ウ" "ウ") ("ぃ" "ィ" "ィ")))
            ((("x" "w" "e"). ())(("う" "ウ" "ウ") ("ぇ" "ェ" "ェ")))
            ((("x" "w" "o"). ())(("う" "ウ" "ウ") ("ぉ" "ォ" "ォ")))
            )
          ja-rk-rule))

[編集] Canna風ローマ字配列

(require "japanese.scm")
(define ja-rk-rule
  (append '(
            ((("\\"). ())("¥" "¥" "\\"))
            ((("{"). ())("『" "『" "["))
            ((("}"). ())("』" "』" "]"))
            ((("@" "-"). ("/"))("-" "-" "-"))
            ((("@" "/"). ())("・" "・" "・"))
            ((("@" "\\"). ())("\" "\" "\\"))
            ((("@" ","). ())("," "," ","))
            ((("@" "."). ())("." "." "."))
            ((("@" "~"). ())("~" "~" "~"))
            ((("@" "|" "|"). ())("∥" "∥" ""))
            ((("@" "|"). ())("|" "|" "|"))
            ((("@" "3"). ())("…" "…" ""))
            ((("@" "2"). ())("‥" "‥" ""))
            ((("@" "("). ())("(" "(" "("))
            ((("@" ")"). ())(")" ")" ")"))
            ((("@" "["). ())("[" "[" "["))
            ((("@" "]"). ())("]" "]" "]"))
            ((("@" "{"). ())("{" "{" "{"))
            ((("@" "}"). ())("}" "}" "}"))
            ((("c" "a"). ())("か" "カ" "カ"))
            ((("c" "u"). ())("く" "ク" "ク"))
            ((("c" "o"). ())("こ" "コ" "コ"))
            ((("l" "a"). ())("ら" "ラ" "ラ"))
            ((("l" "i"). ())("り" "リ" "リ"))
            ((("l" "u"). ())("る" "ル" "ル"))
            ((("l" "e"). ())("れ" "レ" "レ"))
            ((("l" "o"). ())("ろ" "ロ" "ロ"))
            ((("m" "n"). ())("ん" "ン" "ン"))
            ((("n" "'"). ())("ん" "ン" "ン"))
            ((("q" "q"). ("q"))("っ" "ッ" "ッ"))
            ((("t" "c" "h"). ("h" "c"))("っ" "ッ" "ッ"))
            ((("w" "i"). ())("ゐ" "ヰ" "ィ"))
            ((("w" "e"). ())("ゑ" "ヱ" "ェ"))
            )
          ja-rk-rule))

[編集] VJE風ローマ字配列

(require "japanese.scm")
(define ja-rk-rule
  (append '(
            ((("c" "a"). ())("か" "カ" "カ"))
            ((("c" "i"). ())("し" "シ" "シ"))
            ((("c" "u"). ())(("き" "キ" "キ") ("ゅ" "ュ" "ュ")))
            ((("c" "e"). ())("せ" "セ" "セ"))
            ((("c" "o"). ())("そ" "ソ" "ソ"))
            ((("g" "w" "a"). ())(("ぐ" "グ" "グ") ("ゎ" "ヮ" "ワ")))
            ((("g" "w" "u"). ())("ぐ" "グ" "グ"))
            ((("k" "w" "a"). ())(("く" "ク" "ク") ("ゎ" "ヮ" "ワ")))
            ((("k" "w" "u"). ())("く" "ク" "ク"))
            ((("l" "a"). ())("ら" "ラ" "ラ"))
            ((("l" "i"). ())("り" "リ" "リ"))
            ((("l" "u"). ())("る" "ル" "ル"))
            ((("l" "e"). ())("れ" "レ" "レ"))
            ((("l" "o"). ())("ろ" "ロ" "ロ"))
            ((("n" "'"). ())("ん" "ン" "ン"))
            ((("q" "a"). ())(("く" "ク" "ク") ("ぁ" "ァ" "ァ")))
            ((("q" "i"). ())(("く" "ク" "ク") ("ぃ" "ィ" "ィ")))
            ((("q" "u"). ())("く" "ク" "ク"))
            ((("q" "e"). ())(("く" "ク" "ク") ("ぇ" "ェ" "ェ")))
            ((("q" "o"). ())(("く" "ク" "ク") ("ぉ" "ォ" "ォ")))
            ((("x" "x"). ("x"))("っ" "ッ" "ッ"))
            )
          ja-rk-rule))

[編集] Egg風ローマ字配列

ftp://ftp.linet.gr.jp/pub/Plamo/Plamo-4.2/contrib/FEP/

(require "japanese.scm")
(define ja-rk-rule
  (append '(
            ((("g" "s" "e"). ())(("つ" "ツ" "ツ") ("ぇ" "ェ" "ェ")))
            ((("g" "w" "u"). ())("ぐ" "グ" "グ"))
            ((("k" "w" "u"). ())("く" "ク" "ク"))
            ((("l" "a"). ())("ら" "ラ" "ラ"))
            ((("l" "i"). ())("り" "リ" "リ"))
            ((("l" "u"). ())("る" "ル" "ル"))
            ((("l" "e"). ())("れ" "レ" "レ"))
            ((("l" "o"). ())("ろ" "ロ" "ロ"))
            ((("n" "'"). ())("ん" "ン" "ン"))
            ((("w" "i"). ())("ゐ" "ヰ" "ィ"))
            ((("w" "e"). ())("ゑ" "ヱ" "ェ"))
            ((("x" "d" "i"). ())(("で" "デ" "デ") ("ぃ" "ィ" "ィ")))
            ((("x" "d" "u"). ())(("ど" "ド" "ド") ("ぅ" "ゥ" "ゥ")))
            ((("x" "d" "e"). ())(("で" "デ" "デ") ("ぇ" "ェ" "ェ")))
            ((("x" "d" "o"). ())(("ど" "ド" "ド") ("ぉ" "ォ" "ォ")))
            ((("x" "t" "i"). ())(("て" "テ" "テ") ("ぃ" "ィ" "ィ")))
            ((("x" "w" "i"). ())(("う" "ウ" "ウ") ("ぃ" "ィ" "ィ")))
            ((("x" "w" "e"). ())(("う" "ウ" "ウ") ("ぇ" "ェ" "ェ")))
            ((("x" "w" "o"). ())(("う" "ウ" "ウ") ("ぉ" "ォ" "ォ")))
            ((("z" "!"). ())("●" "●" ""))
            ((("z" "\""). ())("“" "“" ""))
            ((("z" "#"). ())("▲" "▲" ""))
            ((("z" "$"). ())("■" "■" ""))
            ((("z" "&"). ())("£" "£" ""))
            ((("z" "'"). ())("‘" "‘" ""))
            ((("z" "("). ())("【" "【" ""))
            ((("z" ")"). ())("】" "】" ""))
            ((("z" "~"). ())("¨" "¨" ""))
            ((("z" "="). ())("≠" "≠" ""))
            ((("z" "^"). ())("★" "★" ""))
            ((("z" "\\"). ())("\" "\" ""))
            ((("z" "|"). ())("∥" "∥" ""))
            ((("z" "`"). ())("´" "´" ""))
            ((("z" "@"). ())("▼" "▼" ""))
            ((("z" "{"). ())("〔" "〔" ""))
            ((("z" "+"). ())("±" "±" ""))
            ((("z" ";"). ())("゛" "゛" ""))
            ((("z" "*"). ())("×" "×" ""))
            ((("z" ":"). ())("゜" "゜" ""))
            ((("z" "}"). ())("〕" "〕" ""))
            ((("z" "<"). ())("≦" "≦" ""))
            ((("z" ">"). ())("≧" "≧" ""))
            ((("z" "?"). ())("∞" "∞" ""))
            ((("z" "_"). ())("∴" "∴" ""))
            ((("z" "1"). ())("○" "○" ""))
            ((("z" "2"). ())("▽" "▽" ""))
            ((("z" "3"). ())("△" "△" ""))
            ((("z" "4"). ())("□" "□" ""))
            ((("z" "5"). ())("◇" "◇" ""))
            ((("z" "6"). ())("☆" "☆" ""))
            ((("z" "7"). ())("◎" "◎" ""))
            ((("z" "8"). ())("¢" "¢" ""))
            ((("z" "9"). ())("♂" "♂" ""))
            ((("z" "0"). ())("♀" "♀" ""))
            ((("z" "b"). ())("°" "°" ""))
            ((("z" "c"). ())("〇" "〇" ""))
            ((("z" "d"). ())("ゝ" "ゝ" ""))
            ((("z" "f"). ())("〃" "〃" ""))
            ((("z" "g"). ())("‐" "‐" ""))
            ((("z" "m"). ())("″" "″" ""))
            ((("z" "n"). ())("′" "′" ""))
            ((("z" "p"). ())("〒" "〒" ""))
            ((("z" "q"). ())("《" "《" ""))
            ((("z" "r"). ())("々" "々" ""))
            ((("z" "s"). ())("ヽ" "ヽ" ""))
            ((("z" "t"). ())("〆" "〆" ""))
            ((("z" "v"). ())("※" "※" ""))
            ((("z" "w"). ())("》" "》" ""))
            ((("z" "x"). ())((":" ":" "") ("-" "-" "")))
            ((("z" "B"). ())("←" "←" ""))
            ((("z" "C"). ())("℃" "℃" ""))
            ((("z" "D"). ())("ゞ" "ゞ" ""))
            ((("z" "F"). ())("→" "→" ""))
            ((("z" "G"). ())("―" "―" ""))
            ((("z" "M"). ())("〓" "〓" ""))
            ((("z" "N"). ())("↓" "↓" ""))
            ((("z" "P"). ())("↑" "↑" ""))
            ((("z" "Q"). ())("〈" "〈" ""))
            ((("z" "R"). ())("仝" "仝" ""))
            ((("z" "S"). ())("ヾ" "ヾ" ""))
            ((("z" "T"). ())("§" "§" ""))
            ((("z" "V"). ())("÷" "÷" ""))
            ((("z" "W"). ())("〉" "〉" ""))
            ((("Z" "a"). ())("a" "a" ""))
            ((("Z" "b"). ())("b" "b" ""))
            ((("Z" "c"). ())("c" "c" ""))
            ((("Z" "d"). ())("d" "d" ""))
            ((("Z" "e"). ())("e" "e" ""))
            ((("Z" "f"). ())("f" "f" ""))
            ((("Z" "g"). ())("g" "g" ""))
            ((("Z" "h"). ())("h" "h" ""))
            ((("Z" "i"). ())("i" "i" ""))
            ((("Z" "j"). ())("j" "j" ""))
            ((("Z" "k"). ())("k" "k" ""))
            ((("Z" "l"). ())("l" "l" ""))
            ((("Z" "m"). ())("m" "m" ""))
            ((("Z" "n"). ())("n" "n" ""))
            ((("Z" "o"). ())("o" "o" ""))
            ((("Z" "p"). ())("p" "p" ""))
            ((("Z" "q"). ())("q" "q" ""))
            ((("Z" "r"). ())("r" "r" ""))
            ((("Z" "s"). ())("s" "s" ""))
            ((("Z" "t"). ())("t" "t" ""))
            ((("Z" "u"). ())("u" "u" ""))
            ((("Z" "v"). ())("v" "v" ""))
            ((("Z" "w"). ())("w" "w" ""))
            ((("Z" "x"). ())("x" "x" ""))
            ((("Z" "y"). ())("y" "y" ""))
            ((("Z" "z"). ())("z" "z" ""))
            )
          ja-rk-rule))

[編集] SKK風ローマ字配列

(require "japanese.scm")
(define ja-rk-rule
  (append '(
            ((("t" "h" "a"). ())(("て" "テ" "テ") ("ぁ" "ァ" "ァ")))
            ((("n" "'"). ())("ん" "ン" "ン"))
            ((("x" "x"). ("x"))("っ" "ッ" "ッ"))
            )
          ja-rk-rule))

[編集] T-Code風配列

(require "japanese.scm")
(require "tcode.scm")
(set! ja-rk-rule tcode-rule)

[編集] 無駄な子音を捨てない

ftp://ftp.linet.gr.jp/pub/Plamo/Plamo-4.2/contrib/FEP/

(require "japanese.scm")
(define ja-rk-rule-hoge
  (map
   (lambda (c)
     (list (cons (list c) ()) (list c c c)))
   '("b" "c" "d" "f" "g" "h" "j" "k" "l" "m"
     "p" "q" "r" "s" "t" "v" "w" "x" "y" "z"
     "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"
     "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z")))
(if (symbol-bound? 'ja-rk-rule-hoge)
    (set! ja-rk-rule (append ja-rk-rule-hoge ja-rk-rule)))

いんてrねt

※以前は map のところが mapcar だったが、scheme処理系が変わったためかmapcarがなくなったため変更。 上記について、FreeBSD のportsのuim-1.4.1_1で確認。