vi に慣れ親しんでる者としては,他のアプリケーションを使っている時でも カーソル移動の際についつい {hjkl} を押してしまう.ホームポジションから遠い位置にあるカーソルキーなんて使いたくない.HHKB Pro2 を使ってるなら なおの事.
そんならキー割り当ての変更か何かで対処しちまおう,と.でも流石に {hjkl} をそのままカーソルキーとしてマッピングするわけにはいかんので,例えば Ctrl+{hjkl} のようなもので代用しよう,と.そういうことで,xmodmap を使って実現することにした.
xmodmap(1) の EXPRESSION GRAMMAR の項を読むと,1 つのキーコードに対して最大 8 つ (事実上は最大 4 つ) のキーシンボルを割り当てることができ,modifier key なし,Shift 同時押し,Mode_switch 同時押し,Mode_switch + Shift 同時押しの場合のシンボルを割り当てられる,とある.この Mode_switch が HHKB Pro2 (HHK mode) ではどのキーに割り当てられているのかを知るべく,xmodmap -pke や xev の出力を見てみたが,キーコードが 93 (10 進) であることしか分からなかった.使われてないのかもしれない ?
ならば,俺が事実上使っていないキーを Mode_switch として割り当て,Mode_switch+{hjkl} でカーソル移動を実現すれば良いか,ということで,以下を ~/.Xmodmap として作成・保存.割り当てるキーには左◇キー (キーコード 131 (10 進)) を選択した.
! for vi-like cursor moving
keycode 131 = Mode_switch
keysym h = h H Left
keysym j = j J Down
keysym k = k K Up
keysym l = l L Right
それから,俺は kdm を使って KDE を起動してるんで,~/.xprofile から ~/.Xmodmap を読み込むように以下を追記.
if [ -f "${HOME}/.Xmodmap" ]
then
xmodmap "${HOME}/.Xmodmap"
fi
これで Fn+{;[/'} を使わずに済むようになった.どっちも同時押しという点では変わらないんだけどね.実際に今書きながら使ってみると,左◇キーは左小指よりも左親指の方が押しやすいかなー と思った.昔短期間ながら習ったピアノの指使いがこんな所で役立つとは….
いわゆる PageUp/PageDown を追加.vi では Ctrl+{bf} ということで以下のように定義.
keysym b = b B Prior
keysym f = f F Next
- キーシンボルが Prior/Next
- Next の対は Previous なんだろうと思ってたら実は Prior だった
という事を初めて知って驚いた.
lee sewoo
こんにちは。
私は韓国人であり、翻訳を使用して文を書いています。
Mode_switch +(hjkl)についての情報は本当に助けてくれたされています。
質問がありますが。
もしかしたら日本語Modeで正しく動作するかを知りたいです。
私は韓国語Modeで動作がされないため、解決方法を探していますが、
似ているだろうとセンガクドゥェソ質問いたします。
もう一度情報に感謝しています。
y-iihoshi
コメントをありがとうございます。
返信が遅れて申し訳ありません。
最近 xmodmap を使っていなかったので、今日調べてみました。
その結果、残念ながら、日本語modeでは正しく動作しませんでした。
動作確認環境:
kubuntu 9.10
ibus 1.2.0.20091014-1~ppa1~ja2
ibus-anthy 1.2.0.20090813-2ubuntu1~ppa2
anthy 9100h-0ubuntu2~ppa2
Input method が Mode_switch を non-modifier key として扱っているためではないか、
と私は推測しています。
(The reason may be the input method will treat Mode_switch as a non-modifier key, I think....)
lee sewoo
Thank you for your information again.
Happy new year.