この質問はすでに質問されていますが、適切に回答されたことはありません。@Sethとのクリアランスの後、私は再びそれを求めています。これにより、質問に簡単に応答して変更できるようになります。元の質問はここにあります:
問題:
使用して、マウスのボタンに任意のキーストロークをマッピングすることは非常にシンプルですがxbindkeys
と一緒にxdotool
またはxte
修飾キー(例えばマッピングするために、より多くの問題のようだALT、CTRL、SHIFTそれになど)。
最終soloutionは、IA許可する必要がありますCTRL +をクリックするだけで、マウスで(リストの複数のエントリを選択するためなどに)。
これを解決するためのいくつかの可能なアプローチは、Stack Exchangeおよび他のLinux関連フォーラムでご覧いただけます。しかし、それらは他の問題や副作用につながるため、期待どおりに機能しません。
ノート:
以下の例の中には、Scheme構文を持つGuileを含み、ファイルに依存するものもありますが、他の例では、それぞれの構文を持つファイルに依存します。私は彼らが一緒に働かないことを知っています。.xbindkeysrc.scm
.xbindkeysrc
さらに、以下のスニペットxdotool
のみに依存していますが、たとえば他のアプリケーションを含むアプローチも受け入れxte
ています-どちらも同じ結果につながるようであるため、xdotool
ここではアクションのみを使用しています。
アプローチA:
以下を使用して.xbindkeysrc
ファイルを更新します。
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + b:8
それは私が最初に試したものですが、修飾子が保持されており、解放できないという副作用があります。
アプローチB:
以下を使用して.xbindkeysrc.scm
ファイルを更新します。
(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")
http://www.linuxforums.org/forum/hardware-peripherals/169773-solved-map-mouse-button-modifier-key.htmlで見つかり、修飾子が保持されている問題に対処しようとします(アプローチで説明されているように) a)。
サムボタンが押されている間は他のマウスクリックを実行できないため、部分的にしか機能しないことが修正されています。
アプローチC:
以下を使用して.xbindkeysrc
ファイルを更新します。
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
ここaskubuntuでリンクされた質問のOPによって試されました。モディファイヤステートを含まないため、はるかにシンプルで堅牢です。それでも、問題は残ります。つまり、CTRL + クリックは不可能です。
xbindkeys
ここでは、クリックを認識しますが実行しないため、それ自体が問題であるようです。これはxev | grep button
およびを使用してテストできますxbindkeys -v
。
によって記録される通常のマウスクリックxev
は次のようになります。
state 0x10, button 1, same_screen YES
state 0x110, button 1, same_screen YES
サムボタンの場合:
state 0x10, button 8, same_screen YES
state 0x10, button 8, same_screen YES
ただし、上記のxbindkeys
構成を有効にすると、何も記録されません。サムボタンはCTRLにマップされ、マウスボタンではないため、サムボタンには意味がありますが、ボタン1も記録されないのは奇妙です。これはおそらくxbindkeys
実行されないが、それ自体が認識しているためです。
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
アプローチD:
以下を使用して.xbindkeysrc
ファイルを更新します。
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
"xdotool click 1"
b:1
単純すぎます...しかし、クリックの無限ループにつながります。
更新:
その間、Logitech G502を購入し、Windows上のドライバーを介して設定すると、プロファイル自体がデバイスメモリに保存されるだけでなく、実際のキー入力がマウスで行われることに気付きました。それが実際にLinuxでの私の問題を解決しました!
私が覚えていた唯一の他のマウスは、当時はRazer Copperheadでした。しかし、私は同じことをすることができる他のマウスが今日利用可能であると思います。