# 类 Hotkey 渲染进程类,在游戏进程不能直接使用,继承自 [`EventEmitter`](./event-emitter.md) - 实例属性 - [`id`](#id) - [`name`](#name) - [`data`](#data) - [`keyMap`](#keymap) - [`groupName`](#groupname) - [`groups`](#groups) - [`enabled`](#enabled) - [`conditionMap`](#conditionmap) - 实例方法 - 构造器[`constructor`](#constructor) - [`register`](#register) - [`realize`](#realize) - [`use`](#use) - [`dispose`](#dispose) - [`set`](#set) - [`emitKey`](#emitkey) - [`group`](#group) - [`enable`](#enable) - [`disable`](#disable) - [`when`](#when) - [`toJSON`](#tojson) - [`fromJSON`](#fromjson) - 静态属性 - [`list`](#list) - 静态方法 - [`get`](#get) - 实例事件 - [`set`](#set-事件) - [`emit`](#emit-事件) ## 部分接口与类型说明 ```ts interface AssistHotkey { ctrl: boolean shift: boolean alt: boolean } ``` 三个属性分别表示对应的按键是否按下,或者是否需要被按下 ```ts interface RegisteredHotkeyData extends Partial { id: string name: string defaults: KeyCode type?: KeyEmitType } ``` - `id`: 注册的这个按键的 id,可以加后缀,参考[同 id 按键](../../guide/hotkey.md#同-id-按键) - `name`: 这个按键的名称,会显示在自定义快捷键界面中 - `defaults`: 玩家不进行设置时,这个功能的默认按键 - `type`: 占位属性,暂时无用 - `ctrl` `shift` `alt`: 玩家不进行设置时,这个功能默认的辅助按键,按下辅助按键后按下默认按键才可触发功能 ```ts interface HotkeyData extends Required { key: KeyCode func: Map group?: string } ``` - `key`: 当前这个功能的按键 - `func`: 所有当前存在的作用域下,每个作用域触发时的执行函数 - `group`: 这个按键所处的分组,参考 [按键分组](../../guide/hotkey.md#按键分组) ```ts type HotkeyFunc = (id: string, code: KeyCode, ev: KeyboardEvent) => void; ``` 表示按键的触发函数 - `id`: 触发的按键的 id,包含数字后缀 - `code`: 触发时按下的按键 - `ev`: 触发时的 `KeyboardEvent`,对于虚拟键盘,会进行不完全拟真 ## id ```ts declare var id: string ``` ## name ```ts declare var name: string ``` ## data ```ts declare var data: Record ``` - 成员说明 该成员存储了所有注册的按键信息,其中键表示按键的 id,值表示这个 id 对应的按键 ## keyMap ```ts declare var keyMap: Map ``` - 成员说明 存储了每个按键可以触发的功能列表,例如 X 键打开怪物手册等 ## groupName ```ts declare var groupName: Record ``` - 成员说明 存储了每个分组对应的显示名称,键表示分组 id,值表示分组名称 ## groups ```ts declare var groups: Record ``` - 成员说明 存储了每个分组所包含的按键 id,键表示分组 id,值是一个数组,包含了所有的按键 id ## enabled ```ts declare var enabled: boolean ``` - 成员说明 表示当前按键实例是否被启用 ## conditionMap ```ts declare var conditionMap: Map boolean> ``` - 成员说明 描述了每个作用域下的按键启用条件,也就是 [`when`](#when) 函数的功能 ## constructor() ```ts interface Hotkey { new(id: string, name: string): Hotkey } ``` ## register() ```ts declare function register(data: RegisterHotkeyData): this ``` - 方法说明 注册一个按键,id 可以包含数字后缀,可以显示为同一个按键操作拥有多个按键可以触发 ## realize() ```ts declare function realize(id: string, func: HotkeyFunc): this ``` - 参数说明 - `id`: 要实现的按键 id,可以不包含数字后缀 - `func`: 按键被触发时执行的函数 - 方法说明 实现一个按键按下时的操作 ## use() ```ts declare function use(symbol: symbol): this ``` - 方法说明 使用一个 symbol 作为当前作用域,之后调用 [`realize`](#realize) 所实现的按键功能将会添加至此作用域 ## dispose() ```ts declare function dispose(symbol?: symbol): void ``` - 参数说明 - `symbol`: 要释放的作用域 - 方法说明 释放一个作用域,释放后作用域将退回至删除的作用域的上一级 ## set() ```ts declare function set(id: string, key: KeyCode, assist: number): void ``` - 参数说明 - `id`: 要修改的按键的 id - `key`: 要修改为的触发按键 - `assist`: 要修改为的辅助按键 - 方法说明 设置一个按键信息 ## emitKey() ```ts declare function emitKey( key: KeyCode, assist: number, type: KeyEmitType, ev: KeyboardEvent ): boolean ``` - 参数说明 - `key`: 要触发的按键 - `assist`: 触发时的辅助按键 - `type`: 暂时为占位参数,填写 `up` 即可 - `ev`: 触发按键时的按键事件信息 `KeyboardEvent`,参考 dom 中的按键事件 - 方法说明 触发一个按键 - 返回值 是否成功触发至少一个按键 ## group() ```ts declare function group(id: string, name: string): this ``` - 参数说明 - `id`: 分组的 id - `name`: 分组的显示名称 - 方法说明 按键分组,分组后调用 [`register`](#register) 注册的按键会进入这个分组,参考[按键分组](../../guide/hotkey.md#按键分组) ## enable() ```ts declare function enabled(): void ``` - 方法说明 启用这个按键实例 ## disable() ```ts declare function disabled(): void ``` - 方法说明 禁用这个按键实例 ## when() ```ts declare function when(fn: () => boolean): this ``` - 方法说明 在当前作用域下,满足一定条件后启用按键功能 ## toJSON() ```ts declare function toJSON(): string ``` ## fromJSON() ```ts declare function fromJSON(data: string): void ``` ## list ```ts declare var list: Hotkey[] ``` - 静态成员说明 存储了所有的按键实例 ## get() ```ts declare function get(id: string): Hotkey ``` - 静态方法说明 根据 id 获取到对应的按键实例 ## set 事件 ```ts interface HotkeyEvent { set: (id: string, key: KeyCode, assist: number) => void } ``` - 参数说明 - `id`: 设置的按键的 id - `key`: 设置为的触发按键 - `assist`: 设置为的辅助按键 - 事件说明 当设置按键信息(执行`set`函数)时触发该事件 ## emit 事件 ```ts interface HotkeyEvent { emit: (key: KeyCode, assist: number) => void } ``` - 参数说明 - `key`: 触发的按键 - `assist`: 触发的辅助按键 - 事件说明 当触发一个按键时触发该事件