From af3c91045b27746e359981e513f4ab5e19568254 Mon Sep 17 00:00:00 2001 From: Robert Ancell Date: Tue, 11 Feb 2025 14:03:48 +1300 Subject: [PATCH] Fix Linux keyboard support for AltGr (#162495) This was previously connected to right alt, which was confusing the keyboard handling code into generating up events for this key when it didn't match the expected values. This key is also configurable, and only defaults to right alt in Ubuntu/GNOME. Fixes https://github.com/flutter/flutter/issues/154053 --- .../data/gtk_logical_name_mapping.json | 2 +- .../gen_keycodes/data/logical_key_data.g.json | 14 ++++++++++---- .../flutter/shell/platform/linux/key_mapping.g.cc | 2 +- .../flutter/lib/src/services/keyboard_maps.g.dart | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/dev/tools/gen_keycodes/data/gtk_logical_name_mapping.json b/dev/tools/gen_keycodes/data/gtk_logical_name_mapping.json index 1a2bd2b868..2c9b4c0a90 100644 --- a/dev/tools/gen_keycodes/data/gtk_logical_name_mapping.json +++ b/dev/tools/gen_keycodes/data/gtk_logical_name_mapping.json @@ -19,7 +19,7 @@ "NumpadDecimal": ["KP_Period", "KP_Delete"], "NumpadEnter": ["KP_Enter"], "AltLeft": ["Alt_L"], - "AltRight": ["Alt_R", "ISO_Level3_Shift"], + "AltRight": ["Alt_R"], "ArrowDown": ["Down"], "ArrowLeft": ["Left"], "ArrowRight": ["Right"], diff --git a/dev/tools/gen_keycodes/data/logical_key_data.g.json b/dev/tools/gen_keycodes/data/logical_key_data.g.json index 289a3b7453..6442730bfd 100644 --- a/dev/tools/gen_keycodes/data/logical_key_data.g.json +++ b/dev/tools/gen_keycodes/data/logical_key_data.g.json @@ -1663,6 +1663,14 @@ "names": { "web": [ "AltGraph" + ], + "gtk": [ + "ISO_Level3_Shift" + ] + }, + "values": { + "gtk": [ + 65027 ] } }, @@ -8113,8 +8121,7 @@ "AltRight" ], "gtk": [ - "Alt_R", - "ISO_Level3_Shift" + "Alt_R" ], "windows": [ "RMENU" @@ -8134,8 +8141,7 @@ 230 ], "gtk": [ - 65514, - 65027 + 65514 ], "windows": [ 165 diff --git a/engine/src/flutter/shell/platform/linux/key_mapping.g.cc b/engine/src/flutter/shell/platform/linux/key_mapping.g.cc index a5a7643930..9770bc7a5b 100644 --- a/engine/src/flutter/shell/platform/linux/key_mapping.g.cc +++ b/engine/src/flutter/shell/platform/linux/key_mapping.g.cc @@ -246,7 +246,7 @@ std::map gtk_keyval_to_logical_key_map = { {0x0000fd1b, 0x00100000406}, // 3270_ExSelect {0x0000fd1d, 0x00100000608}, // 3270_PrintScreen {0x0000fd1e, 0x0010000000d}, // 3270_Enter - {0x0000fe03, 0x00200000105}, // ISO_Level3_Shift + {0x0000fe03, 0x00100000103}, // ISO_Level3_Shift {0x0000fe08, 0x00100000709}, // ISO_Next_Group {0x0000fe0a, 0x0010000070a}, // ISO_Prev_Group {0x0000fe0c, 0x00100000707}, // ISO_First_Group diff --git a/packages/flutter/lib/src/services/keyboard_maps.g.dart b/packages/flutter/lib/src/services/keyboard_maps.g.dart index 81f6a22634..54f4906679 100644 --- a/packages/flutter/lib/src/services/keyboard_maps.g.dart +++ b/packages/flutter/lib/src/services/keyboard_maps.g.dart @@ -1753,7 +1753,7 @@ const Map kGtkToLogicalKey = { 64795: LogicalKeyboardKey.exSel, 64797: LogicalKeyboardKey.printScreen, 64798: LogicalKeyboardKey.enter, - 65027: LogicalKeyboardKey.altRight, + 65027: LogicalKeyboardKey.altGraph, 65032: LogicalKeyboardKey.groupNext, 65034: LogicalKeyboardKey.groupPrevious, 65036: LogicalKeyboardKey.groupFirst,