Skip to content

Commit f28f49c

Browse files
b-lukJsouLiang
authored andcommitted
Add 'keyCode' field to eventData map created from html keyboard events. (flutter#30801)
1 parent 48e550b commit f28f49c

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

lib/web_ui/lib/src/engine/keyboard.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ class Keyboard {
130130
'key': keyboardEvent.key,
131131
'location': keyboardEvent.location,
132132
'metaState': _lastMetaState,
133+
'keyCode': keyboardEvent.keyCode,
133134
};
134135

135136
EnginePlatformDispatcher.instance.invokeOnPlatformMessage('flutter/keyevent',
@@ -154,6 +155,7 @@ class Keyboard {
154155
'key': event.key,
155156
'location': event.location,
156157
'metaState': _lastMetaState,
158+
'keyCode': event.keyCode,
157159
};
158160

159161
EnginePlatformDispatcher.instance.invokeOnPlatformMessage('flutter/keyevent',

lib/web_ui/test/keyboard_test.dart

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void testMain() {
5353

5454
html.KeyboardEvent event;
5555

56-
event = dispatchKeyboardEvent('keyup', key: 'SomeKey', code: 'SomeCode');
56+
event = dispatchKeyboardEvent('keyup', key: 'SomeKey', code: 'SomeCode', keyCode: 1);
5757

5858
expect(event.defaultPrevented, isFalse);
5959
expect(channelReceived, 'flutter/keyevent');
@@ -64,6 +64,7 @@ void testMain() {
6464
'location': 0,
6565
'key': 'SomeKey',
6666
'metaState': 0x0,
67+
'keyCode': 1,
6768
});
6869

6970
Keyboard.instance!.dispose();
@@ -85,7 +86,7 @@ void testMain() {
8586
html.KeyboardEvent event;
8687

8788
event =
88-
dispatchKeyboardEvent('keydown', key: 'SomeKey', code: 'SomeCode');
89+
dispatchKeyboardEvent('keydown', key: 'SomeKey', code: 'SomeCode', keyCode: 1);
8990

9091
expect(channelReceived, 'flutter/keyevent');
9192
expect(dataReceived, <String, dynamic>{
@@ -95,6 +96,7 @@ void testMain() {
9596
'key': 'SomeKey',
9697
'location': 0,
9798
'metaState': 0x0,
99+
'keyCode': 1,
98100
});
99101
expect(event.defaultPrevented, isFalse);
100102

@@ -129,6 +131,7 @@ void testMain() {
129131
'location': 0,
130132
// ctrl
131133
'metaState': 0x4,
134+
'keyCode': 0,
132135
});
133136

134137
event = dispatchKeyboardEvent(
@@ -148,6 +151,7 @@ void testMain() {
148151
'location': 0,
149152
// shift alt meta
150153
'metaState': 0x1 | 0x2 | 0x8,
154+
'keyCode': 0,
151155
});
152156

153157
Keyboard.instance!.dispose();
@@ -197,6 +201,7 @@ void testMain() {
197201
'key': 'SomeKey',
198202
'location': 0,
199203
'metaState': 0,
204+
'keyCode': 0,
200205
};
201206
expect(messages, <Map<String, dynamic>>[
202207
expectedMessage,
@@ -394,6 +399,7 @@ void testMain() {
394399
'location': 1,
395400
// meta
396401
'metaState': 0x8,
402+
'keyCode': 0,
397403
},
398404
<String, dynamic>{
399405
'type': 'keydown',
@@ -403,6 +409,7 @@ void testMain() {
403409
'location': 1,
404410
// alt meta
405411
'metaState': 0x2 | 0x8,
412+
'keyCode': 0,
406413
},
407414
<String, dynamic>{
408415
'type': 'keydown',
@@ -412,6 +419,7 @@ void testMain() {
412419
'location': 0,
413420
// alt meta
414421
'metaState': 0x2 | 0x8,
422+
'keyCode': 0,
415423
},
416424
<String, dynamic>{
417425
'type': 'keyup',
@@ -421,6 +429,7 @@ void testMain() {
421429
'location': 1,
422430
// alt
423431
'metaState': 0x2,
432+
'keyCode': 0,
424433
},
425434
<String, dynamic>{
426435
'type': 'keyup',
@@ -429,6 +438,7 @@ void testMain() {
429438
'code': 'AltLeft',
430439
'location': 1,
431440
'metaState': 0x0,
441+
'keyCode': 0,
432442
},
433443
]);
434444
messages.clear();
@@ -446,6 +456,7 @@ void testMain() {
446456
'code': 'KeyI',
447457
'location': 0,
448458
'metaState': 0x0,
459+
'keyCode': 0,
449460
}
450461
]);
451462

@@ -526,6 +537,7 @@ void testMain() {
526537
'code': 'KeyI',
527538
'location': 0,
528539
'metaState': 0x0,
540+
'keyCode': 0,
529541
});
530542
}
531543
messages.clear();
@@ -621,6 +633,7 @@ void testMain() {
621633
'location': 0,
622634
// alt
623635
'metaState': 0x2,
636+
'keyCode': 0,
624637
}
625638
]);
626639

@@ -654,6 +667,7 @@ html.KeyboardEvent dispatchKeyboardEvent(
654667
bool isAltPressed = false,
655668
bool isControlPressed = false,
656669
bool isMetaPressed = false,
670+
int keyCode = 0,
657671
}) {
658672
target ??= html.window;
659673

@@ -670,6 +684,7 @@ html.KeyboardEvent dispatchKeyboardEvent(
670684
'altKey': isAltPressed,
671685
'ctrlKey': isControlPressed,
672686
'metaKey': isMetaPressed,
687+
'keyCode': keyCode,
673688
'bubbles': true,
674689
'cancelable': true,
675690
}

0 commit comments

Comments
 (0)