Untuk apa modifier Mode_switch?

29

Bermain dengan xmodmapsaya temui tombol pengubah Saya tidak pernah mendengar: Mode_switch. Tampaknya ada hubungannya dengan memasukkan karakter khusus.

Saya menugaskannya ke kunci tetapi tampaknya tidak berpengaruh. Untuk apa ini? Apakah berbeda dengan ISO_Level3_Shift(Alt Gr) ?

vemv
sumber
Lihat juga: unix.stackexchange.com/questions/249122/…
Pavel Šimerda
Menautkan dalam pertanyaan terkait: unix.stackexchange.com/questions/461972/…
Jeff Schaller

Jawaban:

29

Mode_switchadalah nama gaya lama (pra-XKB) dari tombol yang dipanggil AltGrpada banyak tata letak keyboard. Ini mirip dengan Shift, di mana ketika Anda menekan tombol yang sesuai dengan karakter, Anda mendapatkan karakter yang berbeda jika Shiftatau AltGrjuga ditekan. Tidak seperti itu Shift, Mod_switchbukan pengubah dalam arti X11 karena biasanya berlaku untuk karakter, bukan untuk tombol fungsi, sehingga aplikasi hanya perlu melakukan pencarian karakter untuk mendapatkan efek yang diinginkan.

ISO_Level3_Shiftadalah versi XKB dari kunci ini. Secara umum, XKB jauh lebih rumit dan dapat melakukan beberapa hal ekstra mewah. Mekanisme XKB lebih umum karena memungkinkan tata letak keyboard bervariasi di mana tombol dipengaruhi oleh pengubah mana, itu menggeneralisasikan sticky ( CapsLock-style) dan Shiftpengubah simultan ( -style) dan sebagainya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Senang mengetahui bahwa ISO_Level3_Shiftdapat bertindak 'lengket', saya sudah lama mencari fungsi itu: unix.stackexchange.com/questions/39014/…
vemv
@ Gilles Jadi, apakah AltGrdan Mode_switchkunci yang sama? Jika tidak, di tautan ini , mereka terdengar seolah-olah sama. Bisakah Anda memperjelas ini sedikit?
Utku
@Utku Mode_switchdan ISO_Level3_Shiftlakukan hal yang sama dengan cara yang sedikit berbeda. Saya tidak mengklaim memahami perbedaan; sebagian besar waktu mereka tidak masalah tetapi saya ingat bahwa menggabungkan xmodmap dengan nama XKB kadang-kadang menyebabkan pengubah tidak berfungsi dengan benar.
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles Saya juga tidak mengerti perbedaan tapi aku berakhir baik dengan us(cz_sk_de)fitur atau dengan pemetaan xmodmap kustom untuk beberapa tombol (koma misalnya) tergantung pada apakah AltGrini Mode_switchatau ISO_Level3_Shifttapi tidak bisa mendapatkan kedua fitur pada waktu yang sama.
Pavel Šimerda
4
Kunci lengket bukanlah CapsLockgaya. Kunci lengket disebut "kait" dan kunci-kunci disebut kunci. Sticky keys dilepaskan setelah non-modifier berikutnya ditekan ketika kunci terkunci berlaku sampai mereka ditekan lagi.
Guildenstern
12

Jawaban ini tidak dimaksudkan untuk bertentangan dengan jawaban @Gilles, tetapi dimaksudkan untuk menggambarkan aspek lain dari penanganan input yang saya rasa "kurang penerangan" dalam jawabannya.

Anda dapat menggunakan keduanya ISO_Level3_Shift(Alt-Gr) dan Mode_switchpada saat yang sama dengan hasil yang berbeda . Ini memerlukan beberapa konfigurasi, tetapi Anda dapat memiliki keduanya, dan menggunakannya untuk menghasilkan 6 tombol berbeda per tombol keyboard fisik!

Anda dapat mengkonfigurasikan Tabmenjadi Mode_switchketika dipegang dengan dan , lalu mis. Kunci berlabel "H" pada keyboard dapat menghasilkan karakter / tombol berikut:

h
H
← (Cursor)
← (Symbol)

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

Jadi, untuk kembali ke pertanyaan Anda: IL3Sdan Mode_switchdapat dikonfigurasi untuk mengartikan hal-hal yang berbeda, sehingga Anda dapat memiliki kunci kursor dan ~ 200 karakter yang berguna dari bahasa (aksen), kotak gambar, dan karakter teknis yang ditetapkan pada 35 tombol dari baris 3 huruf.

Untuk mencapai hal di atas:

# 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"

contoh untuk 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'
Alex Stragies
sumber
Wow! Saya mengerti maksud Anda dalam paragraf terakhir ke-2 sekarang, Anda baru saja membuat hari saya 😉 Saya tidak perlu lagi menyalin dan menempel dari htmlarrows.com untuk menulis hal-hal seperti fn: A → B.
Patrick McLaren
Saya pikir cara normal melakukan ini adalah dengan menggunakan ISO_Level5_Shift. Ini menghasilkan 8 level, yang ke-7 sedang lvl3+lvl5+H& c.
Toothrot
1

Mode_shiftdi Xkb adalah tombol shift untuk grup atau tata letak. Jika Anda memiliki tata letak dengan beberapa grup, Anda dapat menahan tombol ini untuk mengakses grup berikutnya. Jika Anda memiliki beberapa tata letak, Anda dapat menahan tombol ini untuk bergeser di antara tata letak († 1).

Begitu Mode_shiftjuga untuk mengelompokkan apa Shift(atau Shift_Ldan Shift_R, menggunakan nama keysym) ke level.

Ini mungkin menjadi lebih jelas jika kita menganggapnya Mode_shiftmemiliki alias yang disebut ISO_Group_Shift(† 2). Ada juga kunci yang dipanggil ISO_Group_Latchdan ISO_Group_Lockyang sesuai dengan ISO_Level2_Latch(latch shift) dan Shift_Lock, masing-masing († 3).

Ada juga sejumlah alias untuk skrip yang berbeda:

  • kana_switch
  • Arabic_switch
  • Greek_switch
  • Hebrew_switch
  • Hangul_switch

† 1: Ini berdasarkan pada pemahaman saya tentang "kelompok" dan "tata letak" Xkb. Tampaknya mereka diperlakukan sama sejauh memilih di antara mereka dengan kunci seperti ini.

† 2: Saya mendasarkan ini pada file keysymdef.hdi repositori Git ini di revisi ab8666661fc6 (“Tambah XF86XK_AudioPreset”, 2017-05-10). Pada instalasi Anda mungkin akan menemukan file ini di /usr/include/X11/keysymdef.h.

† 3: Ada juga kunci ISO_Lock, sejenis kunci untuk keperluan umum.

Arti AltGrkuncinya

Gilles disebutkan dalam jawabannya sehubungan dengan AltGrkunci:

Mode_switchadalah nama gaya lama (pra-XKB) dari tombol yang dipanggil AltGrpada banyak tata letak keyboard.

Itu membuat saya curiga bahwa "AltGr" mungkin berarti "kelompok pengganti / alternatif", karena Mode_switchdigunakan untuk menggeser kelompok. Namun ternyata ini salah. Menurut halaman Wikipedia pada AltGrtombol , "AltGr" tampaknya berasal dari keyboard IBM, dan dalam manualnya dikatakan bahwa itu adalah singkatan untuk "grafis alternatif". Ini masuk akal, karena tampaknya menggunakan keyboard untuk menggambar "grafik" (karakter kotak-gambar yang digunakan dalam antarmuka pengguna teks) datang dengan baik sebelum ada dukungan yang baik untuk beralih dengan cepat antara beberapa skrip.

Guildenstern
sumber