
2026/03/14 3:42
**ムーサー:** Logi-Plus マウスソフトウェアのオープンソース代替品。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
改訂版概要
Mouserは、Logitechのクラウド依存型Options+ソフトウェアに代わる軽量でオープンソースな代替手段です。macOSまたはWindows上でLogitech MX Master 3Sマウスのすべてのプログラム可能ボタンを直接リマップでき、テレメトリーもアカウントも不要で、ローカルJSON設定ファイルのみで動作します。このツールは、フォアグラウンドアプリが変わると自動的に切り替わるアプリケーション別プロファイルをサポートし、22の組み込みアクション(DPI調整やスクロール反転など)を備えています。macOSではCGEventTap、WindowsではSetWindowsHookExWというネイティブシステムフックとHID++ 2.0を使用してジェスチャーボタンを処理します。Mouserはマウスの再接続も自動で管理し、UIに「Connected/Not Connected」のバッジを表示し、ジェスチャーアクションが実行できない場合は生入力またはミドルクリックにフォールバックします。
計画されているアップデートでは、MX Master 3S以外のデバイス対応拡張、カスタムキーコンボ追加、自動起動、スクロール改善、スワイプジェスチャー、アプリごとの自動プロファイル作成、設定のインポート/エクスポート、Linux版への移植、およびプラグインアーキテクチャを追加することが目標です。すべてのカスタマイズをユーザー側の機器に留めることで、Mouserはプライバシー保護されたマウス設定を提供しつつ、MITライセンス下でコミュニティへの貢献を奨励します。このプロジェクトは、他のハードウェアベンダーが専有クラウドベースソリューションよりもオープンかつローカルなツールを採用する影響力を持つ可能性があります。
本文
Mouser – MX Master 3S ボタンリマッパー
軽量・オープンソースで、Logitech Options+ の完全ローカル代替。
Logitech MX Master 3S のすべてのプログラマブルボタンを再設定できます。
テレメトリーなし、クラウド無し、Logitech アカウント不要。
主な機能
- macOS 対応 – CGEventTap、Quartz CGEvent、NSWorkspace を使用し完全互換(感謝 @andrew‑sz)。
- 6 つすべてのプログラマブルボタンを再設定
- 中クリック、ジェスチャーボタン、戻る・進む、左右スクロール。
- アプリ別プロファイル – アプリ切替時に自動でボタン割り当てを変更(例:Chrome と VS Code)。
- 22 の組み込みアクション
ナビゲーション、ブラウザ、編集、メディアなど。 - DPI / ポインタ速度制御 – 200–8000 DPI のスライダーとプリセット。HID++ 経由で同期。
- スクロール方向反転 – 垂直・水平を個別に切替可。
- ジェスチャーボタンサポート – Bluetooth 上で HID++ 2.0 を完全ディバーブ(Logitech ソフト不要)。
- 自動再接続 – 電源循環や切断を検知し、アプリ再起動なしで機能復旧。
- ライブ接続状態表示 – UI に「Connected / Not Connected」のリアルタイムバッジ。
- モダン Qt Quick UI – ダーク Material テーマ、インタラクティブマウス図解、ボタンアクションピッカー。
- システムトレイ – バックグラウンドで実行し、閉じるとトレイへ。トレイメニューからリマッピングを切替可。
- フォアグラウンドアプリ自動検出 – アクティブウィンドウを 300 ms ごとにポーリングして即座にプロファイル切替。
- 外部サービス不要 – 設定はローカル JSON に保存。全処理はデバイス上で完結。
スクリーンショット
UI は MX Master 3S のインタラクティブ図を表示します。任意のボタンのホットスポット点をクリックするとアクションが変更できます。
対応機器
| プロパティ | 値 |
|---|---|
| デバイス | Logitech MX Master 3S |
| Product ID | 0xB034 |
| プロトコル | HID++ 4.5 (Bluetooth) |
| 接続方式 | Bluetooth(USB レシーバーでも基本ボタンは動作) |
注意:構成は他の Logitech HID++ マウスにも拡張可能ですが、テスト済みなのは MX Master 3S のみです。
デフォルトマッピング
| ボタン | デフォルトアクション |
|---|---|
| 戻るボタン | Alt+Tab(ウィンドウ切替) |
| 進むボタン | Alt+Tab(ウィンドウ切替) |
| 中クリック | Pass‑through(そのまま送信) |
| ジェスチャーボタン | Pass‑through |
| 左スクロール | ブラウザ Back |
| 右スクロール | ブラウザ Forward |
利用可能アクション
- Navigation – Alt+Tab、Alt+Shift+Tab、Show Desktop (Win+D)、Task View (Win+Tab)
- Browser – Back、Forward、Close Tab (Ctrl+W)、New Tab (Ctrl+T)
- Editing – Copy、Paste、Cut、Undo、Select All、Save、Find
- Media – Volume Up、Volume Down、Volume Mute、Play/Pause、Next Track、Previous Track
- Other – Do Nothing(Pass‑through)
ダウンロード & 実行
インストール不要。ダウンロードして解凍し、ダブルクリック。
(44 MB)Download → Mouser.zip- ZIP を任意のフォルダーに展開(デスクトップ、ドキュメント等)
を実行Mouser.exe
アプリが起動するとすぐにマウスボタンのリマッピングが有効になります。
期待できること
- 設定ウィンドウが開き、マウス図解が表示されます。
- システムトレイアイコンが時計付近(右下)に出現します。
- ボタンリマップは即座に有効です。
- ウィンドウを閉じてもアプリは終了せずトレイで動作し続けます。
- 完全に終了するには、トレイアイコンを右クリック → Quit Mouser。
初回注意:Windows SmartScreen が警告する場合があります → 「More info」→「Run anyway」を選択。
Logitech Options+ は実行していないこと(HID++ アクセスと競合)を確認してください。設定は自動で
に保存されます。%APPDATA%\Mouser
ソースからのインストール
前提条件
- Windows 10/11 または macOS 12+ (Monterey)
- Python 3.10+(実際に 3.14 でテスト)
- Logitech MX Master 3S が Bluetooth もしくは USB レシーバーでペアリング済み
- Logitech Options+ は 起動していないこと
- macOS の場合:アクセシビリティ許可が必要(
)System Settings → Privacy & Security → Accessibility
手順
# 1. リポジトリをクローン git clone https://github.com/TomBadash/MouseControl.git cd MouseControl # 2. 仮想環境を作成 python -m venv .venv # 3. アクティベート # Windows (PowerShell / CMD) .venv\Scripts\activate # macOS / Linux source .venv/bin/activate # 4. 依存関係をインストール pip install -r requirements.txt
主要ライブラリ
| パッケージ | 用途 |
|---|---|
| PySide6 | Qt Quick / QML UI フレームワーク |
| hidapi | HID++ 通信(ジェスチャーボタン、DPI) |
| pystray | システムトレイアイコン |
| Pillow | アイコン生成用画像処理 |
実行方法
# 選択肢 A: 直接実行 python main_qml.py # 選択肢 B: バッチファイルを使用(コンソールウィンドウ付き) Mouser.bat # 選択肢 C: デスクトップショートカットを使用(コンソールなし) # Mouser.lnk をダブルクリック
Tip: コンソール無しで実行したい場合は
pythonw.exe main_qml.py もしくは .lnk ショートカットを利用してください。
デスクトップショートカットの作成
Mouser.lnk が付属しています。手動で作る場合:
$s = (New-Object -ComObject WScript.Shell).CreateShortcut("$([Environment]::GetFolderPath('Desktop'))\Mouser.lnk") $s.TargetPath = "C:\path\to\mouser\.venv\Scripts\pythonw.exe" $s.Arguments = "main_qml.py" $s.WorkingDirectory = "C:\path\to\mouser" $s.IconLocation = "C:\path\to\mouser\images\logo.ico, 0" $s.Save()
ポータブルアプリのビルド
誰でも Python をインストールせずに実行できる
Mouser.exe を作成するには:
# 1. PyInstaller を仮想環境内でインストール pip install pyinstaller # 2. spec ファイルを使ってビルド pyinstaller Mouser.spec --noconfirm # あるいはビルドスクリプトだけ実行 build.bat
出力フォルダーは
dist\Mouser\。そのフォルダ全体を ZIP 化して配布します。
アーキテクチャ概要
┌─────────────┐ ┌──────────┐ ┌────────────────┐ │ Mouse HW │────▶│ Mouse │────▶│ Engine │ │ (MX Master) │ │ Hook │ │ (orchestrator) │ └─────────────┘ └──────────┘ └───────┬────────┘ ▲ │ block/pass ┌────▼────────┐ │ Key │ ┌─────────────┐ ┌──────────┐ │ Simulator │ │ QML UI │◀───▶│ Backend │ │ (SendInput) │ │ (PySide6) │ │ (QObject)│ └─────────────┘ └─────────────┘ └──────────┘ ▲ ┌────┴────────┐ │ App │ │ Detector │ └─────────────┘
- Mouse Hook (
) – Windows の低レベルフック。サイドボタン、中クリック、左右スクロールを捕捉。mouse_hook.py - ジェスチャーボタン検出 – HID++ 2.0 → Raw Input フォールバック → 中クリックフォールバックの三層構造。
- App Detector (
) – 300 ms ごとにアクティブウィンドウをポーリングし、プロファイル切替を即時実行。app_detector.py - Engine (
) – フック ↔ シミュレータ ↔ 設定を統括。再接続やプロファイル切替をフックの再起動無しで処理。engine.py
設定
すべての設定はローカル JSON に保存されます。
- Windows:
%APPDATA%\Mouser\config.json - macOS:
~/Library/Application Support/Mouser/config.json
機能:
- 複数プロファイル(名前付き)とボタン割り当て。
- プロファイルごとのアプリ関連付け(
名のリスト)。.exe - グローバル設定:DPI、スクロール反転、起動オプション。
- 旧バージョンからの自動マイグレーション。
プロジェクト構成
mouser/ ├── main_qml.py # アプリケーションエントリ ├── Mouser.bat # クイック起動バッチファイル ├── README.md ├── requirements.txt ├── .gitignore │ ├── core/ # バックエンドロジック │ ├── engine.py # コアオーケストレータ │ ├── mouse_hook.py # 低レベルフック & HID++ リスナー │ ├── hid_gesture.py # HID++ ジェスチャディバーブ │ ├── key_simulator.py # SendInput アクションシミュレータ │ ├── config.py # JSON 設定マネージャ │ └── app_detector.py # フォアグラウンドアプリポーリング │ ├── ui/ # UI レイヤー │ ├── backend.py # QML ↔ Python ブリッジ │ └── qml/ │ ├── Main.qml # アプリシェル │ ├── MousePage.qml # マウス図解&プロファイル管理 │ ├── ScrollPage.qml # DPI スライダー & スクロール反転 │ ├── HotspotDot.qml # インタラクティブボタンオーバーレイ │ ├── ActionChip.qml # 選択可能アクションピル │ └── Theme.js # カラー/定数共有 │ └── images/ ├── mouse.png # MX Master 3S 図解 ├── logo.png # Mouser ロゴ ├── logo.ico # ショートカット用多サイズアイコン ├── logo_icon.png # 背景付き正方形アイコン ├── chrom.png # Chrome アイコン ├── VSCODE.png # VS Code アイコン ├── VLC.png # VLC アイコン └── media.webp # Windows Media Player アイコン
UI の概要
スライド式サイドバーから 2 ページにアクセス。
-
Mouse & Profiles
- 左パネル:プロファイル一覧(デフォルトは「All Apps」、アプリ別)。
- 右パネル:インタラクティブマウス図解。ホットスポット点をクリックしてアクションを選択。
- プロファイル追加:下部の ComboBox に既知アプリ一覧が表示され、「+」をクリックするとアプリ別プロファイル作成。
-
Point & Scroll
- DPI スライダー(200–8000)とクイックプリセット。
- 垂直・水平スクロール反転の独立切替トグル。
現状の制限
- Windows と macOS のみ – Linux は未対応。
- MX Master 3S だけ – HID++ インデックスはハードコード。
- Bluetooth 推奨;USB レシーバーは基本ボタンのみサポート。
- Logitech Options+ と競合するため、起動前に Options+ を終了してください。
- スクロール反転は実験段階で、一部アプリでは完全に機能しない可能性。
今後の予定
- 他の Logitech HID++ マウス(MX Master 3、MX Anywhere 3 等)への拡張。
- カスタムキーコンボ(例:Ctrl+Shift+P)。
- Windows でレジストリまたはタスクスケジューラ経由で自動起動。
- スクロール反転の改善(ドライバレベル解決策)。
- ジェスチャーボタンアクション – マルチアクション用スワイプジェスチャー。
- アプリ別プロファイルの自動生成。
- 設定のエクスポート/インポート。
- トレイアイコンに現在のプロファイル名を表示。
- Linux への移植(libevdev / evdev フック)。
- サードパーティアクションプロバイダー用プラグインシステム。
コントリビュート
- リポジトリをフォークし、機能ブランチを作成。
- 開発環境をセットアップ(
を参照)。Installation - MX Master 3S でテスト後、変更をコミット。
- Pull Request を送信し、詳細説明を書く。
具体的に手助けが必要な分野
- 他の Logitech HID++ デバイスでのテスト
- スクロール反転機能の改善
- Linux ポーティング
- UI/UX の洗練とアクセシビリティ
プロジェクトへの支援
Mouser が Logitech Options+ をインストールせずに済むのであれば、開発資金をサポートしてください。
すべての助力はプロジェクト継続に役立ちます。ありがとうございます!
ライセンス
MIT License.
謝辞
@andrew‑sz – macOS ポート(CGEventTap マウスフック、Quartz キーシミュレーション、NSWorkspace アプリ検出、NSEvent メディアキーサポート)。
*Mouser は Logitech と提携しておらず、承認も受けていません。 “Logitech”、 “MX Master” 及び “Options+” は Logitech International S.A. の商標です。