この記事の概要
Windows や Ubuntu で普段使いをしているときに、カーソルキーに手を持っていくのがめんどくさくないですか?わざわざ右下まで手を持っていかなければいけません。そこで、vim のようにカーソルキーを設定する方法 を紹介したいと思います。
Windows と Ubuntu の GUI を普段両方使うことがあるので、ここで情報をまとめておきたいと思います。
この記事の対象者・おすすめの人
[Requirements]
- Windows / Mac / Ubuntu の使用者
- vim のようなカーソルキー設定が欲しい人
[Preference]
- (私のような) HHKB の使用者
- キーボードを自分好みに魔改造したい方
主題
概要
- 自分の設定するキーコードを理解する
- 設定したいキーコードをキーバインドのファイルに書き込む
- 保存、適用する
- 起動時に自動で変更が適用されるように設定する
いずれにしても以上の手順で試せばよい。
Windows での設定方法
1. AutoHotkey を導入
AutoHotkey をダウンロード・インストールを実行.
2. AutoHotKey のスクリプトを書く
; 左 Ctrl キーの仮想キーコードをエイリアスしてるだけなので直書きでも OK
; ちなみに vk1D は無変換キーに対応
; 変換キーにしたい場合は vk1C
LCtrl := "vk1D"
; 左Ctrlキーとhjklキーの組み合わせ
LCtrl & h::Send, {Blind}{left}
LCtrl & j::Send, {Blind}{down}
LCtrl & k::Send, {Blind}{up}
LCtrl & l::Send, {Blind}{right}
3. スクリプトを指定して実行
あとは Optional でスタートアップのディレクトリにこのスクリプトを配置すると,いちいち起動時にスクリプトを起動して設定しなくても済む.
Mac での設定方法
1. Karabiner-Elements を導入
Karabiner-Elements からダウンロード・インストールを実行して,導入する.
2. Simple Modification を確認
HHKB など外部キーボードを使用している場合はここで HHKB が刺さっていることを確認.
IBUKISH LAB+ SELF-PROPELLED さんのブログで International という HHKB 特有のキーの配置を知ることができたので,これを参照する.
(ちなみにリンクが切れていたのでこちらでもキー配置画像を転載させていただきます.)
ここで,私の場合は International 4
を Mode_switch として left_control
にするべく設定.
3. Complex Modification を確認
2 で設定が終わったら,ここでやることは
- 英数・かなキーを toggle 方式にする
- Left ctrl + hjkl to arrow keys Vim
を設定する.
これらはそのままAdd predefined rule
から導入可能.便利.
4. (Optional) hjkl 以外に変更する場合
個別に編集することが可能.Edit
というマークがあるので,そこを開くと辞書型の設定ファイルが開かれるので,個別に編集をしてやればよい.ちなみに ;
を設定する場合は,semicolon
とするひつようがある.;
のままでは文字・記号として認識されないので注意.
ちなみに HHKB の左下のキーは grave_accent_and_tilde()
なので,私はこれを かな/英数
の toggle キーに設定している.
Ubuntu での設定方法
1. 自分の設定するキーコードを理解する
コマンドラインで以下のコマンドを叩く。
$ xev
すると、白いウィンドウが表示されて、マウスオーバーするとその座標情報を取得するし、キーを入力すればそのキーの情報を取得することができる。例えば、私の場合は 表示されたウィンドウが選択された状態で h
を押すと、以下のような表示を得られました。
なお、ここでは以下の出力と全く同じ表示である必要はありません。
$ KeyRelease event, serial 37, synthetic NO, window 0x3400001,
root 0x1c7, subw 0x0, time 3830646, (2231,638), root:(2351,752),
state 0x10, keycode 43 (keysym 0x68, h), same_screen YES,
XLookupString gives 1 bytes: (68) "h"
XFilterEvent returns: False
この表示から、h
キーは keycode 43
であることがわかる。
同様に、vim のカーソルキーとして h
, j
, k
, l
を押せばその値が得られる。
また、私の場合は無変換キーを一緒に押すことでカーソルとしたいと思います。例えば、HHKB の 無変換
キーと h
を一緒に押すことでカーソルとしたい場合、この一緒に使用するキーの keycode もメモしておきましょう。
2. 設定したいキーコードをキーバインドのファイルに書き込む
keycode XX = [キーを押した時] [Shift+キーを押した時] [Mode_switch+キーを押した時] [Mode_switch+Shift+キーを押した時]
参考程度に,私の場合は j
k
l
;
で設定したので以下の通り.;
を設定する場合は,semicolon
とするひつようがある.;
のままでは文字・記号として認識されないので注意.
clear Lock
remove Control = Mode_switch
keycode 44 = j J Left Left
keycode 45 = k K Down Down
keycode 46 = l L Up Up
keycode 47 = semicolon plus Right Right
3. 保存、適用する
$ sudo xmodmap ~/.Xmodmap
4. 起動時に自動で変更が適用されるように設定する
.xinputrc ファイルを作成して以下の内容を記す。
if [ -f ~/.xmodmap ] ;then
xmodmap ~/.modmap
fi
さいごに
HHKB で vim-like に設定するならどうせ無変換キーを Mode_switch キーに設定するんだから, h
j
k
l
よりも j
k
l
;
の方が手が自然に置けて使いやすくない?という vimmer としての悩み,みなさんありませんかね.
References
https://www.milkmemo.com/entry/ubuntu_cursor_idou
https://kenbeese.hatenablog.com/entry/20120214/title