DDSKK の入力モード切り替えを変換/無変換キーで行う

一度体に馴染んだ操作方法というのは簡単に変えることができないものです。その一つに、 IME の on/off 切り替えを変換/無変換キーで行うというものがあります。

変換/無変換キーという何に使えばよいのかよくわからないキーが押しやすいところにあることはパソコンを使い始めた当初から感じていました。しかし、これに間違えて触れてしまうと日本語入力がおかしくなるので (別におかしくなるわけではないのですが当時はそう感じていました) 、パソコンを使うときはこのキーには触らないというのが自分ルールでした。

そのキーを IME の on/off の切り替えに使うと便利だという記事を見かけたのは 5 年ほど前になります。それを実際に試してみたところ、ローマ字混じりの日本語が信じられないほど楽に打てて感動したのを今でもよく覚えています。

それからというもの、自分にとってこのキー設定は Ctrl キーと CapsLock キーを入れ替えるのと同じぐらい重要なもので、新しいパソコンを使う際には必ずこの設定を行っています。

で、タイトルの内容に戻るのですが、 Emacs で DDSKK を使う際にネックになったのがこの設定です。そもそも C-j はインデント付きの改行として使っていたのでモード変更に C-j を使うのは気に入らなかったし、変換/無変換キーも余っているので是非ここにモード変更を割り当てたいと思いました。変換/無変換キーを Shift キーにするというアイデアもあるようですが、それには SandS で事足ります (SandS 便利だからもっと流行ればいいのに…) 。

そこでその設定を行うために以下のコードを書きました。

SKK には 3 つ以上のモードがありますが、そのために様々なキーを用意するのも嫌ですし覚えるのもしんどいので、モードは全て変換/無変換キーに割り当てたいと考えました。そこでモードは以下のようなキー割り当てとなっています (唯一 SKK モードへの以降だけは全角/半角キーを使用していますが、ファイルを開くときに SKK モードを起動するように設定すればほとんど使用することはありません) 。

キー モード
全角/半角キー SKK モード
変換キー かな/カナモード (トグル)
無変換キー アスキーモード
SHift + 変換キー 半角カナモード
Shift + 無変換キー 全英モード

また、自分用の設定として、 AZIK の設定が加えてあります。 AZIK を使用しないのであれば skk-azik-load-hooks の関数定義とその add-hook は必要ないはずです。

あまりにも特殊な設定ですが、 SKK のモード変更のキーを変更をしたい人 (たとえそれが変換/無変換キーでなくても) の参考になれば幸いです。