PowerPC MacからApple Siliconまで、クラシックなMac体験を届けるアプリを配布しています。なぜまだ使えるMacを捨てるのか。究極のエコは使い続けること。
iBook / PowerBookなど、2本指スクロールに対応していないレガシーMac(PowerPC)のトラックパッド用に、 ⌘(Command)キーを押しながらトラックパッドを上下に動かすと、画面がスクロールするようにする常駐アプリです。 Dockアイコンは出ず、メニューバーに「TP」とだけ表示されます。
PPC Trackpad Scroll.app を好きな場所(アプリケーションフォルダなど)に置きます。アプリはOS標準フレームワークのみに依存しているため、フォルダを移動しても問題なく動作します(zip単体で配布・実行可能です)。
言語切り替えボタンはなく、Mac本体の使用言語設定(システム環境設定 > International / 言語環境)に応じて自動的に日本語/英語が切り替わります。それ以外の言語環境では英語表示になります。
Aquafoxなど Gecko系ブラウザには、⌘+ホイール=ページ拡大縮小という独自の挙動があります。特に
DoubleCommand等で右Enterキーなどを⌘キーに割り当てている場合、本来のスクロール操作が拡大縮小として認識されてしまうことがあります。改善するには、Aquafoxのアドレスバーにabout:configと入力し、mousewheel.with_meta.action
(必要であればmousewheel.with_control.actionも)を0に変更してください。
個人の趣味プロジェクトにつき無保証です。MITライセンス。詳しいソースコードやライセンスは上記のGitHubリポジトリをご覧ください。
CGEventTapCreateでシステム全体のkCGEventFlagsChanged / kCGEventMouseMoved
を監視しています。⌘キーが押されている間のkCGEventMouseMovedのみを検知し、カーソル移動をキャンセルしてスクロールイベントに変換して送出します。監視対象は「ボタンを押していない移動」のみのため、クリックドラッグやタップロックドラッグ(⌘+ファイルのドラッグ移動など)とは別のイベント種別として扱われ、競合しません。送出するスクロールイベントは修飾キーフラグを明示的に取り除いているため、⌘+スクロール=拡大縮小という一般的な規約とも衝突しません(上記Aquafoxの注意点を除く)。
CGEventCreate/CGEventPostを同期的に呼んでいました。実機でトラックパッドを高速に動かすとこのコールバックが非常に高頻度で呼ばれ、WindowServerとのやり取りが詰まって古いPowerPC実機ではシステム全体がハングしました。対策として、コールバック側はスクロール量を蓄積するだけに留め、実際のCGEventPost送出は50Hz(0.02秒間隔)のタイマーでまとめて行うように変更し、タップのコールバックを可能な限り軽く保つようにしました。
ソースコードはGitHubにあります。
不具合報告・要望は、非公開で開発者に直接届きます。個人プロジェクトのため、返信できないことがあります。