Bu soru zaten sorulmuştur, ancak hiçbir zaman doğru cevaplanmamıştır. @Seth ile temizlendikten sonra şimdi tekrar soruyorum. Bu, soruyu çok daha kolay bir şekilde yanıtlamama ve değiştirmeme izin verecek. Orijinal soru burada bulunabilir:
Ctrl ve Alt tuşlarını fare başparmak düğmelerine eşleme
Konu:
Bununla birlikte, herhangi bir tuş vuruşunu bir fare düğmesiyle xbindkeys
birlikte kullanarak eşleştirmek çok basit olsa da xdotool
veya xte
bir değiştirici anahtarı (örn. ALT , CTRL , SHIFT vb.) Eşlemek çok daha sorunlu görünmektedir .
Son çözüm, iAl CTRL + tıklatmasına (örneğin, bir listenin birden çok girişini seçmek için) yalnızca fare ile izin vermelidir .
Bunu çözmek için birkaç olası yaklaşım, Stack Exchange'de ve Linux ile ilgili diğer forumlarda bulunabilir. Ancak bunların hiçbiri, başka sorunlara ve yan etkilere yol açtığı için beklendiği gibi çalışmaz.
Notlar:
Aşağıdaki örneklerden bazıları, Şema sözdizimine sahip Guile içerir ve dosyaya güvenir, diğerleri ise sözdizimiyle dosyaya güvenir . Birlikte çalışmayacaklarının farkındayım..xbindkeysrc.scm
.xbindkeysrc
Ayrıca, aşağıdaki snippet'ler xdotool
sadece güveniyor, ancak örneğin diğer uygulamaların da dahil olduğu yaklaşımlara açıkım xte
- her ikisi de aynı sonuçlara yol açıyor gibi görünüyor ve bu nedenle xdotool
burada sadece eylemler kullanıyorum .
Yaklaşım A:
.xbindkeysrc
Dosya şu şekilde güncelleniyor :
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + b:8
Başlangıçta denedim bu ama değiştiricinin tutuluyor ve serbest bırakılamaz yan etkisi vardır.
Yaklaşım B:
.xbindkeysrc.scm
Dosya şu şekilde güncelleniyor :
(xbindkey '("b:8") "xdotool keydown ctrl")
(xbindkey '(release "b:8") "xdotool keyup ctrl")
(xbindkey '("m:0x14" "b:8") "xdotool keydown ctrl")
(xbindkey '(release "m:0x14" "b:8") "xdotool keyup ctrl")
En Bulunan http://www.linuxforums.org/forum/hardware-peripherals/169773-solved-map-mouse-button-modifier-key.html ve yaklaşımı adresinde belirtilen değiştirici (tutuluyor sorunu gidermek için çalışır a).
Başparmak düğmesine basılıyken başka fare tıklamaları yapmak mümkün olmadığından yalnızca kısmen çalıştığını düzeltmesine rağmen.
Yaklaşım C:
.xbindkeysrc
Dosya şu şekilde güncelleniyor :
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
Askubuntu burada bağlantılı sorunun OP tarafından denendi. Değiştirici durumları içermediğinden çok daha basit ve daha sağlam. Yine de sorun devam ediyor, yani CTRL + tıklama mümkün değil.
Görünüşe göre xbindkeys
, tıklamayı tanıdığı, ancak yürütmediği için kendisi problem. Bu xev | grep button
ve kullanılarak test edilebilir xbindkeys -v
:
Tarafından kaydedildiği gibi normal bir fare tıklaması aşağıdaki gibi xev
olmalıdır:
state 0x10, button 1, same_screen YES
state 0x110, button 1, same_screen YES
Başparmak düğmesinin yanı sıra:
state 0x10, button 8, same_screen YES
state 0x10, button 8, same_screen YES
Ancak yukarıdaki xbindkeys
yapılandırmayı etkinleştirdiğinizde hiçbir şey kaydetmez. Başparmak düğmesi için CTRL ile eşleştirildiği ve bu nedenle artık bir fare düğmesi olmadığı için mantıklı olsa da, düğme 1'in de kaydedilmemesi gariptir . Bunun nedeni büyük olasılıkla xbindkeys
yürütmemesi, ancak kendisini tanımasıdır:
Button press !
e.xbutton.button=8
e.xbutton.state=16
"xdotool keydown ctrl"
m:0x0 + b:8 (mouse)
got screen 0 for window 16d
Start program with fork+exec call
Button press !
e.xbutton.button=1
e.xbutton.state=20
Button release !
e.xbutton.button=1
e.xbutton.state=276
Button release !
e.xbutton.button=8
e.xbutton.state=20
"xdotool keyup ctrl"
Release + m:0x4 + b:8 (mouse)
got screen 0 for window 16d
Start program with fork+exec call
Yaklaşım D:
.xbindkeysrc
Dosya şu şekilde güncelleniyor :
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
"xdotool click 1"
b:1
Çok basit ... ancak sonsuz bir tıklama döngüsüne yol açar.
GÜNCELLEME:
Bu arada bir Logitech G502 aldım ve Windows üzerinde sürücü aracılığıyla yapılandırıldıktan sonra sadece profilin kendisinin cihaz belleğinde değil, gerçek tuşa basma fare tarafından yapıldığını fark ettim. Aslında Linux'taki sorunumu çözdü!
Bunu yapabildiğini hatırladığım tek fare Razer Copperhead'di. Ama sanırım bugün aynısını yapabilen başka fareler de var.