本文へスキップ
MouseTuner
メニュー

サードパーティ製マウスも、macOS で同じように快適に

macOS がサードパーティ製マウスに用意していない部分を埋める、ネイティブな macOS アプリです。

  • スムーススクロール
  • Button Mapping
  • ハードウェア制御
  • 押して話す音声入力
  • 入力ソース切り替え
macOS 版をダウンロード

macOS 13.3 以降。Apple Silicon と Intel に対応しています。 リリースノート

MouseTuner — スクロール

ホイールイベント、そのまま

1 ノッチで 1 回跳ぶだけ、間のフレームはありません

標準の Scroll Curve を通した場合

下で設定したカーブに沿って展開されます

1 フレームあたりの移動量

パネルの上にポインタを置いて、ホイールを回してみてください。

2 つのパネルは同じホイールイベントを受け取っています。左はシステムから渡されたまま適用し、右は Scroll Curve に通します。App に入っているのと同じコードです。スライダーを動かすとカーブが変わります。

できることは 3 つです

  1. スムーススクロール

    マウスが送ってくる離散的なスクロールイベントを、合成したピクセル単位の慣性スクロールに置き換えます。Scroll Curve(最小ステップ、速度ゲイン、継続時間、減衰)はプレビューを見ながら視覚的に編集でき、アプリごとに上書きできます。

    ホイールイベント、そのまま

    56 px

    1 ノッチで 1 回跳ぶだけ、間のフレームはありません

    標準の Scroll Curve を通した場合

    56 px · 320 ms

    距離の大半は最初の数フレームに乗る

  2. Button Mapping

    1 つのボタンに Trigger が並び、それぞれの Trigger がちょうど 1 つの Action を指します。図ではクリックがキーボードショートカット、長押しが修飾キーの保持です。Trigger は 4 方向のドラッグ、Chord、Hold + Scroll まで、Action は AppleScript やシェルコマンドまであります。どちらもアプリごとに上書きできます。

    Wheel Mode Button

    Click

    Keyboard shortcut
    fnSpace

    Long press

    Hold modifier
    fn

    Held only while the mouse button is down.

  3. DPI、SmartShift、バッテリー残量

    MouseTuner が認識できるマウスなら、これらを HID++ で直接読み書きします。ロジクール自社のソフトと同じプロトコルですが、ロジクールのソフトを常駐させる必要も、アカウントもいりません。それ以外のマウスでも、スムーススクロールと Button Mapping はそのまま使えます。

    MX Master 3S Bluetooth

    DPI1000
    SmartShiftRatchet
    Auto-disengage threshold10

    Only used while SmartShift follows the device.

    Battery85%
    Buttons7 buttons

サイドボタンを押したまま話して、離す

Modifier Hold は、始まりと終わりがある唯一の Action です。これを Fn に割り当てれば、押している間だけ録音する音声入力ツールを親指で開始・停止できます。

メモ — 今週の共有

今週リリースするもの:

ホイールモードボタンをクリックすると話し始めます。押したままにしても構いません。fn up · 0.00 s

  1. サイドボタンの長押しを Hold modifier → Fn に割り当てます。
  2. ボタンを押したまま話します。押している時間だけ、ツールが録音します。
  3. 離します。修飾キーが解放され、そのボタンは何もしない状態に戻ります。

押しっぱなしのキーを見ているツールなら何とでも組み合わせられます。Typeless、Wispr Flow、superwhisper、macOS の音声入力など。

修飾キーが押されたまま固まるのは、このアプリが起こしうる最悪の事態です。そのため「ボタン」パネルには常に「押されている修飾キーを解放」ボタンがあり、エンジン側もアプリの切り替え時、権限を失った時、イベントの送出に失敗した時に自動で解放します。

手で切り替えるものが 1 つ減ります

ルールは最前面のアプリ、またはいま開いているブラウザタブのドメインで入力ソースを選びます。マッチは厳密なホスト名から親ドメインへとフォールバックし、www. は無視します。ブラウザの URL を読むにはアクセシビリティが必要ですが、アプリで切り替えるだけなら不要です。

最前面
  1. Domain Rule — いま見ているタブ

    gist.github.com → no rule → github.com → ABC

  2. App Rule — 最前面のアプリケーション

    not reached

  3. 全体のデフォルト — それ以外すべて

    not reached

最前面のアプリやタブを切り替えてみてください。最初にマッチした層が入力ソースを決め、その下の層は一度も参照されません。

どこが違うか

ネイティブな Swift アプリ

MouseTuner はサンドボックス化されていません。そもそも生の HID 入力を読み、グローバルなイベントを横取りできるのはそのためです。同時にそれは Mac App Store で配布できないということでもあり、Developer ID 署名と公証を付けた形と、Homebrew Cask で配布しています。

自分で確かめられるネットワークリクエストの一覧

アプリが出す外向きの通信は、きっかけ・宛先・送信内容までプライバシーページに書いてあります。オフにできない 2 本も含めてです。この一覧は、まるごとパケットキャプチャと突き合わせて確かめられます。

リクエストの一覧を読む

ハードウェア制御は込みです

HID++ のデバイス制御(DPI、SmartShift、バッテリー)は最初から入っています。アプリのバージョンは 1 つだけで、上位プラン向けに取っておいた機能はありません。

割り当てのないボタンは、MouseTuner を入れていない時と同じように動きます

これがデフォルトです。割り当てのないもの、Profile のないデバイス、権限のない機能は、アプリを入れていない状態とまったく同じ挙動になり、その理由は画面上で説明します。

どれでも押してみてください。6 つのうち 5 つはここでは何も起きません。

ホイールモードボタン

0x00C4 → Hold modifier · fn

このマウスで唯一割り当てのあるボタンです。押している間だけ Fn が押されたままになります。

$9.9 を一度だけ、3 台まで

アカウントもカードも要らない 30 日間、全機能を試せます。そのあとは買い切りです。14 日以内なら理由を聞かずに返金します。

含まれるものを見る

よくある質問

自分のマウスでも動きますか?

スムーススクロールと Button Mapping はどのマウスでも動きます。デバイスではなくシステムの入力イベントに対して働くからです。追加の HID++ 制御には Device Profile が必要で、こちらは実機で採取している最中です。

トラックパッドはどうなりますか?

何もしません。スムーススクロールはホイール付きマウスだけが対象です。トラックパッドと Magic Mouse は元からピクセル単位のイベントを送っているので、そのまま通します。

なぜ Mac App Store にないのですか?

生の HID アクセスもグローバルなイベントの横取りも App Sandbox では使えず、App Store はそのサンドボックスを必須にしています。そのため Developer ID 署名と公証を付けた形で配布し、Homebrew Cask を用意し、アップデートは Sparkle で配信しています。

トライアルが終わるとどうなりますか?

拡張機能(Scroll Curve のカスタマイズ、Button Mapping、HID++ デバイス制御)がオフになります。アプリ自体は OS 標準の挙動のまま動き続けます。何かが壊れるのではなく、OS がすでにやっていること以上のことをしなくなるだけです。

アカウントなしで 30 日間試せます

全機能を、登録もクレジットカードもなしで。合わなければ、購入から 14 日以内は理由を聞かずに返金します。

MouseTuner をダウンロード