Skip to content

Commit

Permalink
feat: strict time-to-type calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
aradzie committed Oct 30, 2024
1 parent 061ccc1 commit d580d68
Show file tree
Hide file tree
Showing 7 changed files with 325 additions and 32 deletions.
34 changes: 34 additions & 0 deletions packages/keybr-textinput-events/lib/browser-events(linux).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Event history recorded on Fedora Linux 40, X11
==============================================

## Firefox 132

### Dead down, Dead up, character

```
3970 | keydown | Equal | Dead | -
3971 | compositionstart | - | - |
3971 | compositionupdate | - | - | ´
3976 | input | - | - | ´
4083 | keyup | Equal | Dead | -
4499 | keydown | KeyA | a | -
4500 | compositionupdate | - | - | á
4500 | compositionend | - | - | á
4502 | input | - | - | á
4644 | keyup | KeyA | a | -
```

### Dead down, character, Dead up

```
2531 | keydown | Equal | Dead | -
2532 | compositionstart | - | - |
2532 | compositionupdate | - | - | ´
2537 | input | - | - | ´
2739 | keydown | KeyA | a | -
2740 | compositionupdate | - | - | á
2740 | compositionend | - | - | á
2742 | input | - | - | á
2876 | keyup | KeyA | a | -
2996 | keyup | Equal | Dead | -
```
98 changes: 98 additions & 0 deletions packages/keybr-textinput-events/lib/browser-events(macos).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
Event history recorded on MacOS 12.7.6
======================================

## Safari 17.6

### Dead down, Dead up, character

```
5847 | compositionstart | - | - |
5850 | compositionupdate | - | - | '
5852 | input | - | - | '
5847 | keydown | Equal | Dead | -
6191 | keyup | Equal | ' | -
8770 | input | - | - | -
8773 | input | - | - | á
8775 | compositionend | - | - | á
8767 | keydown | KeyA | á | -
9239 | keyup | KeyA | a | -
```

### Dead down, character, Dead up

```
7639 | compositionstart | - | - |
7645 | compositionupdate | - | - | '
7647 | input | - | - | '
7687 | keydown | Equal | Dead | -
7824 | input | - | - | -
7829 | input | - | - | á
7831 | compositionend | - | - | á
7871 | keydown | KeyA | á | -
7967 | keyup | KeyA | a | -
8063 | keyup | Equal | Dead | -
```

## Chrome 130

### Dead down, Dead up, character

```
2447 | keydown | Equal | Dead | -
2453 | compositionstart | - | - |
2454 | compositionupdate | - | - | '
2455 | input | - | - | '
2559 | keyup | Equal | Dead | -
3055 | keydown | KeyA | á | -
3058 | compositionupdate | - | - | á
3059 | input | - | - | á
3059 | compositionend | - | - | á
3191 | keyup | KeyA | a | -
```

### Dead down, character, Dead up

```
5732 | keydown | Equal | Dead | -
5738 | compositionstart | - | - |
5739 | compositionupdate | - | - | '
5740 | input | - | - | '
5964 | keydown | KeyA | á | -
5968 | compositionupdate | - | - | á
5969 | input | - | - | á
5969 | compositionend | - | - | á
6100 | keyup | KeyA | a | -
6228 | keyup | Equal | Dead | -
```

## Firefox 132

### Dead down, Dead up, character

```
6731 | keydown | Equal | Dead | -
6735 | compositionstart | - | - |
6735 | compositionupdate | - | - | '
6746 | input | - | - | '
6995 | keyup | Equal | ' | -
9563 | keydown | KeyA | á | -
9566 | compositionupdate | - | - | á
9566 | compositionend | - | - | á
9575 | input | - | - | á
9795 | keyup | KeyA | a | -
```

### Dead down, character, Dead up

```
4043 | keydown | Equal | Dead | -
4048 | compositionstart | - | - |
4048 | compositionupdate | - | - | '
4054 | input | - | - | '
4275 | keydown | KeyA | á | -
4278 | compositionupdate | - | - | á
4278 | compositionend | - | - | á
4286 | input | - | - | á
4427 | keyup | KeyA | a | -
4603 | keyup | Equal | Dead | -
```
122 changes: 122 additions & 0 deletions packages/keybr-textinput-events/lib/browser-events(windows).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
Event history recorded on Windows 11
====================================

## Firefox 132

### Dead down, Dead up, character

```
6553 | keydown | Equal | Dead | -
6757 | keyup | Equal | Dead | -
8100 | keydown | KeyA | á | -
8108 | input | - | - | á
8303 | keyup | KeyA | a | -
```

### Dead down, character, Dead up

```
3304 | keydown | Equal | Dead | -
3445 | keydown | KeyA | á | -
3453 | input | - | - | á
3570 | keyup | KeyA | a | -
3726 | keyup | Equal | ´ | -
```

### Shift down, Dead down, Dead up, Shift up, character

```
2163 | keydown | ShiftLeft | Shift | -
2350 | keydown | Equal | Dead | -
2475 | keyup | Equal | Dead | -
2647 | keyup | ShiftLeft | Shift | -
2975 | keydown | KeyC | č | -
2991 | input | - | - | č
3116 | keyup | KeyC | c | -
```

### Shift down, Dead down, Dead up, Shift up, Shift down, character, Shift up

```
0272 | keydown | ShiftLeft | Shift | -
0632 | keydown | Equal | Dead | -
0882 | keyup | Equal | Dead | -
1257 | keyup | ShiftLeft | Shift | -
2022 | keydown | ShiftLeft | Shift | -
2350 | keydown | KeyC | Č | -
2366 | input | - | - | Č
2569 | keyup | KeyC | C | -
2835 | keyup | ShiftLeft | Shift | -
```

### Shift down, Dead down, character, Dead up, Shift up

```
9042 | keydown | ShiftLeft | Shift | -
9323 | keydown | Equal | Dead | -
9588 | keydown | KeyC | Č | -
9604 | input | - | - | Č
9760 | keyup | KeyC | C | -
0026 | keyup | Equal | ˇ | -
0307 | keyup | ShiftLeft | Shift | -
```

## Chrome 130

### Dead down, Dead up, character

```
6622 | keydown | Equal | Dead | -
6911 | keyup | Equal | Dead | -
8031 | keydown | KeyA | á | -
8033 | input | - | - | á
8351 | keyup | KeyA | a | -
```

### Dead down, character, Dead up

```
2469 | keydown | Equal | Dead | -
2660 | keydown | KeyA | á | -
2662 | input | - | - | á
2828 | keyup | KeyA | a | -
3021 | keyup | Equal | Dead | -
```

### Shift down, Dead down, Dead up, Shift up, character

```
5392 | keydown | ShiftLeft | Shift | -
5776 | keydown | Equal | Dead | -
6031 | keyup | Equal | Dead | -
6439 | keyup | ShiftLeft | Shift | -
7487 | keydown | KeyC | č | -
7492 | input | - | - | č
7615 | keyup | KeyC | c | -
```

### Shift down, Dead down, Dead up, Shift up, Shift down, character, Shift up

```
5781 | keydown | ShiftLeft | Shift | -
6093 | keydown | Equal | Dead | -
6309 | keyup | Equal | Dead | -
6629 | keyup | ShiftLeft | Shift | -
7725 | keydown | ShiftLeft | Shift | -
8181 | keydown | KeyC | Č | -
8183 | input | - | - | Č
8365 | keyup | KeyC | C | -
8677 | keyup | ShiftLeft | Shift | -
```

### Shift down, Dead down, character, Dead up, Shift up

```
7466 | keydown | ShiftLeft | Shift | -
7658 | keydown | Equal | Dead | -
8018 | keydown | KeyC | Č | -
8019 | input | - | - | Č
8154 | keyup | KeyC | C | -
8378 | keyup | Equal | Dead | -
8682 | keyup | ShiftLeft | Shift | -
```
2 changes: 1 addition & 1 deletion packages/keybr-textinput-events/lib/emulation.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ test("forward emulation, translate a character input", (t) => {
"400,keyup,ControlLeft,Control",
"500,keydown,ShiftLeft,Shift",
"600,keydown,KeyS,O",
"600,appendChar,O,200",
"600,appendChar,O,300",
"700,keyup,KeyS,O",
"800,keyup,ShiftLeft,Shift",
]);
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-textinput-events/lib/inputhandler.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ test("handle a clear word input", (t) => {
t.deepEqual(target.trace, [
"100,keydown,ControlLeft,Control",
"200,keydown,Backspace,Backspace",
"200,clearWord,\u0000,100",
"200,clearWord,\u0000,200", // We don't count the Control key as a modifier.
"300,keyup,Backspace,Backspace",
"400,keyup,ControlLeft,Control",
]);
Expand Down
48 changes: 46 additions & 2 deletions packages/keybr-textinput-events/lib/timetotype.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,27 @@ test("Shift down,Alt down,character (MacOS)", (t) => {
);
});

test("Dead down,character", (t) => {
t.is(
new Tester()
.add(1100, "keydown", "Equal", "Dead")
.add(1200, "keydown", "KeyA", "a")
.measure(1200),
100,
);
});

test("Shift down,Dead down,character", (t) => {
t.is(
new Tester()
.add(1100, "keydown", "ShiftLeft", "Shift")
.add(1200, "keydown", "Equal", "Dead")
.add(1300, "keydown", "KeyA", "a")
.measure(1300),
100,
);
});

test("Dead down,Dead up,character", (t) => {
t.is(
new Tester()
Expand Down Expand Up @@ -132,7 +153,7 @@ test("Shift down,Shift up,Alt down,Alt up,character", (t) => {
.add(1400, "keyup", "AltLeft", "Alt")
.add(1500, "keydown", "KeyA", "a")
.measure(1500),
200,
500,
);
});

Expand All @@ -145,7 +166,7 @@ test("Shift down,Alt down,Alt up,Shift up,character", (t) => {
.add(1400, "keyup", "ShiftLeft", "Shift")
.add(1500, "keydown", "KeyA", "a")
.measure(1500),
300,
500,
);
});

Expand All @@ -158,10 +179,33 @@ test("Shift down,Alt down,Shift up,Alt up,character", (t) => {
.add(1400, "keyup", "AltLeft", "Alt")
.add(1500, "keydown", "KeyA", "a")
.measure(1500),
500,
);
});

test("Insert down,Insert up,character", (t) => {
t.is(
new Tester()
.add(1100, "keydown", "Insert", "Insert")
.add(1200, "keyup", "Insert", "Insert")
.add(1300, "keydown", "KeyA", "a")
.measure(1300),
300,
);
});

test("Insert down,Insert up,Shift down,character", (t) => {
t.is(
new Tester()
.add(1100, "keydown", "Insert", "Insert")
.add(1200, "keyup", "Insert", "Insert")
.add(1300, "keydown", "ShiftLeft", "Shift")
.add(1400, "keydown", "KeyA", "a")
.measure(1400),
200,
);
});

class Tester {
timeStamp = 1000;
ttt = new TimeToType();
Expand Down
Loading

0 comments on commit d580d68

Please sign in to comment.