Windowsで「ホームポジションキーパー(hpk)」を使ったことがある方なら、
ホームポジションから手を動かさずにカーソル移動や特殊キー(Home, Endなど)を操作できる快適さを
ご存知でしょう。
Windows10のサポート終了に合わせてLINUXに乗り換えた人も多いと聞きます。
でも、「ホームポジションキーパー」が使えなくなっちゃった。。。
って思った人もいるのではないですかね。
そんな方の為に代用品じゃあないですけども、ほぼ似た仕組みを作ってみました。
興味ある方は、どうぞ最後までご覧ください。
※なお、当記事はUbuntu / Debian系UNIXに絞って書いています。
どうにかして「ホームポジションキーパー」が使えないのか?
「ホームポジションキーパー」のあの快適さをLinuxでも再現したい!
この記事では、そんな願いを叶えるべく、
Linux用の強力なキーリマップツール keyd を使って、
Windowsの「ホームポジションキーパー」とほぼ同等、
あるいはそれ以上(^_^;)の環境を構築する方法を、ステップバイステップで解説します。
なぜ keyd なのか?
Linuxにはキーカスタマイズツールがいくつかありますが、
keyd を選ぶ最大の理由は、
その強力な 「デュアルロール(タップ/ホールド)」機能 です。
これは、キーの押し方によって動作を変えられる機能です。
- タップ(短く押す): キーをポンと短く押したときの動作
- ホールド(長押し): キーを押しっぱなしにしたときの動作
keyd を使えば、「ホームポジションキーパー」の核となる
「スペースキーを単独で押したらスペース、押しながら他のキーを押したら修飾キー(ナビゲーションモード切替)」
という動作を完璧に実現できます。
手順1: keyd のインストール
まずは keyd をシステムにインストールします。
以下の緑の背景色のコマンドを(コマンド)端末に打っていきますよ。
Ubuntu / Debian系:
Bash
sudo apt update
sudo apt install keyd
手順2: keyd サービスの有効化(重要)
keyd は「システムサービス」として動作します。
つまり、一度設定すればPCを起動するたびに自動で起動してくれるため、毎回手動で立ち上げる必要は一切ありません。
インストールしたら、以下のコマンドをコマンド端末に打ってサービスを有効化しましょう。
その後に起動しましょう。
※(#のついた文はコメントなので、打たなくてもいいです。)
Bash
# PC起動時に自動で起動するように設定
sudo systemctl enable keyd
# サービスを今すぐ起動
sudo systemctl start keyd
これで keyd がバックグラウンドで常時動作するようになりました。
手順3: 設定ファイルの作成・編集
keyd の設定はすべて /etc/keyd/default.conf という一つのファイルで管理します。
お好みのテキストエディタでこのファイルを作成・編集します。
ここでは初心者にも分かりやすいタイプの nano エディタを使います。
編集する内容はこの次に説明しますね。
Bash
sudo nano /etc/keyd/default.conf
手順4: 「ホームポジションキーパー」風の設定を書き込む
ホームポジションキーパーのような高機能を設定する設定ファイル(.conf)を以下に示します。
さっきのsudo nano /etc/keyd/default.conf で開いた空のファイルの中に、以下の内容をすべて記述してください。
[ids]の後の「*(アスタリスク)」も忘れずに!
[ids]
*
[main]
# Spaceキーをデュアルロール化
space = overload(navigation, space)
# CapsLockをCtrlとEscのデュアルロールにする(おすすめ)
capslock = overload(control, esc)
# セミコロンをEnterに変更
; = enter
# 左CtrlをAltに変更
leftcontrol = leftalt
# 左AltをCapsLockに変更
leftalt = capslock
[navigation:C]
# カーソル移動(Space + K/J/H/L)
k = up
j = down
h = left
l = right
# ページスクロール(Space + U/D)
u = pageup
d = pagedown
# 文書の先頭/末尾(Space + W/S)
w = C-home
s = C-end
# 行頭/行末(Space + A/F)
a = home
f = end
# 削除系(Space + I/O)
o = delete
i = backspace
# セミコロン入力(Space + ;)
; = semicolon
設定のポイント解説
[main]セクション:space = overload(navigation, space): これが「ホームポジションキーパー」の心臓部です。capslock = overload(control, esc): 「CapsLock」を「Ctrl」に変えて
CapsLock単独タップ時 → Esc の働きをする
CapsLock + 他のキー押下時 → Ctrl の働きをするという
Vimユーザーなどに人気の神がかった設定です。; = enter: セミコロンキーをEnterとして動作させます。-
leftcontrol,leftalt: 左側の修飾キーを入れ替えています。
[navigation]セクション:spaceが押されている間だけ、このセクションの設定が有効になります。k = upやh = leftなど、Vimライクなキーバインドでカーソル移動が可能です。a = home,f = endなど、ホームポジションから指を動かさずに行頭・行末にジャンプできます。; = semicolon:[main]で;をenterに変えてしまったため、Space + ;で本来のセミコロンを入力できるようにしています。
ステップ5: 設定の反映と動作確認
設定ファイルを保存(nano の場合は Ctrl + O を押して Enter、次に Ctrl + X で終了)します。
その後にkeyd に新しい設定を読み込ませます。
(下の「keydサービスを再起動して設定を反映」というのがこの事!)
この2段階の作業が必要になります。
Bash
# keydサービスを再起動して設定を反映
sudo systemctl restart keyd
これで設定は即座に反映されます!
正しく動作しているか不安な場合は、以下のコマンドでキーの入力を監視できます。
Bash
# 動作確認(Ctrl+Cで終了します)
sudo keyd monitor
このコマンドを実行したまま、CapsLock を押せば コマンドライン端末にはleftcontrol と表示されますね。
それからスペースキーを押しっぱなしにしながら k を押せば up などと表示されるはずです。
まとめ
お疲れ様でした!
これであなたのLinuxマシンは、ホームポジションから手を離すことなく、爆速でテキスト編集や操作が可能な「ホームポジションキーパー」搭載機になりました。
今回は「ホームポジションキーパー」のほんの一部分の機能しか設定しなかったですけども、ご自分の利用方法に合わせてどんどんと機能追加していけばいいと思います。
keyd は非常に強力で、この記事で紹介した以外にもレイヤーを何層も作ったり、マクロを組んだりすることも可能です。
↓↓↓ぜひ公式ドキュメント(keyd GitHub)も覗いてみてください。
これまでと同様に快適なLinuxタイピングライフをお楽しみください!
それではこの辺で。
ここまで読んでいただきまして誠にありがとうございました。

