web-dev-qa-db-ja.com

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

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
19
Callum Rogers

xbindkeys および xte が役立ちます。

たとえば、私の.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
17
lukasz

ソリューションを提供してくれたすべての人に感謝します。以下は、より確実な/結合されたガイドです(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 [...]コマンドのみが必要です。

4
malasa