3

Я использую xmodmap (и иногда вместо этого xkbcomp ) для настройки раскладки клавиатуры (например, сопоставление Caps Lock с модификатором Mod3).

Когда я подключаю USB-клавиатуру к своему ноутбуку или вставляю YubiKey (который действует как клавиатура), настройки для моей клавиатуры ноутбука сразу теряются, что приводит к тому, что Mod3 перестает работать, и я больше не могу использовать свой оконный менеджер.

Как я могу сделать мои настройки xmodmap/xkbcomp постоянными или, по крайней мере, постоянными для каждой сессии X для моей внутренней клавиатуры, чтобы она сохраняла макет, независимо от того, присоединяю ли я другие клавиатуры?

2 ответа2

2

Вы можете попробовать inputplug, демон, который подключается к вашему X-серверу и прослушивает события XInput. Он может запустить ваш скрипт, который перезагрузит раскладку:

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

Последний бит обнаруживает клавиатуру Sun Type 6 и применяет для нее различные настройки.

1

Похоже, это не X, а gnome-settings-daemon который сбрасывает мои раскладки, когда я присоединяю новую клавиатуру.

Это помогло: правило udev для автоматической загрузки раскладки клавиатуры, когда USB-клавиатура подключена

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

чтобы отключить его от этого.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .