Определение назначений клавиш для X.org на ПК

В какой-то момент с конца 2008 года по начало 2009 года некоторые значения кода ключа (по-видимому, для ключей, которые не были на клавиатуре XT) на стандартной клавиатуре ПК при замене X.org под Linux изменились. Я не знаю, связано ли это с изменением ядра или сменой X. Debian lenny и Ubuntu 8.04 использовали старое назначение; Сжатие Debian и Ubuntu 10.04 использовали новое назначение.

Поэтому у меня есть два файла xmodmaprc , один со старыми ключевыми кодами и один с новыми ключевыми кодами. Как определить, какой из них загружать из моих .xinitrc и .xsession ?

Я хочу, чтобы мои загрузочные файлы были переносимыми без каких-либо проблем, поэтому я хочу избавиться от своей нынешней зависимости от имени машины (!). И я не хочу вводить зависимость от версий дистрибутива Linux (и в любом случае это будет информация о клиенте, но это информация о сервере, который мне нужен). У меня уже есть информация о сервере в этот момент в моем скрипте (все символы, перечисленные в xrdb(1) , доступны как переменные среды); надеюсь, мой вопрос сводится к «Какие параметры я могу сравнить с какими значениями?».

Обратите внимание, что, поскольку я хочу, чтобы мои загрузочные файлы работали на машинах, которые я не администрирую, переназначения клавиш не помогают. Например, я хочу назначить мой любимый модификатор клавишам Win , но я не могу предсказать, какие ключи будут назначены при входе в систему. Однако, если есть концепция XKB, я могу использовать вместо кодов клавиш (и является независимым любой настройки sysadmin, поэтому keysyms не будет делать), я готов переключиться на XKB.

Вы можете узнать код ключа ключа через XKB, например

 xkbcomp -a -dflts -xkb $DISPLAY - | sed -ne 's/^ *<LWIN> *= *\([0-9][0-9]*\).*/\1/p'