# key 库模块帮助文档

## key 成员列表 <a id="key" href="#key">&#x23;</a>

### key.block() <a id="key.block" href="#key.block">&#x23;</a>
锁定键盘鼠标

### key.block(false) <a id="key.block" href="#key.block">&#x23;</a>
解锁键盘鼠标

### key.capsLk() <a id="key.capsLk" href="#key.capsLk">&#x23;</a>
打开 Caps Lock,切找到大写状态

### key.capsLk(false) <a id="key.capsLk" href="#key.capsLk">&#x23;</a>
关闭 Caps Lock,切换到小写状态

### key.char(字符编码) <a id="key.char" href="#key.char">&#x23;</a>
直接用编码发送字符,例:  
key.char(65)

### key.combine("CTRL","字符串参数") <a id="key.combine" href="#key.combine">&#x23;</a>
发送组合热键,参数个数不限.  
参数可以是虚拟键名或虚拟键码（ _VK 前缀常量）

### key.delayDown <a id="key.delayDown" href="#key.delayDown">&#x23;</a>
每次调用key.down函数的默认时间间隔,默认为5毫秒  
在调用press以及pressEx函数时,按下松开键之间也会按此设定延时

### key.delayPress <a id="key.delayPress" href="#key.delayPress">&#x23;</a>
更改每次击键并松开后的时间间隔,默认为5毫秒

### key.delayUp <a id="key.delayUp" href="#key.delayUp">&#x23;</a>
每次调用key.up函数后的时间间隔,默认为1毫秒

### key.down() <a id="key.down" href="#key.down">&#x23;</a>
发送键按下指令,参数个数不限  
参数可以是虚拟键名或虚拟键码（ _VK 前缀常量）

### key.extraInfo <a id="key.extraInfo" href="#key.extraInfo">&#x23;</a>
发送消息的自定义附加值  
该值会传入键盘钩子的extraInfo参数

### key.getCode("字符串参数") <a id="key.getCode" href="#key.getCode">&#x23;</a>
将参数 @1 指定的虚拟键名称或虚拟键代码统一返回为虚拟键码。  
第一个返回值为虚拟键码，第二个返回值表示是否扩展键

### key.getName(vk,ext,noLocation) <a id="key.getName" href="#key.getName">&#x23;</a>
返回虚拟键代码码对应的虚拟键名称。  
除参数@ vk 以外，其他参数为可选参数  
如果@ext为true，允许返回扩展键名，主要指小键盘的回车键  
如果参数@noLocation为true，返回键名不区分左右控制键

### key.getState() <a id="key.getState" href="#key.getState">&#x23;</a>
参数 @1 指定虚拟键名或键码。  
自当前线程消息队列中检测指定按键的是否按下，不一定是物理按键的真实状态。  
仅可用于 U I线程，即使线徎或进程不是前台焦点，函数仍然可以工作，  
对于 NumLk,CapsLk,ScrLk 返回按键的开关状态。  
此函数内部调用 ::User32.GetKeyState 函数。

### key.getStateX() <a id="key.getStateX" href="#key.getStateX">&#x23;</a>
参数 @1 指定虚拟键名或键码。  
首个返回值用于获取物理按键的真实按下弹起状态，返回 true 表示按下。  
物理按键状态并不一定等于特定界面线程中的按键状态。  

此函数忽略键盘映射，可用于非 UI 线程，  
并且不能用于检测按键开关状态（nmlk,scrlk,capslk）。  

此函数内部调用 ::User32.GetAsyncKeyState 函数。  
第 2 个返回值为最近一次调用 ::User32.GetAsyncKeyState 以来是否被按下

### key.isCapsLk() <a id="key.isCapsLk" href="#key.isCapsLk">&#x23;</a>
判断 Caps Lock 键是否打开大写状态

### key.nmLk() <a id="key.nmLk" href="#key.nmLk">&#x23;</a>
打开 Num Lock(数字键盘功能切换)

### key.nmLk(false) <a id="key.nmLk" href="#key.nmLk">&#x23;</a>
关闭 Num Lock(数字键盘功能切换)

### key.press() <a id="key.press" href="#key.press">&#x23;</a>
发送按键,参数个数不限  
参数可以是虚拟键名或虚拟键码（ _VK 前缀常量）

### key.removeLocation() <a id="key.removeLocation" href="#key.removeLocation">&#x23;</a>
对传入的虚拟键码，移除左右控制键的差别,  
返回转换后的虚拟键码，例如_VK_LCTRL转换_VK_为CTRL

### key.repeat(虚拟键名或键码,重复次数) <a id="key.repeat" href="#key.repeat">&#x23;</a>
重复发送指定的击键  
参数可以是虚拟键名或虚拟键码（ _VK 前缀常量）

### key.repeat(虚拟键名或键码,重复次数,间隔毫秒) <a id="key.repeat" href="#key.repeat">&#x23;</a>
重复发送指定的击键  
参数可以是虚拟键名或虚拟键码（ _VK 前缀常量）

### key.scan2v() <a id="key.scan2v" href="#key.scan2v">&#x23;</a>
参数@1指定的键盘扫描码转换为虚拟码  
如果参数@2为 true，则返回虚拟码区分左手键右手键

### key.scrLk() <a id="key.scrLk" href="#key.scrLk">&#x23;</a>
打开 Scroll Lock(翻页键功能切换)

### key.scrLk(false) <a id="key.scrLk" href="#key.scrLk">&#x23;</a>
关闭 Scroll Lock(翻页键功能切换)

### key.send <a id="key.send" href="#key.send">&#x23;</a>
发送键名串指定的按键,  
发送按键而非字符串,不区分双字符键,  
发送字符串请改用 key.sendString 函数

### key.send("键名串",延时) <a id="key.send" href="#key.send">&#x23;</a>
发送键名串指定的按键  
每个键名都只能使用单个字符,  
此函数发送按键而不是发送字符串,  
键名串包含双字符键上任一字符发送的是相同按键而非对应字符,  
如果打开了输入法,则由输入法确定输入的字符,   
单纯发送字符串请使用 key.sendString 函数（不受输入法影响）  
可选用参数@2指定每次按键之间的延时（以毫秒为单位）

### key.sendString("字符串参数") <a id="key.sendString" href="#key.sendString">&#x23;</a>
发送字符串,支持中英文字符串,  
此函数不受输入法影响直接发送字符。  

换行符发送回车键，制表符发送 tab 按键，  
回车与 tab 发送按键而非字符，要避免误触类似自动完成等快捷键。

### key.sendString("字符串参数",100) <a id="key.sendString" href="#key.sendString">&#x23;</a>
发送字符串,支持中英文字符串  
并在每次按键添加指定的延时(以毫秒为单位),  
此函数不受输入法影响直接发送字符

### key.setState(false,虚拟键名或键码) <a id="key.setState" href="#key.setState">&#x23;</a>
设置一个或多个键为松开状态。  
NumLk,CapsLk,ScrLk等键则置为关闭状态。

### key.setState(true,虚拟键名或键码) <a id="key.setState" href="#key.setState">&#x23;</a>
设置一个或多个键为按下状态。  
NumLk,CapsLk,ScrLk等键则置为开启状态。  
该函数仅影响当前输入队列,外部线程应先调用 winex.attach 共享输入状态

### key.up() <a id="key.up" href="#key.up">&#x23;</a>
发送键弹起指令,参数个数不限  
参数可以是虚拟键名或虚拟键码（ _VK 前缀常量）

### key.v2scan() <a id="key.v2scan" href="#key.v2scan">&#x23;</a>
参数@1指定的键盘虚拟码转换为扫描码  
如果参数@2为 true，则返回扫描码区分左手键右手键

### key.wait() <a id="key.wait" href="#key.wait">&#x23;</a>
等待指定按键  
参数可以是键名字,或者按键的虚拟码(_VK前缀常量

### key.waitUp() <a id="key.waitUp" href="#key.waitUp">&#x23;</a>
等待一个按下的键放开  
参数可以是键名字,或者按键的虚拟码(_VK前缀常量
