web-dev-qa-db-ja.com

キーボードごとのレイアウト設定を維持するにはどうすればよいですか?

キーボードのレイアウトを調整するためにxmodmap(場合によってはxkbcomp)を使用しています(たとえば、Caps LockをMod3修飾子にマッピングしています)。

USBキーボードをラップトップに接続するか、 YubiKey (キーボードのように機能します)を挿入すると、ラップトップキーボードの設定がすぐに失われ、Mod3が機能しなくなり、使用できない状況になります。私のウィンドウマネージャーはもう。

xmodmap/xkbcomp設定を永続的または少なくともにするにはどうすればよいですか?内部キーボードのXセッションごとに永続的であるため、他のキーボードを接続してもレイアウトが維持されますか?

4
nh2

Xサーバーに接続してXInputイベントをリッスンするデーモン inputplug を試してみてください。キーマップをリロードするスクリプトを実行できます。

inputplug -c ~/.xkb_load_hook

そして~/.xkb_load_hook私の場合は:

#!/bin/sh

xkbcomp -I$HOME/.xkb ~/.xkb_keymap :0 2>/dev/null 1>/dev/null
xmodmap ~/.xmodmaprc

Sun_id=$(xinput list | grep "HID 0430:0005" | grep -o 'id=[0-9]*' | cut -d = -f 2)

if [ -n "$Sun_id" ]
then
    xkbcomp -i "$Sun_id" -I$HOME/.xkb ~/.xkb_keymap_Sun :0 2>/dev/null 1>/dev/null
fi

最後のビットはSunType 6キーボードを検出し、さまざまな設定を適用します。

2
andrewsh

Xではないようですが、gnome-settings-daemon新しいキーボードを接続すると、レイアウトがリセットされます。

これは役に立ちました: sbキーボードが接続されているときにキーボードレイアウトを自動ロードするudevルール

dconf write /org/gnome/settings-daemon/plugins/keyboard/active false

それを無効にします。

1
nh2