マウスボタンをキーにバインドする方法は?


19

私はLogitechのMX400レーザーマウス垂直/水平スクロール用ボタン5 + 4を有しています。水平スクロールの代わりに、スクロールホイールを右に押すとCtrl+ が送信されTab、左にCtrl+ Shift+ が送信されるのでTab、ブラウザのタブを切り替えることができます。

また、押すのが本当に難しいので、中央のボタンを横のボタンの1つに再マップできればいいと思います。

もう1つのボーナスは、現在アクティブなウィンドウに応じて、どのボタンが何を実行するかを定義できるスクリプトを作成できればです。

使用してみましたxmodmapが、ボタンを再配置する方法しか見ることができず、キー信号を送信することはできませんでした。

前もって感謝します。


ボタンマップ(を使用xev):

Left        1
Middle      2
Right       3
ScrollUp    4
ScrollDown  5
ScrollLeft  6
ScrollRight 7
Backward    8
Forward     9

回答:


18

xbindkeysXTEはあなたを助けることができます。

たとえば、私の.xbindkeysrcファイルは次のようになります。

# close the window under the mouse cursor
"xte 'mouseclick 1' && xte 'keydown Alt_L' 'key F4' 'keyup Alt_L'"
  b:8+Release

# double click
"xte 'mouseclick 1' 'mouseclick 1'"
  b:9

これは、幻想的で拡張可能な、多くの多くのおかげで
して、Callumロジャース

1
Ubuntu 16.xでxteを入手するには、aptからxautomationをインストールする必要があります。
1111161171159459134 16

ボタンを押したままにしても同じように機能しないため、私が思うほどうまく機能しません。私の古いマウスには、スクロールホイールを自由に回転させるボタンがありました。これは、本当に速く動き始めて、長くスクロールしたい場合に最適です。しかし、私の新しいものにはそれがないので、側面の2つのボタン(Webブラウジング用の戻る/進むボタンとして設計されていると思います)をPgUp / PgDnキーにバインドしました。しかし、スクロールを続けたい場合は、繰り返し押す必要があります。ただ押さえつけることはできません。ボタンを保持している限り、キーを保持するにはどうすればよいですか?
flarn2006 16

5

ソリューションを提供してくれたすべての人に感謝します。以下は、より確実な/結合されたガイドです(Xubuntu 18.04で行われます)。

  1. ターミナル(xterm / terminal / terminatorなど)を開き、ルート(sudo su -)になるか、コマンドの前でsudoを使用します。

    apt install xbindkeys xautomation
  2. ボタンのマッピングをxevで確認します。このため、root権限は必要ないため、rootセッションを終了するexitか(で)、ユーザーとして別の端末を開きます。

    xev | grep button
  3. 小さなウィンドウが表示されます。マウスをそのウィンドウに移動して、再マップするボタンを押す必要があります。ターミナルでの出力例は次のとおりです。

    state 0x0, button 8, same_screen YES

    これは、PAGE_DOWNとして使用するマウスの2番目のサイドボタンです。

    state 0x0, button 9, same_screen YES

    これは、PAGE_UPとして使用する最初の(はい、順序が逆になっている)サイドボタンです。

  4. 再マップするボタンがすべて揃ったら、小さなxevウィンドウを閉じることができます。お気に入りのエディター(gedit / vi / nanoなど)を開き、構成ファイルを編集します。

    vi .xbindkeysrc
  5. ファイルにコンテンツがすでにある場合は、そのようなバインディングが存在するかどうかを確認し(おそらく、デフォルトではない)、最後に追加します。

    #Pagedown press
    "xte 'keydown Next'"
    b:8
    
    #Pagedown release
    "xte 'keyup Next'"
    b:8 + Release
    
    #Pagedup press
    "xte 'keydown Prior'"
    b:9
    
    #Pageup release
    "xte 'keyup Prior'"
    b:9 + Release

    注:ボタンを押すためのエントリとリリースのためのエントリの2つのエントリが必要です。

  6. ボタン8 + 9は、キー「Next」(PAGE_DOWN)および「Prior」(PAGE_UP)にマップされます。異なるキーをマップする場合は、xevでキーシンボルを見つけることができます。

    xev | grep keysym
  7. 前と同様に、ターミナルで起動し、マウスを小さなウィンドウに移動して、目的のキーを押します。

    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
  8. xbindingsを保存して強制終了します。

    killall xbindkeys ; xbindkeys

これで、マウスの追加のサイドボタンを使用できます。設定は、次回の再起動/ログイン時に自動的にロードされます。killall [...]設定を変更する場合のみ、上記のコマンドが必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.