web-dev-qa-db-ja.com

Alt + TabをKubuntuのLogitechマウスボタンにバインドする

注:これは this または this の複製ではありません。 。

Logitech Proteus Core マウスがあります。 Windows 10では、Win + Tabキーを使用して表示できるタスクリストを表示するために、ボタンの1つ(マウスの上部にある「G9」というラベルが付いた小さなボタン)を設定しました。これは、WinキーとTabキーの両方を離しても維持されます。移動したいウィンドウをクリックすると消えます。ワークフローは次のとおりです。G9マウスボタンを押して放し、目的のウィンドウをクリックします。

Kubuntu 15.04で同様の動作が必要です。私の知る限り、キーを押さなくても、何かをクリックするまで同じようなタスクリストを表示する方法はありません。

したがって、私の考えは、このボタンでAlt + Tabをエミュレートすることでした。私が念頭に置いているワークフローは次のとおりです。G9をプッシュ(「altをプッシュ、タブをプッシュ、タブを解放」のショートカット)=>必要なウィンドウを選択し、G9をリリース(「altをリリース」のショートカット)。

問題は、私が知る限り、このG9ボタンがOSによって通常のマウスボタンとして読み取られていないことです。私が実行した場合:

xbindkeys -mk

G9ボタンをクリックすると、次の出力が表示されます。

"(Scheme function)"
m:0x40 + c:23
Mod4 + Tab
"(Scheme function)"
m:0x40 + c:133
Mod4 + Super_L

注:私はこれをテスト目的でVMで実行しています。それが物事に影響を与える可能性があるかどうかを教えてください、この場合も動作する必要があります。

私が実行した場合:

xev | grep button

興味のあるG9ボタンをクリックしても出力が表示されません。他のボタンをクリックすると、次のような出力が期待されます。

state 0x0, button 2, same_screen YES

これは奇妙ですが、xbindkeys -mkの出力を~/.xbindkeysrcに追加するだけでいいと思いました。

"xte 'keydown Alt_L' 'key Tab'"
  m:0x40 + c:23 + Release

明らかに、これが機能したとしても、私が望んでいたことはできませんが、機能しません。実行後にG9ボタンをクリックしても何も起こりません。

xbindkeys -v -n

これはこの警告を与えます:

Xbindkeysによってキャプチャされたキーの1つをキャプチャする別のプログラムが実行されていないことを確認してください。競合があり、xbindkeysはその構成ファイルで定義されているすべてのキーを取得できないようです。

コンソールでxteコマンドを入力すると、タスク選択のalt + tabメニューが表示されます。ただし、バインドされたマウスボタンには何もありません。

同じxte呼び出しをxev出力で表示される別のボタンに割り当てた場合(マウスの右ボタンを試してみました)、まだ実行されません(タブだけが実行されるようです)テキストエディターでタブで表示されます)が、警告はなくなり、ボタンの通常の機能もなくなります。

G9ボタンをクリックしたときに説明したAlt+Tab動作を取得するにはどうすればよいですか? b:3のようなxevが検出する別のボタンはどうですか?

注:このマウスは、Windowsソフトウェアから作成された構成を内部的に保存します。したがって、他のすべてのボタンはVMで機能を維持します:ブラウザーで戻る/進む、ブラウザータブを切り替えるなど。

Windowsで適切なマクロを記録する方法がある場合、またはKubuntuで達成したいことを簡素化する方法がある場合(つまり、G9ボタンを使用してalt + tabと同様の機能を取得する場合)、それらも受け入れますソリューション。

6
IVlad

evrouterはそれを支援します。リストからタスクを選択する前にG9をリリースすることもできます。

http://www.bedroomlan.org/projects/evrouter

ソースからビルドし、checkinstallでインストールしましたが、そこにリポジトリのように見えるものがあります。

フック

~/.evrouterrcで設定できます:

"Logitech Gaming Mouse G300" "/dev/input/event.*" any key/272 "Shell//home/velkan/click.sh"

"Logitech Gaming Mouse G300" "/dev/input/event.*" any key/275 "Shell//home/velkan/atab.sh"

Sudo evrouter -d /dev/input/event*を実行してクリックすると、これらの行を構成するのに役立ちます。

"Logitech Gaming Mouse G300"は私のマウスの名前です。

"/dev/input/event.*"は、マウスがバインドされているデバイスファイルの名前に関係なく、入力がインターセプトされることを意味します。

any-イベントがAlt/Ctrl/Shift修飾子で受け入れられることを意味します。

key/272-マウスの左ボタン。

key/275-マウスの戻るボタン(G4の場合)。

"Shell//home/velkan/click.sh"-そのイベントが発生したときに/home/velkan/click.shを実行します。

Alt-Tabスクリプト

したがって、/home/velkan/atab.shスクリプト(この場合はG4にバインドされています):

#!/bin/bash

mktemp /tmp/evr-alt-tab-XXXX

/usr/bin/xte 'usleep 100000' 'keydown Alt_L' 'usleep 50000' 'key Tab'

Altをリリースする必要があることをclick.sh(左ボタンにバインド)に通知する一時ファイルを作成します。

click.shスクリプト:

#!/bin/bash

if [ -e /tmp/evr-alt-tab-???? ]; then
    /usr/bin/xte 'usleep 100000' 'keyup Alt_L'
    rm /tmp/evr-alt-tab-????
fi

起動時にevrouterをアクティブにする

KDEで試したことはありません。

起動スクリプト/usr/local/sbin/evrouter_launch.sh

#!/bin/sh
/usr/local/bin/evrouter /dev/input/event* 0<&- > /dev/null

(または、/usr/bin/evrouterの代わりに/usr/local/bin/evrouterになります)

/etc/lightdm/lightdm.confを構成して、デスクトップマネージャーでevrouterを起動します。

[SeatDefaults]
autologin-user=
session-setup-script=/usr/local/sbin/evrouter_launch.sh
5
Velkan

Velkanの答えからのアイデアを使ってそれを完成させました。必要な手順をリストします。

  1. まず、WindowsのG9ボタンに設定したWin+Tabマクロは、Linuxがマウスを検出する方法を妨害していました。マウスボタンを検出する代わりに、Win内のTabおよびxevキーを単に検出しました。 Windowsソフトウェアでボタンを「マルチキーマクロ」として設定すると、マウスはこれらを送信するように内部で設定されていると思います。

    これを修正するには、Windowsでマルチキーマクロを使用するようにボタンを設定しないでください。それを他のものに設定します。ミドルクリックに設定します。

  2. これで、xev | grep buttonがG9をボタン2として検出しました。

  3. このスクリプトは、Velkanのスクリプトを組み合わせた~/alttab.shで作成しました。

    #!/bin/bash
    
    if [ -e /tmp/alt-tab-mouse-script-???? ]; then
       xte 'usleep 100000' 'keyup Alt_L'
       rm /tmp/alt-tab-mouse-script-????
    else
       mktemp /tmp/alt-tab-mouse-script-XXXX
       xte 'usleep 100000' 'keydown Alt_L' 'usleep 50000' 'key Tab'
    fi
    
  4. これを~/.xbindkeysrcに追加しました。両方の状態でクリックを機能させるには、altがダウンしている場合とダウンしていない場合の2行が必要です。

    "~/alttab.sh"
      b:2 + Release 
    
    "~/alttab.sh"
      Alt + b:2
    

これは私にとってはうまくいきました。フローは次のとおりです。G9(押して放す)をクリックし、目的のウィンドウを選択して(左クリックまたはマウスホイール)、G9をもう一度クリックしてそのウィンドウに移動します。 .shファイルの最初のifを変更して、Altキーを押す前にmouseclick 1も送信できます。ウィンドウのG9ボタンでクリックしたウィンドウに直接移動する場合表示。

usleep呼び出しを削除する実験も行いました。それらなしで私のために働いた。

動作はWindowsの動作とまったく同じではありませんが、十分に近いことがわかります。同じボタンで選択できるので、おそらくさらに便利です。したがって、別のボタンに指を移動する必要はありません。

3
IVlad