垂れ流す場所

アウトプットしたくなったものを、特にジャンルに関係なく垂れ流すブログ

初代 Advantage Kinesis + Windows + VS Code 環境におけるキーレイアウト 2022年版

今年に入って、自分の開発環境のソフト面をまるっと見直した。 長年使っていた macOS + iTerm + Vim(CUI) から、Windows(WSL 2) + VS Code になった。

ハード面は変わっていない。初代 Kinesis Advantage + Kensington Slimblade だ。この組み合わせでかれこれ8年以上使っている。

使うソフトが変われば、最適なキーバインディングも変わるものだ。Kinesis Advantage はハードウェアで key remap が出来る。今回の利用ソフトの変更で、ハード + ソフトの両面からのアップデートが必要になった。

ようやく、そのセッティングが落ち着いたのでメモしておく。

Kinesis Advantage の remapping

Kinesis Advantage Key Remapping 2022 by @tanaka51

生成元 Google Sheets は こちら。コピペ改変ご自由に。

以上の画像の通りにしている。以下詳細。

  • CapsLock -> ESC は、僕に Kinesis Advantage を教えてくれた先輩から受け継いでる秘伝のタレ。Vimmer にはめっちゃ便利。と思ってたけど、Vim でない時でも ESC は楽に届いた方が便利なので、ずっとここ。
  • 親指周りが特徴的というか、基本的にここしか変えていない。こうなった経緯を書いておく。
    • {Left/Right}Alt の単押しで、英語・日本語の切り替えをしたい
    • が、初代 Advantage KinesisWindows モードは Left Alt しかない!
    • Left と Right があるのは PC モードと mac モードだけ。mac モードは差分が大きいので、PC モードをベースに remap している
    • 僕は Alt をこの画像の位置に置きたく、そうすると Windows キーは隅に置きたい
      • 普通に Kinesis Advantage に手を置いたとき、親指が簡単に届く位置が画像の Alt の位置なのだ。良く使うキーは届きやすい位置においておきたい。
    • PageUp/PageDown の2つは AutoHotKey にて Windows キーにする
      • Vim を使っているなら、デフォルトで親指に配置されている装飾キー以外のキー、つまり PageUp/PageDown/Home/End の役割は、ノーマルモードでのアルファベットのキーにアサインされているので適当につぶしていた。Vim 以外においてもこれらの4つのキーは全く使わなかった。が、VS Code ではもちろんノーマルモードはない(僕は Vim Plugin を入れない事にし、なるべく VSCode デフォルトのキーバインディングでやっていく事にした)し、Windows では emacs キーバインディングも効かないので、良く Ctrl+a/Ctrl+e を使っている僕としては、行頭・行末への移動に1キーを使うのは合理的と判断し Home/End を残すことにした
      • 左が行頭、右が行末で視覚的にもわかりやすくて気に入っている
      • PageUp/PageDown は優先度的に潰すしかなかった
        • …が、方眼紙 spread sheet でレイアウトを作っていた過程で気付いたけど、もしかして | キー2つあるよな…これに割り当てられる可能性があるかもしれない…?考えておこう…

AutoHotKey

使っているスクリプトはここにある。

github.com

見ればわかるが GitHub - karakaram/alt-ime-ahk を fork して改造している。

以下詳細。

{Left|Right}Alt => 英語・日本語切り替え

これは mac 時代から必須であった。このスクリプトの作者に本当に感謝である。 基本的にはそのまま使わせていただいている。

Page{Up|Down} => {Left|Right}Windows

Kinesis Advantage の remap で書いたように、隅においやった Page{Up|Down}{Left|Right}Windows に変換している。

これで、キーボード的には [Left, Right] ✕ [Ctrl, Alt, Windows] が揃ったことになる。これが良いんだ。

スクリプトのショートカットをスタートアップに入れておけば、ログイン時に自動起動する。

VS Code

Ctrl + ` => Ctrl + Shift + `

初代 Kinesis Advantage は英語配列なので、Windows では Ctrl+` が Henkan にされてしまう問題がある。というわけで、ターミナルを開けない問題がある! こればかりはどうしようもないらしいので、shift を追加している。

・・・あれ、今この記事を書いてて、Henkan を Ctrl + ` にする AutoHotKey 書けば良いのでは、と思った…やってみるか…

キーバインディングに関しては、残りはすべてデフォルトのままだ。

達成した要件

結果的に達成している要件をまとめる。

  1. 左右に Alt(Meta) と Ctrl がある
    • 僕は2つ同時押しのショートカットは、必ず両手で押したい、という信念がある。手や腕への負担を減らしたくてエルゴノミクスキーボード使ってるなら、極力、自分でコントロールできる範囲の肉体的負荷も分散したいと思っているわけだ。ハードウェアと自分のフィジカル面を合わせて最適化していきたい。
  2. エディタのキーバインディングはなるべく変えない
    • デフォルト厨である。僕はなるべくカスタマイズをしたくない。Vim も基本的にはほぼノーマルの状態で便利なプラグインをつけたす感じだった。自分をトレーニングして最適化していく過程を楽しんでいる気もしている。
  3. 日本語・英語の切り替えを Alt 単押しで実現
  4. Ctrl + Space は潰さない
    • VS Code は Ctrl + Space に変換候補を出す、非常に重要な機能がある!これを潰してはいけない
    • Windows mode が Left Alt しかない、という時に Ctrl + Space を英語・日本語切り替えのトグルにしばらく割り当てていたが、この重要なショートカットに気づいて、再考を促された
  5. Home/End を潰さない
    • VS Code は(Windows も)、Home が行頭、End が行末に移動するのだ!これは非常に重要なショートカットなので潰してはいけない
    • そして Kinesis Advantage は、これらのキーがデフォルトで親指に配置されている。Kinesis 社の人間もこれらのキーが重要だという認識なのだろう(?)

諦めたこと

  1. PageUp/PageDown を潰した
    • これは致し方なく。ページ内の上下の移動は左右の移動に対して重要じゃない事が多いので諦めた。上下の移動は検索で代替すれば良い。
    • Vim 時代は、この辺は Normal Mode で移動するので気にしなくて良かった
      • モードのような概念がない場合、キーの数が大事になるんだなぁ

おわりに

キーの数には制約がある中で、最適な配列を考えるのはなかなか難しいが、ようやく落ち着いたの良かった。Vim は良く考えられたソフトだ・・・ また今回、初めて AutoHotKey を触ったけど、無限の可能性を感じた。

しかしながら、この記事を書きながらまだまだ良く出来る可能性がある気がしてきたので、少しずつ変化させていこうと思う。