- C# 100%
| docs | ||
| Interop | ||
| Models | ||
| Services | ||
| .gitignore | ||
| App.xaml | ||
| App.xaml.cs | ||
| KazaguruMouse.csproj | ||
| MainWindow.xaml | ||
| MainWindow.xaml.cs | ||
| README.md | ||
かざぐるマウス Modern
Windows 10/11 (x64) 向けの、常駐型・日本語 WPF マウス操作ユーティリティです。これは旧版作者のリリースを再配布するものではなく、公開されていた機能を参考にした独立実装です。
ビルドと実行
dotnet build .\KazaguruMouse.csproj -c Release
dotnet run --project .\KazaguruMouse.csproj -c Release -- --self-test
dotnet run --project .\KazaguruMouse.csproj -c Release
--startup は UI を表示せず通知領域から開始します。--self-test はグローバルフックをインストールせず、決定的なテスト結果を出力します。
設定は %LOCALAPPDATA%\KazaguruMouseModern\settings.json に JSON で保存されます。保存は一時ファイルから置換し、壊れたファイルは .corrupt-<timestamp> として退避します。Windows 起動時チェックは HKCU の Software\Microsoft\Windows\CurrentVersion\Run のみを変更し、管理者権限を要求しません。
通知領域アイコンは常に 1 個です。左クリックで設定を開き、メニューから一時停止/再開、隠したウィンドウの復元、バージョン情報、終了を選べます。閉じる・最小化は設定によりトレイへ隠せます。
セキュリティと制限
低レベルマウスフックは専用 STA スレッドで処理し、コールバック内ではディスク I/O や UI 待機を行いません。SendInput には専用 sentinel を付与し、自身の入力だけを無視します。管理者権限ウィンドウは UIPI により操作できない場合があります。外部コマンドは設定で明示的に有効化した場合だけ UseShellExecute=true で起動します。ドライバー、サービス、ネットワーク、テレメトリ、自動更新はありません。
Windows 11 のタスクバー再配置、タスクボタンのホバー、Explorer 内部拡張は非公開実装のため提供しません。旧 Windows のシェル内部を再現するものではありません。
ブラウザーとファイル エクスプローラー
ブラウザー向けのショートカットのうち、公開ショートカットで同じ意味を持つ Back、Forward、Reload、CloseTab、PreviousTab、NextTab、NewTab、NewWindow、Fullscreen は、標準の Windows 11 ファイル エクスプローラー(explorer.exe のトップレベル CabinetWClass)が前面のときにも実行します。デスクトップ、タスクバーなどの Explorer シェル面は対象外です。
ReopenClosedTab はブラウザーでは従来どおり Ctrl+Shift+T を送りますが、ファイル エクスプローラーには信頼できる公開ショートカット/API がないため送信せず、非対応であることを通知します。DuplicateTab もファイル エクスプローラーには有効化していません(Explorer では安全な NewTab を使用してください)。
Notepad++ とポインター対象
Notepad++(notepad++.exe、トップレベルクラス Notepad++)は、既定ショートカットが公開されている NewTab(Ctrl+N)、CloseTab(Ctrl+W)、ReopenClosedTab(Ctrl+Shift+T)、NextTab(Ctrl+Tab)、PreviousTab(Ctrl+Shift+Tab)、Reload(Ctrl+R)だけを対象にします。Back/Forward、新しいウィンドウ、複製、ズーム、ブックマーク、ソース表示などブラウザー専用項目は送信しません。Notepad++ のショートカットはユーザーが変更できるため、設定を変更している環境では期待どおりにならない場合があります。
ジェスチャーおよび割り当てた中/サイドボタンは、入力開始位置のトップレベルウィンドウを PID とプロセス起動時刻を含む強い識別情報で捕捉します。対象が前面でなければ通常の SetForegroundWindow と短い確認を行い、確認できた場合だけショートカットを SendInput します。対象の再利用、消失、フォーカス喪失、UIPI 拒否などの検証失敗時は入力を送信しません。
通常アプリの CloseTab は、強い識別、通常アプリ分類、前面化、最終検証をすべて通過した場合だけ WM_CLOSE にフォールバックします。これは標準の閉じる要求なので、アプリ本来の保存確認を表示できます。ブラウザー、File Explorer、Notepad++ はそれぞれの Ctrl+W を使用し、フォールバック対象外です。