skk48に名乗りを上げたとおり、普段は skk
を使っているのだけれども、
私は単なるskkではなく、 azik
を使っている。
azikは簡単に言うと、日本語ローマ字入力(qwertyを想定)に特化したskkの拡張で、 以下のような便利なマッピングになっている。
- 長音(ー)は小指が遠いので「:」で入力できる
- 促音も二回重ねるのが面倒なので「;」で入力できる
- 日本語は「子音+an(晩餐はb + an, s + anとか)」、「子音+in(新品はs + in, p + in)」のように
子音 + 母音 + n
からなる語が多く含まれるので、「子音 + zで子音+az」「子音 + kで子音+in」といった感じに、少ないキータイプで入力することが可能になる。(なので、az
ik
でazik
) - さらに拡張で「
ds
でです
」「ms
でます
」のように、さらに簡易にするマッピングもされている(自分はあまりこれは使ってない)
詳細については、公式サイトを見てほしい。 http://hp.vector.co.jp/authors/VA002116/azik/azikinfo.html
ところで、われらがemacsの ddskk
にもazik用の設定が搭載されているのだが、
なぜかそのマッピングの中に tU
が、 っ
にわりあてられている。
そのため、よく入力中に、意図せず っ
が入力されてしまう問題が発生していた。
例えば「疲れた」や「積む」のような「つ」から始まる感じを入力しようとして、「▽っかれた」のように頭が つ
ではなく っ
になってしまう人がいたら同じ症状だと思う。おそらく意識せず Tu
と打とうとして、 TU
とか tU
と入力しているはず。
いろいろ試して以下の設定で改善することが確認できた。 私も長年、そもそも何がおきているかわからずに困っていたのだけれど、もし同様に困っている人いたら参考になれば幸いである。
(leaf ddskk
:straight t
:bind
(("C-x C-j" . skk-mode)
("C-x j" . skk-mode))
:init
(defvar dired-bind-jump nil) ; dired-xがC-xC-jを奪うので対処しておく
:custom
(skk-use-azik . t) ; AZIKを使用する
(skk-azik-keyboard-type . 'jp106) ;
:hook
(skk-azik-load-hook . my/skk-azik-disable-tU)
:preface
(defun my/skk-azik-disable-tU ()
"ddskkのazikモードが`tU'を`つ'として扱うのを抑制する."
(setq skk-rule-tree (skk-compile-rule-list
skk-rom-kana-base-rule-list
(skk-del-alist "tU" skk-rom-kana-rule-list)))))
内容の解説
基本的にドキュメントを読む限り、 skk-rom-kana-rule-list
にユーザ独自の設定は入れるので、
そこから消せばよいはずなのだが、再コンパイルしないとだめだったのでそのようにしている。
ちなみに、 skk-del-alist
は skk-rom-kana-rule-list
から不要なのを削除するための便利な関数である。追加したい場合は普通に append
すればよい。
参考: http://mail.ring.gr.jp/skk/200106/msg00009.html
また、普通なら leaf
なり use-package
なりの :config
ブロックに設定すればよいのだけど、
ロード後の処理の影響からかazikの設定に上書きされてしまっているように見えたので、
skk-azikの中で最後に呼ばれる skk-azik-load-hook
を使って、自前のルール修正関数を呼ぶようにしている。
printデバッグしてみたら、 :config
がそもそも呼ばれてなかったようにも見えたので
もうすこし上手いやりかたがあるのかもしれない。
関連記事
- init.elの大掃除
- Corfuでispellのエラーが出たので対処
- Emacsサマーフェスで登壇してきた
- Emacs 30で導入される予定のおもしろい機能の紹介
- Emacs 29で導入される予定のおもしろい機能の紹介
Share