Для чего нужен модификатор Mode_switch?

29

Играя с xmodmapя обнаружил модификатор ключа я не слышал: Mode_switch. Кажется, что-то связано со вставкой специальных символов.

Я назначил его клавише, но это, похоже, не имеет никакого эффекта. Для чего это? Это отличается от ISO_Level3_Shift(Alt Gr) ?

vemv
источник
См. Также: unix.stackexchange.com/questions/249122/…
Павел Шимерда
Ссылка в связанном вопросе: unix.stackexchange.com/questions/461972/…
Джефф Шаллер

Ответы:

29

Mode_switchэто старое (до XKB) имя клавиши, которая вызывается AltGrво многих раскладках клавиатуры. Это похоже на то Shift, что когда вы нажимаете клавишу, соответствующую символу, вы получаете другой символ, если Shiftили AltGrтакже нажата. В отличие от этого Shift, Mod_switchон не является модификатором в смысле X11, поскольку он обычно применяется к символам, а не к функциональным клавишам, поэтому приложениям необходимо только выполнить поиск символов для получения желаемого эффекта.

ISO_Level3_ShiftXKB-версия этого ключа. Вообще говоря, XKB намного сложнее и может делать некоторые необычные вещи. Механизм XKB является более общим, так как он позволяет изменять раскладки клавиатуры в зависимости от того, какие клавиши влияют на какие модификаторы, он обобщает модификаторы sticky ( CapsLock-style) и одновременного нажатия ( Shift-style) и так далее.

Жиль "ТАК - перестань быть злым"
источник
ISO_Level3_ShiftПриятно знать, что это может действовать «липко», я долго искал эту функциональность: unix.stackexchange.com/questions/39014/…
vemv
@ Жиль Итак, есть AltGrи Mode_switchте же ключи? Если нет, то по этой ссылке они звучат так, как будто это одно и то же. Не могли бы вы уточнить это немного?
Утку
@ Утку Mode_switchи ISO_Level3_Shiftделай тоже самое немного по-другому. Я не претендую на понимание различий; в большинстве случаев они не имеют значения, но я помню, что смешивание xmodmap с именами XKB иногда приводило к неправильной работе модификаторов.
Жиль "ТАК - перестань быть злым"
@ Жиль, я также не понимаю различий, но я заканчиваю либо us(cz_sk_de)функциями, либо настраиваемыми сопоставлениями xmodmap для некоторых клавиш (например, запятой) в зависимости от того, AltGrесть Mode_switchили ISO_Level3_Shiftнет обе функции одновременно.
Павел Шимерда
4
Липкие ключи не в CapsLockстиле. Липкие клавиши называются «защелки», а замки - замками. Липкие клавиши отпускаются после нажатия следующего немодификатора, пока действуют клавиши блокировки, пока они не будут нажаты снова.
Гильденстерн
12

Этот ответ не должен противоречить ответу @Gilles, но предназначен для описания другого аспекта обработки ввода который, как мне кажется, «недостаточно освещен» в его ответе.

Вы можете использовать как ISO_Level3_Shift(Alt-Gr), так и Mode_switchодновременно с разными результатами . Это требует некоторой настройки, но вы можете иметь их оба и использовать их для создания 6 разных клавиш на физическую клавиатуру!

Например, вы можете настроить, Tabчтобы он Mode_switchнаходился при использовании и , тогда, например, клавиша «H» на клавиатуре может выдавать следующие символы / клавиши:

h
H
← (Cursor)
← (Symbol)

with H
with ShiftH
with AltGrH
with AltGrShiftH
with TabH
with TabShiftH

Таким образом, чтобы вернуться вокруг на ваш вопрос: IL3Sа Mode_switchможет быть сконфигурирован , чтобы означать разные вещи, так что вы можете иметь клавиши управления курсором и ~ 200 полезных символов из ( с ударением) языков, коробчатого чертежу и технический набор символов о 35 ключей от 3 строки букв.

Для достижения вышеуказанного:

# Initial Setup
xmodmap -e 'keycode 23 = Mode_switch ISO_Left_Tab Tab ISO_Left_Tab Tab ISO_Left_Tab'
xmodmap -e 'keycode any = Tab'
xcape -e "Mode_switch=Tab"

пример для H:

xmodmap -pke | grep 'h H'
# Make note of the keycode, note the 8 columns after the `=`,
# then edit and feed back into xmodmap with:
xmodmap -e 'keycode  43 = h H lowrightcorner uprightcorner Left leftarrow h H'
Алекс Страгиес
источник
Вот Это Да! Я понимаю, что вы имеете в виду в своем втором последнем абзаце, вы только что сделали мой день 😉 Мне больше не нужно копировать и вставлять с htmlarrows.com, чтобы писать что-то вроде fn: A → B.
Патрик МакЛарен
Я думаю, что нормальный способ сделать это с помощью ISO_Level5_Shift. Это производит 8 уровней, 7-е существо lvl3+lvl5+Hи т. Д.
зубочистка
1

Mode_shiftв Xkb есть клавиша Shift для групп или раскладок. Если у вас есть макет с несколькими группами, вы можете удерживать эту клавишу для доступа к следующей группе. Если у вас есть несколько макетов, вы можете удерживать эту клавишу для переключения между макетами († 1).

То Mode_shiftже самое относится к группам, что Shift(или Shift_Lи Shift_R, если использовать имена ключей) к уровням.

Это может стать более понятным, если учесть, что Mode_shiftпсевдоним называется ISO_Group_Shift(† 2). Есть также ключи называются ISO_Group_Latchи ISO_Group_Lockкоторые соответствуют ISO_Level2_Latch(защелки сдвига) и Shift_Lock, соответственно († 3).

Есть также несколько псевдонимов для разных скриптов:

  • kana_switch
  • Arabic_switch
  • Greek_switch
  • Hebrew_switch
  • Hangul_switch

† 1: Это основано на моем понимании «групп» и «макетов» Xkb. Кажется, что они обрабатываются так же, как и выбор между ними с ключами, как это.

† 2: Я основываю это на файле keysymdef.hв этом Git-репозитории с ревизией ab8666661fc6 («Добавить XF86XK_AudioPreset», 2017-05-10). При установке вы, вероятно, найдете этот файл по адресу /usr/include/X11/keysymdef.h.

† 3: Существует также ключ ISO_Lock, своего рода ключ блокировки общего назначения.

Значение AltGrключа

Жиль упомянул в своем ответе связь с AltGrключом:

Mode_switchэто старое (до XKB) имя клавиши, которая вызывается AltGrво многих раскладках клавиатуры.

Это привело меня к подозрению, что «AltGr» может означать «альтернативная / альтернативная группа», поскольку Mode_switchиспользуется для смены групп. Однако это оказалось не так. Согласно странице Википедии о AltGrключе , «AltGr», кажется, происходит от клавиатур IBM, и в их руководствах говорится, что это аббревиатура для «альтернативной графики». Это имеет смысл, поскольку представляется вероятным, что использование клавиатуры для рисования «графики» (символы рисования прямоугольников, используемых в текстовых пользовательских интерфейсах) появилось задолго до того, как появилась хорошая поддержка быстрого переключения между несколькими сценариями.

Гильденстерн
источник