@ Ответ Даниэля указал мне правильный путь, но я хотел бы остановиться на нем.
У меня работает на 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 читается снова, и настройки, кажется, выдерживают приостановку. (Я редко использую режим ожидания, и я никогда не уверен, в каком режиме работает ноутбук).