花配列は冨樫雅文氏が考案した仮名入力用のすぐれたキーボード配列です。
参照:
花のくに
Windows の IME や Unix などで, ローマ字かな変換を再定義してやることにより 花配列が使えるようにしてみたので, 設定のしかたをこのページで紹介します。
ローマ字カスタマイズによる方法は制約もありますが, キー入力をさしかえるプログラムを使った場合のような相性の問題が発生しない点が優れています。
以下は特に断りない限り, いずれも日本のキーボード(JIS X 6002 準拠)を使うことを前提にしています。 米国キーボード (ANSI INCITS 154-1988, 以下 ANSI 配列と略す) にも対応している場合はその旨を断ります。
(2002-11-07 追記) MS-IME と ATOK については制約が大きいので, よりオリジナルに忠実に花配列を使いたい人のために, 簡単なキー入力をさしかえプログラムを試作してみました。 自作プログラム集 のページからどうぞ。
目次
MS-IME のローマ字カスタマイズ機能は, テキストファイルからの読み込みができない, アルファベット以外の文字がカスタマイズできない, など, 使いものにならないので, ActivePerl を使って直接レジストリを書きかえます。 Perl のインストールのしかたについては, 附: Perl を用意する (Windows) を参照してください。 レジストリの位置やフォーマットはバージョンにより異なりますが, このスクリプトでは自動判別しています。 対応バージョンは IME97, IME98, IME2000 および IME2002 (XP用)以降に対応しています。
Perl スクリプトのダウンロードはこちら → hana-msime.pl
上のスクリプトを引数なしに実行するか, またはエクスプローラ上から REG ファイルを実行したあと, MS-IME 2000 以上の場合はプロパティを表示し, 「ローマ字設定」のコンボボックスから 「Hana」を選べば MS-IME で花配列が使えるようになります。
IME98 や IME97 の場合は, ローマ字設定を選択するユーザーインターフェースがないので, レジストリを手で書きかえます。 レジストリエディタ(regedit)で, [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ime\Japan\IME98\StyleList\MS-IME] (IME97 では [HKEY_CURRENT_USER\Software\Microsoft\Ime\msime97\StyleList\MS-IME]) の defRoma の値を Hana に変更します。 その後, IME のプロパティダイアログを表示して, 何も指定せずに OK を押せば変更が反映されます。
ANSI 配列のキーボードを使っている場合は Perl スクリプトの引数に ansi (小文字) を指定してください。 直接レジストリをかきかえず, いったん reg ファイルに書きだしたい人は, out オプションをつけて,
perl hana-msime.pl out > hana-msime.reg
のようにリダイレクトしてください。
なお, Perl を使わず, 直接 REG ファイルを使いたい方は, 下のファイルを使ってください (いずれも JIS キーボード用)。
残念ながら, この方法ですべてのキーがカスタマイズできるわけではなく, 「,./[]-=」などのキーは常にデフォルトの設定になってしまうようです (ただし d, d. などはちゃんと定義できる)。 花配列の場合, 「、」と「。」が逆になるのはやむを得ないとあきらめるにしても, 「め」が入力できないのは困るので, 上のスクリプトでは, かわりに「^」で(ANSI 配列では「d\」で) 入力できるようにしてあります。 また, ANSI 配列で長音符号を入力する場合は「-」を使ってください。
ATOK のローマ字カスタマイズは, 定義をテキストファイルに書き出すことはできるが読み込むことができず, ユーザーの定義していないキーが勝手に定義され, しかも「m」と「n」がカスタマイズできないというどうしようもないものです。 さいわいスタイルファイルはテキスト(といっても 16進ダンプですが)なので, MS-IME の場合とおなじように, Perl でスタイルファイルを作ってやります。
動作のチェックは ATOK12 および ATOK14 で行いましたが, Perl スクリプトは ATOK13 でも動くと思います。 (hana-atok12.sty をスタイルコンバートしてもいいかも)
スクリプトはちょっと長いので, 別置きにします → hana-atok.pl
ATOK のスタイルファイルが直接ほしい人はこちら → hanaatok12.sty (ATOK12) hanaatok14.sty (ATOK14)
ATOK14 のインストールされているディレクトリが "\Program Files\JustSystem\ATOK14" だとすると, このスクリプトを使って,
perl hana-atok.pl "\Program Files\JustSystem\ATOK14\atok14.sty" > hanaatok14.sty
を実行することによって, 花配列用のスタイルファイルができあがります。 ANSI 配列を使っている場合は, ansi (小文字) をつけて,
perl hana-atok.pl ansi "\Program Files\JustSystem\ATOK14\atok14.sty" > hanaatok14.sty
のように指定してください。
ATOK12 でも同様に ("\JUST\ATOK12" にインストールされている場合)
perl hana-atok.pl \JUST\ATOK12\ATOK.STY > hanaatok12.sty
を実行します。
あとは, ATOK のプロパティから「キー・ローマ字・色」のタブを選んで, スタイルの「追加」ボタンを押し, 「既存スタイルファイルの追加」を選びます。| スタイル名 | 花 |
| スタイルファイル | hana.sty (ディレクトリを正しく指定すること) |
を指定して, OK を押すとスタイル一覧に「花」が追加されるので, それをクリックして「スタイルの選択」ボタンを押します。
残念ながら, ATOK にも MS-IME と同様の問題があります。 すなわち「,./[]」を再定義することができません。 このスクリプトでは, MS-IME と同様, 「^」(ANSI 配列では「=」) で「め」が入力できるようにしてあります。 また ANSI 配列で長音符号を入力する場合も MS-IME と同様「-」を使ってください。
ATOKX のスタイルファイルは /var/locale/ja/atokserver/users/ユーザー名/ の下にありますが, 基本的に ATOK12 と同じ構造をしているので, 「ローマ字=」の行を, 上の ATOK12 用の .sty ファイルのものにさしかえてやれば, 同様に花配列が使えるようになります。
なお, ATOK のところで紹介した Perl スクリプトは Shift_JIS に依存しているので, そのままでは使えません。 要注意。
VJE-Delta 4.0 は MS-IME や ATOK に較べると非常に柔軟なカスタマイズができます。 ユーザーインターフェースもすぐれており, 変更は *.rom というテキストファイルに保存されます。 NICOLA や TUT-Code ほかの *.rom ファイルが組み込みずみになっています。
VJE-Delta 用の *.rom ファイルを用意しました → hana.rom
全く同じファイルで JIS X 6002 配列と ANSI 配列の両方に対応します。
これを VJE の USR\DEFAULT ディレクトリにコピーします。 それから VJE のプロパティダイアログを開き, スタイルタブを選択, 新しいスタイルを作成して「花配列」と名付けます。 今作ったスタイルを選択し, 「ローマ字入力」(または「かな入力」)のコンボボックスから 「花」を選んで OK を押せば, 以後花配列が使えるようになります。
動作は Windows 2000 + VJE-Delta 4.0 上で確認しました。
なお, VJE-Delta 3.0 や 2.5 にもローマ字カスタマイズ機能はありますが, 濁点の処理がうまくいかないため, 花配列は使えないようです。
WXG については, 太田純さんの grtdump というユーティリティがあり, ローマ字配列を一括で定義できるようです。 また, 松茸もローマ字配列の定義が自由にできるようですが, いずれも私は持っていないので試していません。
Canna は柔軟なローマ字定義ができます。 花配列用のキー定義は, 別に置きました →hana.kpdef
(必要最小限のキーしか定義してないので注意)
$ mkromdic hana.kpdef
で, hana.cbp を作ります。 gcc を使っていて, cpp が 「unterminated string」うんぬんのエラーを出す場合は,
$ mkromdic -traditional hana.kpdef
とするとうまくいきます。 ANSI 配列で使う場合には, (cpp と同じやり方で) ASCII を define してやります。
mkromdic がうまくいくと, hana.cbp (拡張子は異なるかも) ができるので, あとは ~/.canna を書きかえて,
(setq romkana-table "hana.cbp") (setq break-into-roman nil)
などとします。
なお, ~/.canna に他のいろいろな定義がされていて, そのためにうまく動かない場合があります。 特に defsymbol で「?, ?. ?/ ?\\」などの補助テーブルを設定している場合は, これを削除する必要があります。
~/.canna はクライアント側の設定なので, すでに動いているアプリケーションプログラムに変更を反映するには, プログラムを再起動するなどの処置を行う必要があります。 (Emacs で canna.el を使っている場合は, 再起動しなくても M-x canna-reset で反映します)
Canna と異なり, Wnn はクライアントによって設定ファイルが異なります
(kinput2 では ccdef, uum では uumrc, etc.)。
参照: OMRON サポート・Wnn シリーズ FAQ: 入力・変換
ここでは最小限のキーを定義した
Emacs の「たまご」用の定義ファイルを作ってみました
→egg-hana.el
(上記の Canna 用の hana.kpdef を Perl で変換したものですがスクリプトは省略)
ANSI 配列では上のファイルの its-defrule で使っている 「@」と「:」をそれぞれ「[」と「'」に置換してください。
使用するにはこれを M-x byte-compile-file し, load-path の通ったディレクトリに egg-hana.elc を置いて, ~/.emacs で
(load "egg-hana")
と書いておきます。 一時的に花配列を使うには, C-x RET C-h または M-x its:select-hana を実行します。 デフォルトのキーボード配列として使用するには, ~/.emacs に
(setq-default its:*current-map* (its:get-mode-map "hana")) (its:select-hana)
と記述します。
SKK はローマ字かな変換に強く依存した入力システムで, それ以外の配列に対応させるためにはいろいろと手をくわえてやる必要がありますが, カスタマイズできる部分が多いので, 花配列に対応させることはさして難しくありません(AZIK などは実装困難)。 花配列自身はシフトキーが不要なので, SKK の特徴である, シフトを使った変換開始点指定も問題なく動作します。 (送り仮名開始点の指定のほうもある程度動きますが, 後述のようにいささか問題があります)
SKK OpenLab の Daredevil SKK (ddskk) 11.3 以降に附属している NICOLA-DDSKK プログラムを使って花配列を実装してみました。 ただし実際には NICOLA 用の機能本体は使わず, 手を抜くために skk-kanagaki-util.el の中の濁点の処理のみを利用しています。 NICOLA-DDSKK に依存しないように改造することも難しくないでしょう。
skk 用の花配列 Emacs Lisp ファイルはこちらです → skk-hana.el
動作は SKK 12.2.1 で確認しました。 (skk 11.4 の古い設定ファイル もあります)
まず上記 SKK OpenLab から ddskk (必要に応じて APEL および辞書も。 詳細は上記サイトの SKK Manual と 中島幹夫氏のページ を参照) をダウンロードして, 展開・インストールします。 ddskk の nicola ディレクトリでも make install を走らせます。
あとは, skk-hana.el をコンパイルして(しなくてもいいですが), load-path の通ったディレクトリに置き, ~/.skk に
(load "skk-hana")
と書けば完成です。 ANSI 配列で使う場合には, load する前に (setq skk-hana-ansi t) と書いてください。
SKK ではローマ字かな変換で使用しないキー(q,Q,l,L,x,X,/,\,@,$) を特別な目的に使っていますが, これらの一部は花配列では通常のかな入力に使うので, skk-hana.el では次のようにキーマップを変更しています。
| 機能 | キーわりあて | ||
|---|---|---|---|
| SKK | SKK-花 | (同ANSI 配列) | |
| 片仮名トグル | q | [ | ] |
| 変換開始点の指定 | Q | Q | |
| ラテン文字 | l | L | |
| 全角ラテン文字 | L | dL | |
| 前候補 | x | - | |
| 辞書から削除 | X | ] | ` |
| abbrev変換 | / | ' | & |
| コード入力 | \ | d\ | |
| 今日の日付 | @ | ` | } |
| コード表示 | $ | $ | |
Q, L, および ` を使っているのは, 「q(ょ)・l(゛)・@(ー)」で始まる語がないためです。 前候補にも l を使ったほうがよかったかもしれません。 単独の濁点の入力をあきらめれば, 「l」と「L」にオリジナルどおりのキーをわりあてることも不可能ではありません。
「h(ん)」も使えるかと思ったのですが, 送り仮名のはじめに使われるので, あきらめました。
また, オリジナルの SKK では「zl」で「→」などを入力できますが, skk-hana.el では以下のキーを定義しています。 (ANSI 配列では dd@, dd: のかわりに dd[, dd' を使用) 「・」は dh でも入力できるので, 意味ないかもしれません。
| 文字 | ゎ | ゐ | ゑ | ヵ | ヶ | ← | ↓ | ↑ | → | ‥ | … | ・ | 『 | 』 | 〜 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SKK標準 | xwa | xwi | xwe | xka | xke | zh | zj | zk | zl | z, | z. | z/ | z[ | z] | z- |
| skk-hana.el | ddv | ddn | dd\ | dds | ddw | ddh | ddj | ddk | ddl | dd, | dd. | dd/ | dd@ | dd: | dd- |
現状の skk-hana.el の一番の問題は, 「仰ぐ・見ず・感じ・飛べ」 のように送り仮名が濁音の場合に, シフトを使って送り仮名開始を指定できないことです。 むろん (setq skk-auto-okuri-process t) すればこの問題は回避できますが, SKK らしさが損なわれてしまいます。
この問題を解消するため, skk-hana.el では NICOLA-DDSKK の送り仮名機能を使っています。 送り仮名の 1字めまでを入力したところで 「-」を押すと, ポイントの左側の字を送り仮名開始文字と見なして変換します (例: 「▽かんじ(SPC) → 漢字」, 「▽かんじ- → 感じ」)。
もう一つの問題は,
インクリメンタルサーチで直接入力している時に濁点を入力すると,
そこで検索が終了してしまう点です。
これは kanagaki-util 側の問題なので, 修正しません。
濁音仮名の検索が必要な場合には▽モードを使って入力してください。
(2005-01-31 追記: 現在の SKK ではこの問題は解消されています)
本来の SKK ではかなモードから出ずに入力できる「:;?」などの記号が, skk-hana.el では latin モードにはいらないと入力できなくなっているのが 使いづらいと感じる人もあるでしょうが, その場合は適当に skk-rom-kana-rule-list を定義してやってください。
ほかに, 左側に 「か・さ・た・は」 行の仮名があると単独の濁点が直接入力できない問題もあります。 (「だくてん」と入力して変換すればいい) もっともこれは本来のローマ字入力の場合も同じですが……
Windows 上の IME はローマ字カスタマイズ機能のあるものが多いのですが, 1個か 2個のキーを追加・変更することしか想定せずに設計されているものが多く, すべてのキーの配列を変更しようとすると, 使いづらかったり, 変更がきかなかったりする場合が多いようです。 したがって, MS-IME や ATOK を使っている場合は IME のユーザーインターフェースにはたよらずに, Perl スクリプトで一括設定する必要があります。
Windows には標準では Perl が用意されていないので, ここでは ActiveState の ActivePerl を使います。