123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466 |
- /***
- * Author: Junyi Du <[email protected]>
- * References:
- * https://stackoverflow.com/questions/8892238/detect-keyboard-layout-with-javascript
- * ***/
- import { Page } from '@playwright/test'
- interface RecordedEvent {
- event_type: string;
- event: any; // KeyboardEvent is too heavy
- latency: number;
- }
- export let dispatch_kb_events = async function (page: Page, selector: string, keyboard_events: RecordedEvent[] ){
- for (let kbev of keyboard_events){
- let { event_type, event, latency } = kbev
- await page.waitForTimeout(latency)
- await page.dispatchEvent(selector, event_type, event)
- }
- }
- export let macos_pinyin_left_full_square_bracket: RecordedEvent[] = [
- {
- "event_type": "keydown",
- "event": {
- "key": "【",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": false
- },
- "latency": 0
- },
- {
- "event_type": "keypress",
- "event": {
- "key": "【",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": false
- },
- "latency": 1
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "【",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": false
- },
- "latency": 17
- }
- ]
- export let win10_pinyin_left_full_square_bracket: RecordedEvent[] = [
- {
- "event_type": "keydown",
- "event": {
- "key": "Process",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": false
- },
- "latency": 0
- },
- {
- "event_type": "compositionstart",
- "event": {},
- "latency": 4
- },
- {
- "event_type": "compositionupdate",
- "event": {},
- "latency": 0
- },
- {
- "event_type": "compositionupdate",
- "event": {},
- "latency": 12
- },
- {
- "event_type": "compositionend",
- "event": {},
- "latency": 1
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "Process",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": false
- },
- "latency": 61
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "[",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": false
- },
- "latency": 1
- }
- ]
- export let win10_legacy_pinyin_left_full_square_bracket: RecordedEvent[] = [
- {
- "event_type": "keydown",
- "event": {
- "key": "Process",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": false
- },
- "latency": 0
- },
- {
- "event_type": "compositionstart",
- "event": {},
- "latency": 1
- },
- {
- "event_type": "compositionupdate",
- "event": {},
- "latency": 0
- },
- {
- "event_type": "compositionupdate",
- "event": {},
- "latency": 0
- },
- {
- "event_type": "compositionend",
- "event": {},
- "latency": 1
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "Process",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": false
- },
- "latency": 93
- }
- ]
- export let macos_pinyin_selecting_candidate_double_left_square_bracket: RecordedEvent[] = [
- {
- "event_type": "keydown",
- "event": {
- "key": "b",
- "code": "KeyB",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": false
- },
- "latency": 0
- },
- {
- "event_type": "compositionstart",
- "event": {},
- "latency": 1
- },
- {
- "event_type": "compositionupdate",
- "event": {},
- "latency": 0
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "b",
- "code": "KeyB",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 48
- },
- {
- "event_type": "keydown",
- "event": {
- "key": "】",
- "code": "BracketRight",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 200
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "】",
- "code": "BracketRight",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 59
- },
- {
- "event_type": "keydown",
- "event": {
- "key": "】",
- "code": "BracketRight",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 289
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "】",
- "code": "BracketRight",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 73
- },
- {
- "event_type": "keydown",
- "event": {
- "key": "【",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 443
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "【",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 79
- },
- {
- "event_type": "keydown",
- "event": {
- "key": "【",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 155
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "【",
- "code": "BracketLeft",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 44
- },
- {
- "event_type": "compositionend",
- "event": {},
- "latency": 200
- }
- ]
- export let win10_RIME_selecting_candidate_double_left_square_bracket: RecordedEvent[] = [
- {
- "event_type": "keydown",
- "event": {
- "key": "Process",
- "code": "BracketRight",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": false
- },
- "latency": 0
- },
- {
- "event_type": "compositionstart",
- "event": {},
- "latency": 0
- },
- {
- "event_type": "compositionupdate",
- "event": {},
- "latency": 0
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "Process",
- "code": "BracketRight",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 79
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "]",
- "code": "BracketRight",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 3
- },
- {
- "event_type": "keydown",
- "event": {
- "key": "Process",
- "code": "BracketRight",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 200
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "Process",
- "code": "BracketRight",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 96
- },
- {
- "event_type": "keyup",
- "event": {
- "key": "]",
- "code": "BracketRight",
- "location": 0,
- "ctrlKey": false,
- "shiftKey": false,
- "altKey": false,
- "metaKey": false,
- "repeat": false,
- "isComposing": true
- },
- "latency": 3
- },
- {
- "event_type": "compositionend",
- "event": {},
- "latency": 200
- }
- ]
|