как присвоить другой модификатор клавише Alt для X11?

Linux на рабочем столе и некоторых серверах является все еще всеми X и графикой кадрового буфера. Под X-окном - Это прибывает GTK + и QT, ДА ОБА использования X систем, снова существует партия настольных сред - Gnome, KDE использует X дисплеев и их оболочки и т.д.

Btw, было недавнее видео из Linux conf (http://blip.tv/file/4693305/). Keith Packard от Intel, на котором говорят приблизительно X и GL*, Это было интересно.

8
13.04.2017, 15:36
3 ответа

(Этот ответ о xmodmap только. Я уверен, что возможно сделать это с XKB, я просто не знаю как.)

Модификаторы и keysyms присвоены независимо. Но Вы получаете странные эффекты, если Вы последовательно не устанавливаете их. Я думаю все, что Вы пропускаете, add команда для присвоения модификатора Meta_L, хотя Вы, возможно, также должны очистить и повторно присвоить модифицирующие клавиши. Можно заменить Mod1 и Mod2 Mod3, Mod4 и Mod5: они являются взаимозаменяемыми, просто удостоверьтесь, что Вы не используете один в двух различных целях.

clear Mod1
clear Mod2
remove Lock = Caps_Lock
keysym Caps_Lock = Alt_L
keysym Alt_L = Meta_L
add Mod1 = Alt_L Alt_R
add Mod2 = Meta_L Meta_R
6
27.01.2020, 20:10
  • 1
    Большое спасибо. Так действительно я использовал Mod5 вместо Mod2 для Meta, и я могу теперь записать как ожидалось (я использую meta+key для многих национальных характеров). Но странно, теперь у меня есть проблема с клавишей Caps Lock снова - она связывается с... Meta. Я предполагаю, почему, потому что однажды там связывает с Высоким звуком, но затем Высокий звук переопределен. Таким образом, как иметь значение и однажды настоять на коде и во второй раз на символе? Я хотел бы не использовать необработанные коды клавиши, потому что они могли измениться с клавиатуры на клавиатуру. Я не могу подкачать порядок keysyms, потому что в последней строке я получил бы ошибку. –  greenoldman 19.03.2011, 13:42
  • 2
    Проблема с keysym Caps_Lock = Alt_L это, если Вы выполняете его дважды, это откладывает систему в нежелательное состояние. Вот почему я использую коды клавиши; они варьируются между операционными системами и архитектурой (не между клавиатурами), но не настолько часто. –  Gilles 'SO- stop being evil' 19.03.2011, 13:47
  • 3
    Спасибо за объяснение, я угадал затем :-). Если Вы не будете возражать, то я сохраню его немного дольше как оставшийся без ответа вопрос, возможно, кто-то мог решить мою проблему на xkb уровне, который будет более гибким (переключающиеся разметки уничтожает xmodmaps). –  greenoldman 19.03.2011, 14:20
  • 4
    Огромное спасибо, сохраненное бороться с символами/ПК без успеха. –  Cody Craven 07.11.2016, 00:20

Редактирование подхода кодов клавиши

Я нашел ответ на польском форуме Ubuntu. Теперь каждый не редактирует "xfree86" файл, но "evdev" файл. Таким образом, можно внести постоянные изменения, которые работают на все разметки.

Пример (по запросу Gilles) - входит в систему как корень, перейдите в

/usr/share/X11/xkb/keycodes

сделайте резервное копирование "evdev" файла и затем отредактируйте его. Измените коды на свою симпатию, например, в моем случае:

<LALT> = 66; // when I press CapsLock (66 code) system will report pressing LeftAlt
<LMTA> = 64; // I will get LeftMeta when pressing LeftAlt (64 code)

Можно найти то, что коды путем выполнения команды "xev", но можно просто посмотреть на исходный "evdev" файл.

Выйдите из системы, войдите в систему, наслаждайтесь своей новой клавиатурой :-).

7
27.01.2020, 20:10
  • 1
    это - вероятно, правильный способ пойти с XKB., я запускаю Linux Mint и сталкиваюсь с проблемами где Keyboard Preferences опции для Capslock переопределите пользовательское XKB сконфигурируйтесь я пишу. Так как это - выбор переключателя, нет никакого способа, которым я вижу для остановки одного из правил от GUI от того, чтобы быть примененным. –  dcunited001 30.12.2015, 06:12

попробуйте это:

    key <CAPS>  { [ Alt_L, Alt_L ] };
    key <LALT> { [ Meta_L, Meta_L ] };
    modifier_map Mod1 { Alt_L, Alt_R };
    modifier_map Mod5 { Meta_L, Meta_R };

отметьте два определения уровня. Это вызвано тем, что значением по умолчанию для LALT является [Alt_L, Meta_L]; если Вы не переопределите второй, то это останется Meta_L.

Посмотрите на этот ответ на xkb для того, как переопределить некоторые ключи без потребности отредактировать основные файлы по умолчанию (таким образом, никакая потребность быть корнем). В таком случае Вы должны будете в локальных символах зарегистрировать маленький раздел как:

partial modifier_keys
xkb_symbols "capsasalt_altasmeta" {
        replace key <CAPS>  { [ Alt_L, Alt_L ] };
        replace key <LALT> { [ Meta_L, Meta_L ] };
        modifier_map Mod1 { Alt_L, Alt_R };
        modifier_map Mod5 { Meta_L, Meta_R };
};
3
27.01.2020, 20:10

Теги

Похожие вопросы