可编写式脚本-KeymouseGo

原作者信息

工具网址:http://taojy123.github.io/KeymouseGo/

工具原作者:陶佳元

下载地址:GitHub

由于软件过大,博主服务器带宽很低,看官最好还是去github下载。

软件介绍

本文只介绍KeymouseGo作为脚本软件如何使用(以下简称KMG),软件用到的技术、相关的gui界面等,各位看官可以浏览原项目地址以更深层次的探讨。

软件特点

相比于TinyTask,我认为KMG最大的特点就是录制文件可编辑,界面更专业。

相信你在用了TT以后,最大的烦恼就是,一个录制场景,中间一个小小的错误,你就必须推倒重来。手残党想剁手。

又或者想让鼠标拥有精确坐标和精准时间的点击,而不是呆呆的重复动作。

千呼万唤始出来,那么KeymouseGo,它来了。

界面介绍

图片失效,请更新!
KMG界面示例

KMG界面被分成了三个区域,左上部分是软件的配置区域,在首次运行时会在运行目录生成配置文件config.ini,如下图:

图片失效,请更新!
config.ini

记录一些KMG的基础信息,包括热键按键、循环次数、记录精度、运行速度、软件语言等。

KMG界面右上部分是热键、语言和插件设置区域,可以编辑相应的热键和语言并且选择插件。

下面是KMG的运行日志,在运行时会显示KMG的当前运行状态,当前/总循环次数以及当前运行的动作(建议加入置顶功能,状态栏在运行时很容易就沉下去…)。

KMG状态栏
KMG运行状态栏

配置参数

KMG配置参数可设置的有:脚本、执行次数、鼠标精度、执行速度、主题。

我们来一一介绍:

脚本:

在点击开始后,KMG会自动生成录制文件,命名规则为:“MMDD_HHSS.txt”,在点击结束录制后,录制文件会自动保存并加载到当前界面。脚本参数右边的倒三角可以选择历史脚本文件,或者点击右边的三个点选择文件,手动选择录制文件。

执行次数:

执行次数是脚本中的循环概念,可选择循环次数(int),选择非负数(0-99999),输入或点选都可以,如果输入0则为无限循环。

鼠标精度:

鼠标精度是可编辑脚本引入的重要概念,它以牺牲记录精度的代价换来了记录文件的简化。在KMG中,记录精度数字越大,记录文件越简单,记录的鼠标轨迹就简单(直观上的感觉就是播放时越“卡”)。当记录精度变大时,小的鼠标移动不会被记录,当鼠标精度变小时,最小为1,轻微的鼠标移动都会被记录。

鼠标精度范围:1-1000,和记录精度成反比,这个数字越大,鼠标重播越“卡”,记录文件越简单。

这个参数大大简化了记录文件,使得很多不必要的鼠标移动不会被记录下来,简化了记录文件,是脚本升级的一次重大引入。

运行速度:

运行速度的单位是%,即都是百分数。当正常速度运行时,参数为100。输入200时即为2倍速运行。

但请注意,这里的运行速度,是指脚本文件在执行时的播放速度,不会影响其他软件的运行速度,在使用脚本软件与其他软件交互时,不合理的速度会导致运行失败。

主题:

KMG预设了许多配色的主题来让使用者切换,主题命名方式为:背景颜色+参数变量颜色。大家可以尝试切换,来选择自己喜欢的配色方案。

脚本语法

官方教程

KMG的其他设置都是脚本软件常用的设置,例如,热键、语言等,KMG相对于TinyTask升级了可编写的记录文件,这也是脚本2.0(博主自己划分的)最重要的升级点。

使用者可以录制/修改或手动编写脚本文件而不会一步错就重来,或者可以精准的操控鼠标和键盘,使得整个过程可以量化和可控。

下面是KMG的语法介绍:

官方语法解释(原作者演示屏幕分辨率为1920 * 1080):

[
// 开始运行 `3000ms` 后,在屏幕相对坐标 `(0.05208, 0.1852)`即 `(100,200)` 处 `按下鼠标右键`;
 [3000, "EM", "mouse right down", ["0.05208%", "0.1852%"]],  

// 等待 `50ms` 后在相同位置 `抬起鼠标右键`;
 [50,   "EM", "mouse right up", ["0.05208%", "0.1852%"]],    

// 等待 `1000ms` 后 `按下f键`;
 [1000,"EK","key down",[70, "F", 0]],   

// 等待 `50ms` 后 `抬起f键`;                              
 [50,   "EK", "key up", [70, "F", 0]], 

// 等待 `100ms` 后,在屏幕相对坐标 `(0.2604, 0.4630)`即 `(500, 500)` 处 `按下鼠标左键`; 
 [100,  "EM", "mouse left down",  ["0.2604%", "0.4630%"]], 

// 等待 `100ms` 后,鼠标移动至相对坐标 `(0.2604, 0.5556)`即 `(500, 600)` 位置;     
 [100,  "EM", "mouse move",["0.2604%", "0.5556%"]],  

// 等待 `100ms` 后,在屏幕相对坐标 `(0.3125, 0.5556)`即 `(600, 600)` 处 `抬起鼠标左键`;     
 [100,  "EM", "mouse left up",["0.3125%", "0.5556%"]], 

// 等待 `100ms` 后,在当前位置输入 `你好 world` 文字。                  
 [100,  "EX", "input","你好 world"]   //官网源代码处有一个",",博主认为是多余的,故删除                                  
]

KMG的语法非常简单,经过简单的练习就可以满足日常脚本的编写,KMG的语法规则如下(来源KMG官网):

高情商:原作者教程非常清晰,易懂。博主不赞一词!

低情商:copy。

为方便各位看官编写脚本快捷,以下语法说明中所有加黑加下划线的文字都可点击复制

在编写脚本时不必记住相应的语言,在本文中对照即可:

  • 每行的第 1 个元素表示时间间隔,指的是本次动作与上一次动作之间相隔的时间,单位为毫秒。
  • 每行的第 2 个元素表示鼠标动作或是键盘动作:

    EM

    为鼠标,

    EK

    为键盘,

    EX

    为其他拓展动作。
  • 每行的第 3 个元素表示动作的类型:
    • mouse left down

      为鼠标左键按下,

      mouse left up

      为鼠标左键抬起,
    • mouse right down

      为鼠标右键按下,

      mouse right up

      为鼠标右键抬起,
    • mouse middle down

      为鼠标中键按下,

      mouse middle up

      为鼠标中键抬起,
    • mouse wheel up

      为鼠标滚轮上滑,

      mouse wheel down

      为鼠标滚轮下滑,
    • key down

      为键盘按键按下,

      key up

      为键盘按键抬起,
    • mouse move

      为鼠标滑过,

      input

      输入文字。
  • 每行的第 4 个元素表示具体的动作参数:
    • 当为鼠标动作时,由两个子元素构成,分别为鼠标所在的屏幕位置的横纵坐标,
    • 当为键盘动作时,由三个子元素构成,分别是(按键编号, 按键名, 拓展标记),
    • 当为输入文字动作时,为要输入的文字内容。
  • 每行 // 后的部分为注释内容。(在脚本文件中注释也加//)
  • 修改时请严格遵守格式,否则可能导致脚本无法运行,建议修改前先备份一下。
  • 横纵坐标为[-1, -1]时,表示在鼠标当前所在位置执行操作。

语句速查

鼠标动作EM

博主预设了几种常见的语法指令,大家在编写脚本时可以直接来这里复制(注意替换相应参数):

鼠标在“100ms”后在坐标“X,Y”按下“左键”:

[100,"EM","mouse left down",[X,Y]],

鼠标在“100ms”后在坐标“X,Y”抬起“左键”:

[100,"EM","mouse left up",[X,Y]],

(注意,在KMG中所有按键的按下和抬起都被拆解成了两个动作,即“down”和“up”)

鼠标在(100ms)后移动到“X,Y”,在使用录制功能时,鼠标精度参数设置越大,脚本文件中这个语法就越少(相应记录变少)。

如果只是一个点击和键盘动作的脚本,甚至可以删除所有移动语句。

[100,"EM","mouse move",[X,Y]],

鼠标在(100ms)后在坐标点“X,Y”滚轮“上”滚一个单位。

和鼠标在(100ms)后在坐标点“X,Y”滚轮“下”滚一个单位。

[100,"EM","mouse wheel up",[X,Y]],
[100,"EM","mouse wheel down",[X,Y]],

键盘动作EK

键盘动作的基本语法是已在上文介绍,KMG采用的键码表是Virtual-Key Codes(VK码),在编写时参数”[按键编号,按键名,拓展标记]”中仅有“按键编号”有实际意义,按键名只用作状态栏显示,可自行编辑。

常用VK码对照表如下:VK码对照表下载地址

为方便各位看官编写脚本快捷,以下语法说明中所有加黑加下划线的文字都可点击复制

在编写脚本时不必记住相应的语言,在本文中对照即可:

键码按键键盘参数复制
8Back回退

[8,”Back”,0]

9TabTab

[9,”Tab”,0]

12Clear

[12,”Clear”,0]

13Return

[13,”Return”,0]

20Capital

[20,”Capital”,0]

27Escape

[27,”Escape”,0]

32Space空格

[32,”Space”,0]

33Prior

[33,”Prior”,0]

34Next

[34,”Next”,0]

35End

[35,”End”,0]

36Home

[36,”Home”,0]

37Left

[37,”Left”,0]

38Up

[38,”Up”,0]

39Right

[39,”Right”,0]

40Down

[40,”Down”,0]

45Insert

[45,”Insert”,0]

46Delete删除

[46,”Delete”,0]

480小键盘0

[48,”0″,0]

491小键盘1

[49,”1″,0]

502小键盘2

[50,”2″,0]

513小键盘3

[51,”3″,0]

524小键盘4

[52,”4″,0]

535小键盘5

[53,”5″,0]

546小键盘6

[54,”6″,0]

557小键盘7

[55,”7″,0]

568小键盘8

[56,”8″,0]

579小键盘9

[57,”9″,0]

65A

[65,”A”,0]

66B

[66,”B”,0]

67C

[67,”C”,0]

68D

[68,”D”,0]

69E

[69,”E”,0]

70F

[70,”F”,0]

71G

[71,”G”,0]

72H

[72,”H”,0]

73I

[73,”I”,0]

74J

[74,”J”,0]

75K

[75,”K”,0]

76L

[76,”L”,0]

77M

[77,”M”,0]

78N

[78,”N”,0]

79O

[79,”O”,0]

80P

[80,”P”,0]

81Q

[81,”Q”,0]

82R

[82,”R”,0]

83S

[83,”S”,0]

84T

[84,”T”,0]

85U

[85,”U”,0]

86V

[86,”V”,0]

87W

[87,”W”,0]

88X

[88,”X”,0]

89Y

[89,”Y”,0]

90Z

[90,”Z”,0]

91Lwin

[91,”Lwin”,0]

93Apps

[93,”Apps”,0]

96Numpad0数字键0

[96,”Numpad0″,0]

97Numpad1数字键1

[97,”Numpad1″,0]

98Numpad2数字键2

[98,”Numpad2″,0]

99Numpad3数字键3

[99,”Numpad3″,0]

100Numpad4数字键4

[100,”Numpad4″,0]

101Numpad5数字键5

[101,”Numpad5″,0]

102Numpad6数字键6

[102,”Numpad6″,0]

103Numpad7数字键7

[103,”Numpad7″,0]

105Numpad9数字键9

[105,”Numpad9″,0]

106Multiply

[106,”Multiply”,0]

107Add

[107,”Add”,0]

109Subtract

[109,”Subtract”,0]

110Decimal

[110,”Decimal”,0]

111Divide

[111,”Divide”,0]

144Numlock数字锁定键

[144,”Numlock”,0]

160Lshift左shift

[160,”Lshift”,0]

161Rshift右shift

[161,”Rshift”,0]

162Lcontrol左Ctrl

[162,”Lcontrol”,0]

163Rcontrol右Ctrl

[163,”Rcontrol”,0]

164Lmenu左菜单

[164,”Lmenu”,0]

165Rmenu右菜单

[165,”Rmenu”,0]

186;:

[186,”;:”,0]

187=+

[187,”=+”,0]

188,<

[188,”,<",0]

189-_

[189,”-_”,0]

190.>

[191,”/?”,0]

192`~

[192,”`~”,0]

219[{

[219,”[{“,0]

220\|

[220,”\|”,0]

221]}

[221,”}”,0]

按照上面的按键码,我们可以方便的编写KMG的脚本,例如,100ms后按下键盘M健,50ms后弹起:

 [100,"EK","key down",[77,"M",0]],
 [50,"EK","key up",[77,"M",0]]

实测,按键编号后面的参数按键名除了运行脚本时显示在状态栏中,没有任何实际意义,你甚至可以随意编辑:

 [100,"EK","key down",[77,"M健",0]],
 [50,"EK","key up",[77,"在键盘的M健",0]]

运行的结果是一样的,KMG只会根据按键编号来识别操作。

额外动作EX

KMG还添加额外的动作用于方便脚本的运行,例如:“input”。

input的语法为[100,”EX”,”input”,”你好 world”],依次为时间间隔(ms)、其他拓展动作(EX),输入文字(input)和具体文字(你好 world)。

input语法的引入对于输入框来说极大的节省了脚本编写的难度。

例如,输入“你好世界”,录制脚本就是将动作拆解,依次为:按下“n”、弹起“n”、按下“i”、弹起“i”…,脚本文件内容如下:

 [895,"EK","key down",[78,"N",0]],
 [79,"EK","key up",[78,"N",0]],
 [265,"EK","key down",[73,"I",0]],
 [71,"EK","key up",[73,"I",0]],
 [633,"EK","key down",[72,"H",0]],
 [80,"EK","key up",[72,"H",0]],
 [312,"EK","key down",[65,"A",0]],
 [80,"EK","key up",[65,"A",0]],
 [240,"EK","key down",[79,"O",0]],
 [88,"EK","key up",[79,"O",0]],
 [375,"EK","key down",[83,"S",0]],
 [72,"EK","key up",[83,"S",0]],
 [257,"EK","key down",[72,"H",0]],
 [87,"EK","key up",[72,"H",0]],
 [248,"EK","key down",[73,"I",0]],
 [87,"EK","key up",[73,"I",0]],
 [313,"EK","key down",[74,"J",0]],
 [96,"EK","key up",[74,"J",0]],
 [200,"EK","key down",[73,"I",0]],
 [88,"EK","key up",[73,"I",0]],
 [240,"EK","key down",[69,"E",0]],
 [71,"EK","key up",[69,"E",0]]

而在转为EX动作后,脚本就可以写为:

[100,"EX","input","你好世界"]

极大的节省了脚本编辑工作量,节约了时间,毕竟人生苦短,我用py…,不好意思又串台了。(我为什么要用又?)

KMG项目使用纯python编写的各位看官有兴趣可以了解一下项目源代码,作者开源在了github(文章开头已引用)。

软件局限性

KMG对比TT,最大的亮点就是可编辑式脚本文件的引入,这就让使用者可以清晰的看到或者编辑脚本的运行,即使牺牲了软件的大小。我认为这就是脚本2.0的开始。

看到了这里,相信你已经学会了脚本的编辑和有了编程式思维的基础,奖励一下自己吧!(oi!你的手在干什么!)

并且KMG中EX“input”也大大减少了脚本的代码量,让大文本也可以通过脚本转移。

当你使用一段时间的KMG以后,你就会发现所有脚本2.0的局限,例如,无法进行局部循环、没有逻辑判断、不能引入变量等等。

这也是所有脚本1.0/2.0的局限,即使引入可编辑时脚本,脚本的循环也只能是大循环,即循环整个脚本。

脚本之路

基于脚本2.0的局限性,远古时期人们就已经开发了许多的操作,例如大名鼎鼎的按键精灵(这也是博主的启蒙脚本软件)。在那个年代,脚本精灵的发展壮大,无疑是为各行各业(实际上就是一些游戏啊、挂机等操作)赋予了巨大可能。

博主在这里不建议,甚至很不建议去学习各种按键精灵,有点舍近求远了,先不说一些按键精灵反人类的操作,单就陡峭的学习路线和巨大的学习成本,就可以劝退很多人类。而且许多按键精灵软件是封闭的环境,许多操作都是基于自己的按键精灵实现的,没有必要去学习,南辕北辙。

脚本之路的下一站:

在本站,你学习了两个脚本软件,TinyTask和Keymousego,这两款软件的学习和操作都是非常简单的,非常低廉的学习成本(一上午的时间就都可以学会)。

脚本的大门打开后,你的工作越来越多的开始使用脚本。一开始你的需求很简单,特定的时间,点击特定的坐标,又或者特点的时间输入特定的按键。

后来,你的业务场景越来越复杂,等待时间的不确定、需要在屏幕中寻找特定的坐标、又或者关闭不定时出现的弹窗、需要局部循环的引入…

博主建议,你的下一站~:面向对象!Python!

脚本之路的未来有:python基础->RPA基础->pyautogui->PRA高级等,博主会不定期更新,你得评论加点赞,是我更新的巨大动力!

各位看官,敬请期待!

文末声明:

您必须遵守关于,您可以随意转发/引用,但要注明原作者Leon或设置本文跳转连接,并且您必须在文中包含或提醒浏览者遵守作者声明
欢迎关注公众号获取第二手文章!高效工作法

暂无评论

发送评论 编辑评论


				
上一篇
下一篇