как зарегистрировать сочетание клавиш для ввода диакритических знаков в icewm?

как зарегистрировать сочетание клавиш для ввода диакритических знаков в icewm?

Я пытаюсь настроить сочетания клавиш для ввода распространенных диакритических знаков. Я могу заставить xdotool вводить диакритические знаки в терминале или из командной строки icewm (или даже из gmrun):

xdotool key Aacute

Но следующие сопоставления клавиш (в файле ключей icewm) не работают:

key "Ctrl+Alt+a"                  xdotool key Aacute
key "Ctrl+Alt+a"                  xdotool --delay 1000 key Aacute

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

key "Ctrl+Alt+a"                  zenity --info --text="shortcut works"

Есть ли у кого-нибудь способ зарегистрировать привязку клавиш, чтобы диакритический знак действительно набирался в активном приложении?

решение1

Использование setxkbmapили xmodmapкажется правильным, но FWIW и FTR я обнаружил, что следующее сработало для меня после того, как я наткнулся на этот вопрос. Я надеюсь, что это поможет другим, кто хочет использовать xdotool.

У меня есть xdotool, эмулирующий эти клавиши, поскольку у меня их нет на клавиатуре. Обратите внимание на использование &для запуска команды в фоновом режиме, чтобы IceWM мог вернуться из обработки горячей клавиши и не мешать xdotool.

200 мс — это самая короткая задержка, которую я мог бы использовать и которая все еще работала бы надежно. Я не уверен, --clearmodifiersимеет ли это смысл для вашего варианта использования или нет.

key "Ctrl+Up"          xdotool sleep 0.2 key --clearmodifiers Page_Up &
key "Ctrl+Down"        xdotool sleep 0.2 key --clearmodifiers Page_Down &
key "Ctrl+Shift+Up"    xdotool sleep 0.2 key --clearmodifiers Home &
key "Ctrl+Shift+Down"  xdotool sleep 0.2 key --clearmodifiers End &

Также обратите внимание, что удерживание этих клавиш не приводит к ожидаемому повторяющемуся поведению (поскольку горячие клавиши IceWM не являются лучшим выбором для этого), но для моих целей этого вполне достаточно.

решение2

Мне не удалось заставить работать мое оригинальное решение, поэтому я изменил раскладку клавиатуры. В раскладке клавиатуры по умолчанию для США нет нужных мне диакритических знаков, но в международной версии они есть. Чтобы попробовать:

setxkbmap -layout 'us(intl)'

Но интернациональная версия использует compose по умолчанию для некоторых клавиш. Например, символ ' больше не реагирует немедленно. Поэтому вместо этого я решил создать собственную раскладку клавиатуры на основе клавиатуры США.

Я создал новый файл:/usr/share/X11/xkb/symbols/erik

partial default alphanumeric_keys
xkb_symbols "basic" {
  include "us"
  include "eurosign(5)"

    key <AC01> { [         a,          A,        aacute,           Aacute ] };
    key <AD03> { [         e,          E,        eacute,           Eacute ] };
    key <AD08> { [         i,          I,        iacute,           Iacute ] };
    key <AD09> { [         o,          O,        oacute,           Oacute ] };
    key <AD07> { [         u,          U,        uacute,           Uacute ] };

    key <RALT>  { type[Group1]="TWO_LEVEL", [ ISO_Level3_Shift, Multi_key ]   };  

    modifier_map Mod5   { <RALT> };
};

чтобы xkb принял изменения:

sudo dpkg-reconfigure xkb-data

чтобы попробовать раскладку клавиатуры:

setxkbmap -layout erik

Теперь alt_gr + [aeiou] должно набрать [áéíóú].

Я сделал изменения постоянными, вызвав указанную выше команду при запуске с помощью файла запуска icewm. Я думаю, что можно будет выбирать раскладку с помощью переключателя клавиатуры вашего дистрибутива, но я не проверял это. Можете свободно назвать файл как-нибудь иначе, если только вы не хотите оказать мне огромную честь назвать вашу раскладку клавиатуры в мою честь. Только обязательно избегайте двухбуквенных кодов, потому что все раскладки стран по умолчанию так называются.

примечания:
Вы можете проверить другие файлы сопоставления в каталоге символов для примеров.
Некоторые ресурсы для понимания формата файла можно найти здесь:
https://www.x.org/wiki/XKB/

Связанный контент