3

Я использую MacBook с хорватским макетом. Распространенная хорватская раскладка ПК (в Windows и в Linux) использует комбинации с AltGr для получения различных символов, таких как ...

  • AltGr+V для @
  • AltGr+F для [
  • AltGr+B для {

На OS X это заменено на ..

  • Alt+Shift+2 для @
  • Alt+Š для [
  • Alt+Shift+Š для {

- то есть, американские позиции макета + alt обеспечивают требуемый символ.

Когда я работаю с Linux, мне трудно переключиться обратно на хорватское картографирование ПК. Следовательно, я склонен использовать макет в США чаще всего (и тогда у меня возникает проблема невозможности ввода локальных символов, таких как ČĆŽŠĐ, плюс проблема, связанная с тем, что НЕ нужно вводить Alt для @, [, {и т.д.)

Сочетания определения картографирования, расположенные в Ubuntu в /usr/share/X11/xkb обеспечивают простой способ переназначить символы на KeyDown, сдвиг+KeyDown, AltGr+KeyDown и AltGr+Shift+KeyDown. Я не мог найти способ сопоставить вещи с alt+keydown и alt+shift+keydown .

Как мне сопоставить глифы с alt+keydown и alt+shift+keydown в X11?

2 ответа2

3

Вы не можете настроить его, потому что Alt не является модификатором кода ключа в стандартных X-серверах. В X11 ключи могут быть определены и изменены с помощью xmodmap . Программа xev может быть использована для идентификации кода ключа. Запустите xev и нажмите 2 . На немецкой клавиатуре ПК это выглядит так:

KeyPress event, serial 33, synthetic NO, window 0x3000001,
    root 0x69, subw 0x0, time 3044226, (160,148), root:(164,198),
    state 0x0, keycode 11 (keysym 0x32, 2), same_screen YES,
    XLookupString gives 1 bytes: (32) "2"
    XmbLookupString gives 1 bytes: (32) "2"
    XFilterEvent returns: True

KeyRelease event, serial 33, synthetic NO, window 0x3000001,
    root 0x69, subw 0x0, time 3044305, (160,148), root:(164,198),
    state 0x0, keycode 11 (keysym 0x32, 2), same_screen YES,
    XLookupString gives 1 bytes: (32) "2"
    XFilterEvent returns: False

Вы можете видеть, что код ключа для ключа 11. Теперь вы можете отобразить определение кода ключа с помощью xmodmap:

$ xmodmap -pke|grep ' 11 ='
keycode  11 = 2 quotedbl twosuperior oneeighth twosuperior oneeighth

Вы можете увидеть четыре разных ключа, которые может сгенерировать код 11 ключа. Страница man для xmodmap объясняет, какой ключ генерируется каким модификатором:

    keycode NUMBER = KEYSYMNAME ...
           The list of keysyms is assigned to the indicated keycode (which
           may be specified in decimal, hex or octal and can be determined
           by running the xev  program).   Up  to  eight  keysyms  may  be
           attached  to  a  key, however the last four are not used in any
           major X server implementation.  The first keysym is  used  when
           no  modifier  key  is pressed in conjunction with this key, the
           second with Shift, the third when the Mode_switch key  is  used
           with  this  key  and  the  fourth when both the Mode_switch and
           Shift keys are used.

Только Shift и Mode_switch являются допустимыми модификаторами для кодов клавиш X11. Если вы хотите, чтобы ваш Alt ключ был допустимым модификатором, вы должны установить свой X-сервер. Теоретически это возможно, потому что возможно 8 модификаторов. Но ваш X-сервер должен это знать.

1

Ну, у меня есть глупая идея: вы можете взломать ее вместе с xdotool и xbindkeys:

добавьте следующее в ваш ~/.xbindkeysrc

"xdotool key at"
    Shift+Alt+Mod2 + 2

Taadaa!

(Хорошо, принеси отрицательные голоса!)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .