Saya dapat mengubah tata letak/pemetaan keyboard saat Sistem X Window berjalan menggunakan ~/.Xmodmap
(dan saya kira Anda juga dapat melakukannya melalui protokol X secara langsung, misalnya menggunakan libxcb sebagai pembungkus di sekitar panggilan protokol X).
Saya dapat melakukan hal yang sama (agak) di konsol/tty (mis. ketika X tidak berjalan) menggunakan loadkeys
.
Apakah ada cara untuk menyesuaikan tata letak keyboard dengan cara yang sama, tetapi dari sumber tunggal , sedemikian rupa sehingga memengaruhi X dan konsol, mis. dengan cara yang “agnostik X-dan-konsol”?
(Satu-satunya cara yang dapat saya pikirkan adalah dengan menulis "driver keyboard" yang berbicara dengan antarmuka input kernel, evdev
, dan mengirimkan input yang Anda inginkan (melalui uinput
?), atau apa, tapi saya tidak tahu apakah ini masuk akal, atau ada cara yang lebih mudah.)
Jawaban yang Diterima:
Ya, ada caranya, dan memang begitulah cara paket penyiapan konsol Debian melakukannya.
- Tata letak keyboard ditentukan dalam istilah XKB (model, tata letak, varian, dan opsi) oleh administrator dalam file bernama
keyboard
, biasanya/etc/default/keyboard
. Ini adalah sumber tunggal. Itu dapat diedit dengan editor teks. setxkbmap
program diberikan pengaturan XKB yang sama dan mengonfigurasi server X11 yang sesuai.- Skrip pengelola pasca-pemasangan paket konfigurasi keyboard menjalankan
setxkbmap
langsung, dengan/etc/default/keyboard
pengaturan, jika menemukan dirinya dengan layar X11. Jadidpkg-reconfigure keyboard-configuration
dijalankan dari emulator terminal GUI X11 akan memengaruhi tata letak keyboard X11.
- Skrip pengelola pasca-pemasangan paket konfigurasi keyboard menjalankan
setupcon
skrip mengambil pengaturan XKB ini, meneruskannya melaluickbcomp
utilitas untuk menghasilkan peta keyboard, dan memuat peta keyboard itu ke terminal virtual kernel denganloadkeys
/kbdcontrol
.- Skrip ini dijalankan pada bootstrap sistem oleh suatu layanan.
- Ini juga dapat dijalankan secara manual di lain waktu.
Sistem operasi systemd lainnya bekerja secara berbeda tetapi juga memiliki satu sumber.
- Tata letak, varian, dan opsi XKB disimpan di
/etc/X11/xorg.conf.d/00-keyboard.conf
. Ini adalah satu-satunya sumber.- File ini langsung dibaca oleh server X11 saat startup dan menyetel peta keyboard X11 secara langsung.
- File ini diurai oleh
systemd-localed
saat memulai. File tidak dapat diedit secara berguna dengan editor teks saatsystemd-localed
sedang berjalan, karena layanan akan dengan senang hati menimpanya dengan informasi dalam memorinya sendiri. - Untuk mengubah informasi XKB, jalankan
localectl
, yang berbicara ke server lain yang pada gilirannya berbicara dengansystemd-localed
.
systemd-localed
mengonversi pengaturan XKB menjadi nama peta keyboard terminal virtual menggunakan pemetaan di/usr/share/systemd/kbd-model-map
, yang kemudian ditulis ke/etc/vconsole.conf
. Tidak seperti sistem Debian, sistem ini tidak menghasilkan peta dengan cepat dari informasi XKB, tetapi hanya memilih peta statis yang telah disediakan sebelumnya yang tercantum dalam file peta.systemd-vconsole-setup
berjalan pada bootstrap, membaca/etc/vconsole.conf
, dan memuat peta keyboard ke terminal virtual kernel dengan menjalankanloadkeys
.
Bacaan lebih lanjut
keyboard
. Panduan Pengguna penyiapan konsol . Debian.ckbcomp
. Panduan Pengguna penyiapan konsol . Debian.- Andrew T. Young (2011). Konfigurasi Keyboard .
- Di mana Xkb mendapatkan konfigurasinya?
- https://unix.stackexchange.com/a/326804/5132