Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

マウスのホイールと戻る/進むボタンのキーマップを設定したい #54

Open
hkcomori opened this issue Jul 19, 2023 · 1 comment

Comments

@hkcomori
Copy link

hkcomori commented Jul 19, 2023

以下のボタンと修飾キーを組み合わせたホットキーを設定したいのですが、良い方法は無いでしょうか?

  • ホイール下方向: WheelDown, vk=0x9E
  • ホイール上方向: WheelUp, vk=0x9F
  • 戻る: XButton1, vk=0x05
  • 進む: XButton2, vk=0x06

ホイール上下は修飾キーと組み合わせたsendと入力検出で躓きました。

  • send: 単独ならMouseWheelCommandで可能だが、修飾キーとの組み合わせはできない
  • 入力検出: mousewheelのhookに登録すれば単独検出は可能だが、修飾キーとの同時押しの検出ができませんでした

また、XButton1,2はpyautoでフック対象になっておらず、Keyhacからは状態を知る術が無さそうです。

設定したいホットキーの例

  • 修飾キー+ホイール上下 → 通常のN倍速でスクロール
  • 修飾キー+ホイール上下 → 別の修飾キー+ホイール上下 に変更
  • 戻る/進むボタンに対応していないアプリにおいて、戻る/進む相当のキーボードショートカットを割り当て
  • 修飾キー+戻る/進む → タブや仮想デスクトップの切り替え等の機能を割り当て

仮想キーコードについて

AutoHotkeyで調べたものになります。

仮想キーコードによるとXButton1,2は定義されているようですが、ホイール上下は定義されていないようです。
未割り当て範囲に含まれているので、もしかしたらAutoHotkeyで便宜上割り当てられている仮想キーコードかもしれません。

@hkcomori
Copy link
Author

機能追加してみたところ、以下のことは実現できました。
つまり、マウス操作に対して、キーボード操作を割り当てできます。

  • 戻る/進むボタンに対応していないアプリにおいて、戻る/進む相当のキーボードショートカットを割り当て
  • 修飾キー+戻る/進む → タブや仮想デスクトップの切り替え等の機能を割り当て

一方、以下のような、マウス操作に別のマウス操作を割り当てることは、実現が難しそうです。
その理由は、 #39 が発生するためです。
回避策として紹介されている、マウスフックしたスレッドと異なるスレッドでSendInputする方法を試しましたが、キー操作から割り当てた操作が実行されるまでの遅延が大きく、実用するのは厳しいと感じました。

  • 修飾キー+ホイール上下 → 通常のN倍速でスクロール
  • 修飾キー+ホイール上下 → 別の修飾キー+ホイール上下 に変更

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant