Microsoft Sculpt Comfort Mouseのサイドタッチボタンを再マップする


12

最近、Microsoft Sculpt Comfort Mouseを購入しました。Bluetoothを使用してラップトップに接続し、通常のマウスボタンはすべてLinuxとWindows 7の両方で完璧に機能します。ただし、このマウスの違いは、押したときにスタート/メニューを起動する特別なWindows/ Superキーがあることです。また、サイドボタンが上下にストロークしたことを検出し、マウスが振動してアクティブになったことを確認するタッチセンサーもあります。

もちろん、Windowsには、ストロークの動作を変更して振動をオフにするプログラムがあります。

Linuxでは、xevは、サイドボタンが押されるかスワイプされると、通常のキーストロークのみを検出します。Xevは、マウスボタンが押されたことを報告しません。

だから私の質問は、Linuxの下で送信されるキープレスを変更できますか?

私はからの結合キーに変更するのが大好きだtabdownbackspaceup、(何xevのレポートを)へのctrl+ alt+ left/ rightワークスペースを切り替えることができます。

助けてくれてありがとう!


あなたはでマウスのためのHOWTOをチェックアウトしましたhelp.ubuntu.com/community/ManyButtonsMouseHowto
ubfan1 14年

1
ヒントubfan1のおかげで、xinput get-button-mapには13個のボタンがあります。xevおよびxinputテストレポートボタン1〜7。リンクからxinput set-button-mapとxbindkeysを使用してボタン8〜13の再マッピングを試みましたが、何も変わりませんでした。サイドキーを押すと、キープレス133(スーパー)が報告され、上にスワイプするとキープレス22(バックスペース)が報告され、下にスワイプするとキープレス23(タブ)が報告されます。
user223544 14年

回答:


5

私は自分で1つ購入しましたが、次のことが私にとって完璧に機能することがわかりました。

  1. dconf-editorを開きます(sudo apt-get install dconf-editorまだインストールされていない場合)。
  2. org-> gnome-> desktop-> wm-> keybindingsに移動します。
  3. 変更の値はスイッチ・ツー・ワークスペースダウン

    ['<Control><Alt>Down', '<Primary><Super>Tab', '<Control><Super>Tab']

    そして、の値スイッチ・ツー・ワークスペースアップ

    ['<Control><Alt>Up', '<Primary><Super>BackSpace', '<Control><Super>Backspace']


このソリューションは、xbindkeysで見つけたソリューションよりも確実に機能します。xbindkeysと比較した場合の唯一の欠点は、xbindkeysソリューションがマウスキーイベントのみをキャプチャするように見えたのに対して、キーボードキーが使用されている場合にもこのソリューションが機能することです。とにかく、このソリューションの信頼性は、より良いソリューションになります。
user223544 14

2

したがって、Microsoft Sculpt Comfort Mouseは、スーパージェスチャおよびスワイプジェスチャのマウスボタンプレスを登録せず、代わりにキーボードキープレスを登録するため、「xautomation」および「xbindkeys」パッケージを使用して、それらのキープレスをリッスンし、Ctrl+ Alt+ Right/ Leftワークスペースを切り替えます。これは理想的なソリューションではありませんが、10回のうち8回のように機能します。

#Move to left workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Left' 'keyup Control_L' 'keyup Alt_L' 'keyup Left'"
   m:0x4+mod4+m:0x0+c:23
   #Control_L+Super_L+Tab

#Move to right workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Right' 'keyup Control_L' 'keyup Alt_L' 'keyup Right'"
   m:0x4+mod4+m:0x0+c:22
   #Control_L+Super_L+Backspace

このxbindkeysスクリプトは、マウスが上にスワイプし、下にスワイプするジェスチャーがコンピューターに送信するキー押下をリッスンします。検出された場合、xautomationは標準の移動デスクトップキーストロークcontrol+ alt+ left/を送信しますright

マウスを上にスワイプすると、キーストロークleft control+ left super+が送信されますbackspace。マウスを下にスワイプすると、キーストロークleft control+ left super+が送信されますtab。m:0x4 + mod4 + m:0x0 + c22は、xbindkeysによって検出される実際のキーコードの組み合わせです。

効率を改善できるかどうかを確認するために、もう少し混乱させますが、今のところこれで仕事は完了です。私は願っていますtabし、backspaceマウスの出力は、私がやっていることをすべての作業をネジしないこと。


1
ソリューションの仕組みを説明できますか?マウスは送信していますControl_L+Super_L+Tabか(Control_L + Super_Lはどこから来ていますか)?または、マウスボタンを一致させますm:0x4+mod4+m:0x0+c:23か(質問にはマウスイベントは生成されていないと言います)。
フォルカージーゲル14

ソリューションを編集して、Control_L + Super_Lがどこから来ているのかを説明しました。また、m:0x0 + mod4 + m:0x0 + c:23の目的についても説明しました。
user223544

0

同じボタンをマップして、Firefoxのタブを両方向にナビゲートしたかったのです。私はxbindkeysとxmacroを使用しています。それはかなりうまくいっています!

.xbindkeysrc

#Thumb down
"echo 'KeyStrPress Control_L KeyStrPress Tab KeyStrRelease Control_L KeyStrRelease Tab'|xmacroplay :0"
   Control+Mod4+Tab

#Thumb up
"echo 'KeyStrPress Control_L KeyStrPress Shift_L KeyStrPress ISO_Left_Tab KeyStrRelease Control_L KeyStrRelease Shift_L KeyStrRelease ISO_Left_Tab' |xmacroplay :0"
   Control+Mod4+BackSpace
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.