Saya mengatur openbox di laptop saya yang menjalankan Linux Mint 13. Saya ingin tombol Caps Lock saya berfungsi sebagai kunci kontrol tambahan. Saya menempatkan pengaturan yang diperlukan dalam ~/.Xmodmap
file saya dan memeriksanya dengan menjalankan
xmodmap ~/.Xmodmap
Itu bekerja dengan benar.
Namun ketika saya masuk kembali ke sesi openbox saya, perubahan kunci ini tidak ada. Menjalankan xmodmap
perintah di atas membuatnya berfungsi lagi, tetapi saya ingin itu terjadi secara otomatis saat startup.
Yang menarik adalah saya menambahkan zenity
perintah tes sebagai berikut ke ~/.config/openbox/autostart
file saya
zenity --info --text=Hello
Ini menghasilkan jendela dialog kecil dan keluar hanya setelah dialog ditutup.
Sekarang, ketika saya masuk kembali ke sesi openbox saya, Caps Lock bertindak sebagai tombol Ctrl, sampai dialog zenity ditutup. Setelah dialog itu ditutup, Caps Lock kembali ke perilaku standarnya.
Saya belum menemukan apa pun di sini dengan google, jadi saya minta bantuan di sini. Apakah kalian punya ide tentang apa yang salah?
Memperbarui:
Saya telah mencoba untuk mencari tahu ini dan dalam percobaan saya, saya menyalin /usr/bin/xmodmap
file saya ke /usr/bin/xmodmap_
dan mengganti /usr/bin/xmodmap
file dengan skrip bash berikut
#!/bin/bash
{
echo '-------'
date
echo xmodmap "$@"
} >> ~/xmodmap-calls
exec /usr/bin/xmodmap_ "$@"
Jadi, setiap kali ada skrip sialan pada sistem berjalan xmodmap
, saya mengenalnya.
Dengan ini, saya login kembali dan saya hanya menemukan satu entri di ~/xmodmap-calls
file saya , yang menjalankan saya ~/.Xmodmap
, yang diharapkan. Jadi, saya pikir bukan xmodmap
itu yang menimpa perubahan saya.
Selanjutnya, sedikit googling memperkenalkan saya pada setxkbmap
perintah, yang ternyata juga bisa melakukan hal yang sama. Saya mengganti executable itu juga, mirip dengan xmodmap di atas. Dan saya mendapat perintah pelakunya!
setxkbmap -option terminate:ctrl_alt_bksp
Saya sama sekali tidak tahu apa yang dilakukannya, tetapi setelah menjalankan xmodmap ~/.Xmodmap
(yang menerapkan pengaturan saya dengan benar), jika saya menjalankan perintah di atas, perubahan saya diatur ulang! Sunting : Ini ternyata sangat lucu. Hanya setxkbmap
perintah tanpa argumen, dengan senang hati menimpa perubahan saya dengan xmodmap ~/.Xmodmap
perintah.
Sekarang saya memiliki dua hal untuk mencari tahu, dari mana ini setxkbmap
dijalankan & mengapa dan bagaimana cara memperbaikinya. Saya masih dalam penyelidikan tetapi dapat dengan serius menggunakan bantuan :)
Perbarui 2
Persetan dengan xmodmap
. Saya tidak tahu dari mana setxkbmap
dipanggil, tapi saya menemukan cara untuk menggunakan setxkbmap
perintah untuk membuat Caps Lock saya berfungsi sebagai Ctrl.
setxkbmap -option ctrl:nocaps
Tepat sebelum memulai openbox. Bekerja dengan brilian. Tombol caps lock tetap berfungsi sebagai tombol ctrl. xmodmap
tidak pernah berjalan.
Saya akan membuka pertanyaan ini di sini agar seseorang yang mengetahui hal-hal ini dapat memberikan wawasan. Juga, untuk orang-orang yang menghadapi ini setelah saya :)
Perbarui 3
Inilah isinya saya .config/openbox/autostart
, seperti yang diminta oleh pedrosaurio.
#!/bin/bash
# Set the wallpaper.
feh --bg-scale /wall.png
# Set default brightness.
xbacklight -time 1 '=40'
# Compositing.
xcompmgr &
# The panel.
tint2 &
# Start a terminal too.
roxterm &
Ini tidak ada hubungannya dengan keyboard, sejauh yang saya tahu. Juga, inilah skrip yang memulai sesi saya: (Dijalankan oleh lightdm)
#!/bin/bash
setxkbmap -option ctrl:nocaps
exec openbox-session
sumber
autostart
file Anda ?Jawaban:
Saya mengalami masalah yang sama. Ternyata itu disebabkan oleh ibus. Saya cukup mencopot pemasangannya karena saya tidak memerlukan layanannya.
Saya menemukan pelakunya dengan menggunakan trik Anda mengganti setxkbmap dengan sebuah skrip, namun saya juga menambahkan
ps -AF --forest
untuk mengidentifikasi penelepon setxkbmap.sumber
Tanpa mengetahui skrip autostart Anda, taruhan saya adalah Anda tidak menggunakan sintaks yang tepat dengan membiarkan perintah Anda berjalan di latar belakang menggunakan ampersand (
&
).Coba edit
.config/openbox/autostart
file Anda sehingga terlihat seperti ini:Jika ragu lihat di wiki openbox dan lihat bagaimana semua contoh memiliki
&
setelah setiap entri.http://openbox.org/wiki/Help:Autostart
sumber
xmodmap ~/.Xmodmap
di file itu (tanpa&
, sepertinya tidak perlu). Saya telah memanggilxmodmap
(dan sekarangsetxkbmap
) dalam skrip yang memulai sesi openbox saya. Tepat sebelum menjalankanexec openbox-session
, saya menjalankansetxkbmap
perintah.sleep 1
penundaan sehinggaxmodmap
menerapkan perubahannya setelah semua yang lain dimuat, sementara bekerja sebagian besar waktu, tidak membuat saya merasa terlalu percaya diri tentang solusi. Saya lebih suka tidak melakukannya, jika saya punya alternatif.sleep
perintah, namun demikian&
diperlukan setelah setiap entri, jika tidak semua program setelah entri pertama tidak akan berjalan sama sekali.&
akan membuatnya diblokir. Saya menggunakan perilaku ini denganzenity
perintah untuk menemukan bahwaxmodmap
perubahan saya ditimpa setelahautostart
selesai. Autostart saya sekarang semakin besar dan akan menempelkannya di pertanyaan sebentar lagi. Tapi itu tidak ada hubungannya dengan keyboard.xmodmap
akan ditimpa segera setelah file autostart selesai.