Saya punya sedikit masalah. Saya ingin memetakan kembali beberapa hotkey yang biasa saya gunakan dari sistem saya sebelumnya, tetapi saya tidak dapat membuatnya berfungsi dengan benar xbindkeys
.
xbindkeys
mengenali kombinasi tetapi entah bagaimana perintahnya tidak memicu.
Jika saya menggunakan perintah
xdotool key braceleft
Ini mengeluarkan saya {
tanda yang benar di konsol. Namun jika saya menggunakan perintah yang sama di xbindkeys tidak ada yang terjadi. Jika saya mengganti perintah dengan firefox
itu berfungsi dengan baik dan membuka firefox, jadi saya kira xbindkeys
berfungsi.
Saya ingin mencapai yang berikut:
Saya ingin mengetik karakter {
ke jendela aktif dengan
Alt_R+ 7atau Alt_Left+ Ctrl+ 7sehingga saya bisa menggunakan keduanya. Saya tahu Alt_R(AltGr) adalah cara yang tepat tetapi pada keyboard jerman itu agak sulit untuk mengetik braceleft dengan tombol AltGr(Alt_R) jadi saya HARUS menggunakan Alt_L+ Control+ 7sebagai gantinya (seperti saya sudah terbiasa dengan sistem saya sebelumnya). Saya entah bagaimana membuatnya berfungsi dengan baik di 12,04, tetapi saya tidak bisa membuatnya berfungsi di 14,04.
Ada saran? Saya mencoba beberapa perintah. Semua dari mereka bekerja di konsol tetapi tidak satupun dari mereka yang bekerja ketika dieksekusi oleh xbindkeys
xdotool type '{'
xdotool key braceleft
xdotool key ISO_Level3_Shift+7
xvkbd -xsendevent -text '{'
xvkbd -xsendevent -text '\[Alt_R]+7'
Ini adalah konfigurasi saya, yang tidak akan berfungsi
"xdotool key braceleft"
Control+Alt + 7
Namun, ini berfungsi:
"firefox"
Control+Alt + 7
Edit Solusi
Ketika saya mencoba beberapa hal lagi, saya perhatikan bahwa xdotool tampaknya terlalu cepat dipicu. Saya mengubah konfigurasi seperti ini:
"sleep 1 && xdotool type --delay 15 '{'"
Control+Alt + 7
SEKARANG mengirimkan tanda {yang benar ke jendela aktif. Sekarang satu-satunya yang tersisa adalah mengurangi waktu tidur dan menunda ke nilai yang bisa diterapkan, karena 1 detik sepertinya agak terlalu lama :)
** Info Tambahan ** Nah, sekarang saya berhasil menemukan nilai yang sesuai. NAMUN ini hanya berfungsi jika Anda melepaskan kunci sampai durasi tidur selesai. Jika Anda terlalu lambat jika tidak akan berhasil.
Ini adalah konfigurasi saya saat ini untuk semua karakter AltGr Jerman yang tidak nyaman
"sleep 0.2 && xdotool type --delay 15 '{'"
Control+Alt + 7
"sleep 0.2 && xdotool key --delay 15 at"
Control+Alt + q
"sleep 0.2 && xdotool type --delay 15 '€'"
Control+Alt + e
"sleep 0.2 && xdotool type --delay 15 '['"
Control+Alt + 8
"sleep 0.2 && xdotool type --delay 15 ']'"
Control+Alt + 9
"sleep 0.2 && xdotool type --delay 15 '}'"
Control+Alt + 0
"sleep 0.2 && xdotool type --delay 15 '~'"
Control+Alt + plus
Namun jika Anda ingin mengetikkan beberapa tanda @ (misalnya) Anda harus menekan Ctrl + Alt + Q sebagaimana dimaksud, tetapi lepaskan semua kunci lalu tekan lagi. Ini, bagaimanapun, jauh, jauh lebih baik daripada tidak memiliki opsi Control + Alt daripada AltGr tetapi tidak seefektif yang saya gunakan juga. Mungkin saya akan menemukan solusi untuk ini juga.
xdotool
untuk mengulangi kunci sambil ditekan?xdotool getactivewindow key Home
Jawaban:
Masalahnya
xdotool
adalah ketika tombol nyata ditekan Xorg berulang kali mengirim peristiwa penekanan tombol (lihatxev
output). Untuk mengatasinya, Anda perlu mematikan sementara fitur berulang, kemudian buat event KeyRelease pada kunci yang turun.Dari pada
coba yang berikut ini:
sumber
Ketika saya mencoba beberapa hal lagi, saya perhatikan bahwa xdotool tampaknya terlalu cepat dipicu. Saya mengubah konfigurasi seperti ini:
SEKARANG mengirimkan tanda {yang benar ke jendela aktif. Sekarang satu-satunya yang tersisa adalah mengurangi waktu tidur dan menunda ke nilai yang bisa diterapkan, karena 1 detik sepertinya agak terlalu lama :)
** Info Tambahan ** Nah, sekarang saya berhasil menemukan nilai yang sesuai. NAMUN ini hanya berfungsi jika Anda melepaskan kunci sampai durasi tidur selesai. Jika Anda terlalu lambat jika tidak akan berhasil.
Ini adalah konfigurasi saya saat ini untuk semua karakter AltGr Jerman yang tidak nyaman
Namun jika Anda ingin mengetikkan beberapa tanda @ (misalnya) Anda harus menekan Ctrl + Alt + Q sebagaimana dimaksud, tetapi lepaskan semua kunci lalu tekan lagi. Ini, bagaimanapun, jauh, jauh lebih baik daripada tidak memiliki opsi Control + Alt daripada AltGr tetapi tidak seefektif yang saya gunakan juga. Mungkin saya akan menemukan solusi untuk ini juga.
sumber
sleep
, saya pikir Anda ingin menambahkan+ release
kombo kunci. Itu akan memintaxbindkeys
untuk menunggu sampai kunci dilepaskan sebelum memicu perintah.Seperti yang didokumentasikan dalam pertanyaan serupa ( Mengapa perintah xte ini bekerja di terminal, tetapi tidak ketika terikat dengan xbindkeys? ), Anda dapat meminta
xbindkeys
untuk memicu peristiwa saat rilis (saat tombol di atas):Dengan cara ini, tidak ada konflik antara tombol yang digunakan untuk pintasan dan yang dikirim.
sumber
Saya baru-baru ini mengalami masalah ini, di mana saya mencoba mensimulasikan media Play / Pause (XF86AudioPlay) menggunakan Ctrl + G. Setelah beberapa penelitian, tampaknya saya tidak hanya perlu membatalkan Kontrol , tetapi juga kunci g (yang merupakan apa yang perlu
sleep 0.1
ditunda sejak awal). Jika saya membatalkan kedua kunci ini dengan menggunakan dikeyup
dalam xdotool dan juga saklar --clearmodifiers, ia berfungsi. Ini adalah perintah baru saya, dalam file .xbindkeys.rc saya:sumber
Tidak yakin mengapa itu tidak berhasil
xbindkeys
, saya kira Anda perlu menentukan jendela untuk menulis. Sebagai solusinya, Anda bisa menggunakannyaxvkbd
.Install
xvkbd
Tambahkan ini ke
.xbindkeysrc
file AndaItu seharusnya bekerja.
CATATAN
Untuk beberapa alasan, pada komputer saya,
xvkbd
menggunakan salah satu tata letak sekunder saya (Spanyol) alih-alih yang utama (Bahasa Inggris AS) dan ini menyebabkan saya{
benar-benar mencetak"
. Jika Anda juga memiliki masalah ini, hanya bermain-main sedikit untuk mengetahui kunci mana yang sesuai{
dengan tata letak yang digunakan. Atau, Anda dapat menggali lebih dalam dan mencari tahu di manaxvkbd
mendapatkan nyalocale
pengaturan dari.sumber