Xbindkeys düzgün çalışmaz


10

Biraz sorunum var. Önceki sistemimden alışkın olduğum bazı kısayol tuşlarını yeniden eşleştirmek istedim, ancak düzgün çalışmasını sağlayamıyorum xbindkeys.

xbindkeys kombinasyonu tanır ancak bir şekilde komut tetiklemez.

Komutu kullanırsam

xdotool key braceleft

Bana {konsolda doğru işaret çıktı. Ancak aynı komutu xbindkeys içinde kullanırsam hiçbir şey olmaz. Komutu firefoxonunla düzgün bir şekilde çalışır ve firefox'u açarsam, sanırım xbindkeysçalışır.

Aşağıdakileri başarmak istiyorum:

Her ikisini de kullanabilmek için karakteri {aktif pencereye Alt_R+ 7veya Alt_Left+ Ctrl+ ile yazmak 7istiyorum. Alt_R(AltGr) uygun bir yol olduğunu biliyorum ama Almanca klavyelerde AltGr(Alt_R) tuşu ile braceleft yazmak bir şekilde zordur, bu yüzden Alt_L+ Control+ 7kullanmak zorundayım (önceki sistemimde alışık olduğum gibi). Bir şekilde 12.04'te düzgün çalışmasını sağladım, ancak 14.04'te çalışamıyorum.

Herhangi bir öneri? Birkaç komut denedim. Hepsi konsolda çalıştı, ancak xbindkeys tarafından yürütüldüğünde hiçbiri çalışmadı

xdotool type '{'
xdotool key braceleft
xdotool key ISO_Level3_Shift+7
xvkbd -xsendevent -text '{'
xvkbd -xsendevent -text '\[Alt_R]+7'

Bu benim yapılandırma, çalışmıyor

"xdotool key braceleft"
Control+Alt + 7

Ancak, bu işe yarar:

"firefox"
Control+Alt + 7

Çözüm Düzenleme

Başka bir şey denediğimde, xdotool'un çok erken tetiklediğini fark ettim. Yapılandırmayı şu şekilde değiştirdim:

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

ŞİMDİ etkin pencereye doğru {işaretini gönderir. Şimdi geriye kalan tek şey uykuyu ve gecikmeyi uygulanabilir bir değere düşürmektir, çünkü 1 saniye biraz uzun görünüyor :)

** Ekleme Bilgisi ** Eh, şimdi uygun değerleri bulmayı başardım. ANCAK bu yalnızca uyku süresi bitene kadar tuşları serbest bırakırsanız çalışır. Eğer çok yavaşsan işe yaramazsa.

Bu, tüm rahatsız edici Almanca AltGr karakterleri için geçerli yapılandırmam

"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

Ancak, birden fazla @ işareti yazmak istiyorsanız (örneğin) Ctrl + Alt + Q tuşlarına gerektiği gibi basmanız gerekir, ancak tüm tuşları serbest bırakın ve sonra tekrar basın. Ancak bu, AltGr yerine Control + Alt seçeneğine sahip olmamaktan çok daha iyidir, ancak benim de kullanıldığım kadar etkili değildir. Belki de bunun için bir çözüm bulacağım.


Ha, bu iyi bir keşif! Kendi sorunuzu cevaplamak için tek bir sınır yoktur , sadece bir zaman sınırı vardır . Eğer geri gelip 6 saat içinde cevap olarak göndermek harika olurdu. Bunu önemsiyorsanız bu size biraz destek verecektir. Gerçekten umursamıyorsanız, çözümünüzü birkaç gün içinde cevabıma dahil edeceğim.
terdon

Basılıyken xdotoolanahtarı nasıl tekrarlayacağınızı hiç anladınız mı?
Farzher

Dürüst olmak gerekirse, şimdiye kadar denemedim. League of Legends'ın 60 fps ile sorunsuz bir şekilde çalışmasını sağladım (12.04'te hiç başlamazdı), böylece ben evde olduğumda sürekli oynuyordum.
Ello

Günlerce bazı kısayollar çalışmadı. Çözüm basitti: Ubuntu masaüstüm xbindkey'lerden önce kısayolları aldı. Kayboard ayarlarını düzenleyin, eylemle yeni bir özel kısayol ekleyinxdotool getactivewindow key Home
BurninLeo

Bir Alman klavye düzenini simüle etmeye çalıştığınız anlaşılıyor. Neden klavye düzeninizi sistem ayarlarında değiştirmiyorsunuz?
Rapti

Yanıtlar:


4

Sorun, xdotoolgerçek tuşlara basıldığında Xorg art arda tuşa basma olayları gönderir ( xevçıkışa bakın). Bunun üstesinden gelmek için tekrarlama özelliğini geçici olarak kapatmanız ve ardından anahtarda KeyRelease olayı oluşturmanız gerekir.

Onun yerine

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

takip etmeyi dene:

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

Cevabınız için teşekkür ederim, ancak şimdi XFCE ile Manjaro kullanıyorum ve orada kutunun dışında çalıştı, bu yüzden uykuya gerek yok.
Ello

@Ello, bu cevaplar sadece sizin için değil, bu yüzden en evrensel çözüm takdir edilmektedir.
midenok

3

Başka bir şey denediğimde, xdotool'un çok erken tetiklediğini fark ettim. Yapılandırmayı şu şekilde değiştirdim:

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

ŞİMDİ etkin pencereye doğru {işaretini gönderir. Şimdi geriye kalan tek şey uykuyu ve gecikmeyi uygulanabilir bir değere düşürmektir, çünkü 1 saniye biraz uzun görünüyor :)

** Ekleme Bilgisi ** Eh, şimdi uygun değerleri bulmayı başardım. ANCAK bu yalnızca uyku süresi bitene kadar tuşları serbest bırakırsanız çalışır. Eğer çok yavaşsan işe yaramazsa.

Bu, tüm rahatsız edici Almanca AltGr karakterleri için geçerli yapılandırmam

"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

Ancak, birden fazla @ işareti yazmak istiyorsanız (örneğin) Ctrl + Alt + Q tuşlarına gerektiği gibi basmanız gerekir, ancak tüm tuşları serbest bırakın ve sonra tekrar basın. Ancak bu, AltGr yerine Control + Alt seçeneğine sahip olmamaktan çok daha iyidir, ancak benim de kullanıldığım kadar etkili değildir. Belki de bunun için bir çözüm bulacağım.


Bu çok garip, çalıştığınıza sevindim ama neden olduğunu anlayamıyorum. Her neyse, bunu yayınlamak için zaman ayırdığınız için teşekkürler, aynı sorunu olan bir sonraki kişiye yardımcı olabilir.
terdon

Bunun yerine , anahtar kombinasyonlara sleepeklemek istediğinizi düşünüyorum + release. Bu xbindkeys, komutu tetiklemeden önce anahtarın serbest bırakılmasını beklemeyi söyleyecektir .
wjandrea


2

Yakın zamanda bu sorunu yaşadım, burada Ctrl + G kullanarak medya Oynat / Duraklat (XF86AudioPlay) anahtarını simüle etmeye çalıştım. Bazı araştırmalardan sonra, sadece Kontrolü iptal etmek zorunda değilim , aynı zamanda g tuşunu da ( sleep 0.1başlamak için gecikmeye ne gerek ). Bu anahtarların her ikisini de keyupxdotool içinde ve --clearmodifiers anahtarını kullanarak iptal edersem çalışır. Bu benim .xbindkeys.rc dosyamdaki yeni komutum:

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

1

Neden işe yaramadığından emin xbindkeysdeğilim, yazmak için pencereyi belirtmeniz gerektiğini tahmin ediyorum. Geçici bir çözüm olarak kullanabilirsiniz xvkbd.

  1. Yüklemek xvkbd

    sudo apt-get install xvkbd
    
  2. Bunu .xbindkeysrcdosyanıza ekle

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

Bu işe yaramalı.


NOTLAR

Herhangi bir nedenle, makinemde, xvkbdana düzenim (ABD İngilizcesi) yerine ikincil düzenlerimden birini (İspanyolca) kullanıyor ve bu {aslında yazdırmaya neden oluyor ". Ayrıca bu sorunla karşılaşırsanız, hangi tuşun {kullanılan düzene karşılık geldiğini bulmak için biraz oynayın . Alternatif olarak, daha derine inebilir ve ayarlarını nereden xvkbdaldığını anlayabilirsiniz locale.


hala çalışmıyor. uygun karakterlerle bile. Konsolda xvkbd -text 'apple' yazarsam, elma yazdırır, xbindkeys ile çalıştırırsam hiçbir şey olmaz. xbindkeys -v bakmak eğer o basılan komut tanındı görmek
Ello

işe aldım, ama başka bir şeyle
Ello

@Ello harika! Ne kullandın? Benim için iyi çalıştı. Çözümünüzü açıklayan bir cevap gönderebilir ve kabul edebilir misiniz?
terdon

Görevimi değiştirdim, kendi sorularıma cevap veremiyorum çünkü itibar eksikliği. Üzgünüz
Ello
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.