スクリプト名 :HkSaiSlider(Simple) 用途 :ナビゲータのスライダーをキー入力で操作する 動作環境 : / Win7x64 / SAI 1.1.0 / AutoHotKey Version 1.0.48.05 / Wacom Intuos2 Driver 6.1.2-4 ファイル名:HkSaiSlider.ahk 注意 :misc.ini TabletMouseSimulation = 1 にしないと、 カーソルがSAIウィンドウの上にある時誤動作する。 - ページ分離 -- testmen (2009-12-18 07:09:38) - 自分で使ってるのでシンプル版として更新 -- testmen (2009-12-23 04:20:19) コメントは1つ上の階層へどうぞ。 #highlight(lisp){{ ;////////////////////////////////////////////////////////// ; HkSaiSlider(Simple) ; 無保証・再配布・改変自由 ; ; 動作 AutoHotKey 1.0.48.05 ; 推奨 SAI 1.1.0 ; ; 使用法 ; ズームイン(変換) vk1Csc079 ; ズームアウト(無変換) vk1Dsc07B ; このソースの最下部にある、キー設定の部分を変更すれば ; お好みのキーに割り当てられます。 ; ; 注意 ; misc.ini TabletMouseSimulation = 1 にしないと、 ; カーソルがSAIウィンドウの上にある時誤動作する。 ; ; 2009-12-23 ; カイゼン活動 ;////////////////////////////////////////////////////////// #MaxThreads 1 #MaxThreadsPerHotkey 1 #HotkeyInterval 1000 ; This is the default value (milliseconds). #MaxHotkeysPerInterval 50 ; This is the default value. ;////////////////////////////////////////////////////////// ; 設定 /////////////////////////////////////////////////// ;////////////////////////////////////////////////////////// ; ; ナビゲータは独立ウィンドウか ; 設定: ; 0 ... メインウィンドウと統合 ; 1 ... 独立(SAI1.1.0~使用可) ; IsNavigatorIndependent = 1 ; 表示倍率 or 回転角度 ; 設定: ; 0 ... 表示倍率 ; 1 ... 回転角度 ; TargetSlider = 0 ; ;////////////////////////////////////////////////////////// ;設定ここまで //////////////////////////////////////////// ;////////////////////////////////////////////////////////// Target_Wintit=SAI if IsNavigatorIndependent=1 Target_Wintit=ナビゲータ if TargetSlider=0 { Target_Class=sfl_window_class3 if IsNavigatorIndependent=1 Target_Class=sfl_window_class2 Target_Text=表示倍率 } if TargetSlider=1 { Target_Class=sfl_window_class7 if IsNavigatorIndependent=1 Target_Class=sfl_window_class6 Target_Text=回転角度 } ;////////////////////////////////////////////////////////// ;スライダ位置の検出 ControlGetPos, x, y, w, h, %Target_Class%, %Target_Wintit%, %Target_Text% X:=x+(w/2) ;////////////////////////////////////////////////////////// SendMode Play return ;////////////////////////////////////////////////////////// ;メイン ; SliderX … スライダのX位置 ; SliderY … スライダのY位置 ; PLM … 加算の横方向 ; TClass … ターゲットのクラス ; TWintit … ターゲットのウィンドウタイトル ; Ttext … ターゲットのテキスト NavDrag(SliderX,SliderY,PLM,TClass,TWintit,Ttext) { ;押されたホットキーを保存 PushThishotkey=%A_Thishotkey% ;トラップ(ちょい待機してキー押してなかったらreturn) sleep, 25 if PLM = -1 { GetKeyState, stateZoomOut, %PushThishotkey%,P if stateZoomOut = U return } if PLM = +1 { GetKeyState, stateZoomIn, %PushThishotkey%, P if stateZoomIn = U return } ;入力禁止 BlockInput, MouseMove ;On nowX:=SliderX ;スライド操作初期位置 minADD:=PLM*0.5 ;増加単位 ;シフトDOWN Send {Shift Down} ;左ボタンDOWN clickLParam := nowX | (SliderY << 16) SendMessage, 0x201, 0x0001, ClickLParam ,%TClass%, %TWintit%, %Ttext% ;キーDOWN中の処理 Loop { ;座標加算 nowX := nowX + minADD ;スライド処理 moveLParam := nowX | (SliderY << 16) SendMessage, 0x200, 0x0001, moveLParam ,%TClass%, %TWintit%, %Ttext% ;脱出処理 if PLM = -1 { GetKeyState, stateZoomOut, %PushThishotkey%,P if stateZoomOut = U break } if PLM = +1 { GetKeyState, stateZoomIn, %PushThishotkey%, P if stateZoomIn = U break } } ;左ボタンUP outLParam := nowX | (SliderY << 16) SendMessage, 0x202, 0x0001, outLParam ,%TClass%, %TWintit%, %Ttext% ;シフトUP Send {Shift Up} ;入力禁止解除 BlockInput, MouseMoveOff return } ;////////////////////////////////////////////////////////// ;////////////////////////////////////////////////////////// ;////////////////////////////////////////////////////////// #IfWinActive, SAI - ahk_class sfl_window_class ;////////////////////////////////////////////////////////// ;ズームアウト(無変換) vk1Dsc07B vk1Dsc07B::NavDrag(X,Y,-1,Target_Class,Target_Wintit,Target_Text) ;ズームイン(変換) vk1Csc079 vk1Csc079::NavDrag(X,Y,+1,Target_Class,Target_Wintit,Target_Text) #IfWinActive ;Esc::exitapp ; テスト用 }}