Openbox menimpa konfigurasi xmodmap

9

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 ~/.Xmodmapfile 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 xmodmapperintah di atas membuatnya berfungsi lagi, tetapi saya ingin itu terjadi secara otomatis saat startup.

Yang menarik adalah saya menambahkan zenityperintah tes sebagai berikut ke ~/.config/openbox/autostartfile 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/xmodmapfile saya ke /usr/bin/xmodmap_dan mengganti /usr/bin/xmodmapfile 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-callsfile saya , yang menjalankan saya ~/.Xmodmap, yang diharapkan. Jadi, saya pikir bukan xmodmapitu yang menimpa perubahan saya.

Selanjutnya, sedikit googling memperkenalkan saya pada setxkbmapperintah, 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 setxkbmapperintah tanpa argumen, dengan senang hati menimpa perubahan saya dengan xmodmap ~/.Xmodmapperintah.

Sekarang saya memiliki dua hal untuk mencari tahu, dari mana ini setxkbmapdijalankan & 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 setxkbmapdipanggil, tapi saya menemukan cara untuk menggunakan setxkbmapperintah 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. xmodmaptidak 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
Shrikant Sharat
sumber
Anda mungkin menggunakan beberapa jenis konfigurasi keyboard, mis. pilih tata letak keyboard atau yang serupa yang
mengembalikan
Satu-satunya tempat saya mengutak-atik konfigurasi keyboard adalah jendela preferensi tata letak keyboard GUI, di mana saya mengubah tombol caps lock untuk berperilaku sebagai ctrl tambahan. Itu bekerja dengan baik, di DE kayu manis, kunci topi saya bertindak sebagai ctrl bahkan setelah relogin. Saya pikir konfigurasi itu hanya kayu manis, tapi saya tidak yakin.
Shrikant Sharat
bagaimana Anda menambahkan perintah dalam skrip autostart?
pedrosaurio
Bisakah Anda memposting autostartfile Anda ?
pedrosaurio

Jawaban:

1

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 --forestuntuk mengidentifikasi penelepon setxkbmap.

gobenji
sumber
0

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/autostartfile Anda sehingga terlihat seperti ini:

# Run the system-wide support stuff
#. $GLOBALAUTOSTART
# Programs to launch at startup
# Programs that will run after Openbox has started
(sleep 1 && xmodmap ~/.Xmodmap ) &

Jika ragu lihat di wiki openbox dan lihat bagaimana semua contoh memiliki &setelah setiap entri.

http://openbox.org/wiki/Help:Autostart

pedrosaurio
sumber
File autostart saya kosong. Pada titik saya memang ada xmodmap ~/.Xmodmapdi file itu (tanpa &, sepertinya tidak perlu). Saya telah memanggil xmodmap(dan sekarang setxkbmap) dalam skrip yang memulai sesi openbox saya. Tepat sebelum menjalankan exec openbox-session, saya menjalankan setxkbmapperintah.
Shrikant Sharat
Juga, menambahkan sleep 1penundaan sehingga xmodmapmenerapkan 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.
Shrikant Sharat
Anda dapat menghindari dengan jelas semua komentar dan sleepperintah, namun demikian &diperlukan setelah setiap entri, jika tidak semua program setelah entri pertama tidak akan berjalan sama sekali.
pedrosaurio
Ya, jika ini adalah aplikasi / proses yang berjalan lama, tidak menambahkan &akan membuatnya diblokir. Saya menggunakan perilaku ini dengan zenityperintah untuk menemukan bahwa xmodmapperubahan saya ditimpa setelah autostart selesai. Autostart saya sekarang semakin besar dan akan menempelkannya di pertanyaan sebentar lagi. Tapi itu tidak ada hubungannya dengan keyboard.
Shrikant Sharat
Dan, tanpa perintah sleep, perubahan yang dilakukan oleh xmodmapakan ditimpa segera setelah file autostart selesai.
Shrikant Sharat