web-dev-qa-db-ja.com

xbindkeysで複雑なマウスボタンの組み合わせを使用できますか?

Ubuntu 16.04を実行しており、Logitech M705マウスを接続しています。このマウスには合計10個のボタンがあり、ボタン1は左クリック、ボタン2は右クリック、ボタン10は「サムボタン」です​​。

xbindkeysを設定しました

# History Back & Forward
"xte 'keydown Alt_L' 'key Left' 'keyup Alt_L' "
  b:6 + Release
"xte 'keydown Alt_L' 'key Right' 'keyup Alt_L' "
  b:7 + Release

# page down
"xte 'key Next' "
  b:8

# page up
"xte 'key Prior' "
  b:9

# powerclick
"xte 'keydown Control_L' 'mouseclick 1' 'keyup Control_L' "

これはすべて非常にうまく機能します。私がpowerclickと呼ぶものは、新しいタブでFFのリンクを開くために使用されます。

達成したいこと:ボタン1をクリックしてからボタン10をクリックし、テキストを選択して両方のボタンを離すと、テキストがクリップボードにコピーされます。したがって、任意のウィンドウの一種のクイック編集モードで、この方法でテキストが選択されるとすぐにコピーされます。

# quickcopy
"xte 'keydown Control_L' 'key c' 'keyup Control_L' "
  b:10  + b:1 + Release

しかし、これでは目的の効果が得られません。

このような複雑な条件をマッピングする方法はありますか? 「サムボタン」がキーボードのCtrlキーと同様に機能する、つまり標準のクリック動作を変更することを考えると、これが非常に役立つことを想像できます。

後でボタン10(サムボタン)+ボタン2(右ボタン)の貼り付け機能を作成したい

ありがとう

4
michnovka

ターミナル出力でxbindkeys -n -vを実行すると:

1 keys in /home/whoever/.xbindkeysrc

min_keycode=8     max_keycode=255 (ie: know keycodes)
"xte 'keydown Control_L' 'key c' 'keyup Control_L' "
    Release + m:0x0 + b:1   (mouse)
starting loop...

m:0x0はマウスの状態だと思うので、xbindkeysはb:10 + b:1 + Releaseを単にb:1 + Releaseとして解釈しているようです。

間違っているのか、それを書く正しい方法があるのか​​、またはxbindkeysで2つのマウスボタンの組み合わせを使用できないのかはわかりません。

3
100r

正常に実行することはできませんが、幸いにもxbindkeysはguileと呼ばれるスクリプト言語をサポートしており、修飾キーのように機能するボタンを作成できる状態/変数の設定などを実行できます。

私はそれについてスレッドを作成しました: https://www.linuxquestions.org/questions/linux-desktop-74/%5Bxbindkeys%5D-advanced-mouse-binds-4175428297/

2
David Bobb

b:3 + b:1を実装し、この例では右クリックと左クリックを組み合わせてCTRL + F5を送信します。これには、guileサポートを使用してxbindkeysを構築する必要があります

この追加の構成ファイル/home/user/.xbindkeysrc.scmを次の内容で作成します。

基本的にこれは

  • 最初に監視されたキーを傍受する>その後
  • 2番目のキーに注意してください
    • key1 + key2の場合、コマンドを送信します
    • それ以外の場合は、最初のキーのコマンドを送信します
    • xbindkeysを再起動(クリーンな方法で最初からやり直すため)
;;   This configuration is guile based.
;;   http://www.gnu.org/software/guile/guile.html


;; Right Click
(define (first-binding)
    "First binding"                                  
    (xbindkey-function '("b:3") b3-second-binding)
)

(define (reset-first-binding)
    "reset first binding"
    (ungrab-all-keys)
    (remove-all-keys)
)

(define (b3-second-binding)
    "Button Extra Functions"
    (reset-first-binding)

    ;; First Key Down + Second Key = Action Ctrl+F5 And Release
    (xbindkey-function '("b:1")
        (lambda ()
            (reset-first-binding)
            (run-command "xte 'keydown Control_R' 'keydown F5' 'keyup F5' 'keyup Control_R'")
            (run-command "killall xbindkeys; xbindkeys")
        )
    )

    ;; First Key Up = Release
    (xbindkey-function '(release "b:3") 
        (lambda ()
            (reset-first-binding)
            (run-command "xte 'mouseclick 3'")
            (run-command "killall xbindkeys; xbindkeys")
        )
    )
)

(first-binding) 

David Bobbに感謝

0
intika