waklin写了个工具可以让键盘模拟鼠标,可惜在我的机器上(win7+dosbox0.74+gb4)冲突。
自己摸索了一下,发现用Autohotkey就可以比较完美的解放鼠标左右键,还可以做的更加灵活,甚至可以考虑用来实现脚本控制站位。
先简单的介绍一下Autohotkey。这是一个实现热键鼠标命令的软件,简单的说,类似于按键精灵,但是功能强大,且开源,免费,同时其社区维护的不错。
用法很简单,下载安装AutoHotkey,运行附件中的.ahk结尾的脚本就好了。
另外,如果不想装Autohotkey软件的话,还可以用通过这个脚本直接编译成的可执行文件,附件中的exe文件就是,不过要像下面这样在命令行里面传入两个参数:
yjz.exe "C:\Program Files\DOSBox-0.74\DOSBox.exe" D:\Downloads\Game\sgzyjz\yjz.bat
贴一下这个脚本,基本上含义一目了然。其中我把鼠标左右键重定向到了鼠标中间转轮的向上和向下以及1和2键,感觉还不错,当然大家可以按照自己的偏好自行修改。
;AutoHotkey脚本, for 三国志英杰传
;by elale, 2011-03-09
;设置一下AutoHotkey的参数
SetMouseDelay, 50
SetTitleMatchMode 1
CoordMode Mouse, Screen
SendMode event ; Recommended for new scripts due to its superior speed and reliability.
;启动英杰传,根据自己的路径做相应的修改(dosbox和英杰传启动命令路径)
;如果要用GB4,记得加入到英杰传启动的批处理命令中
Run, "C:\Program Files\DOSBox-0.74\DOSBox.exe" D:\Downloads\Game\sgzyjz\yjz.bat -noconsole
;或者传入两个参数(dosbox和英杰传启动命令路径)
;Run, %1% %2% -noconsole
;等DOSBox启动之后自动发送一个回车键以便跳过开始的密码界面
WinWait, DOSBox
Sleep, 2000
send {Enter}
;或者去掉下面这条前面的注释符号“;”实现直接全屏
;send !{Enter}
; 这两句是实现DOSBox窗口退出后自动退出AutoHotKey监控程序
WinWaitClose
ExitApp
;让热键只对DosBox起作用
#IfWinActive DOSBox
;下面的语句是热键命令,两个冒号(::)之前的是按键,后面的是动作
;把鼠标的左右键用转轮的向上(WheelUp)和向下(WheelDown)来取代
WheelUp:: Click
WheelDown:: Click right
;或者用键盘来实现鼠标左右键或者一些组合命令
;用键盘上的1来代替鼠标左键
1::
Click
Sleep, 150
return
;用2来代替鼠标右键
2::
Click right
Sleep, 150
return
;用3来实现鼠标相对位置移动
;鼠标在当前位置上向右移动120个像素
;向下90移动90
3::
MouseMove, 120, 90, 1, R
Sleep, 150
return
;用4来实现鼠标绝对位置移动
;但是似乎工作的不太正确,有待继续研究
4::
MouseMove, 480, 480, 10
Sleep, 150
return
;用5来实现GB4的自动存盘
5::
send {LCtrl}
send {LCtrl}
send {Enter}
Sleep, 300
send s
Sleep, 30
send t01
send {Enter} {ESC} {ESC}
Sleep, 150
return
;用6来实现GB4的自动调盘
6::
send {LCtrl}
send {LCtrl}
send {Enter}
Sleep, 300
send l
Sleep, 30
send t01
send {Enter} {ESC} {ESC}
Sleep, 150
return
;用7来实现原地休息的组合命令
7::
Click 2
Sleep, 10
MouseMove, 90, 130, 1, R
Sleep, 10
Click
MouseMove, 0, 20, 1, R
Sleep, 10
Click
MouseMove, 0, 20, 1, R
Sleep, 10
Click
MouseMove, -180, 0, 1, R
Sleep, 10
Click
MouseMove, 0, -20, 1, R
Sleep, 10
Click
MouseMove, 0, -20, 1, R
Sleep, 10
Click
MouseMove, 90, -130, 1, R
Sleep, 10
return
[ 本帖最后由 elale 于 2011-3-11 16:31 编辑 ]