跳至主要內容

鍵盤

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 選項以選擇不使用此非破壞性變更。