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.

Ello
sumber
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
midenok
sumber
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.

Ello
sumber
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
QuickishFM
sumber
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.

terdon
sumber
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