Xbindkeys tidak akan berfungsi dengan baik


9

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 firefoxitu berfungsi dengan baik dan membuka firefox, jadi saya kira xbindkeysberfungsi.

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.


Hah, itu temuan yang bagus! Tidak ada batasan rep untuk menjawab pertanyaan Anda sendiri, hanya batas waktu . Alangkah baiknya jika Anda bisa kembali dan memposting ini sebagai jawaban dalam 6 jam. Itu juga akan memberi Anda beberapa perwakilan jika Anda peduli tentang itu. Jika Anda benar-benar tidak peduli, saya hanya akan memasukkan solusi Anda dalam jawaban saya dalam beberapa hari.
terdon

Apakah Anda pernah menemukan cara xdotooluntuk mengulangi kunci sambil ditekan?
Farzher

Sejujurnya, saya belum mencobanya sekarang. Saya berhasil membuat League of Legends berjalan mulus dengan 60fps (dalam 12,04 itu tidak akan mulai sama sekali) sehingga saya, ketika saya di rumah, saya bermain sepanjang waktu.
Ello

Saya tidak mendapatkan beberapa cara pintas untuk berhari-hari. Solusinya sederhana: Desktop Ubuntu saya mendapat pintasan sebelum xbindkeys. Cukup edit pengaturan papan tulis, tambahkan pintasan khusus baru dengan aksixdotool getactivewindow key Home
BurninLeo

Sepertinya Anda mencoba mensimulasikan tata letak keyboard Jerman. Mengapa Anda tidak beralih tata letak keyboard Anda di pengaturan sistem?
Rapti

Jawaban:


4

Masalahnya xdotooladalah ketika tombol nyata ditekan Xorg berulang kali mengirim peristiwa penekanan tombol (lihat xevoutput). Untuk mengatasinya, Anda perlu mematikan sementara fitur berulang, kemudian buat event KeyRelease pada kunci yang turun.

Dari pada

"sleep 0.2 && xdotool type --delay 15 '{'"
  Control+Alt + 7

coba yang berikut ini:

"xset r off; xdotool keyup --window 0 7 type --clearmodifiers --window 0 '{'; xset r on"
  Control+Alt + 7

Terima kasih atas balasan Anda, tetapi saya menggunakan Manjaro dengan XFCE sekarang dan di sana itu berhasil, jadi tidak perlu tidur.
Ello

@ Ello, jawaban ini tidak hanya untuk Anda, jadi solusi paling universal sangat dihargai.
midenok

3

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.


Ini sangat aneh, saya senang Anda berhasil tetapi saya benar-benar tidak tahu mengapa itu terjadi. Bagaimanapun, terima kasih telah meluangkan waktu untuk memposting ini, mungkin membantu orang berikutnya dengan masalah yang sama.
terdon

Alih-alih sleep, saya pikir Anda ingin menambahkan + releasekombo kunci. Itu akan meminta xbindkeysuntuk menunggu sampai kunci dilepaskan sebelum memicu perintah.
wjandrea


2

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.1ditunda sejak awal). Jika saya membatalkan kedua kunci ini dengan menggunakan di keyupdalam xdotool dan juga saklar --clearmodifiers, ia berfungsi. Ini adalah perintah baru saya, dalam file .xbindkeys.rc saya:

"xdotool keyup g key --clearmodifiers XF86AudioPlay"
Control + g

1

Tidak yakin mengapa itu tidak berhasil xbindkeys, saya kira Anda perlu menentukan jendela untuk menulis. Sebagai solusinya, Anda bisa menggunakannya xvkbd.

  1. Install xvkbd

    sudo apt-get install xvkbd
    
  2. Tambahkan ini ke .xbindkeysrcfile Anda

    "xvkbd -text '{'"
    Control+Alt + 7
    

Itu seharusnya bekerja.


CATATAN

Untuk beberapa alasan, pada komputer saya, xvkbdmenggunakan 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 mana xvkbdmendapatkan nya localepengaturan dari.


masih tidak berfungsi. bahkan dengan karakter yang tepat. jika saya menulis xvkbd -text 'apple' di konsol, ia akan mencetak apple, jika saya menjalankannya melalui xbindkeys, tidak ada yang terjadi. jika saya melihat xbindkeys -v ia melihatnya mengenali perintah yang ditekan
Ello

saya berhasil, tetapi dengan sesuatu yang lain
Ello

@ Ello hebat! Apa yang kamu gunakan Ini bekerja dengan baik untukku. Bisakah Anda memposting jawaban yang menjelaskan solusi Anda dan menerimanya?
terdon

Saya mengubah posting saya, saya tidak bisa menjawab pertanyaan saya sendiri karena kurangnya reputasi. Maaf
Ello
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.