Java: Mac OS X での MouseWheelEvent

これまでのあらすじ。id:argius さんの Calendar アプレットMac で動かしてみた id:sardine。結果を日記に書いて一息ついていると、

id:argius「貴様の動きなど見切っておるわ!! くらえ、新バージョン http://argius.net/java/newcalendar.html !!」
id:sardine「ぐわーっ」

慌てて試し、先日の日記に結果を書く。これで戦いは終わったのだ、そう id:sardine が思った時……

id:argius「愚か者め、新バージョンはマウスのホイールに対応しているのだ!!」
id:sardine「のわーっ」

実際にやってみた

というわけで、今回は新バージョンの方のカレンダーでマウスホイールを使ってみることにしました。
ただし、実際にはマウスじゃなくて「マルチタッチ対応のタッチパッド」なので、「パッドに指を 2 本置いてずらす」という操作になります。
マルチタッチ環境での操作については、下記のページからムービーが見られます。

アップル - MacBook Pro - 特徴
http://www.apple.com/jp/macbookpro/features.html

で、肝心の Calendar での動作ですが、アプレット版ではやっても何もおきませんでした。次に JNLP 版で試したところ、以下のような動作でした。

マウスホイールを上に回転させる (パッドに指を 2 本置いて上にずらす)
表示が前の月に切り替わる。
マウスホイールを下に回転させる (パッドに指を 2 本置いて下にずらす)
表示が下の月に切り替わる。

おー、これは便利。たぶん実装通りに動いていると思います。

あ、そうだ。そういえば id:argius さんのコメントには、「Ctrl+Wheelも」と書いてありました。実際にやってみると……え、あれ? 画面全体が拡大されましたよ!?

はい、確かに、Mac で Ctrl+Wheel を使うと、画面が拡大されます

今回初めて気づいたのですが、Mac OS X のデフォルト設定では、Ctrl+Wheel Up がズームイン、Ctrl+Wheel Down がズームアウトになっているようです。Windows で言うところの「拡大鏡」に相当する役割ですが、「拡大鏡」と違って、Ctrl+Wheel での操作が最初から有効になっています (前述した Apple のサイトでもその様子が紹介されています)。
したがって、Ctrl+Wheel を使いたい場合は、修飾キーを Ctrl 以外に変更するか、ズームイン/ズームアウト自体を無効にする必要があります。
今回は、修飾キーを cmd に変更してみることにしました。「システム環境設定」から「キーボードとマウス」を開き、「トラックパッド」のとこを見ます。

ちなみにこの画面、右半分は静止画じゃなくてムービーです。まぁそれはおいといて、「画面の拡大縮小」の横の「オプション」ボタンを選択すると、

こんなのが出てきました。ここで「ズームの使用キー」を Option キーまたは cmd キーに変更することができます。
今回は cmd に変更して、もう一回 Calendar で Ctrl+Wheel を試してみると……

Ctrl キーを押しながら、マウスホイールを上に回転させる (Ctrl キーを押しながら、パッドに指を 2 本置いて上にずらす)
表示が前年の同月に切り替わる。
Ctrl キーを押しながら、マウスホイールを下に回転させる (Ctrl キーを押しながら、パッドに指を 2 本置いて下にずらす)
表示が翌年の同月に切り替わる。

という動作になりました。たぶんこれであってると思うんですが、どうでしょう。

へぇーへぇーへぇー

というわけで、Windows では当たり前に使える Ctrl+Wheel が、Mac では別の操作に割り当てられていることがわかりました。当たり前といえば当たり前ですが、やってみるまでわかりませんよねこれは。
もっとも、こういう場合についての対策として、例えば「機能の呼び出し方を複数用意する」というようなものがすでに知られていて、今回の Calendar でも、ホイールと同等の操作はウィンドウ下部のボタンをクリックすることでもできるようになっているので、Mac で使っても困らないわけですね。