Bu xte komutları neden terminalde çalışıyor, ancak xbindkeys ile bağlandığında çalışmıyor?


18

Bu xtekomut, bir terminalde çalıştırdığımda, Expo modunu tetikler:

xte 'keydown Super_L' 'key S' 'keyup Super_L'

Ancak, bunu .xbindkeysrc dosyama koyduğumda:

"xte 'keydown Super_L' 'key S' 'keyup Super_L'"
  b:11

Düğmeye tıkladığımda hiçbir şey olmuyor. Aşağıdaki ciltleme 11 düğmesine bastığımda konsolumda X harfinin görünmesini sağlıyor:

"xte 'key X'"
  b:11

Peki Expo ciltleme neden çalışmıyor?


Bu, xbindkeys -n -vdüğme 11'e tıklandığında ayrıntılı çıktıdır :

Düğmeye basın!
e.xbutton.button = 11
e.xbutton.state = 16
"xte 'tuşunu Super_L' 'tuşu W' 'tuşunu Super_L'"
    m: 0x0 + b: 11 (fare)
pencere 2bb için ekran 0 var
Fork + exec çağrısı ile programı başlat
Düğme açma!
e.xbutton.button = 11
e.xbutton.state = 16

Ve hiçbir şey olmuyor. Bunun xbindkeyskomutu yürütme şekliyle bir ilgisi var mı ? (çatal + yürütme çağrısı)


İkinci deneme.

expo.sh:

#!/usr/bin/env bash
export DISPLAY=:0
xte 'keydown Super_L' 'key S' 'keyup Super_L'

Bu komut dosyasını komut satırından yürütmek Expo'yu etkinleştirir. Xbindkeys içinde bağlama:

"sh ~/expo.sh"
  b:11

Fare düğmesini 11 tıklama:

Düğmeye basın!
e.xbutton.button = 11
e.xbutton.state = 16
"sh ~ / expo.sh"
    m: 0x0 + b: 11 (fare)
pencere 2bb için ekran 0 var
Fork + exec çağrısı ile programı başlat

Hiçbir şey olmuyor!


1
<Süper> <S> tuşuna basmaya mı çalışıyorsun? Xbindkeys + xte'nin bazen seçici olabileceğini biliyorum.
Seth

@Seth: Doğru. Turşu etrafında çalışmanın bir yolu var mı?
Hubro

1
Deneyin 'keydown Super_L' 'keydown S' 'keyup S' 'keyup Super_L'.
Seth

@Seth: Korkarım
farketmedim

Değişiklikleri yaptıktan sonra xbindkey'leri yeniden başlattınız mı? Bazen bu gereklidir. Nihai hedefiniz sanırım çalışma alanına genel bakış açmak mı?
Seth

Yanıtlar:


17

Başka bir basit çözüm: xbindkeys tanımında sadece "b: 11" yerine "b: 11 + sürümü" kullanın. Komutu başlatmak için düğmeyi bırakana kadar bekleyecektir.

Misal:

"sh ~/expo.sh"
  b:11 + release

2
Hubro buraya geri dönmeli ve doğru cevap olarak işaretlemeli ...
David Ljung Madison Stellar

7

Bu çok garip. Super+WTuş vuruşu simüle edildiğinde fare düğmem hala basılıysa (henüz bırakılmamışsa) , hiçbir şey olmuyor. Bunun için kimi suçlayacağımı bilmiyorum (belki de Tarçın?). Ben xtekomut için kısa bir gecikme ekleyerek olsa, çevresinde çalıştı :

xte 'usleep 100000' 'keydown Super_L' 'key S' 'keyup Super_L'

Simüle edilmeden önce 0,1 saniye bekliyor Super+S. Fare düğmesini 0.1 saniyeden fazla basılı tutarsam hiçbir şey olmaz.

Bu geçici bir çözümdür. Doğru bir cevabı tercih ederim.


Hubro, lütfen user215129 tarafından verilen daha yüksek puanlı cevaba bakın ve doğru olarak işaretleyin
David Ljung Madison Stellar

1
@DavidLjungMadison Hayır. Sorumun cevabı bile değil, sadece bir çözüm önerisi.
Hubro

1
Cevabı anlıyor musunuz acaba? Sorun, düğme hala kapalıyken anahtarları göndermeye çalışmanızdır. Düğme bırakmayı beklemek, düğme bırakılana kadar anahtarları göndermeyeceği ve böylece sorununuzu çözeceği anlamına gelir. Geçici bir çözüm değil, sorunun bir açıklaması ve sorunu çözmenin bir yolu.
David Ljung Madison Stellar

1
O zaman hala anlamıyorsun. Sorun düğmenin kapalı iken anahtarlarını yazmak için çalışıyoruz yani, ve ne olursa olsun Expo Süper-S, değil Btn-2 + Süper-S aramaktadır başlattı. Kişisel düzeltme olduğunu o düğme kadar olduğunu garanti sorunu çözmez çünkü geçici bir çözüm ve birçok durumda çalışmaz. Çözüm (genellikle fare olaylarıyla ilgili olduğu gibi) herhangi bir komutu tetiklemeden önce düğmenin serbest bırakılmasını beklemektir; bu, düğmenin tuş vuruşu ile karıştırılmamasını sağlar.
David Ljung Madison Stellar

2
User215129 yanıtının gerçekten doğru olmadığını ve soruyu cevaplamadığını doğrulayabilir. Şu anda bu sorunla ilgili kendi araştırmamı yapmak ve benim durumumda serbest bırakmak veya gecikmek için değiştirmek bir seçenek değil çünkü düğmeye basıldığında, serbest bırakma işleminde farklı bir eylemle işlem yapmam gerekiyor. Bakınız: askubuntu.com/questions/984054/…
Ethuil UI

2

Aynı problemle karşılaştım.

"xte 'key b'"

konsolda çalışıyor, ancak xbindkeys parametre dosyasında çalışmıyor. Ben onu almak için "xev" komutunu kullanarak kendi keysym kodu ile b değiştirdi:

"xte 'key Ox62'"

Benim için çalıştı


1

+ Sürüm ile deneyin

"xte 'keydown Super_L' 'key S' 'keyup Super_L'"
b:11 + Release

Bu yardımcı olabilir.


1

Sxhkcd keymapper kullanırken benzer sorun var. Gerçek kısayol tuşlarınızın hala basılı olarak algılandığı anlaşılıyor.

Bazı yarı geçici çözümler vardır:

  • yayınlama olayını ara
  • emrinin sleep 0.2önüne ekle
  • lider tuşu ile kısayol kullan
  • kısayol değiştiricilerinizi xte dizinizin önünde serbest bırakın

Ancak bununla gerçek zamanlı eylemler alamazsınız =)

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.