Catatan : Wayland memang menggunakan xkb, tetapi banyak xTools telah berhenti berfungsi dengan baik (xdotool misalnya)
Catatan : Ini adalah tutorial yang tidak lengkap. Ini sangat berguna bagi seseorang yang ingin membuat tata letak delapan tingkat baru dan memahami sintaksis.
Catatan: Solusi cepat dan kotor disediakan. Ini termasuk spreadsheet yang secara otomatis menghasilkan kode yang Anda butuhkan.
Memahami Direktori XKB
cd /usr/share/X11/xkb/ && ls
- types- Bagaimana kunci yang dihasilkan diubah oleh Pengubah Aktif . (Shift, Control, Alt ~)
Penting jika Anda ingin menyesuaikan Tombol Pengubah.
- geometry- Digunakan untuk menggambar grafik keyboard.
Penting jika Anda merancang perangkat keras keyboard yang tidak standar.
- rules- Mengambil konfigurasi yang sesuai untuk pengaturan Anda saat ini.
Anda perlu mendefinisikan ini
- keycodes- Penerjemah kode kunci untuk perangkat keras keyboard.
Contoh: Keyboard Macintosh memahami bilah spasi sebagai 57
. Namun kami menulisnya sebagai<SPCE>
- symbols- Nilai mana yang ditugaskan untuk Keycodes apa .
Di sinilah kita akan mendefinisikan tata letak khusus kita.
- compat- Pendek untuk Kompatibilitas .
Perilaku internal Pengubah (Shift, Control, Alt ...)
Alur kerja
keycodes > symbols > compat
Saya hanya menyentuh symbols
: Lihat di bawah untuk solusi Cepat dan Kotor .
Symbol Maps
/symbols/us File apa pun dalam direktori ini mengikuti struktur yang sama.
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "US/ASCII";
key <TLDE> { [ quoteleft, asciitilde ] };
key <AE01> { [ 1, exclam ] };
modifier_map Shift { Shift_L, Shift_R };
};
partial - Bukan peta keyboard lengkap
alphanumeric_keysBagian keyboard sedang dipetakan. Beberapa dapat digunakan
Catatan: Jika tidak *_keys
ditentukan, keyboard lengkap diasumsikan.
"basic" - Nama peta simbol
name[Group1]= "US/ASCII";Memberi nama unik untuk grup keyboard ini.
modifier_mapUntuk mengedit kunci pengubah . (ctrl, shift, alt ~)
Shift { Shift_L, Shift_R };Biasanya tidak perlu. Ini memetakan kedua shift ke pengubah shift, alias level 2.
key <TLDE> Tombol Tilde - Biasanya tombol kiri atas tepat di atas Tab
key <AE01> Ilustrasi - Terdiri dari Tiga Bagian,AE01
A= blok kunci alfanumerik.
KP= Keypad = Tombol
FKFungsi
E= Baris pada Keyboard.
Space Key= Abaris
Shift Key= Bbaris
Caps Lock= Cbaris
Tab Key= Dbaris
01= Posisi kunci pada baris.
AE01= 1
AB02= X
AC05=G
[+ ]- Dalam Bahasa C; Kurung kotak menunjukkan daftar, di mana item dibagi ,. Panjang daftar menentukan jumlah level. Sebagai contoh:
key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }
Biasanya, Level menunjukkan penekanan tombol berikut dengan:
- Tidak Ada Kunci Pengubah
- Shift
- Alt Gr
- Shift + Alt Gr
- Custom - Tidak mungkin melihat apa pun di luar level 4.
Singkatnya, jika Anda ingin memetakan kunci untuk menggeser + altgr, daftar Anda harus memiliki setidaknya empat item.
PERINGATAN - Kesalahan Umum
Salah satu dari baris ini akan menyebabkan kesalahan kritis, dan akan meninggalkan Anda tanpa keyboard yang dapat digunakan:
key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
Backspace
seharusnya BackSpace
: Memberi perhatian ekstra pada ejaan.
- Entri kosong seharusnya
VoidSymbol
.
Ukuran Keamanan Terbaik!
Cadangkan file Anda yang sedang diedit:
sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP
Buat skrip yang dapat Anda jalankan tanpa root password
Sesuatu seperti:
#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us
Jika ada yang tidak beres, gunakan mouse Anda untuk menjalankan baris kode itu (terkandung dalam skrip bash yang Anda berikan izin kepada sudoers. Ingatlah chmod +x
untuk mengizinkan menjalankan sebagai yang dapat dieksekusi.)
Strategi cadangan untuk memulihkan sistem yang rusak
- PERINGATAN: Keyboard & Keyboard di Layar akan berhenti bekerja dengan kesalahan sedikit pun.
- Mouse akan bekerja . Mengetik dapat dilakukan dengan menyorot karakter, dan menempelkannya menggunakan klik tengah. Di Bash, Anda bisa
return
(Menekan Enter) dengan menempelkan linebreak.
- Keyboard akan bekerja dalam mode pemulihan di shell root. (Diakses dari bash)
- Anda selalu dapat menggunakan lingkungan langsung untuk memperbaiki file.
Solusi cepat dan kotor
- Kesini
- File> Buat Salin
- Mapper Sheet adalah tempat Anda menentukan tata letak Anda.
- Entri Karakter Tunggal diterjemahkan ke dalam kode yang dipahami oleh program.
( !
menjadi U0021
). Unicode didukung!
- String tidak diterjemahkan dan diperlakukan apa adanya. PASTIKAN TIDAK ADA Ejaan atau KASUS kesalahan !.
- Kotak Kosong secara otomatis diisi dengan
VoidSymbol
.
- XKB-Sort Lembar berisi grup utama, misalnya:
key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
Mengubah ini di semua 8 level:
1234567890-= // Physical Keys
![]"*{}/')(\ // Changed to these characters
- XKBTab juga memiliki garis. Setiap tab lainnya dapat diabaikan (kodenya).
sudo vim /usr/share/X11/xkb/symbols/us
- Ganti konten tata letak. Pilih satu yang tidak akan Anda gunakan. Sebagai contoh: Saya mengubah entri colemak meninggalkan struktur utuh, dan mengganti kunci.
Garis minat:
key.type[group1]="EIGHT_LEVEL"; // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] };
key { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5