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 xmodmapperintah untuk ~/.bashrcbekerja, tetapi perlu memulai terminal setiap kali setelah login)
Beberapa tahun yang lalu (?), xkbDipilih untuk menangani pemetaan kunci dan konfigurasi (berinteraksi dengan X), tetapi xmodmapmungkin 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 .desktopfile 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.desktopfile, dan masukkan:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
ganti medengan nama pengguna Anda (perhatikan bahwa saya tidak repot-repot untuk mencoba ~/atau $HOMEyang 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 ~/.Xmodmapfile dalam kasus ini (atau gunakan -eopsi, 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, xmodmapmasih sepertinya tidak berfungsi - sementara perintah itu benar-benar dijalankan (pelacak membuktikan itu). Satu-satunya kesimpulan yang mungkin saya temui pada saat ini adalah bahwa xkbprosesnya berjalan terlambat dalam proses masuk, dan mungkin berakhir setelah xmodmapdijalankan. Sepertinya kondisi perlombaan ... Jadi, akhirnya, saya mengubah execbaris file desktop autostart ke
Exec=$HOME/bin/mystart &
(perhatikan &)
mystartadalah skrip di direktori baru yang binsaya 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!