@ Ответ Даниэля указал мне правильный путь, но я хотел бы остановиться на нем.
У меня работает на Linux Mint 17.2 и Ubuntu 16.04.
Я попробовал все повороты, которые мог придумать, чтобы продолжать использовать xmodmap
, но все они терпят неудачу, когда система переходит в спящий режим. То же самое относится и к сценариям запуска приложения, которые используют setxkbmap
в тех случаях, когда демон * settings (для меня это xfce4) запускается позже, чем сценарий - и порядок не может повлиять.
То, что я наконец придумал, имеет следующие ингредиенты:
1) Напишите минимальный файл сопоставления клавиатуры для /usr/share/X11/xkb/symbols
. Позволяет вызвать файл mylayout
Это может быть так просто, как
xkb_symbols "basic" {
name[Group1] = "My Layout";
include "us"
key <AE03> { [ 3, numbersign, sterling, sterling] };
include "level3(ralt_switch)"
}
basic
это просто имя, мы встретимся позже.
name[Group1]
Так же просто название, кажется, но он не будет играть никакой роли позже.
include "us"
включает в себя простую клавиатуру США. На самом деле us
это другой файл в том же каталоге. Это раскладка клавиатуры, которую мы адаптируем. Выберите другой по мере необходимости. Примечание: нет точки с запятой в конце этой строки.
key
Линия одна адаптация клавиатуры, больше может следовать. <AE03>
Можно найти в файлах под /usr/share/X11/xkb/keycodes
. Используйте xev
программу, чтобы выяснить, что клавиша «3» имеет код клавиши 12 и в файле кодов клавиш Xfree86
она сопоставлена <AE03>
.
- Наконец, еще одна
include
директива для активации другой опции клавиатуры, в этом случае я хочу, чтобы правая клавиша Alt была клавишей Shift уровня 3, то есть клавишей, которая дает доступ к sterling
знаку, который я определил выше. level3
это просто имя файла в той же папке с ralt_switch
одним его разделом. Посмотрите вокруг и выберите, что вам нужно включить.
2) Я не положил mylayout
в системную папку. Скорее я сделал только мягкую ссылку из системной папки на папку, которая мне по вкусу, чтобы сразу увидеть, что это не стоковое программное обеспечение.
3) Далее я не исправлял evdev.xml
, чтобы снова не допустить проблем с обновлением. Но это было бы необходимо, чтобы найти mylayout в редакторе конфигурации клавиатуры (для xfce4 это так xfce4-keyboard-settings
). Вместо этого я использовал xfce4-settings-editor
и изменил keyboard-layout->XkbLayout
на mylayout
(имя файла) и XkbVariant
на basic
(см. Выше). После этого mylayout/basic
отображается в редакторе настроек клавиатуры. evdev.xml
Похоже, что запись необходима только для того, чтобы можно было выбрать макет.
Таким образом, настройки клавиатуры теперь выживают в спящем режиме и перезагружаются.
Дополнительную информацию можно найти здесь: http://www.charvolant.org/~doug/xkb/html/node5.html .
Другой подход к решению проблемы режима сна (не пробовал сам) можно найти здесь: https://www.vinc17.net/unix/xkb.en.html .
ОБНОВЛЕНИЕ: работал с Mint 18.3 в тот же момент, когда я изменил настройки в xfce4-settings-editor, как описано выше.
ОБНОВЛЕНИЕ: с 18.04, gdm3 в качестве диспетчера отображения и XFCE4 в качестве диспетчера окон, выглядит так, как будто ~ / .Xmodmap читается снова, и настройки, кажется, выдерживают приостановку. (Я редко использую режим ожидания, и я никогда не уверен, в каком режиме работает ноутбук).