Я пытаюсь переназначить свою клавиатуру, чтобы сделать emacs пригодным для использования. Моя эргономичная клавиатура помещает свою единственную клавишу управления в изолированный 4-клавишный островок слева.
ОС является Debian Squeeze.
Вот строки, которые я xmodmap
пытаюсь передать, я помещаю их в файл ~ / .Xmodmap:
четкий контроль очистить Mod1 ! Клавиши Alt помечены как «Option» на моей клавиатуре, ! использование xev показывает их для отправки Alt_L и Alt_R keysym соответственно keysym Alt_L = Control_L keysym Alt_R = Control_R ! Ключи Super_L и Super_R - это ключи Windows keysym Super_L = Alt_L keysym Super_R = Alt_R добавить Control = Control_L Control_R добавить Mod1 = Alt_L Alt_R
Моя цель - сделать так, чтобы мои Altключи Option (aka ) вели себя как клавиши управления, а мои ключи Windows (aka Super) работали так же Alt.
Вот коды клавиш и keysms, выведенные xev для рассматриваемых ключей. Обратите внимание, что моя клавиатура (эргономичная клавиатура Goldtouch) имеет только одну управляющую клавишу.
код ключа 37 (keysym 0xffe3, Control_L) код ключа 64 (keysym 0xffe9, Alt_L) код ключа 133 (keysym 0xffeb, Super_L) код ключа 134 (keysym 0xffec, Super_R) код ключа 108 (keysym 0xffea, Alt_R)
Вот что показывает xev во время работы xmodmap .Xmodmap
Событие MappingNotify, серийный номер 34, синтетический номер NO, окно 0x0, запрос MappingKeyboard, first_keycode 204, количество 1 Событие MappingNotify, серийный номер 34, синтетический номер NO, окно 0x0, запрос MappingKeyboard, first_keycode 64, количество 1 Событие MappingNotify, серийный номер 34, синтетический номер NO, окно 0x0, запрос MappingKeyboard, first_keycode 108, количество 1 Событие MappingNotify, серийный номер 34, синтетический номер NO, окно 0x0, запрос MappingKeyboard, first_keycode 206, количество 1 Событие MappingNotify, серийный номер 34, синтетический номер NO, окно 0x0, запрос MappingKeyboard, first_keycode 133, количество 1 Событие MappingNotify, серийный номер 34, синтетический номер NO, окно 0x0, запрос MappingKeyboard, first_keycode 134, количество 1
И вот ошибка, возвращаемая xmodmap
:
X Ошибка неудачного запроса: BadValue (целочисленный параметр вне диапазона для операции) Основной код операции невыполненного запроса: 118 (X_SetModifierMapping) Значение в неудачном запросе: 0x17 Серийный номер неудавшегося запроса: 17 Текущий серийный номер в выходном потоке: 17
какие-либо предложения о том, как я могу решить эту проблему?
xev
в терминале, а затемxmodmap
в другом терминале. Вы должны увидеть некоторыеMappingNotify
строфыxev
, добавьте их к своему вопросу. Кроме того, вxev
окне нажмите различные задействованные клавиши и сообщите нам, какой код клавиши и keysym им соответствуют (код клавиши 37 (keysym 0xffe3, Control_L) »в выводе xev).Ответы:
Это уже сообщалось как ошибка Debian # 564327 , ошибка Debian # 565279 , ошибка Ubuntu # 524774 и ошибка FreeDesktop 20145 . К обсуждению ошибки FreeDesktop прикреплен исходный патч. Есть несколько предложений временного решения об ошибке обсуждении Ubuntu, в частности , в
.Xmodmap
обходном пути .источник
Глядя на обходной путь, связанный с Джайлсом, вот что сработало для меня:
Мои клавиши Option теперь работают как клавиши управления, а мои клавиши Windows - как клавиши Alt.
источник
Проблема возникает, когда вы пытаетесь добавить keysym к модификатору, который уже добавлен к другому ключу модификатора. Важно знать, что если вы добавляете keysym в модификатор, все остальные ключевые символы, которые сопровождают keysym в случае, добавляются также в отношении этого модификатора.
Например:
может привести к
потому что у вас есть что-то вроде
в вашем ~ / .Xmodmap (Просмотреть текущий код ключа для сопоставления keysym через
xmodmap -pke
)что приведет к ошибке BadValue, когда вы пытаетесь сделать что-то вроде
потому что Caps_Lock уже добавлен в модификатор mod5.
источник
Это еще одно решение вашей проблемы, хотя на самом деле оно не отвечает на ваш вопрос. Отредактируйте xorg.conf, вставив в раздел «InputDevice» следующее:
источник