ディスプレイマネージャを使用してログインすると、Sawfish および fvwm バインディングは機能しません。

ディスプレイマネージャを使用してログインすると、Sawfish および fvwm バインディングは機能しません。

Debian squeezeを実行しているコンピュータでディスプレイマネージャ(xdm、gdm、またはkdmを試してみました)を使用してログインしても、Sawfishキーやマウスバインディングは何の影響もありません。テキストモードでログインして実行すると、startxすべてがうまく機能します。

fvwmを試してもほとんどのバインディングは機能しませんが、いくつかのマウスバインディングは機能します。

ディスプレイマネージャを使用してログインしたときにカスタムセッションを実行して~/.xsession. ~/.profile; . ~/.xinitrc

SawfishとFvwmが私のバインディングを認識しないのはなぜですか?ディスプレイマネージャの使用と実行はどう違いますかstartx?バインディング操作をどのように実行できますか?

答え1

Sawfishの問題と解決策を知っていますが、ディスプレイマネージャを使用すると、なぜこれが起こるのかわかりません。

私のプライベートキーボードレイアウトにはNum Lockキーはなく、修飾子Mod2には割り当てられたキーはありません。 Sawfishが起動すると、Num Lockに割り当てられた修飾子は無視されます。修飾子にキーが割り当てられていない場合、Sawfishはそれを無視しないため、keyMod2がオンのときにバインディング(必須)はトリガーされません

Fvwmも同様に動作します。修飾子列のバインディングは、Mod2がオンになっているかどうかにかかわらず常に機能するという点で、追加の微妙さがありますA。明示的な修飾子が設定されたバインディングだけは効果がありません。

何らかの理由でまだ把握していませんが、ディスプレイマネージャを使用してログインすると、Num Lock修飾子がオンになっていると記録されます(ユーザー名とパスワードを入力するとオフになっていますが、キーボードのNum Lock LEDボタンが表示されます)。オフです)。これにより、FvwmとSawfishはコマンドにバインドされたイベントの代わりにMod2+キーボードイベントを受け取ります。keykey

私はMod2を使用していないので、次のようにこの問題を解決できます。Num Lock オフ.xsession:

python -c 'from ctypes import *
X11 = cdll.LoadLibrary("libX11.so.6")
display = X11.XOpenDisplay(None)
X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(16), c_uint(0))
X11.XCloseDisplay(display)'

または、Mod2を完全に無効にしてください。

xkbset nullify mod2

関連情報