blechmusikの日記

いろいろなことを書いています。

くるくるスクロールに水平スクロールの機能を盛り込んだ

本日公開した DvorakJ 最新版に、[Shift] を押し下げているときには水平スクロールをする機能を実装した。SoftTiltの詳細情報 : Vector ソフトを探す!と似た機能をDvorakJ に実装してほしいとの要望にこたえたものである。Microsoft Excel やメモ帳、EmEditor で動作することを確認した。ただ、Microsoft Word や Firefox ではうまく動作しない。
水平スクロールを実現する処理は以下の通りである。一つ目の例は左スクロールの処理で、二つ目の例は右スクロールの処理である。Microsoft Excel に対してのみ、通常の処理とは異なる処理をする(具体的には、水平スクロールをするショートカットキーを送信している)。

MouseGetPos, , , hwnd, cls, 1

if ( InStr(cls, "excel") )
{
    ;; Microsoft Excel に限り、ショートカットキーを送信する
    send,!{PgUp}
}
else
{
    ;; メモ帳など
    ;; Microsoft Word では動作しない
    PostMessage, 0x114 , 0, %hwnd%, %cls% ,ahk_id %hwnd% 
}
MouseGetPos, , , hwnd, cls, 1

if ( InStr(cls, "excel") )
{
    ;; Microsoft Excel に限り、ショートカットキーを送信する
    send,!{PgDn}
}
else
{
    ;; メモ帳など
    ;; Microsoft Word では動作しない
    PostMessage, 0x114 , 1, %hwnd%, %cls% ,ahk_id %hwnd% 
}

上記の方法では、水平スクロールを適切に実装したとは言えないだろう。速度を変更することすらできないからだ。以下のページの説明を踏まえて、いずれきちんと実装しよう。