Не работает переназначение модификаторов в Xmodmap?

Вопрос или проблема

Я использую новую клавиатуру и пытаюсь настроить её так, чтобы она имитировала клавиатуру моего ноутбука. Я использую xmodmap на Ubuntu 14.04 и не могу настроить её. Я очистил клавиши-модификаторы следующим образом:

xmodmap -e "clear mod1"
xmodmap -e "clear mod4"
xmodmap -e "clear Control"

И это сработало, после этого клавиши-модификаторы не имеют никакого действия. Затем я пытаюсь назначить клавишу Alt_R, чтобы она работала как супер-клавиша, следующим образом:

xmodmap -e "add mod1 = Alt_R"

Однако кнопка alt снова начинает вести себя как кнопка alt, вместо того чтобы вести себя как супер и вызывать поиск Unity при нажатии. Есть ли трюк, чтобы заставить клавиши-модификаторы работать с xmodmap?

Кроме того, даже после очистки управления, с помощью “xmodmap -e “clear Control”, я всё равно могу использовать ctrl.

Клавиатура, которую я использую, — das keyboard s ultimate, если это имеет значение.

ИЗМЕНЕНИЕ: Я осознал кое-что, когда экспериментировал с xev и пытался решить проблему: Когда я запускаю что-то вроде “xmodmap -e “keycode 133 = Alt_L” (код клавиши 133 обычно соответствует супер), а затем запускаю xev, когда я смотрю на вывод, он показывает следующее:

KeyRelease event, serial 37, synthetic NO, window 0x2000001,
root 0x9e, subw 0x0, time 179020, (-382,66), root:(406,118),
state 0x40, keycode 133 (keysym 0xffe9, Alt_L), same_screen YES,
XKeysymToKeycode returns keycode: 64
XLookupString gives 0 bytes: 
XFilterEvent returns: False

Как видите, он видит нажатие клавиши как Alt_L. Тем не менее, клавиша всё равно ведет себя как супер-клавиша, активируя поиск Unity при нажатии.

Я сам не эксперт, но я попробую. Прежде всего, давайте сделаем скрипт xmodmap в ~/.Xmodmap. Я понимаю, что вы хотите, чтобы правая клавиша alt функционировала как супер-клавиша. Я предлагаю следующее:

clear mod1
clear mod4

!Сделаем правую alt похожей на Super_R
!Предполагаю, что ваша правая alt имеет код клавиши 108, вы можете проверить, используя xev
keycode 108 = Super_R NoSymbol Super_R

!Добавим клавиши Super_L и Super_R к модификатору mod4
add mod4 = Super_L Super_R

Ваша другая клавиша alt и клавиши супер теперь могут быть перепутаны, но вы можете назначить им что угодно аналогично. (Если вы не хотите их менять совсем, используйте xev, чтобы увидеть, что они делали изначально, и назначьте им это.) Просто сначала все clear вместе, затем присвоения кодов клавиш именам клавиш, и наконец присвоения имен клавиш модификаторам, и я думаю, это должно сработать. Обычно ~/.Xmodmap выполняется автоматически при входе в систему, но если это не так, вы можете попробовать добавить строку

xmodmap ~/.Xmodmap

или

sleep 4 && xmodmap ~/.Xmodmap &

в ~/.bash_profile.

Для тех, кто использует последнюю версию Ubuntu (22.04, 24.04 и т.д.), которая приходит с сервером Wayland, вы можете попробовать использовать input remapper

Ответ или решение

Проблема с переназначением модификаторов в Xmodmap на Ubuntu 14.04

Здравствуйте!

На основании вашего описания проблемы, давайте разберёмся с тем, почему переназначение модификаторов с помощью xmodmap не работает так, как вы ожидаете.

Шаг 1: Убедитесь, что используете правильные ключи и коды клавиш

Во-первых, вам следует убедиться, что вы используете правильные коды клавиш для переназначения. Для этого вы можете использовать утилиту xev, которая покажет, какие коды клавиш генерирует ваш новый клавиатуры. Запустите xev и нажмите на нужные клавиши, чтобы получить их коды. Например, если вы хотите переназначить Alt_R на Super, выясните, какой код предлагается для этой клавиши.

Шаг 2: Используйте правильную последовательность команд

Когда вы очищаете модификаторы, важно сделать это в правильной последовательности. Ваш скрипт ~/.Xmodmap может выглядеть следующим образом:

clear mod1
clear mod4
clear Control

keycode 108 = Super_R NoSymbol Super_R   # Замените 108 на код вашей правой клавиши Alt
add mod4 = Super_R                        # Добавляем Super_R к модификатору mod4

Не забудьте добавить все ваши настройки и определения ключей в этом порядке: сначала очистите модификаторы, затем переназначьте ключи, а затем добавьте новые модификаторы.

Шаг 3: Автоматизация запуска Xmodmap

Для автоматического применения ваших настроек при каждом входе в систему, убедитесь, что файл ~/.Xmodmap выполняется автоматически. Вы можете добавить следующую строку в файл ~/.bash_profile или ~/.profile:

xmodmap ~/.Xmodmap

Если это не сработает, попробуйте отложить выполнение на несколько секунд, добавив:

sleep 4 && xmodmap ~/.Xmodmap &

Таким образом, вашему окружению могут потребоваться несколько секунд для полной настройки перед применением конфигурации xmodmap.

Шаг 4: Проблемы с кэшированием

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

Альтернативные решения для новых версий Ubuntu

Если вы используете более новую версию Ubuntu (например, 22.04 или 24.04) и работаете под управлением Wayland, рассмотрите возможность использования утилиты Input Remapper. Это приложение предоставляет более широкий функционал и совместимость с современными окружениями рабочего стола.

Заключение

Таким образом, перебор всех шагов по очистке, переназначению и последующему запуску xmodmap должен помочь вам решить проблему с переназначением модификаторов. Если по-прежнему возникают проблемы, проверьте, возможно, некоторые программы конфигурируют ваши мыши и клавиатуры на уровне системы, что может препятствовать правильному применению настроек.

В случае дальнейших вопросов, пожалуйста, не стесняйтесь обращаться! Удачи в настройке вашей клавиатуры!

Оцените материал
Добавить комментарий

Капча загружается...