Ekstra mmo fare yan düğmelerini eşleme


0

Yakın zamanda Utechsmart Venus faresini satın aldım: http://www.utechsmart.com/product/show/id/477/US-D16400-GM

Yan ve hızlı ateşleme düğmelerinin işaret ettiği tuşları değiştirmeden bu yan düğmeleri (ve "sol fare düğmesinin yanındaki hızlı ateş düğmesi) farklı tuşlara bağlayamadım.

Bunun nedeni, yan ve hızlı ateş düğmelerini kendi olayları olarak tanıyabilmek için gerçekten xev'i alamamamdı. Bunun yerine, bir yan düğmeye veya hızlı ateş düğmesine bastığımda, xev olay test cihazı derhal düğmenin eşlendiğini bildirir.

Yani "1" yan tuşa basıyorum, olay eşleyici raporları:

 KeyPress event, serial 74, . . .
 KeyRelease event, serial 74 . . .

Farenin sol tuşuna bastığımda, mapper bildirir:

 ButtonPress event, serial 37, . . .
 Button Release event, serial 37, . . . 

Açıkçası, bu iki ilgili mesajdaki gibi "adres" düğmesinin ne olduğunu söylemiyorsam, düğmeyi fareden eşleyemiyorum:

Logitech Mouse'ta ek düğmeler nasıl yapılandırılır

Kubuntu'da fare kısayolları klavye tuşlarıyla karıştırılıyor

Bu düğmelerin fare üzerinde ne olduğunu daha fazla denemek ve öğrenmek isteyen var mı?

Açıkçası, fare çalışıyor, sadece istediğim şekilde düğmelere eşlenmemiş. Bu yüzden bana bunun bir çözümü olması gerektiğini ve bu sorunu çözmek için çok derinden dalmaktan çok mutlu olacağımı düşünüyorum. Xorg ve evdev sürücülerinin belgelerine bakıyorum, ancak doğru yön olup olmadığından bile emin değilim.

Bu sorunu doğrudan benim için çözecek birini aramak zorunda değilsiniz. Ancak bu problemi nasıl çözeceğimiz konusunda bazı fikirler için beyin fırtınası yapmamda bana yardımcı olmak büyük memnuniyet duyacaktır.

Sabrınız için teşekkürler!

GÜNCELLEME:

Ben de çok benzer bir fare olan razer naga hakkında archlinux forumlarında bir yazı buldum. Umutlu görünüyor: https://bbs.archlinux.org/viewtopic.php?id=145502 . Bu beni burada kızılötesi uzaktan kumandalarla benzer bir soruna götürür: bağlantı tanımını buraya girin . Bu konuda konuya derinlemesine giren bir bilgi hazinesi var. “Anahtarların” senaryolarda ne olduğunu nasıl anladıklarını daha iyi açıklarlarsa daha iyi olurlardı, ancak birçok ek materyali okuduktan sonra, konvansiyondan geliyor gibi görünüyor (ve fare üzerindeki tuşlar bunlara karşılık geldiğinden Anahtar eşlemeler sadece daha anlamlı olur.

Ancak, hala biraz sorun yaşıyorum. Henüz bir shebang yaratmadım, sadece komutu elle çalıştırmayı denedim.

İlk önce / usr / share / X11 / xkb / symbols / custom sembol dosyasını yarattım (neden tmp dizinini kullandıklarından emin değilim) ve aşağıdakileri dahil ettim:

xkb_symbols "venus" {
  2     key <AE01> { [          y,          Y  ]
  3     key <AE02> { [          i,          I  ]
  4     key <AE03> { [bracketleft,  braceleft  ]
  5     key <AE04> { [bracketright, braceright ]
  6     key <AE05> { [      slash,   question  ]
  7     key <AE06> { [          j,          J  ]
  8     key <AE07> { [          k,          K  ]
  9     key <AE08> { [          l,          L  ]
 10     key <AE09> { [  semicolon,      colon  ]
 11     key <AE10> { [      comma,       less  ]
 12     key <AE11> { [      minus, underscore  ]
 13     key <AE12> { [      equal,       plus  ]
 14 };

Sonra yeildin xinput listesini koştum:

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ USB Laser Game Mouse                      id=9    [slave  pointer  (2)]
⎜   ↳ USB Laser Game Mouse                      id=11   [slave  pointer  (2)]
⎜   ↳ EST Gaming keyboard                       id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ USB Laser Game Mouse                      id=10   [slave  keyboard (3)]
    ↳ EST Gaming keyboard                       id=12   [slave  keyboard (3)]
    ↳ EST Gaming keyboard                       id=14   [slave  keyboard (3)]
    ↳ C-Media Electronics Inc. USB Audio Device id=15   [slave  keyboard (3)]
    ↳ USB Laser Game Mouse                      id=16   [slave  keyboard (3)]
    ↳ EST Gaming keyboard                       id=17   [slave  keyboard (3)]

Yukarıdaki iki linke yazılan betiği analiz ettikten sonra, $ remote_id değişkenimin 16 olacağı sonucuna vardım.

setxkbmap -device 16 -print | sed's/\(xkb_symbols.*\)"/\1+custom(venus)"/' | xkbcomp -I /usr/share/X11/xkb -i 16 -synch $DISPLAY

Çıktımı / dev / null'a aktarmadım çünkü çıktının ne olacağını görmek istedim (açıkçası senaryoyu yazarken, sonra bunu yapacağım, ama şu anda ne yaptığımı anlamaya çalışıyorum) ). Çıktım şuydu:

Warning:          Too many file names on command line
                  Compiling /usr/share/X11/xkb, writing to -, ignoring :0
syntax error: line 1 of /usr/share/X11/xkb
last scanned symbol is: 
Errors encountered in /usr/share/X11/xkb; not compiled.

Buradan nereye gideceğimi bilemiyorum. . .

Yanıtlar:


0

HERHANGİ BÜYÜK HABERLER!

Sonunda bunun işe yaramasını sağladım. Bu problemden epey zaman önce vazgeçtim ve yeni işler yoluna girdim. O zamandan beri, genel olarak unix ortamı ve programlama hakkında daha fazla şey öğrendim, bu senaryoda kullanılan sed'nin nasıl kullanılacağını anlamak da dahil. Bir bakış açısı vermek gerekirse, bu soruyu yaptığım zaman man sayfalarını bile bilmiyordum. . . Tabii ki bu yazıyı yaparken bazı hatalarımın geri döndüğünü görmek kolay değil.

Ancak, bu hataları düzeltmek sorunu çözmek için yeterli değildi. Hangi sebeple olursa olsun (hala çözemiyorum), anahtar eşlemesini xkbcomp içine aktarmak, yukarıda yapılan semboller dosyasında yapmak istediğim değişiklikleri derlemeyecek.

Ancak, sadece koşarsam:

setxkbmap -device $venus_keyboard -print | sed 's/\(xkb_symbols.*\)"/\1+venus"/' > keymap
xkbcomp keymap -i $venus_keyboard -synch $DISPLAY

Anahtarlar gayet iyi derleniyor. Dürüst olmak gerekirse, hala sed'in çıktısını xkbcomp'a yöneltemediğim için kafam karıştı, ancak bu, klavyemdeki tuşları tamamen etkilenmeden bıraktığımda fareyi haritalandırıyor.

Umarım bu, benimle benzer bir sorunu olan birine yardımcı olacaktır.

Aşağıda yazdığım tüm kabuk betiği bulunmaktadır (verdiğim bağlantılardan gelen gönderilerde açıklanmış olan simgeler dosyasından başka).

Eğer biri sed'in çıkışını xkbcomp'e aktarmanın neden işe yaramadığını (ya da anlamayı çözmeme yardım etmekle ilgileniyor) kimsenin açıklaması yapmıyorsa, bana bir cevap verin. Bu hala beni biraz rahatsız ediyor.

#!/bin/sh

venus_keyboard=$(xinput list | sed -n 's/.*USB Laser Game Mouse[[:space:]]*id=\([0-9]*\).*keyboard.*/\1/p')
[ "$venus_keyboard" ] || exit

setxkbmap -device $venus_keyboard -print | sed 's/\(xkb_symbols.*\)"/\1+venus"/' > ~/xkb/keymap
xkbcomp ~/xkb/keymap -i $venus_keyboard -synch $DISPLAY 2>/dev/null
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.