LoginSignup
1
1

この記事の概要

Windows や Ubuntu で普段使いをしているときに、カーソルキーに手を持っていくのがめんどくさくないですか?わざわざ右下まで手を持っていかなければいけません。そこで、vim のようにカーソルキーを設定する方法 を紹介したいと思います。
Windows と Ubuntu の GUI を普段両方使うことがあるので、ここで情報をまとめておきたいと思います。

この記事の対象者・おすすめの人

[Requirements]

  • Windows / Mac / Ubuntu の使用者
  • vim のようなカーソルキー設定が欲しい人

[Preference]

  • (私のような) HHKB の使用者
  • キーボードを自分好みに魔改造したい方

主題

概要

  1. 自分の設定するキーコードを理解する
  2. 設定したいキーコードをキーバインドのファイルに書き込む
  3. 保存、適用する
  4. 起動時に自動で変更が適用されるように設定する

いずれにしても以上の手順で試せばよい。

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 特有のキーの配置を知ることができたので,これを参照する.
(ちなみにリンクが切れていたのでこちらでもキー配置画像を転載させていただきます.)
image.png
ここで,私の場合は International 4 を Mode_switch として left_control にするべく設定.

3. Complex Modification を確認

2 で設定が終わったら,ここでやることは

  1. 英数・かなキーを toggle 方式にする
  2. 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 ファイルを作成して以下の内容を記す。

.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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1