“1. Jadi, apa yang dilakukan pengubah level 5? ”
Ia memilih level kelima. Pengubah level 2 (hanya shift biasa) memilih level kedua, dan level 3 memilih level ketiga.
Alasan bahwa pengubah tingkat 5 memilih tingkat kelima alih-alih tingkat keempat (tepat setelah pengubah tingkat 3) adalah bahwa ketiga pengubah ini dapat digabungkan dengan berbagai cara untuk memilih delapan tingkat yang berbeda (ini termasuk tidak menggunakan pengubah mana pun, yang hanya menekan tombol tanpa pengubah seperti itu). Ada delapan kombinasi sejak 2 ↑ 3 = 8. Untuk dua pengubah pertama ada empat kombinasi:
- Tidak ada pengubah (level 1)
- Pengubah level 2, alias shift (level 2)
- Pengubah level 3 (level 3)
- 2nd + 3rd modifier (level 4)
Menambahkan pengubah ketiga (level 5) menambah empat level lagi.
"2. Bagaimana cara mengaturnya sehingga saya bisa mendapatkan 5 atau enam karakter yang berbeda dari satu kunci (dimodifikasi oleh Shift, Alt Grdan Right
Ctrlmisalnya)? "
Pertama-tama Anda membutuhkan tata letak yang menggunakan lima karakter atau lebih per kunci. Anda dapat memilih tata letak yang ada, tetapi jika Anda hanya ingin menambahkan lebih banyak tingkat ke tata letak yang sedang Anda gunakan, itu mungkin tidak optimal. Misalnya, ada tata letak keyboard Neo († 1), tapi itu "dioptimalkan untuk Bahasa Jerman" jadi tidak terlalu bagus untuk sebagian besar penutur bahasa Inggris.
Meski begitu, mungkin instruktif untuk melihat kunci apa yang telah dipilih Neo untuk pengubah level 5.
Neo rupanya memanggil pengubah level 5 untuk "Mod4". Jadi seperti yang Anda lihat, gunakan tombol di sebelah kanan tombol shift kiri ( LSGT
) dan tombol alt kanan / AltGr
kunci. Ini pada keyboard Eropa (105 tombol) yang dibandingkan dengan keyboard AS (104 tombol) memiliki shift kiri yang sempit dan tinggi dan kembali tipis. Untuk tata letak keyboard yang didasarkan pada keyboard AS, orang mungkin harus — atau lebih suka — memilih tombol lain.
Memilih kunci pengubah level 5
Dalam jawaban sup ia memilih untuk menggunakan Xmodmap. Saat ini alat seperti Setxkbmap direkomendasikan daripada Xmodmap. Xkb hadir dengan banyak pilihan standar untuk hal-hal seperti memilih pengubah level 5. Jika Anda berkonsultasi dengan
man xkeyboard-config dan mencari lv5
Anda akan menemukan opsi ini:
┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option │ Description │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│ │ lock when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
└──────────────────────┴───────────────────────────────────────────────────┘
Jadi opsi yang didokumentasikan adalah LSGT
kunci, tombol alt kanan, tombol Windows kanan, dan tombol Windows kiri. Seperti yang telah kita lihat, Neo menggunakan dua opsi pertama.
Katakanlah Anda ingin menggunakan lv5:ralt_switch_lock
opsi dengan beberapa tata letak. Perintah ini mengatur us
tata letak dengan kunci pengubah level 5 ini:
setxkbmap -option "lv5:ralt_switch_lock" us
Jadi untuk semua opsi yang didokumentasikan man xkeyboard-config
, gunakan itu sebagai argumen -option
ketika menggunakan Setxkbmap.
Jika opsi-opsi ini tidak cukup dan Anda ingin mendefinisikan kunci lain untuk menjadi pengubah level 5, penting untuk melihat deklarasi opsi-opsi ini. Mereka tampaknya berada di
/usr/share/X11/xkb/symbols/level5
. Pernyataan untuk
lv5:ralt_switch_lock
terlihat seperti ini:
partial modifier_keys
xkb_symbols "ralt_switch_lock" {
include "level5(lock)"
key <RALT> {
type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
};
};
Sisi kanan symbols[Group1]
menyatakan kunci atau karakter apa yang harus dihasilkan setiap tingkat kunci. Ini menggunakan semua delapan level yang mungkin karena seharusnya mengunci pengubah level 5 ketika ditekan bersama dengan tombol shift level 5 lainnya. Jadi level 5–8 memancarkan
ISO_Level5_Lock
karena semua level ini diakses dengan menahan shift level 5 dan beberapa kombinasi tombol shift lainnya (tidak ada semuanya). Jika Anda hanya menginginkan perilaku shift dan bukan juga perilaku mengunci-jika-dua-ditekan, Anda dapat membuat deklarasi yang lebih sederhana (dari file yang sama):
// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
key <RALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
include "level5(modifier_mapping)"
};
Menambahkan level tambahan ke tata letak
Layout Xkb cukup modular. Anda dapat memasukkan tata letak yang ada dan mengubahnya. Jadi kita dapat memilih tata letak yang ada dengan kurang dari 5 level dan menambahkan beberapa level ke dalamnya.
Anda dapat membuat tata letak baru dengan menyalin file dengan tata letak Anda
/usr/share/X11/xkb/symbols/
, atau ke mana pun alat Xkb Anda mencari tata letak. Tapi ini membutuhkan hak istimewa sudo jadi itu bukan solusi terbaik. Atau Anda dapat menyalin struktur direktori xkb/
dan meletakkan layout Anda di direktori yang sesuai xkb/
, yaitu
symbols/
. Jadi katakan Anda telah membuat file xkb-tree/symbols/my-layouts
. Untuk menggunakan tata letak yang ditentukan dalam file ini, Anda dapat menggunakan -print
opsi setxkbmap
dan kemudian mengirimkan hasilnya xkbcomp
. Skrip pembungkus ini menggunakan tata letak sebagai input:
#!/bin/sh
# `-option ""` resets all options.
setxkbmap -option "" -layout "$1" \
-print |
xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"
Sejauh menyangkut file tata letak, katakanlah kita ingin memperluas tata letak “AS internasional”, yang menggunakan empat level. Pertama-tama kita mengatur tombol shift level 3 dan level 5 dengan cara yang sama seperti yang dilakukan Neo:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
};
Sekarang kami ingin menambahkan beberapa karakter tambahan. Mari kita gunakan empat tombol pertama dari tata letak Qwerty sebagai contoh. Kunci-kunci ini Q
untuk R
, yang sesuai <AD01>
dengan <AD04>
. Pertama, kita perlu membuat kunci yang mampu menggunakan hingga delapan level:
key.type[Group1] = "EIGHT_LEVEL";
Untuk empat level pertama, agar tidak mendefinisikan ulang, kami memetakannya NoSymbol
. Lalu kami menambahkan dua level. Pada level 5 kami menambahkan panah ←↓↑→
(† 2). Pada level 6 kita menambahkan tombol arah. Tata letak kami akhirnya tampak seperti ini:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
// Make the following keys capable of using eight levels.
key.type[Group1] = "EIGHT_LEVEL";
key <AD01> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
leftarrow, Left
] };
key <AD02> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
downarrow, Down
] };
key <AD03> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
uparrow, Up
] };
key <AD04> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
rightarrow, Right
] };
};
Untuk menggunakannya, kita dapat menggunakan skrip wrapper yang kita buat:
./setxkbmap-wrapper "my-layouts(mine)"
† 1: Neo ada de(neo)
di Xkb; setxkbmap "de(neo)"
.
† 2: Untuk menemukan nama simbolis yang digunakan Xkb, cari file dengan nama keysymdef.h
. Itu harus di bawah direktori bernama X11/
. Anda juga dapat menggunakan nama Unicode, misalnya U2192
untuk U + 2192.