Firefox 136におけるEmacsキーバインド復旧手順(x-set-keys ユーザー向け)

ozy's labo.


はじめに

本稿では,Firefox 136において,日本国内のユーザー間で利用されてきたキーカスタマイズツールである x-set-keys が機能しなくなった際の解決策を記述します.
XFCEおよびX11環境において,いかにして設定の整合性を取り戻すかに焦点を当てています.

現状の技術的課題

x-set-keys の現状

x-set-keys は,X11のプロトコルを利用して特定のウィンドウ(Firefox等)にキーイベントを送信する優れたローカルプログラムです.
しかし,Firefox 136を含む近年のビルドでは,GTKの入力スタックの変更により,プログラム側からの外部的なキー注入が無視される,あるいは xfconfd による設定上書きが発生しています.

動作不全の要因

  • .gtkrc 等の静的設定ファイルの読み込みスキップ.
  • XFCEの設定デーモン(xfconfd)が保持するデフォルト値による競合.
  • Firefox内部のイベントハンドラとX11プロトコル間の不整合.

解決策:xfconfによるGTKランタイムの修正

x-set-keys 自体の再ビルドではなく,Firefoxが参照している上位のGTK設定を修正することで,機能を復旧させます.

実行手順

以下のコマンドをターミナルで実行してください.これにより,XFCEのシステム設定としてEmacsバインドを強制します.

xfconf-query -c xsettings -p /Gtk/KeyThemeName -s Emacs

実行後,Firefoxを再起動することで,テキストエリア等でのキー操作が再び有効になります.

ダメだった場合,以下も試してみて下さい.

Firefox 内の設定で C-w の競合を回避する

Firefox のショートカットキー(Accelerator)を Ctrl から Alt に変更することで,Ctrl キーを Emacs バインド用に解放できます.
アドレスバーに about:config と入力.

  • ui.key.accelKey を探し,値を 18 (Alt) に変更します.
    これにより,タブを閉じるのは Alt-w になり,C-w がテキストエリアで機能するようになります.
  • devtools.editor.keymap -> emacs

x-set-keys ユーザーへの技術的アドバイス

  • 設定の優先順位: 現代のFirefoxにおいては,バイナリレベルでのキー注入よりも,システム(GTK/XFCE)側が発行する「KeyTheme」の設定値が優先される傾向にあります.
  • 今後の展望: X11環境が維持されている間は本手法が最も確実ですが,Waylandへの完全移行が行われた場合は,OSの入力レイヤー(evdev)で動作するリマッパーへの移行が必要となる可能性があります.

結論

今回の事象は x-set-keys のプログラム上の欠陥ではなく,デスクトップ環境(XFCE)の設定管理とFirefoxのランタイム間の不整合に起因するものです.本手順により,従来の操作感を維持したまま最新のFirefoxを利用することが可能です.

但し,私の環境では,C-a, C-f, C-b, C-n, C-p, C-e などは機能するものの,リージョン選択,コピーなどは動作しなかったので,依然として x-set-keys の再ビルドとインストールが必要でした.

最後に x-set-keys の導入を貼っておきます.
注意: Xのドライバなどを入れ替えて initramfs が更新された場合,作り直しが必要な事があります.

: $ sudo apt-get install libx11-dev libglib2.0-dev git
: $ git clone https://github.com/kawao/x-set-keys
: $ cd x-set-keys
: $ make
: $ sudo  checkinstall make PREFIX=/usr/local install
: $ sudo  visudo

: yourname ALL=(ALL) SETENV:NOPASSWD: /usr/local/bin/x-set-keys

: $ sudo -b /usr/local/bin/x-set-keys --exclude-focus-class=xfce4-terminal /home/yourname/.x-set-keys.conf

(クラス名は xprop WM_CLASS にて調べる)

.x-set-keys.conf

#####################

#####################
C-i :: Tab
C-m :: Return
C-g :: Escape
C-h :: BackSpace
C-d :: Delete

#####################

#####################
C-a :: Home
C-e :: End
C-b :: Left
C-f :: Right
C-p :: Up
C-n :: Down
A-v :: Page_Up
C-v :: Page_Down

A-b :: C-Left

A-f :: C-Right

C-bracketleft S-bracketleft :: C-Up

C-bracketleft S-bracketright :: C-Down

C-bracketleft S-comma :: C-Home

C-bracketleft S-period :: C-End

#####################

#####################

C-space :: $select

A-w :: C-c

C-w :: C-x

C-y :: C-v

A-d :: S-C-Right C-x

C-k :: S-End C-x

A-BackSpace :: S-C-Left C-x

#####################

#####################

C-slash :: C-z

C-s :: C-f

C-r :: C-S-g

C-x C-f :: C-o

C-x C-s :: C-s

C-x k :: C-w

C-x C-c :: A-F4

C-q C-q :: C-q

起動

$ sudo -b /usr/local/bin/x-set-keys --exclude-focus-class=xfce4-terminal /home/yourname/.x-set-keys.conf


Date: 2026-03-02

Author: ozyukiwo

Created: 2026-03-11 水 08:08

Emacs 26.3 (Org mode 9.1.9)

Validate