⌨️

キーボードのキーを入れ替えて編集速度20%アップ

2024/04/19に公開

概要

キーボードのキーをソフト的に入れ替える行為を長年してきたので、ちょっとした提案ができればなと思いこの記事を書きました。キー配列の話だからといってDvorak配列を薦めるわけではありません。この記事ではふだんよく使う移動系のキー、たとえば矢印キー(←↓↑→)をホームポジション(HJKL)に置くことで編集作業をしやすくします。設定をすることで下のようなレイアウトを追加します。ご覧の通り右手の一部のキーを使うことになります。

Karabiner ElementsとGokuのインストール

まずは準備でmacOSにキーボードリマッピングソフトを入れます。GokuはKarabiner Elementsのキー設定を簡単にするためのユーティリティになります。
Karabiner Elementsはこのサイトにあります。
https://karabiner-elements.pqrs.org/
Gokuはこちらにあります。
https://github.com/yqrashawn/GokuRakuJoudo

Karabiner ElementsをインストールしてGokuをインストールしたら、Karabiner Elementsを開きます。Macの場合、アクセシビリティの設定があるのでそちらを調整します。プライバシーとセキュリティから入力監視にチェックを入れてください。macを再起動すればKarabiner Elementsが使えるようになっているはずです。

SettingsからProfilesを開き、Add new ProfilesからDefaultを作成します。

以下の項目では通常の配列から変えていくので、いったん通常のキー配列を保存しておきます。
名前は仮に「通常」としておきます。これでメニューバーからいつでもキー復元できるようになります。

Goku用の設定ファイルを作成する

ターミナルに以下のコマンドを入力してGoku用のファイルを生成します。

touch ~/.config/karabiner.edn

gokuでエラーが出ることがあるため、念の為下記にも空のファイルを作っておきます。

touch ~/.config/karabiner/karabiner.json

下記コマンドでFinderを開いて、お好きなエディタでkarabiner.ednを開いてください。開くのは.jsonではなく.ednである点に注意です。

open ~/.config

以下ではこのファイルに設定を書き込みます。

英数キーを親指で押せる場合

英数キーをHyperに変換します。Hyperというのは内部的にはCommandとCtrlとOptionalとShiftの同時押しです。要は修飾キー全部押しですね。下記の通りファイルに入力して保存します。

~/.config/karabiner.edn
{
:main [{:des "muhenkan"
:rules [
  ;;左手親指の設定
  [:##japanese_eisuu :!CTOleft_shift nil {:alone :japanese_eisuu}],
  ;;Windowsキー用配置の設定
  [:##japanese_pc_nfer :!CTOleft_shift nil {:alone :japanese_eisuu}],
  [:japanese_pc_xfer :japanese_kana],

  ;;右手ハイパー面の設定
  [:!!u :!COleft_arrow],
  [:!!i :!Ctab],
  [:!!o :!COright_arrow],

  [:!!h :left_arrow],
  [:!!j :down_arrow],
  [:!!k :up_arrow],
  [:!!l :right_arrow],
  [:!!semicolon :delete_or_backspace],
]}]}

入力したらファイルを保存して以下のコマンドを打ちます。

ターミナル
goku

これで「Done!」と表示されれば、Defaultプロフィールが書き換わっています。gokuでは「!!」というのがハイパー面を指します。したがって、[:!!j :down_arrow]の意味は、「ハイパー面でのhの挙動を↓矢印にする」ということになります。英数キーを単独で押すと英数キーとして機能し、英数キー+Jキーで↓矢印になります。

パンタグラフキーボードの場合

パンタグラフキーボードの場合、スペースにHyperの機能も含めることによって同じようなことが可能になります。スペースキーを押しっぱなしでHyperにして、キーから指を離すとスペースが打たれるように設定を変更してみます。

~/.config/karabiner.edn
{
:main [{:des "muhenkan"
:rules [
  ;;左手親指の設定
  [:##spacebar :!CTOleft_shift nil {:alone :spacebar}], ;dual-role keys

  ;;右手ハイパー面の設定
  [:!!u :!COleft_arrow],
  [:!!i :!Ctab],
  [:!!o :!COright_arrow],

  [:!!h :left_arrow],
  [:!!j :down_arrow],
  [:!!k :up_arrow],
  [:!!l :right_arrow],
  [:!!semicolon :delete_or_backspace],
]}]}

これでスペースキー+Jで「↓キー」になり、スペースキー単独ではスペースを打つことができるようになりました。

切り替えを試してみる

VS CodeやChromeでHyper+Oで右のタブへ、Hyper+Uで左のタブへ移動できるようになっているはずです。試してみましょう。
Hyper+Iでアプリ切り替えができます。アプリ切り替え中左に移動したい場合はHyper+Uです。アプリ切り替え中はHyperは押しっぱなしなのでそこは注意してください。

キーボードの記号類の出力が変わってしまったとき

設定によっては@が出力できなくなるなどの不具合が出る可能性があります。その場合、キーボード配列設定から「キーボードの種類を変更」を選択していただいて、JIS(日本)にすれば直るかもしれません。

うまく設定できない場合

もしかしたらこちらが想定しているキーコードと今試されているキーボードの出力が違うのかもしれません。その場合は、Karabiner-EventViewerを立ち上げて、置き換えたいキーを押してみてください。表示されたkey_codeが正しい置き換えたいキーのコードになるので適宜置き換えてみてください。

終わりに

キーボードリマップはキーボードに新しい「面」を作ることができ、ホームポジションから指を大きく動かさなくとも、様々なことができるようになります。このようなやり方はキーボードを選びますが、効率性の観点からはそれだけの価値があると思います。特に、ウェブミーティングなどのリアルタイムなやり取りが頻繁をする場合、速度が重要になってきます。よりカスタマイズしたい場合は、Gokuのチュートリアルをご参照ください。ではでは。

Arsaga Developers Blog

Discussion