@@ -194,8 +194,6 @@ TEST(FlKeyEmbedderResponderTest, SendKeyEvent) {
194194 invoke_record_callback_and_verify (record, TRUE , &user_data);
195195 g_ptr_array_clear (g_call_records);
196196
197- // Skip testing key repeats, which is not present on GDK.
198-
199197 // Key up
200198 fl_key_responder_handle_event (
201199 responder,
@@ -261,6 +259,41 @@ TEST(FlKeyEmbedderResponderTest, SendKeyEvent) {
261259 g_object_unref (responder);
262260}
263261
262+ // Basic key presses, but uses the specified logical key if it is not 0.
263+ TEST (FlKeyEmbedderResponderTest, UsesSpecifiedLogicalKey) {
264+ EXPECT_EQ (g_call_records, nullptr );
265+ g_call_records = g_ptr_array_new_with_free_func (g_object_unref);
266+ FlKeyResponder* responder = FL_KEY_RESPONDER (
267+ fl_key_embedder_responder_new (record_calls_in (g_call_records)));
268+ int user_data = 123 ; // Arbitrary user data
269+
270+ FlKeyEmbedderCallRecord* record;
271+
272+ // On an AZERTY keyboard, press physical key 1, and release.
273+ // Key down
274+ fl_key_responder_handle_event (
275+ responder,
276+ fl_key_event_new_by_mock (12345 , kPress , GDK_KEY_ampersand, kKeyCodeDigit1 ,
277+ 0 , kIsNotModifier ),
278+ verify_response_handled, &user_data, kLogicalDigit1 );
279+
280+ EXPECT_EQ (g_call_records->len , 1u );
281+ record = FL_KEY_EMBEDDER_CALL_RECORD (g_ptr_array_index (g_call_records, 0 ));
282+ EXPECT_EQ (record->event ->struct_size , sizeof (FlutterKeyEvent));
283+ EXPECT_EQ (record->event ->timestamp , 12345000 );
284+ EXPECT_EQ (record->event ->type , kFlutterKeyEventTypeDown );
285+ EXPECT_EQ (record->event ->physical , kPhysicalDigit1 );
286+ EXPECT_EQ (record->event ->logical , kLogicalDigit1 );
287+ EXPECT_STREQ (record->event ->character , " &" );
288+ EXPECT_EQ (record->event ->synthesized , false );
289+
290+ invoke_record_callback_and_verify (record, TRUE , &user_data);
291+ g_ptr_array_clear (g_call_records);
292+
293+ clear_g_call_records ();
294+ g_object_unref (responder);
295+ }
296+
264297// Press Shift, key A, then release Shift, key A.
265298TEST (FlKeyEmbedderResponderTest, PressShiftDuringLetterKeyTap) {
266299 EXPECT_EQ (g_call_records, nullptr );
0 commit comments