Logitech MX400'ümdeki arama düğmesini nasıl yeniden eşleştiririm?


10

Logitech MX400 kablosuz cihazım var. Yapıştırma için kullanmak istediğim bir arama düğmesi var (son derece hassas ancak basması zor kaydırma tekerleği yerine). Zaten xbindkeys ile diğer düğmeleri remapped ve düğmesine basın kodu bulmak için xev kullandım, ancak bu arama düğmesi için çalışmaz. xev kullanarak ve arama düğmesine tıklayarak aşağıdaki olayları alıyorum

FocusOut event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 34, synthetic NO, window 0x0,
    keys:  4294967275 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

PropertyNotify event, serial 34, synthetic NO, window 0x3c00001,
    atom 0x1d7 (_NET_WM_ICON_GEOMETRY), time 23653064, state PropertyNewValue

ButtonPress olayları yok. Arama düğmesinin X olaylarının altındaki bir düzeyde ele geçirildiği anlaşılıyor. Herhangi bir fikir? Ben ubuntu 12.04 var. Ubuntu aslında tıklamayı görür ve bir arama iletişim kutusu oluşturur, ancak xev'de bir tıklama etkinliğinin izi yoktur.

Düzenle

Xmodmap ile sağlanan yöntemi kontrol ettim. Benim .Xmodmapşu satırı içeriyor

keycode 225 = XF86Paste NoSymbol XF86Paste``

xmodmap ~/.Xmodmapşimdi çalıştırılması düğmeyi tamamen devre dışı bırakır (veya en azından düğmeye basarak sonuç alamıyorum). Denedim xmodmap -pkeve çıktısı:

keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste

Yeterince garip. Diğer tüm girişler benzer şekilde biçimlendirilir. Çözüme yakınım, ama yine de garip bir şey var.

Düzenle 2

Ben xinput (bu komutu hiç duymadım. İnanılmaz şeyler) çalıştırmak için çalıştı. Logitech için iki giriş vardır. Her birini listelemenin çıktısı (id 9 ve 10)

Logitech USB Receiver                       id=9    [slave  pointer  (2)]
    Reporting 7 classes:
        Class originated from: 9. Type: XIButtonClass
        Buttons supported: 24
        Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
        Button state:
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 3:
          Label: Rel Vert Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 3
          type: 1 (vertical)
          increment: -1.000000
          flags: 0x2 ( preferred )


Logitech USB Receiver                       id=10   [slave  pointer  (2)]
    Reporting 6 classes:
        Class originated from: 10. Type: XIButtonClass
        Buttons supported: 7
        Button labels: "Button 0" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
        Button state:
        Class originated from: 10. Type: XIKeyClass
        Keycodes supported: 248
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0

Test cihazı 9 düğme ile hiçbir şey yapmaz. Test cihazı 10 bunun yerine çalışıyor ve tıkladığımda çıktı bu

$ xinput test 10
key press   225 
key release 225 
key press   225 
key release 225 
key press   225 
key release 225

Bu nedenle, farenin bu bağlamda bir klavye gibi davrandığı görülmektedir, ancak bazı nedenlerden dolayı xmodmap, 225 tuşunu aldığında hiçbir şey yapmaz.

** Düzenle **

Düğmeye her tıkladığımda keycode 225 = abaskı eklemenin onaylayabiliyorum a. Bu nedenle sorun, XF86Paste'ın gerçekte nasıl ele alındığıyla ilgili gibi görünüyor. Gönderiyorum ama yapıştırma değil.


xbindkeysBaşlangıçta çalıştırmak için ayarladınız değil mi? Devre dışı bırakıp tekrar deneyebilir misiniz?
Seth

@ iSeth: öldürülen xbindkey'ler. Tekrar denedim, aynı sonuç.
Stefano Borini

Bir terminal açın ve çalıştırın ve tail -f /var/log/dmesgardından düğmeye basmayı deneyin. Tuşlara / düğmelere ilişkin herhangi bir çıktı alıyor musunuz?
Seth

1
Başka bir saçma cevap göndermeden önce ... ile farenizin giriş kimliğini xinput listbulun ve ardından arama anahtarınızın düğme kodunu bulun xinput test <MOUSE ID>. Bu çalışıyor mu?
mrcktz

1
XF86Paste / XF86Copy olaylarını göstermeyi sağlayan onaylanmış bir hata var gibi görünüyor xev, ancak hiçbir şey olmuyor. Bu, yapıştırma için CTRL + v tuş bileşimini kullanmanız gerektiği anlamına gelir. Xmodmap 1: 1 düğmelerini eşleştirir, ancak tuşa basıldığında bir komutun yürütülmesini tetiklemek için klavye kısayol ayarlarını kullanabilirsiniz (cevabıma bakın).
mrcktz

Yanıtlar:


3

Klavye olaylarını simüle etmek için size harika bir araç olan xdotool'u öneriyorumXdotool'u yükle .

1.xdotool Terminal ( CTRL+ ALT+ T) ile kurun :

sudo apt-get install xdotool

veya Yazılım Merkezi'niXdotool'u yükle kullanın .

Bir komut dosyası oluşturma 2. kullanımları olaylarıyla aşağı anahtarını taklit xdotool olduğunu CTRLve v. Terminalde:

mkdir -p ~/bin  
gedit ~/bin/fakepaste

Aşağıdaki içeriği açılan düzenleyici penceresine kopyalayın. Kodu kaydettikten sonra kaydedin:

#!/bin/sh
exec /usr/bin/xdotool key CTRL+V  
EOF

Şimdi komut dosyasını yürütülebilir yapın:

chmod +x ~/bin/fakepaste

3. PATH'inizi yeniden yüklemek için oturumu kapatın ve oturum açın .

4. Özel kısayolu oluşturun

Git System Settings, sonra git Keyboard, sonra Shortcuts.

+İletişim kutusunun altındaki düğmeye basın . Oluşturmakta ve komut dolgu için konum kısayol için bir ad verin: fakepaste. Düğmesine basın OK.

Yeni kısayolunuzun yanında göreceksiniz disabled. Bu metne tıklayın ve ardından klavye öykünmenize atanmasını istediğiniz tuşa basın.

Artık yapıştırma için arama anahtarınızı kullanabilmelisiniz!


1
Bunun bir fare düğmesinde nasıl yardımcı olacağını görmüyorum, klavye kısayollarını değiştiriyor.
Seth

2
@iSeth: Mesele şu ki logitech farenin hem klavye hem de fare olduğu ortaya çıktı. Klavye gibi hareket ettiği arama düğmesi dışında her şey için bir fare
Stefano Borini

2

xdotool ile xbindkeys çözümü

Bu çözüm için ihtiyacınız olacak xbindkeysvexdotool

Xbindkey'leri öldürün ve düğme yapılandırmanızı boşaltın

killall xbindkeys

ve

xbindkeys --defaults >> ~/.xbindkeysrc

Yeni bağlantılarınızı ekleyin

Şimdi özel dosya eklemek için bu dosyayı değiştirebilirsiniz, bunlar

"<command>"
  <key combination>

yani eklerseniz

"gedit"
  m:0x0 +b:4

gedither kaydırma yaptığınızda açılacaksınız .

Şimdi aşağıdakilerden birini deneyebilir, sizin için en uygun olanı seçebilirsiniz. Her durumda xdotool click 2taklit edilecek, bu orta fare düğmesine basıyor ve bu hem iç hem de dış terminalleri yapıştırıyor.

  1. farenizden 225'i yakalayın :

    "xdotool click 2"
      m:0x0 +b:225
    
  2. genel olarak intercept keycode 225 :

    "xdotool click 2"
      c:225
    
  3. tüm XF86Searcholayları değiştirin (önce fare ayarlarınızı orijinal ayarlara döndürün, böylece XF86Searchgeri dönün):

    "xdotool click 2"
      XF86Search
    

Xbindkey'leri başlatın ve test edin

Çalıştırmak

xbindkeys

ve çalışıp çalışmadığını görün.


Bana büyük ölçüde yardım ettiğin için ikramiyeyi hak ettiğini düşünüyorum. Çözümlerinizin işe yarayıp yaramadığını hala bilmiyorum, yarın test edeceğim, ancak ödülün süresi doluyor ve boşa gitmesini istemiyorum. Yeterli puanım olur olmaz, sana aynı ödülü vereceğim. Teşekkürler
Stefano Borini

Oke, teşekkürler (bunun mümkün olup olmadığını bilmememe rağmen). Yardım
Gerhard Burger

ah ... haklısın. Burada sadece birini ödüllendirebilirim. Endişelenme, Yeteri kadar temsilci alır almaz, diğer cevaplarından birini vereceğim.
Stefano Borini

Hayır, hayır, rahatsız etme. Ben iyiyim;)
Gerhard Burger
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.