« アプリ一覧に戻る

PPC Trackpad Scroll

PowerPC Mac (Tiger/Leopard) 向け ソース公開中

iBook / PowerBookなど、2本指スクロールに対応していないレガシーMac(PowerPC)のトラックパッド用に、 ⌘(Command)キーを押しながらトラックパッドを上下に動かすと、画面がスクロールするようにする常駐アプリです。 Dockアイコンは出ず、メニューバーに「TP」とだけ表示されます。

ppc-trackpad-scroll.zip をダウンロード
これまでのダウンロード数: 8
最終更新日: 2026-09-20(v0.5)
※ Tiger標準のSafari/curlは現代のHTTPS証明書を検証できないため、ここから直接ダウンロードできない場合があります。当サイトでは Aquafox(当サイトが日本語化パックを配布しているPowerPC向けブラウザ)をおすすめします。現代のHTTPSも普通に扱えます。難しい場合は、現代のMacで取得してからコピーするか、Tigerbrew/MacPorts経由の新しいcurlをご利用ください。

更新履歴

  • 2026-09-20 — 初版公開。⌘キーを押しながらトラックパッドを動かすと画面がスクロールするメニューバー常駐アプリ。Macのシステム言語設定に応じて日本語/英語表示が自動切り替え。PowerBook G4実機での検証を経て、DoubleCommandなど修飾キー入れ替えユーティリティ使用時に⌘フラグの検知が瞬間的に途切れる現象を吸収する猶予期間(0.8秒)を追加

動作要件

  • Mac OS X 10.4 Tiger / 10.5 Leopard、PowerPC
  • Universal Access(アクセシビリティ)が有効であること — 「システム環境設定 > Universal Access」の「補助装置にアクセスできるようにする」(無効な場合、初回起動時にアプリがダイアログで案内し、有効化後は自動的に再試行します)

インストール手順

  1. PPC Trackpad Scroll.app を好きな場所(アプリケーションフォルダなど)に置きます。
  2. ダブルクリックで起動すると、メニューバーに「TP」と表示されます。
  3. Universal Accessが無効な場合は、ダイアログの案内に従って有効化してください。

アプリはOS標準フレームワークのみに依存しているため、フォルダを移動しても問題なく動作します(zip単体で配布・実行可能です)。

使い方

  • ⌘キーを押しながらトラックパッドを上下に動かす → スクロール。
  • メニューバーの「TP」→「設定...」から、スクロール感度、スクロール方向の反転(デフォルトで反転=ナチュラル風が有効)、Universal Accessの状態確認ができます。

言語切り替えボタンはなく、Mac本体の使用言語設定(システム環境設定 > International / 言語環境)に応じて自動的に日本語/英語が切り替わります。それ以外の言語環境では英語表示になります。

Aquafox(TenFourFox系ブラウザ)をお使いの方へ

Aquafoxなど Gecko系ブラウザには、⌘+ホイール=ページ拡大縮小という独自の挙動があります。特に DoubleCommand等で右Enterキーなどを⌘キーに割り当てている場合、本来のスクロール操作が拡大縮小として認識されてしまうことがあります。改善するには、Aquafoxのアドレスバーにabout:configと入力し、mousewheel.with_meta.action (必要であればmousewheel.with_control.actionも)を0に変更してください。

既知の制限

  • PowerPC専用ビルドです(Intel Macでは動作しません)。
  • スクロール量は感度設定と実際のトラックパッドの移動量に依存するため、機種や個人の操作感に応じて調整が必要な場合があります。
  • トラックパッドと外付けマウスを区別していないため、外付けマウスを接続している環境でも⌘+マウス移動でスクロールに変換されます(トラックパッドを持たないデスクトップ機で意図せず発動する場合があります)。
  • DoubleCommandなど、別のキーに⌘を割り当てるキー入れ替えユーティリティを使っている場合、本物の⌘キーに比べて反応がやや滑らかでないことがあります。対策は入れていますが、完全ではありません。
  • 動作確認はiBook G4 / PowerBook G4、Mac OS X 10.4.11で行っています。

個人の趣味プロジェクトにつき無保証です。MITライセンス。詳しいソースコードやライセンスは上記のGitHubリポジトリをご覧ください。

CGEventTapCreateでシステム全体のkCGEventFlagsChanged / kCGEventMouseMoved を監視しています。⌘キーが押されている間のkCGEventMouseMovedのみを検知し、カーソル移動をキャンセルしてスクロールイベントに変換して送出します。監視対象は「ボタンを押していない移動」のみのため、クリックドラッグやタップロックドラッグ(⌘+ファイルのドラッグ移動など)とは別のイベント種別として扱われ、競合しません。送出するスクロールイベントは修飾キーフラグを明示的に取り除いているため、⌘+スクロール=拡大縮小という一般的な規約とも衝突しません(上記Aquafoxの注意点を除く)。

ハマった点

イベントタップのコールバック内から直接スクロールイベントを送出すると、実機がハングすることがある。 最初のバージョンでは、コールバック内で毎回CGEventCreate/CGEventPostを同期的に呼んでいました。実機でトラックパッドを高速に動かすとこのコールバックが非常に高頻度で呼ばれ、WindowServerとのやり取りが詰まって古いPowerPC実機ではシステム全体がハングしました。対策として、コールバック側はスクロール量を蓄積するだけに留め、実際のCGEventPost送出は50Hz(0.02秒間隔)のタイマーでまとめて行うように変更し、タップのコールバックを可能な限り軽く保つようにしました。
DoubleCommandなどの修飾キー入れ替えユーティリティでは、⌘フラグが瞬間的に途切れる。 PowerBook G4 + DoubleCommand(右Enterキーを⌘キーとして扱う設定)での実機検証で、⌘フラグの検知が数百ミリ秒〜数秒単位で断続的に途切れることが判明しました。OS側のキーリピート速度を最速にしても改善しなかったため、DoubleCommand kext内部の固有タイミングに起因すると見られます。⌘フラグが1回でも外れるとその場でジェスチャーを打ち切る作りだったため、「粘り強く動かさないと反応しない」体感になっていました。直近で⌘が押されていたことを覚えておき、その間のフラグ欠落を無視してジェスチャーを継続する猶予期間を追加。この猶予は120ms→0.8秒→一時1.0秒と実機検証を重ね、Tiger/Leopardには背面ウィンドウのスクロール機能が無く、本物の⌘キーリリース時のカーソル操作復帰が多少遅れても違和感が少ないことから、最終的に0.8秒に落ち着きました。
クランプ処理がスクロール量を静かに消していた。 高感度設定+高速フリック時、クランプ前の丸め値をそのまま蓄積変数から差し引いていたため、大きな動きの一部が実際には送出されずに消えていました。実際に送出した(クランプ後の)値を差し引くように修正しています。

ソースコードはGitHubにあります。

このアプリへのひとこと

評価(任意)