跳至主要内容

键盘

keyboard(input: KeyboardInput): Promise<void>

keyboard API 允许模拟与键盘的交互。它接受描述按键操作的 string

按键操作可以描述为

  • 每个可打印字符

    keyboard('foo') // translates to: f, o, o

    开括号 {[ 被用作特殊字符,可以通过双写它们来引用。

    keyboard('{{a[[') // translates to: {, a, [
  • 每个 KeyboardEvent.key

    keyboard('{Shift}{f}{o}{o}') // translates to: Shift, f, o, o

    这不会保持任何键按下。因此,Shift 将在按下 f 之前抬起。

    键描述符中具有特殊含义的字符可以通过在它们前面加反斜杠 \ 来转义。

    keyboard('{\\}}') // translates to: }
  • 每个 KeyboardEvent.code

    keyboard('[ShiftLeft][KeyF][KeyO][KeyO]') // translates to: Shift, f, o, o

可以通过在描述符末尾添加 > 来保持键按下。
如果这应该导致重复的 keydown 事件,您可以添加重复次数。
如果键在此之后也应该释放,请在描述符末尾添加斜杠 /

keyboard('{a>}') // press a without releasing it
keyboard('{a>5}') // press a without releasing it and trigger 5 keydown
keyboard('{a>5/}') // press a for 5 keydown and then release it

可以通过在描述符前面加上 / 来抬起先前按下的键。

keyboard('{/a}') // release a previously pressed a

这允许模拟按键组合。

keyboard('{Shift>}A{/Shift}') // translates to: Shift(down), A, Shift(up)

keycode 的映射由一个 默认键映射 执行,该映射描绘了“默认”的美国键盘。您可以根据 keyboardMap 选项提供您自己的本地键盘映射。

目前,单个键的不同 key 含义被视为不同的键。

未来的版本可能会尝试插值达到键盘上可打印键所需的修饰符。例如,当 CapsLock 未激活且引用 A 时,自动按下 {Shift}。如果您不希望这种行为,您可以停用 autoModify 选项以选择退出此非破坏性更改。