Для чого модифікатор Mode_switch?


29

Граючи з xmodmapя виявив модифікатор ключа я не чув: Mode_switch. Здається, це має щось спільне із вставкою спеціальних символів.

Я призначив його ключем, але, здається, це не має ніякого ефекту. Навіщо це? Чи відрізняється він від ISO_Level3_Shift(Alt Gr) ?



Посилання на пов'язане запитання: unix.stackexchange.com/questions/461972/…
Джефф

Відповіді:


29

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

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


Відмінно знаю, що ISO_Level3_Shiftможе діяти "липко", я довго шукав цю функціональність: unix.stackexchange.com/questions/39014/…
vemv

@Gilles Отже, є AltGrі Mode_switchті ж ключі? Якщо ні, то в цьому посиланні вони звучать так, ніби це однакові речі. Не могли б ви це трохи уточнити?
Утку

@Utku Mode_switchі ISO_Level3_Shiftроби те ж саме дещо по-різному. Я не претендую на розуміння відмінностей; більшість часу вони не мають значення, але я пам'ятаю, що змішування xmodmap з іменами XKB час від часу призводило до того, що модифікатори не працюють належним чином.
Жил "ТАК - перестань бути злим"

@Gilles Я також не розумію відмінності , але я в кінцевому підсумку або з us(cz_sk_de)особливостями або з призначеним для користувача Xmodmap відображеннями для деяких клавіш (кома, наприклад) , в залежності від того , AltGrє Mode_switchчи , ISO_Level3_Shiftале не може отримати обидві функції одночасно.
Павло Шімерда

4
Клейкі клавіші - не CapsLockстиль. Клейкі ключі називаються «засувками», а клавіші блокування - замками. Клейкі клавіші відпускаються після натискання наступного немодифікатора, поки діють клавіші блокування, поки вони не натискаються знову.
Гільденстерн

12

Ця відповідь не призначена для того, щоб суперечити відповіді @Gilles, а призначена для опису іншого аспекту обробки Input, який, на мою думку, є "недостатньо освітленим" у своїй відповіді.

Ви можете використовувати як 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'

Оце Так! Я бачу, що ви маєте на увазі у своєму останньому другому абзаці, ви щойно зробили мій день 😉 Мені більше не потрібно копіювати та вставляти з htmlarrow.com, щоб писати такі речі fn: A → B.
Патрік Макларен

Я думаю, що нормальним способом цього є використання ISO_Level5_Shift. Це дає 8 рівнів, 7-й - lvl3+lvl5+H& c.
Зубник

1

Mode_shiftу Xkb - це клавіша зсуву для груп або макетів. Якщо у вас є макет з кількома групами, ви можете утримувати цю клавішу, щоб отримати доступ до наступної групи. Якщо у вас є кілька макетів, ви можете утримувати цю клавішу для переходу між макетами († 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, і в їх посібниках написано, що це абревіатура для "альтернативної графіки". Це має сенс, оскільки мабуть, що використання клавіатури для малювання «графіки» (символи для малювання коробки, що використовуються в текстових інтерфейсах користувача) прийшло задовго до того, як була хороша підтримка швидкого перемикання між декількома сценаріями.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.