- Вопрос или проблема
- Ответ или решение
- Проблема с переназначением модификаторов в Xmodmap на Ubuntu 14.04
- Шаг 1: Убедитесь, что используете правильные ключи и коды клавиш
- Шаг 2: Используйте правильную последовательность команд
- Шаг 3: Автоматизация запуска Xmodmap
- Шаг 4: Проблемы с кэшированием
- Альтернативные решения для новых версий Ubuntu
- Заключение
Вопрос или проблема
Я использую новую клавиатуру и пытаюсь настроить её так, чтобы она имитировала клавиатуру моего ноутбука. Я использую 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
должен помочь вам решить проблему с переназначением модификаторов. Если по-прежнему возникают проблемы, проверьте, возможно, некоторые программы конфигурируют ваши мыши и клавиатуры на уровне системы, что может препятствовать правильному применению настроек.
В случае дальнейших вопросов, пожалуйста, не стесняйтесь обращаться! Удачи в настройке вашей клавиатуры!