人生シーケンスブレイク

シーケンスブレイクとは

Ubuntuでもctrl+hでbackspaceにする(その2)

shinespark.hatenablog.com

で書いた方法は、

  • Japanese(mozc) でctrl+hするとbackspaceとして動作してくれなかった
  • 起動時に自動で読み込むベストプラクティスが思い付かなかった

ことから別のアプローチを模索することとなった。

gtk-key-theme を変更するアプローチ

$ gsettings set org.gnome.desktop.interface gtk-key-theme Emacs

を実行するだけでctrl+hでBackspaceができるようになった。

こちらのやり方なら直接入力でもかな入力中でも認識してくれた。
Super押下時のActivitiesのキー入力など、一部では動作しないケースがあるが諦めた。

こちらは再起動後もそのまま適用してくれるので良さそう....

と思ったが、ブラウジング中などにも ctrl + a で全選択でなく行頭にカーソル移動など、きっちりEmacs寄りのキーバインドになってしまったので独自key-themeを作成することにする。

独自key-themeの作成

$ cp /usr/share/themes/Emacs/gtk-3.0/gtk-keys.css ~/.local/share/themes/<テーマ名>/gtk-3.0/gtk-keys.css して自分好みのキーバインドを定義することにした。

.themes 配下でも .local/share/themes 配下でもどちらでもOK

@binding-set gtk-yourtheme-text-entry
{
  /*
   * Some non-Emacs keybindings people are attached to
   */
  bind "<ctrl>u" { "move-cursor" (paragraph-ends, -1, 0)
                   "delete-from-cursor" (paragraph-ends, 1) };

  bind "<ctrl>h" { "delete-from-cursor" (chars, -1) };
  bind "<ctrl>w" { "delete-from-cursor" (word-ends, -1) };
}

entry {
  -gtk-key-bindings: gtk-yourtheme-text-entry;
}

独自key-themeの適用

$ gsettings set org.gnome.desktop.interface gtk-key-theme <テーマ名>

これでOK.

戻したい時

戻したい時には

$ gsettings set org.gnome.desktop.interface gtk-key-theme Default

とすればOK.

起動時にも適用する

./.config/gtk-3.0/settings.ini に下記のように記述する

[Settings]
gtk-application-prefer-dark-theme = true # 元々あったダークモードの設定
gtk-key-theme-name = <テーマ名>

参考

UbuntuTips/Desktop/GnomeEmacsKeyTheme - Ubuntu Japanese Wiki GTKのキーバインドを変更する | monolithic kernel

鬼滅の刃 1 (ジャンプコミックス)

鬼滅の刃 1 (ジャンプコミックス)