Windows 7 のマウスカーソルを Cannon Smash みたいに操作できる方法があれば教えてください。 キャノンスマッシュという卓球ゲームでは、キーボードの盤面を画面に見立て.. - 人力検索はてなの一回答を書いてみた。質問者の要望通り、[無変換] + [文字]でマウス・カーソルの位置を移動するよう設定した。関数 MoveMouse の引数にマウスの行き先を記述する。具体的には、「左上」のように、水平の移動先と垂直移動先を順に指定するだけでよい。マルチモニターにも対応している。詳しくはソースを参照のこと。
Windows 7 はもちろんのこと、Windows XP と Windows Vista でも動作するはずだ。
ソース
;;; http://q.hatena.ne.jp/1280844030 ;;; Windows 7 のマウスカーソルを Cannon Smash みたいに操作できる方法があれば教えてください。 ;;; キャノンスマッシュという卓球ゲームでは、キーボードの盤面を画面に見立てて、そのあたりの位置にあるキーを押します。例えば Q なら左上、L なら右といった感じです。 ;;; Windows で、例えば「無変換」を押しながらそういったキーを押せば大まかにマウスポインタが動くようにできますか。細かい操作はできなくても大丈夫です。 ;;; exe じゃなくて AutoHotkey なら、さらに良いです。 #NoEnv #SingleInstance, Force ;;; CoordMode - AutoHotkeyJp ;;; http://sites.google.com/site/autohotkeyjp/reference/commands/CoordMode CoordMode, Mouse, Screen ;;; ゆとりを設定 margin = 50 ;;; マルチモニタの環境で特定のモニター内を移動するときは、 ;;; ("左上", 2) のように、モニターの番号を指定すること ;;; モニターの番号を指定しないときは、仮装スクリーンを含めたスクリーン全体を移動する vk1Dsc07B & sc010::MoveMousePointer("左上") ; [無変換] + [Q] vk1Dsc07B & sc01E::MoveMousePointer("左中") ; [無変換] + [A] vk1Dsc07B & sc02C::MoveMousePointer("左下") ; [無変換] + [Z] vk1Dsc07B & sc018::MoveMousePointer("右上") ; [無変換] + [O] vk1Dsc07B & sc026::MoveMousePointer("右中") ; [無変換] + [L] vk1Dsc07B & sc034::MoveMousePointer("右下") ; [無変換] + [.] return ;;; MouseMove - AutoHotkeyJp ;;; http://sites.google.com/site/autohotkeyjp/reference/commands/MouseMove MoveMousePointer(pos="中中", monitorNo=0) { StringSplit, pos, pos x := GetDestination("x", pos1, monitorNo) y := GetDestination("y", pos2, monitorNo) MouseMove, %x%, %y%, 2 return } GetDestination(coordinate, str, monitorNo) { global margin if (monitorNo = 0) { ;; 組み込み変数 - AutoHotkeyJp ;; http://sites.google.com/site/autohotkeyjp/reference/Variables SysGet, VirtualWidth, 78 SysGet, VirtualHeight, 79 mX := 0 mY := 0 mW := VirtualWidth mH := VirtualHeight } else { ;; neue cc - AutoHotKeyによるマウスカスタマイズとマルチディスプレイのためのスクリプト ;; http://neue.cc/2009/11/17_219.html SysGet, m, MonitorWorkArea, %monitorNo% mX := mLeft mY := mTop mW := mRight - mLeft mH := mBottom - mTop } if (margin = "") margin := 0 mX += margin mY += margin mW -= margin mH -= margin if (str = "中") { return % (coordinate = "x") ? mW // 2 : mH // 2 } else { return % (str = "上") ? mY : (str = "下") ? mH : (str = "左") ? mX : mW } }