⌨️

AlacrittyでCtrl+^を入力できるようにする

2023/10/15に公開

Vimなどで使うCtrl+^、
これはデフォルトのAlacrittyだとJIS配列のキーボードでは入力できない場合があります。

対処するにはalacritty.ymlに次のようなキー設定を追記し、Ctrl+^を入力できるようにします。

key_bindings:
  - { key: 13, mods: Control, chars: "\x1e" }

keyが入力キー(^)に対応するキーコード、modsが修飾キー(Control)、charsが送信する入力("\x1e")になります。"\x1e"はASCIIコードの0x1eにあたる文字で、これがCtrl+^に相当します(※keyに設定する値の13の部分は環境によって異なるかもしれません。この設定でもし動かない場合、後述のalacritty --print-eventsを使ってkeyに設定する値を調べてみてください)。

key_bindings詳細
https://github.com/alacritty/alacritty/blob/master/extra/man/alacritty.5.scd#keyboard

設定を追記したらalacritty.ymlを上書き保存します。
Alacrittyは設定ファイルが更新されると設定を自動で再読み込みしてくれるので、上書き保存をしたらその時点でCtrl+^が入力できるようになります。

keyに設定する値の調べ方

設定を追記しても問題が解消されなかった場合、keyに設定する値が13でない可能性があります。
その場合は次のようにしてkeyに設定する値を調べます。

まず、cmdまたはPowerShellにて、
Alacrittyを次のように--print-eventsオプションを指定して起動します。

alacritty --print-events

こうするとAlacrittyが立ち上がり、
Alacritty上で発生したイベントのログが見れるようになります。

イベントのログを見れるようになったら、立ち上がったAlacrittyにてkeyに設定する値を調べたいキー、今回だと^を単体で打ちます。そうすると次のような「event: KeyboardInput」と記載された行がログに出力されます。

[6.125419100s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(17172856)), event: KeyboardInput { device_id: DeviceId(DeviceId(0)), input: KeyboardInput { scancode: 13, state: Pressed, virtual_keycode: None, modifiers: (empty) }, is_synthetic: false } }

この行のvirtual_keycodeの値、またはscancodeの値をkeyに設定します。
設定する値はどちらでも可能ですが、virtual_keycodeの値がNoneのときはvirtual_keycodeでは設定ができません。scancodeで設定する必要があります。

Discussion