Terlambat ke pesta, tapi ini membuatku gila juga; dan, keras kepala seperti saya, menyerah bukanlah pilihan.
Pada dasarnya ini yang saya coba, (sebagai pengguna saya, atau root jika perlu)
- ~ / .Xmodmap saja
- ~ / .xsession, ~ / .xsessionrc
- ~ / .gnomerc
- ~ / .xprofile
- ~ / .xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( file konfigurasi, tidak menyentuhnya )
(Sebenarnya, menambahkan xmodmap
perintah untuk ~/.bashrc
bekerja, tetapi perlu memulai terminal setiap kali setelah login)
Beberapa tahun yang lalu (?), xkb
Dipilih untuk menangani pemetaan kunci dan konfigurasi (berinteraksi dengan X), tetapi xmodmap
mungkin juga meminta perubahan terkait kunci ke X, setelahxkb
melakukan tugasnya selama inisialisasi sesi X.
Masalahnya adalah kapan pengaturan xmodmap ini terjadi?
Ini tampaknya file-file di atas diproses terlalu dini dalam proses, dan baik X tidak siap untuk menerima xmodmap perubahan, atau xkb akan menimpa mereka.
Catatan: Saya menambahkan beberapa "pelacakan" ke file-file ini untuk memastikan mereka benar-benar berjalan pada suatu waktu!
Sebuah solusi yang sepertinya berhasil
Saya tidak ingin menambahkan .desktop
file pada awalnya (skrip satu baris sederhana harus cukup), tapi itu berhasil, jadi ini dia.
Solusi berasal dari Cara memetakan atau menukar tombol keyboard khusus di Linux? "solusi 1"
Pada dasarnya buat ~/.config/autostart/my-xmodmap.desktop
file, dan masukkan:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
ganti me
dengan nama pengguna Anda (perhatikan bahwa saya tidak repot-repot untuk mencoba ~/
atau $HOME
yang mungkin berfungsi sama baiknya di tempat /home/me
, dan path lengkap xmodmap kemungkinan tidak diperlukan ...), dan tambahkan bit exec
chmod +x ~/.config/autostart/my-xmodmap.desktop
Perintah xmodmap harus ada dalam ~/.Xmodmap
file dalam kasus ini (atau gunakan -e
opsi, atau pilih nama file lain!). Logout dan kembali.
Perhatikan bahwa Anda dapat membuat program awal dari "Aplikasi Startup".
Solusi lain adalah dengan melupakan xmodmap dan belajar cara mengonfigurasi xkb
!
Edit (lagi)
Kadang-kadang, mungkin 25% dari login, xmodmap
masih sepertinya tidak berfungsi - sementara perintah itu benar-benar dijalankan (pelacak membuktikan itu). Satu-satunya kesimpulan yang mungkin saya temui pada saat ini adalah bahwa xkb
prosesnya berjalan terlambat dalam proses masuk, dan mungkin berakhir setelah xmodmap
dijalankan. Sepertinya kondisi perlombaan ... Jadi, akhirnya, saya mengubah exec
baris file desktop autostart ke
Exec=$HOME/bin/mystart &
(perhatikan &
)
mystart
adalah skrip di direktori baru yang bin
saya buat yang berisi
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
dan
chmod u+x ~/bin/mystart
Script tidur 5 detik sebelum menjalankan xmodmap, dan melacak ketika itu berjalan (dalam file /tmp/xmodmap-has-run
).
Semoga itu saja!