Пользовательская раскладка клавиатуры не используется дословно

Я создал пользовательскую раскладку клавиатуры, ~/dot/c98.xkb . Это выглядит так:

 // vim: ft=xkb xkb_keymap { xkb_keycodes "k" { include "evdev(evdev)" }; xkb_geometry "g" { include "pc(pc105)" }; xkb_types "t" { }; xkb_compat "c" { }; xkb_symbols "s" { }; }; 

Очевидно, что в пустых блоках есть вещи, но я пропустил их, чтобы сэкономить место.

Компиляция и декомпиляция через xkbcomp c98.xkb c98.xkm; xkbcomp c98.xkm c98_xkm.xkb xkbcomp c98.xkb c98.xkm; xkbcomp c98.xkm c98_xkm.xkb создает файл, который эквивалентен оригиналу (как и любой декомпилированный код).

Однако, делая это через xkbcomp c98.xkb $DISPLAY; xkbcomp $DISPLAY c98_display.xkb xkbcomp c98.xkb $DISPLAY; xkbcomp $DISPLAY c98_display.xkb приводит к сообщению об ошибке (оно все еще работает, хотя, скопировано ниже) и файл, который имеет небольшое сходство с оригиналом:

  • keycodes включает evdev+aliases(qwerty) вместо простого evdev . Он был переименован в evdev+aliases(qwerty) .
  • types содержат много вещей, но не то, что я указал (кажется, просто включает complete ), и был переименован в complete /
  • compat содержит то, что я сказал, но с большим количеством virtual_modifiers . Этот тоже назван complete .
  • symbols содержат то, что нужно, за исключением того, что поле name[group1] было изменено на English (US) , а некоторые из полей type имеют странные значения – я предполагаю, что он хранит индексы, а не имена, и поскольку поле types повреждено .. . Имя этого блока было изменено на pc+us+inet(evdev) .
  • geometry похоже, содержит именно то, что она должна, включая имя блока.

Похоже, что xkbcomp какой-то причине копирует некоторые блоки, оставляя только keycodes и types полей.


Вышеупомянутое сообщение об ошибке при попытке установить макет:

 X Error of failed request: BadAtom (invalid Atom parameter) Major opcode of failed request: 135 (XKEYBOARD) Minor opcode of failed request: 18 (XkbSetNames) Atom id in failed request: 0x435345 Serial number of failed request: 70 Current serial number in output stream: 73 

Полный исходный код, а также разницу между c98_xkm.xkb и c98_display.xkb можно найти здесь .

Interesting Posts

Почему printh bash быстрее, чем / usr / bin / printf?

Разрешить пользователю доступ к их собственному каталогу / var / www / html, ничего другого

Пользовательское приложение X Сценарий запуска RCNG

Средний щелчок обнаружен xev, но на него ничего не реагирует

Как можно запустить VLC, когда я только что удалил его?

Как переключить Huawei CDMA 2252+ на USB с CD-ROM?

извлекать строки из файла на основе последовательной пары шаблонов и выводить на отдельные файлы

Подстановка команды в псевдониме разрешена в профиле bash?

mysql USER неясно, о чем можно отказаться?

Как вы делаете деловые заявления с диапазонами

Преобразование json-объекта сопоставления в управляемую строку csv с использованием сценария bash

CUPS не показывает мне принтеры, кроме как с храброго браузера

Что считается «идеальным» в отношении использования stdout / stderr для вывода в разных ситуациях?

Программа / сценарий для ограничения выхода cronjob

Инструкции Samba работают на CentOS 6.5, но не CentOS 6.3 – разрешения в Windows разные

Linux и Unix - лучшая ОС в мире.