New scheme for keyboard logical key ID (#85121)
This PR updates the ID used by logical keyboard keys.
The logical key ID is still composed of 2 parts: 32 bits of value, and 8 bits of plane. But the assignment of planes has been drastically changed. HID plane is removed, and unprintable plane and Flutter plane are added. This is to reflect the new generation method for logical key IDs. Now keys that are defined by Flutter but not by dom_key_data are placed into the Flutter plane, including numpad keys, sided modifier keys, and gamepad keys. The values for platform planes have also been adjusted.
The generation script and README have been updated accordingly as well.
A new file, test_utils/key_codes.h is now generated to assist engine unit testing.
All lists generated by the script are now sorted by the key.
diff --git a/dev/tools/gen_keycodes/README.md b/dev/tools/gen_keycodes/README.md
index 8029d89..b04075b 100644
--- a/dev/tools/gen_keycodes/README.md
+++ b/dev/tools/gen_keycodes/README.md
@@ -43,7 +43,7 @@
Other options can be found using `--help`.
-## Key Code ID Scheme
+## Logical Key ID Scheme
To provide logical keys with unique ID codes, Flutter uses a scheme
to assign logical keycodes which keeps us out of the business of minting new
@@ -58,109 +58,76 @@
However, if you are porting Flutter to a new platform, you should follow the
following guidelines for specifying logical key codes.
-The logical key code is a 37-bit integer in a namespace that we control and
-define. It has values in the following ranges.
+The logical key code is a 52-bit integer (due to the limitation of JavaScript).
+The entire namespace is divided into 32-bit *planes*. The upper 20 bits of the
+ID represent the plane ID, while the lower 32 bits represent values in the
+plane. For example, plane 0x1 refers to the range 0x1 0000 0000 -
+0x1 FFFF FFFF. Each plane manages how the values within the range are assigned.
-- **0x00 0000 0000 - 0x0 0010 FFFF**: For keys that generate Unicode
+The planes are planned as follows:
+
+- **Plane 0x00**: The Unicode plane. This plane contains keys that generate Unicode
characters when pressed (this includes dead keys, but not e.g. function keys
- or shift keys), the logical key code is the Unicode code point corresponding
- to the representation of the key in the current keyboard mapping. The
- Unicode code point might not match the string that is generated for
- an unshifted keypress of that key, for example, we would use U+0034 for the
- “4 \$” key in the US layout, and also the “4 ;” key in the Russian layout,
- and also, maybe less intuitively, for the “' 4 {“ in French layout (wherein
- the latter case, an unshifted press gets you a ', not a 4). Similarly, the Q
- key in the US layout outputs a q in normal usage, but its code would be 0x0
- 0000 0051 (U+00051 being the code for the uppercase Q).
+ or shift keys). The value is defined as the Unicode code point corresponding
+ to the character, lower case and without modifier keys if possible.
+ Examples are Key A (0x61), Digit 1 (0x31), Colon (0x3A), and Key Ù (0xD9).
+ (The "Colon" key represents a keyboard key that prints the ":"
+ character without modifiers, which can be found on the French layout. On the
+ US layout, the key that prints ":" is the Semicolon key.)
+ This plane also contains key None (0x0).
-- **0x01 0000 0000 - 0x01 FFFF FFFF**: For keys that are defined by the [USB HID
- standard](https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf),
- the key code consists of the 32 bit USB extended usage code. For
- example, the Enter key would have code 0x01 0007 0028. Only keys that fall
- into collections "Keyboard", "Keypad", and "Tablet PC System Controls" are
- considered for this API; for example, a mixing desk with multiple
- collections of volume controls would not be exposed via DOWN and UP events,
- nor would a mouse, joystick, or golf simulator control.
+- **Plane 0x01**: The unprintable plane. This plane contains keys that are defined
+ by the [Chromium key list](https://chromium.googlesource.com/codesearch/chromium/src/+/refs/heads/master/ui/events/keycodes/dom/dom_key_data.inc)
+ and do not generate Unicode characters. The value is defined as the macro
+ value defined by the Chromium key list. Examples are CapsLock (0x105),
+ ArrowUp (0x304), F1 (0x801), Hiragata (0x716), and TVPower (0xD4B).
+ Some keys that exist in the Chromium key list are not present in Flutter in this plane, most notably
+ modifiers keys (such as Shift). See the Flutter plane below for more
+ information.
-- **0x02 0000 0000 - 0xFF FFFF FFFF**: For keys that aren't defined in USB at the
- time of implementation, but that we need to support. For example, if Flutter
- were ever ported to the Symbolics LM-2, the "thumb up" key might be given
- the code 0x14 0000 0001, where 0x14 is defined as the “Symbolics” platform
- range. Where possible, we will use specific subranges of this space to reuse
- keys from other platforms. When this is not possible, the prefix 0xFF is
- reserved for “Custom” codes. Each platform from which we take codes will get
- a unique prefix in the range 0x2-0xFE. If multiple systems define keys with
- the same usage (not the same number), then the value with the lowest prefix
- is used as the defining code.
+- **Plane 0x02**: The Flutter plane. This plane contains keys that are
+ defined by Flutter. The values are also manually assigned by Flutter.
+ Modifier keys are placed in this plane, because Flutter distinguishes
+ between sided modifier keys (for example "ShiftLeft" and "ShiftRight"),
+ while the web doesn't (only has "Shift").
+ Other examples are numpad keys and gamepad keys.
- Prefixes will be:
+- **Plane 0x03-0x0F**: Reserved.
+
+- **Plane 0x10-0x1F**: Platform planes managed by Flutter. Each platform plane
+ corresponds to a Flutter embedding officially supported by Flutter. The
+ platforms are listed as follows:
| Code | Platform |
| ---- | -------- |
- | 0x02 | Android |
- | 0x03 | Fuchsia |
- | 0x04 | iOS |
- | 0x05 | macOS |
- | 0x06 | Linux |
- | 0x07 | Windows |
- | 0x08 | Web |
- | 0xFF | Custom |
+ | 0x11 | Android |
+ | 0x12 | Fuchsia |
+ | 0x13 | iOS |
+ | 0x14 | macOS |
+ | 0x15 | Gtk |
+ | 0x16 | Windows |
+ | 0x17 | Web |
+ | 0x18 | GLFW |
- Further ranges will be added as platforms are added. The platform prefix
- does not define the platform it is used on, it is just the platform that
- decides what the value is: the codes are mapped to the same value on all
- platforms.
+ Platform planes store keys that are private to the Flutter embedding of this
+ platform. This most likely means that these keys have not been officially
+ recognized by Flutter.
-- **0x100 0000 0000 - 0x1FF FFFF FFFF**: For keys that have no definition yet in
- Flutter, but that are encountered in the field, this range is used to embed
- the platform-specific keycode in an ID that must be tested for in a
- platform-specific way. For instance, if a platform generates a new USB
- HID code 0x07 00E8 that a Flutter app wasn’t compiled with, then it would
- appear in the app as 0x100 0007 00E8, and the app could test against that
- code. Yes, this also means that once they recompile with a version of
- Flutter that supports this new HID code, apps looking for this code will
- break. This situation is only meant to provide a fallback ability for apps
- to handle esoteric codes that their version of Flutter doesn’t support yet.
- The prefix for this code is the platform prefix from the previous sections,
- plus 0x100.
+ The value scheme within a platform plane is decided by the platform,
+ typically using the field from the platform's native key event that
+ represents the key's logical effect (such as `keycode`, `virtual key`, etc).
-- **0x200 0000 0000 - 0x2FF FFFF FFFF**: For pseudo-keys which represent
- combinations of other keys, and conceptual keys which don't have a physical
- representation. This is where things like key synonyms are defined (e.g.
- "shiftLeft" is a synonym for "shift": the "shift" key is a pseudo-key
- representing either the left or right shift key).
+ In time, keys that originally belong to a platform plane might be added to
+ Flutter, especially if a key is found shared by multiple platforms. The values
+ of that key will be changed to a new value within the Flutter plane, and all
+ platforms managed by Flutter will start to send the new value, making it a
+ breaking change. Therefore, when handling an unrecognized key on a platform
+ managed by Flutter, it is recommended to file a new issue to add this value
+ to `keyboard_key.dart` instead of using the platform-plane value. However,
+ for a custom platform (see below), since the platfrom author has full control
+ over key mapping, such change will not cause breakage and it is recommended
+ to use the platform-plane value to avoid adding platform-exclusive values
+ to the framework.
-**This is intended to get us out of the business of defining key codes where
-possible.** We still have to have mapping tables, but at least the actual minting
-of codes is deferred to other organizations to a large extent. Coming up with a
-code is a mechanical process consisting of just picking the lowest number code
-possible that matches the semantic meaning of the key according to the
-definitions above.
-
-Here are some examples:
-
-For example, on a French keyboard layout, pressing CAPS LOCK then pressing
-SHIFT + Y would generate the following sequence:
-
-DOWN, code 0x0100070039. (CAPS LOCK DOWN)<br>
-UP, code 0x0100070039. (CAPS LOCK UP)<br>
-DOWN, code 0x01000700E1 (LEFT SHIFT DOWN)<br>
-DOWN, code 0x0000000059, string U+00059 (Y DOWN)<br>
-UP, code 0x0000000059 (Y UP)<br>
-UP, code 0x01000700E1 (LEFT SHIFT UP)<br>
-
-Here's another example. On a German keyboard layout, you press ^e (the ^ key is
-at the top left of the keyboard and is a dead key) to produce an “ê”:
-
-DOWN, code 0x0000000302 (CIRCUMFLEX DOWN) It produces no string, because it's a dead
-key. The key code is for "Combining circumflex accent U+0302" in Unicode.<br>
-UP, code 0x0000000302 (CIRCUMFLEX UP)<br>
-DOWN, code 0x0000000065, string U+000EA (Unicode for ê) (E DOWN).<br>
-UP, code 0x0000000065. (E UP).<br>
-
-It is an important point that even though we’re representing many keys with USB
-HID codes, these are not necessarily the same HID codes produced by the hardware
-and presented to the driver, since on most platforms we have to map the platform
-representation back to an HID code because we don’t have access to the original
-HID code. USB HID is simply a conveniently well-defined standard that includes
-many of the keys we would want.
+- **Plane 0x20-0x2F**: Custom platform planes. Similar to Flutter's platform
+ planes, but for private use by custom platforms.
diff --git a/dev/tools/gen_keycodes/bin/gen_keycodes.dart b/dev/tools/gen_keycodes/bin/gen_keycodes.dart
index eae21ae..4aa28a6 100644
--- a/dev/tools/gen_keycodes/bin/gen_keycodes.dart
+++ b/dev/tools/gen_keycodes/bin/gen_keycodes.dart
@@ -15,6 +15,7 @@
import 'package:gen_keycodes/logical_key_data.dart';
import 'package:gen_keycodes/macos_code_gen.dart';
import 'package:gen_keycodes/physical_key_data.dart';
+import 'package:gen_keycodes/testing_key_codes_gen.dart';
import 'package:gen_keycodes/utils.dart';
import 'package:gen_keycodes/web_code_gen.dart';
import 'package:gen_keycodes/windows_code_gen.dart';
@@ -71,7 +72,20 @@
return File(path.join(dataRoot, fileName)).readAsStringSync();
}
+bool _assertsEnabled() {
+ bool enabledAsserts = false;
+ assert(() {
+ enabledAsserts = true;
+ return true;
+ }());
+ return enabledAsserts;
+}
+
Future<void> main(List<String> rawArguments) async {
+ if (!_assertsEnabled()) {
+ print('The gen_keycodes script must be run with --enable-asserts.');
+ return;
+ }
final ArgParser argParser = ArgParser();
argParser.addOption(
'engine-root',
@@ -208,6 +222,14 @@
print('Writing ${'key maps'.padRight(15)}${mapsFile.absolute}');
await mapsFile.writeAsString(KeyboardMapsCodeGenerator(physicalData, logicalData).generate());
+ final File keyCodesFile = File(path.join(PlatformCodeGenerator.engineRoot,
+ 'shell', 'platform', 'embedder', 'test_utils', 'key_codes.h'));
+ if (!mapsFile.existsSync()) {
+ mapsFile.createSync(recursive: true);
+ }
+ print('Writing ${'engine key codes'.padRight(15)}${mapsFile.absolute}');
+ await keyCodesFile.writeAsString(KeyCodesCcGenerator(physicalData, logicalData).generate());
+
final Map<String, PlatformCodeGenerator> platforms = <String, PlatformCodeGenerator>{
'android': AndroidCodeGenerator(
physicalData,
diff --git a/dev/tools/gen_keycodes/data/README.md b/dev/tools/gen_keycodes/data/README.md
index 9283a17..33cd43d 100644
--- a/dev/tools/gen_keycodes/data/README.md
+++ b/dev/tools/gen_keycodes/data/README.md
@@ -9,7 +9,6 @@
| [`supplemental_hid_codes.inc`](supplemental_hid_codes.inc) | A supplementary HID list on top of Chromium's list of HID codes for extra physical keys. Certain entries may also overwrite Chromium's corresponding entries. |
| [`supplemental_key_data.inc`](supplemental_key_data.inc) | A supplementary key list on top of Chromium's list of keys for extra logical keys.|
| [`chromium_modifiers.json`](chromium_modifiers.json) | Maps the web's `key` for modifier keys to the names of the logical keys for these keys' left and right variations.This is used when generating logical keys to provide independent values for sided logical keys. Web uses the same `key` for modifier keys of different sides, but Flutter's logical key model treats them as different keys.|
-| [`printable_to_numpads.json`](printable_to_numpads.json) | Maps a character to the names of the logical keys for these keys' number pad variations. This is used when generating logical keys to provide independent values for number pad logical keys. The web uses the character as the `key` for number pad keys, but Flutter's logical key model treats them as independent keys.|
| [`printable.json`](printable.json) | Maps Flutter key name to its printable character. This character is used as the key label.|
| [`synonyms.json`](synonyms.json) | Maps pseudo-keys that represent other keys to the sets of keys they represent. For example, this contains the "shift" key that represents either a "shiftLeft" or "shiftRight" key.|
@@ -58,7 +57,7 @@
| [`gtk_key_mapping_cc.tmpl`](gtk_key_mapping_cc.tmpl) | The template for `key_mapping.cc`. |
| [`gtk_lock_bit_mapping.json`](gtk_lock_bit_mapping.json) | Maps a name for GTK's modifier bit macro to Flutter's logical name (element #0) and physical name (element #1). This is used to generate checked keys that GTK should keep lock state synchronous on.|
| [`gtk_logical_name_mapping.json`](gtk_logical_name_mapping.json) | Maps a logical key name to the macro names of its corresponding `keyval`s. This is used to convert logical keys.|
-| [`gtk_modifier_bit_mapping.json`](gtk_modifier_bit_mapping.json) | Maps a name for GTK's modifier bit macro to Flutter's logical name (element #0), physical name (element #1), and the physical name for the paired key (element #2). This is used to generate checked keys that GTK should keep pressing state synchronous on.|
+| [`gtk_modifier_bit_mapping.json`](gtk_modifier_bit_mapping.json) | Maps a name for GTK's modifier bit macro to Flutter's physical name (element #0), logical name (element #1), and the logical name for the paired key (element #2). This is used to generate checked keys where GTK should keep the pressed state synchronized.|
| [`gtk_numpad_shift.json`](gtk_numpad_shift.json) | Maps the name of a `keyval` macro of a numpad key to that of the corresponding key with NumLock on. GTK uses different `keyval` for numpad keys with and without NumLock on, but Flutter's logical key model treats them as the same key.|
### Linux (GLFW)
diff --git a/dev/tools/gen_keycodes/data/android_key_name_to_name.json b/dev/tools/gen_keycodes/data/android_key_name_to_name.json
index a872352..3f8c991 100644
--- a/dev/tools/gen_keycodes/data/android_key_name_to_name.json
+++ b/dev/tools/gen_keycodes/data/android_key_name_to_name.json
@@ -1,4 +1,5 @@
{
+ "Add": ["PLUS"],
"Again": ["AGAIN"],
"AltLeft": ["ALT_LEFT"],
"AltRight": ["ALT_RIGHT"],
@@ -7,6 +8,8 @@
"ArrowLeft": ["DPAD_LEFT"],
"ArrowRight": ["DPAD_RIGHT"],
"ArrowUp": ["DPAD_UP"],
+ "Asterisk": ["STAR"],
+ "At": ["AT"],
"AudioVolumeDown": ["VOLUME_DOWN"],
"AudioVolumeMute": ["VOLUME_MUTE"],
"AudioVolumeUp": ["VOLUME_UP"],
@@ -201,6 +204,7 @@
"None": ["UNKNOWN"],
"Notification": ["NOTIFICATION"],
"NumLock": ["NUM_LOCK"],
+ "NumberSign": ["POUND"],
"Numpad0": ["NUMPAD_0"],
"Numpad1": ["NUMPAD_1"],
"Numpad2": ["NUMPAD_2"],
diff --git a/dev/tools/gen_keycodes/data/gtk_key_mapping_cc.tmpl b/dev/tools/gen_keycodes/data/gtk_key_mapping_cc.tmpl
index 89f8b86..47229d2 100644
--- a/dev/tools/gen_keycodes/data/gtk_key_mapping_cc.tmpl
+++ b/dev/tools/gen_keycodes/data/gtk_key_mapping_cc.tmpl
@@ -7,6 +7,8 @@
#include <glib.h>
#include <map>
+#include "flutter/shell/platform/linux/fl_key_embedder_responder_private.h"
+
// DO NOT EDIT -- DO NOT EDIT -- DO NOT EDIT
// This file is generated by
// flutter/flutter@dev/tools/gen_keycodes/bin/gen_keycodes.dart and should not
@@ -15,14 +17,6 @@
// Edit the template dev/tools/gen_keycodes/data/gtk_key_mapping_cc.tmpl
// instead. See dev/tools/gen_keycodes/README.md for more information.
-// Insert a new entry into a hashtable from uint64 to uint64.
-//
-// Returns whether the newly added value was already in the hash table or not.
-static bool insert_record(GHashTable* table, guint64 xkb, guint64 fl_key) {
- return g_hash_table_insert(table, uint64_to_gpointer(xkb),
- uint64_to_gpointer(fl_key));
-}
-
std::map<uint64_t, uint64_t> xkb_to_physical_key_map = {
@@@XKB_SCAN_CODE_MAP@@@
};
@@ -40,3 +34,5 @@
FlKeyEmbedderCheckedKey* data;
@@@GTK_MODE_BIT_MAP@@@
}
+
+@@@MASK_CONSTANTS@@@
diff --git a/dev/tools/gen_keycodes/data/ios_key_code_map_cc.tmpl b/dev/tools/gen_keycodes/data/ios_key_code_map_cc.tmpl
index feaa9aa..3848592 100644
--- a/dev/tools/gen_keycodes/data/ios_key_code_map_cc.tmpl
+++ b/dev/tools/gen_keycodes/data/ios_key_code_map_cc.tmpl
@@ -1,4 +1,4 @@
-// Copyright 2014 The Flutter Authors. All rights reserved.
+// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -36,4 +36,4 @@
@@@MODIFIER_FLAG_TO_KEYCODE_MAP@@@
};
-@@@SPECIAL_KEY_CONSTANTS@@@
\ No newline at end of file
+@@@SPECIAL_KEY_CONSTANTS@@@
diff --git a/dev/tools/gen_keycodes/data/key_codes_h.tmpl b/dev/tools/gen_keycodes/data/key_codes_h.tmpl
new file mode 100644
index 0000000..f8a35f3
--- /dev/null
+++ b/dev/tools/gen_keycodes/data/key_codes_h.tmpl
@@ -0,0 +1,40 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef FLUTTER_SHELL_PLATFORM_COMMON_TESTING_KEY_CODES_H_
+#define FLUTTER_SHELL_PLATFORM_COMMON_TESTING_KEY_CODES_H_
+
+#include <cinttypes>
+
+// DO NOT EDIT -- DO NOT EDIT -- DO NOT EDIT
+// This file is generated by
+// flutter/flutter:dev/tools/gen_keycodes/bin/gen_keycodes.dart and should not
+// be edited directly.
+//
+// Edit the template
+// flutter/flutter:dev/tools/gen_keycodes/data/key_codes_cc.tmpl
+// instead.
+//
+// See flutter/flutter:dev/tools/gen_keycodes/README.md for more information.
+
+// This file contains keyboard constants to be used in unit tests. They should
+// not be used in production code.
+
+namespace flutter {
+
+namespace testing {
+
+namespace keycodes {
+
+@@@PHYSICAL_KEY_DEFINITIONS@@@
+
+@@@LOGICAL_KEY_DEFINITIONS@@@
+
+} // namespace keycodes
+
+} // namespace testing
+
+} // namespace flutter
+
+#endif // FLUTTER_SHELL_PLATFORM_COMMON_TESTING_KEY_CODES_H_
diff --git a/dev/tools/gen_keycodes/data/keyboard_key.tmpl b/dev/tools/gen_keycodes/data/keyboard_key.tmpl
index 740a945..eaed68c 100644
--- a/dev/tools/gen_keycodes/data/keyboard_key.tmpl
+++ b/dev/tools/gen_keycodes/data/keyboard_key.tmpl
@@ -280,7 +280,7 @@
/// would be 0x1020000ffff, but once Flutter added the "doWhatIMean" key to
/// the definitions below, the new code would be 0x0020000ffff for all
/// platforms that had a "do what I mean" key from then on.
- bool get isAutogenerated => (keyId & autogeneratedMask) != 0;
+ bool get isAutogenerated => (keyId & planeMask) >= startOfPlatformPlanes;
/// Returns a set of pseudo-key synonyms for the given `key`.
///
@@ -323,45 +323,10 @@
properties.add(StringProperty('debugName', debugName, showName: true, defaultValue: null));
}
- /// Mask for the 32-bit value portion of the key code.
- ///
- /// This is used by platform-specific code to generate Flutter key codes.
- static const int valueMask = 0x000FFFFFFFF;
+@@@MASK_CONSTANTS@@@
- /// Mask for the platform prefix portion of the key code.
- ///
- /// This is used by platform-specific code to generate Flutter key codes.
- static const int platformMask = 0x0FF00000000;
-
- /// Mask for the auto-generated bit portion of the key code.
- ///
- /// This is used by platform-specific code to generate new Flutter key codes
- /// for keys which are not recognized.
- static const int autogeneratedMask = 0x10000000000;
-
- /// Mask for the synonym pseudo-keys generated for keys which appear in more
- /// than one place on the keyboard.
- ///
- /// IDs in this range are used to represent keys which appear in multiple
- /// places on the keyboard, such as the SHIFT, ALT, CTRL, and numeric keypad
- /// keys. These key codes will never be generated by the key event system, but
- /// may be used in key maps to represent the union of all the keys of each
- /// type in order to match them.
- ///
- /// To look up the synonyms that are defined, look in the [synonyms] map.
- static const int synonymMask = 0x20000000000;
-
- /// The code prefix for keys which have a Unicode representation.
- ///
- /// This is used by platform-specific code to generate Flutter key codes.
- static const int unicodePlane = 0x00000000000;
-
- /// The code prefix for keys which do not have a Unicode representation.
- ///
- /// This is used by platform-specific code to generate Flutter key codes using
- /// HID Usage codes.
- static const int hidPlane = 0x00100000000;
@@@LOGICAL_KEY_DEFINITIONS@@@
+
// A list of all predefined constant LogicalKeyboardKeys so they can be
// searched.
static const Map<int, LogicalKeyboardKey> _knownLogicalKeys = <int, LogicalKeyboardKey>{
@@ -373,7 +338,8 @@
@@@LOGICAL_KEY_SYNONYMS@@@ };
static const Map<int, String> _keyLabels = <int, String>{
-@@@LOGICAL_KEY_KEY_LABELS@@@ };
+@@@LOGICAL_KEY_KEY_LABELS@@@
+ };
}
/// A class with static values that describe the keys that are returned from
@@ -520,7 +486,9 @@
// Key constants for all keyboard keys in the USB HID specification at the
// time Flutter was built.
+
@@@PHYSICAL_KEY_DEFINITIONS@@@
+
// A list of all the predefined constant PhysicalKeyboardKeys so that they
// can be searched.
static const Map<int, PhysicalKeyboardKey> _knownPhysicalKeys = <int, PhysicalKeyboardKey>{
@@ -530,5 +498,6 @@
static const Map<int, String> _debugNames = kReleaseMode ?
<int, String>{} :
<int, String>{
-@@@PHYSICAL_KEY_DEBUG_NAMES@@@ };
+@@@PHYSICAL_KEY_DEBUG_NAMES@@@
+ };
}
diff --git a/dev/tools/gen_keycodes/data/logical_key_data.json b/dev/tools/gen_keycodes/data/logical_key_data.json
index 8595ca6..b51c1b4 100644
--- a/dev/tools/gen_keycodes/data/logical_key_data.json
+++ b/dev/tools/gen_keycodes/data/logical_key_data.json
@@ -1,24 +1,4 @@
{
- "None": {
- "name": "None",
- "value": 0,
- "names": {
- "web": [
- "None"
- ],
- "android": [
- "UNKNOWN"
- ]
- },
- "values": {
- "android": [
- 0
- ],
- "fuchsia": [
- 0
- ]
- }
- },
"Space": {
"name": "Space",
"value": 32,
@@ -48,7 +28,7 @@
62
],
"fuchsia": [
- 4295426092
+ 77309870124
]
}
},
@@ -85,7 +65,7 @@
75
],
"fuchsia": [
- 4295426100
+ 77309870132
]
}
},
@@ -96,6 +76,14 @@
"names": {
"web": [
"NumberSign"
+ ],
+ "android": [
+ "POUND"
+ ]
+ },
+ "values": {
+ "android": [
+ 18
]
}
},
@@ -166,6 +154,14 @@
"names": {
"web": [
"Asterisk"
+ ],
+ "android": [
+ "STAR"
+ ]
+ },
+ "values": {
+ "android": [
+ 17
]
}
},
@@ -176,6 +172,14 @@
"names": {
"web": [
"Add"
+ ],
+ "android": [
+ "PLUS"
+ ]
+ },
+ "values": {
+ "android": [
+ 81
]
}
},
@@ -202,7 +206,7 @@
55
],
"fuchsia": [
- 4295426102
+ 77309870134
]
}
},
@@ -229,7 +233,7 @@
69
],
"fuchsia": [
- 4295426093
+ 77309870125
]
}
},
@@ -262,7 +266,7 @@
56
],
"fuchsia": [
- 4295426103
+ 77309870135
]
}
},
@@ -289,7 +293,7 @@
76
],
"fuchsia": [
- 4295426104
+ 77309870136
]
}
},
@@ -310,7 +314,7 @@
7
],
"fuchsia": [
- 4295426087
+ 77309870119
]
}
},
@@ -331,7 +335,7 @@
8
],
"fuchsia": [
- 4295426078
+ 77309870110
]
}
},
@@ -352,7 +356,7 @@
9
],
"fuchsia": [
- 4295426079
+ 77309870111
]
}
},
@@ -373,7 +377,7 @@
10
],
"fuchsia": [
- 4295426080
+ 77309870112
]
}
},
@@ -394,7 +398,7 @@
11
],
"fuchsia": [
- 4295426081
+ 77309870113
]
}
},
@@ -415,7 +419,7 @@
12
],
"fuchsia": [
- 4295426082
+ 77309870114
]
}
},
@@ -436,7 +440,7 @@
13
],
"fuchsia": [
- 4295426083
+ 77309870115
]
}
},
@@ -457,7 +461,7 @@
14
],
"fuchsia": [
- 4295426084
+ 77309870116
]
}
},
@@ -478,7 +482,7 @@
15
],
"fuchsia": [
- 4295426085
+ 77309870117
]
}
},
@@ -499,7 +503,7 @@
16
],
"fuchsia": [
- 4295426086
+ 77309870118
]
}
},
@@ -536,7 +540,7 @@
74
],
"fuchsia": [
- 4295426099
+ 77309870131
]
}
},
@@ -573,7 +577,7 @@
70
],
"fuchsia": [
- 4295426094
+ 77309870126
]
}
},
@@ -604,6 +608,14 @@
"names": {
"web": [
"At"
+ ],
+ "android": [
+ "AT"
+ ]
+ },
+ "values": {
+ "android": [
+ 77
]
}
},
@@ -630,7 +642,7 @@
71
],
"fuchsia": [
- 4295426095
+ 77309870127
]
}
},
@@ -657,7 +669,7 @@
73
],
"fuchsia": [
- 4295426097
+ 77309870129
]
}
},
@@ -684,7 +696,7 @@
72
],
"fuchsia": [
- 4295426096
+ 77309870128
]
}
},
@@ -731,7 +743,7 @@
68
],
"fuchsia": [
- 4295426101
+ 77309870133
]
}
},
@@ -752,7 +764,7 @@
29
],
"fuchsia": [
- 4295426052
+ 77309870084
]
}
},
@@ -773,7 +785,7 @@
30
],
"fuchsia": [
- 4295426053
+ 77309870085
]
}
},
@@ -794,7 +806,7 @@
31
],
"fuchsia": [
- 4295426054
+ 77309870086
]
}
},
@@ -815,7 +827,7 @@
32
],
"fuchsia": [
- 4295426055
+ 77309870087
]
}
},
@@ -836,7 +848,7 @@
33
],
"fuchsia": [
- 4295426056
+ 77309870088
]
}
},
@@ -857,7 +869,7 @@
34
],
"fuchsia": [
- 4295426057
+ 77309870089
]
}
},
@@ -878,7 +890,7 @@
35
],
"fuchsia": [
- 4295426058
+ 77309870090
]
}
},
@@ -899,7 +911,7 @@
36
],
"fuchsia": [
- 4295426059
+ 77309870091
]
}
},
@@ -920,7 +932,7 @@
37
],
"fuchsia": [
- 4295426060
+ 77309870092
]
}
},
@@ -941,7 +953,7 @@
38
],
"fuchsia": [
- 4295426061
+ 77309870093
]
}
},
@@ -962,7 +974,7 @@
39
],
"fuchsia": [
- 4295426062
+ 77309870094
]
}
},
@@ -983,7 +995,7 @@
40
],
"fuchsia": [
- 4295426063
+ 77309870095
]
}
},
@@ -1004,7 +1016,7 @@
41
],
"fuchsia": [
- 4295426064
+ 77309870096
]
}
},
@@ -1025,7 +1037,7 @@
42
],
"fuchsia": [
- 4295426065
+ 77309870097
]
}
},
@@ -1046,7 +1058,7 @@
43
],
"fuchsia": [
- 4295426066
+ 77309870098
]
}
},
@@ -1067,7 +1079,7 @@
44
],
"fuchsia": [
- 4295426067
+ 77309870099
]
}
},
@@ -1088,7 +1100,7 @@
45
],
"fuchsia": [
- 4295426068
+ 77309870100
]
}
},
@@ -1109,7 +1121,7 @@
46
],
"fuchsia": [
- 4295426069
+ 77309870101
]
}
},
@@ -1130,7 +1142,7 @@
47
],
"fuchsia": [
- 4295426070
+ 77309870102
]
}
},
@@ -1151,7 +1163,7 @@
48
],
"fuchsia": [
- 4295426071
+ 77309870103
]
}
},
@@ -1172,7 +1184,7 @@
49
],
"fuchsia": [
- 4295426072
+ 77309870104
]
}
},
@@ -1193,7 +1205,7 @@
50
],
"fuchsia": [
- 4295426073
+ 77309870105
]
}
},
@@ -1214,7 +1226,7 @@
51
],
"fuchsia": [
- 4295426074
+ 77309870106
]
}
},
@@ -1235,7 +1247,7 @@
52
],
"fuchsia": [
- 4295426075
+ 77309870107
]
}
},
@@ -1256,7 +1268,7 @@
53
],
"fuchsia": [
- 4295426076
+ 77309870108
]
}
},
@@ -1277,7 +1289,7 @@
54
],
"fuchsia": [
- 4295426077
+ 77309870109
]
}
},
@@ -1323,7 +1335,7 @@
},
"Unidentified": {
"name": "Unidentified",
- "value": 68719476737,
+ "value": 4294967297,
"names": {
"web": [
"Unidentified"
@@ -1332,7 +1344,7 @@
},
"Backspace": {
"name": "Backspace",
- "value": 68719476744,
+ "value": 4294967304,
"keyLabel": "\b",
"names": {
"web": [
@@ -1371,13 +1383,13 @@
67
],
"fuchsia": [
- 4295426090
+ 77309870122
]
}
},
"Tab": {
"name": "Tab",
- "value": 68719476745,
+ "value": 4294967305,
"keyLabel": "\t",
"names": {
"web": [
@@ -1420,13 +1432,13 @@
61
],
"fuchsia": [
- 4295426091
+ 77309870123
]
}
},
"Enter": {
"name": "Enter",
- "value": 68719476749,
+ "value": 4294967309,
"keyLabel": "\r",
"names": {
"web": [
@@ -1469,13 +1481,13 @@
66
],
"fuchsia": [
- 4295426088
+ 77309870120
]
}
},
"Escape": {
"name": "Escape",
- "value": 68719476763,
+ "value": 4294967323,
"keyLabel": "\u001b",
"names": {
"web": [
@@ -1514,13 +1526,13 @@
111
],
"fuchsia": [
- 4295426089
+ 77309870121
]
}
},
"Delete": {
"name": "Delete",
- "value": 68719476863,
+ "value": 4294967423,
"keyLabel": "",
"names": {
"web": [
@@ -1559,13 +1571,13 @@
112
],
"fuchsia": [
- 4295426124
+ 77309870156
]
}
},
"Accel": {
"name": "Accel",
- "value": 68719476993,
+ "value": 4294967553,
"names": {
"web": [
"Accel"
@@ -1574,7 +1586,7 @@
},
"AltGraph": {
"name": "AltGraph",
- "value": 68719476995,
+ "value": 4294967555,
"names": {
"web": [
"AltGraph"
@@ -1583,7 +1595,7 @@
},
"CapsLock": {
"name": "CapsLock",
- "value": 68719476996,
+ "value": 4294967556,
"names": {
"web": [
"CapsLock"
@@ -1621,13 +1633,13 @@
115
],
"fuchsia": [
- 4295426105
+ 77309870137
]
}
},
"Fn": {
"name": "Fn",
- "value": 68719476998,
+ "value": 4294967558,
"names": {
"web": [
"Fn"
@@ -1647,13 +1659,13 @@
119
],
"fuchsia": [
- 4294967314
+ 77309411346
]
}
},
"FnLock": {
"name": "FnLock",
- "value": 68719476999,
+ "value": 4294967559,
"names": {
"web": [
"FnLock"
@@ -1661,13 +1673,13 @@
},
"values": {
"fuchsia": [
- 4294967315
+ 77309411347
]
}
},
"Hyper": {
"name": "Hyper",
- "value": 68719477000,
+ "value": 4294967560,
"names": {
"web": [
"Hyper"
@@ -1683,13 +1695,13 @@
65518
],
"fuchsia": [
- 4294967312
+ 77309411344
]
}
},
"NumLock": {
"name": "NumLock",
- "value": 68719477002,
+ "value": 4294967562,
"names": {
"web": [
"NumLock"
@@ -1727,13 +1739,13 @@
143
],
"fuchsia": [
- 4295426131
+ 77309870163
]
}
},
"ScrollLock": {
"name": "ScrollLock",
- "value": 68719477004,
+ "value": 4294967564,
"names": {
"web": [
"ScrollLock"
@@ -1759,13 +1771,13 @@
116
],
"fuchsia": [
- 4295426119
+ 77309870151
]
}
},
"Super": {
"name": "Super",
- "value": 68719477006,
+ "value": 4294967566,
"names": {
"web": [
"Super"
@@ -1781,13 +1793,13 @@
65516
],
"fuchsia": [
- 4294967313
+ 77309411345
]
}
},
"Symbol": {
"name": "Symbol",
- "value": 68719477007,
+ "value": 4294967567,
"names": {
"web": [
"Symbol"
@@ -1804,7 +1816,7 @@
},
"SymbolLock": {
"name": "SymbolLock",
- "value": 68719477008,
+ "value": 4294967568,
"names": {
"web": [
"SymbolLock"
@@ -1813,7 +1825,7 @@
},
"ShiftLevel5": {
"name": "ShiftLevel5",
- "value": 68719477009,
+ "value": 4294967569,
"names": {
"web": [
"ShiftLevel5"
@@ -1822,7 +1834,7 @@
},
"ArrowDown": {
"name": "ArrowDown",
- "value": 68719477505,
+ "value": 4294968065,
"names": {
"web": [
"ArrowDown"
@@ -1860,13 +1872,13 @@
20
],
"fuchsia": [
- 4295426129
+ 77309870161
]
}
},
"ArrowLeft": {
"name": "ArrowLeft",
- "value": 68719477506,
+ "value": 4294968066,
"names": {
"web": [
"ArrowLeft"
@@ -1904,13 +1916,13 @@
21
],
"fuchsia": [
- 4295426128
+ 77309870160
]
}
},
"ArrowRight": {
"name": "ArrowRight",
- "value": 68719477507,
+ "value": 4294968067,
"names": {
"web": [
"ArrowRight"
@@ -1948,13 +1960,13 @@
22
],
"fuchsia": [
- 4295426127
+ 77309870159
]
}
},
"ArrowUp": {
"name": "ArrowUp",
- "value": 68719477508,
+ "value": 4294968068,
"names": {
"web": [
"ArrowUp"
@@ -1992,13 +2004,13 @@
19
],
"fuchsia": [
- 4295426130
+ 77309870162
]
}
},
"End": {
"name": "End",
- "value": 68719477509,
+ "value": 4294968069,
"names": {
"web": [
"End"
@@ -2036,13 +2048,13 @@
123
],
"fuchsia": [
- 4295426125
+ 77309870157
]
}
},
"Home": {
"name": "Home",
- "value": 68719477510,
+ "value": 4294968070,
"names": {
"web": [
"Home"
@@ -2080,13 +2092,13 @@
122
],
"fuchsia": [
- 4295426122
+ 77309870154
]
}
},
"PageDown": {
"name": "PageDown",
- "value": 68719477511,
+ "value": 4294968071,
"names": {
"web": [
"PageDown"
@@ -2124,13 +2136,13 @@
93
],
"fuchsia": [
- 4295426126
+ 77309870158
]
}
},
"PageUp": {
"name": "PageUp",
- "value": 68719477512,
+ "value": 4294968072,
"names": {
"web": [
"PageUp"
@@ -2168,13 +2180,13 @@
92
],
"fuchsia": [
- 4295426123
+ 77309870155
]
}
},
"Clear": {
"name": "Clear",
- "value": 68719477761,
+ "value": 4294968321,
"names": {
"web": [
"Clear"
@@ -2203,7 +2215,7 @@
},
"Copy": {
"name": "Copy",
- "value": 68719477762,
+ "value": 4294968322,
"names": {
"web": [
"Copy"
@@ -2225,13 +2237,13 @@
278
],
"fuchsia": [
- 4295426172
+ 77309870204
]
}
},
"CrSel": {
"name": "CrSel",
- "value": 68719477763,
+ "value": 4294968323,
"names": {
"web": [
"CrSel"
@@ -2240,7 +2252,7 @@
},
"Cut": {
"name": "Cut",
- "value": 68719477764,
+ "value": 4294968324,
"names": {
"web": [
"Cut"
@@ -2260,13 +2272,13 @@
277
],
"fuchsia": [
- 4295426171
+ 77309870203
]
}
},
"EraseEof": {
"name": "EraseEof",
- "value": 68719477765,
+ "value": 4294968325,
"names": {
"web": [
"EraseEof"
@@ -2283,7 +2295,7 @@
},
"ExSel": {
"name": "ExSel",
- "value": 68719477766,
+ "value": 4294968326,
"names": {
"web": [
"ExSel"
@@ -2300,7 +2312,7 @@
},
"Insert": {
"name": "Insert",
- "value": 68719477767,
+ "value": 4294968327,
"names": {
"web": [
"Insert"
@@ -2338,13 +2350,13 @@
124
],
"fuchsia": [
- 4295426121
+ 77309870153
]
}
},
"Paste": {
"name": "Paste",
- "value": 68719477768,
+ "value": 4294968328,
"names": {
"web": [
"Paste"
@@ -2364,13 +2376,13 @@
279
],
"fuchsia": [
- 4295426173
+ 77309870205
]
}
},
"Redo": {
"name": "Redo",
- "value": 68719477769,
+ "value": 4294968329,
"names": {
"web": [
"Redo"
@@ -2384,13 +2396,13 @@
65382
],
"fuchsia": [
- 4295754361
+ 77310198393
]
}
},
"Undo": {
"name": "Undo",
- "value": 68719477770,
+ "value": 4294968330,
"names": {
"web": [
"Undo"
@@ -2404,13 +2416,13 @@
65381
],
"fuchsia": [
- 4295426170
+ 77309870202
]
}
},
"Accept": {
"name": "Accept",
- "value": 68719478017,
+ "value": 4294968577,
"names": {
"web": [
"Accept"
@@ -2427,7 +2439,7 @@
},
"Again": {
"name": "Again",
- "value": 68719478018,
+ "value": 4294968578,
"names": {
"web": [
"Again"
@@ -2435,13 +2447,13 @@
},
"values": {
"fuchsia": [
- 4295426169
+ 77309870201
]
}
},
"Attn": {
"name": "Attn",
- "value": 68719478019,
+ "value": 4294968579,
"names": {
"web": [
"Attn"
@@ -2464,7 +2476,7 @@
},
"Cancel": {
"name": "Cancel",
- "value": 68719478020,
+ "value": 4294968580,
"names": {
"web": [
"Cancel"
@@ -2487,7 +2499,7 @@
},
"ContextMenu": {
"name": "ContextMenu",
- "value": 68719478021,
+ "value": 4294968581,
"names": {
"web": [
"ContextMenu"
@@ -2525,13 +2537,13 @@
82
],
"fuchsia": [
- 4295426149
+ 77309870181
]
}
},
"Execute": {
"name": "Execute",
- "value": 68719478022,
+ "value": 4294968582,
"names": {
"web": [
"Execute"
@@ -2554,7 +2566,7 @@
},
"Find": {
"name": "Find",
- "value": 68719478023,
+ "value": 4294968583,
"names": {
"web": [
"Find"
@@ -2568,13 +2580,13 @@
65384
],
"fuchsia": [
- 4295426174
+ 77309870206
]
}
},
"Help": {
"name": "Help",
- "value": 68719478024,
+ "value": 4294968584,
"names": {
"web": [
"Help"
@@ -2600,13 +2612,13 @@
259
],
"fuchsia": [
- 4295426165
+ 77309870197
]
}
},
"Pause": {
"name": "Pause",
- "value": 68719478025,
+ "value": 4294968585,
"names": {
"web": [
"Pause"
@@ -2632,13 +2644,13 @@
121
],
"fuchsia": [
- 4295426120
+ 77309870152
]
}
},
"Play": {
"name": "Play",
- "value": 68719478026,
+ "value": 4294968586,
"names": {
"web": [
"Play"
@@ -2655,7 +2667,7 @@
},
"Props": {
"name": "Props",
- "value": 68719478027,
+ "value": 4294968587,
"names": {
"web": [
"Props"
@@ -2663,13 +2675,13 @@
},
"values": {
"fuchsia": [
- 4295426211
+ 77309870243
]
}
},
"Select": {
"name": "Select",
- "value": 68719478028,
+ "value": 4294968588,
"names": {
"web": [
"Select"
@@ -2695,13 +2707,13 @@
23
],
"fuchsia": [
- 4295426167
+ 77309870199
]
}
},
"ZoomIn": {
"name": "ZoomIn",
- "value": 68719478029,
+ "value": 4294968589,
"names": {
"web": [
"ZoomIn"
@@ -2721,13 +2733,13 @@
168
],
"fuchsia": [
- 4295754285
+ 77310198317
]
}
},
"ZoomOut": {
"name": "ZoomOut",
- "value": 68719478030,
+ "value": 4294968590,
"names": {
"web": [
"ZoomOut"
@@ -2747,13 +2759,13 @@
169
],
"fuchsia": [
- 4295754286
+ 77310198318
]
}
},
"BrightnessDown": {
"name": "BrightnessDown",
- "value": 68719478273,
+ "value": 4294968833,
"names": {
"web": [
"BrightnessDown"
@@ -2773,13 +2785,13 @@
220
],
"fuchsia": [
- 4295753840
+ 77310197872
]
}
},
"BrightnessUp": {
"name": "BrightnessUp",
- "value": 68719478274,
+ "value": 4294968834,
"names": {
"web": [
"BrightnessUp"
@@ -2799,13 +2811,13 @@
221
],
"fuchsia": [
- 4295753839
+ 77310197871
]
}
},
"Camera": {
"name": "Camera",
- "value": 68719478275,
+ "value": 4294968835,
"names": {
"web": [
"Camera"
@@ -2822,7 +2834,7 @@
},
"Eject": {
"name": "Eject",
- "value": 68719478276,
+ "value": 4294968836,
"names": {
"web": [
"Eject"
@@ -2842,13 +2854,13 @@
129
],
"fuchsia": [
- 4295753912
+ 77310197944
]
}
},
"LogOff": {
"name": "LogOff",
- "value": 68719478277,
+ "value": 4294968837,
"names": {
"web": [
"LogOff"
@@ -2862,13 +2874,13 @@
269025121
],
"fuchsia": [
- 4295754140
+ 77310198172
]
}
},
"Power": {
"name": "Power",
- "value": 68719478278,
+ "value": 4294968838,
"names": {
"web": [
"Power"
@@ -2882,13 +2894,13 @@
26
],
"fuchsia": [
- 4295426150
+ 77309870182
]
}
},
"PowerOff": {
"name": "PowerOff",
- "value": 68719478279,
+ "value": 4294968839,
"names": {
"web": [
"PowerOff"
@@ -2905,7 +2917,7 @@
},
"PrintScreen": {
"name": "PrintScreen",
- "value": 68719478280,
+ "value": 4294968840,
"names": {
"web": [
"PrintScreen"
@@ -2925,13 +2937,13 @@
120
],
"fuchsia": [
- 4295426118
+ 77309870150
]
}
},
"Hibernate": {
"name": "Hibernate",
- "value": 68719478281,
+ "value": 4294968841,
"names": {
"web": [
"Hibernate"
@@ -2940,7 +2952,7 @@
},
"Standby": {
"name": "Standby",
- "value": 68719478282,
+ "value": 4294968842,
"names": {
"web": [
"Standby"
@@ -2957,7 +2969,7 @@
},
"WakeUp": {
"name": "WakeUp",
- "value": 68719478283,
+ "value": 4294968843,
"names": {
"web": [
"WakeUp"
@@ -2977,13 +2989,13 @@
224
],
"fuchsia": [
- 4295032963
+ 77309476995
]
}
},
"AllCandidates": {
"name": "AllCandidates",
- "value": 68719478529,
+ "value": 4294969089,
"names": {
"web": [
"AllCandidates"
@@ -2992,7 +3004,7 @@
},
"Alphanumeric": {
"name": "Alphanumeric",
- "value": 68719478530,
+ "value": 4294969090,
"names": {
"web": [
"Alphanumeric"
@@ -3001,7 +3013,7 @@
},
"CodeInput": {
"name": "CodeInput",
- "value": 68719478531,
+ "value": 4294969091,
"names": {
"web": [
"CodeInput"
@@ -3018,7 +3030,7 @@
},
"Compose": {
"name": "Compose",
- "value": 68719478532,
+ "value": 4294969092,
"names": {
"web": [
"Compose"
@@ -3027,7 +3039,7 @@
},
"Convert": {
"name": "Convert",
- "value": 68719478533,
+ "value": 4294969093,
"names": {
"web": [
"Convert"
@@ -3047,13 +3059,13 @@
214
],
"fuchsia": [
- 4295426186
+ 77309870218
]
}
},
"FinalMode": {
"name": "FinalMode",
- "value": 68719478534,
+ "value": 4294969094,
"names": {
"web": [
"FinalMode"
@@ -3070,7 +3082,7 @@
},
"GroupFirst": {
"name": "GroupFirst",
- "value": 68719478535,
+ "value": 4294969095,
"names": {
"web": [
"GroupFirst"
@@ -3087,7 +3099,7 @@
},
"GroupLast": {
"name": "GroupLast",
- "value": 68719478536,
+ "value": 4294969096,
"names": {
"web": [
"GroupLast"
@@ -3104,7 +3116,7 @@
},
"GroupNext": {
"name": "GroupNext",
- "value": 68719478537,
+ "value": 4294969097,
"names": {
"web": [
"GroupNext"
@@ -3127,7 +3139,7 @@
},
"GroupPrevious": {
"name": "GroupPrevious",
- "value": 68719478538,
+ "value": 4294969098,
"names": {
"web": [
"GroupPrevious"
@@ -3144,7 +3156,7 @@
},
"ModeChange": {
"name": "ModeChange",
- "value": 68719478539,
+ "value": 4294969099,
"names": {
"web": [
"ModeChange"
@@ -3173,7 +3185,7 @@
},
"NextCandidate": {
"name": "NextCandidate",
- "value": 68719478540,
+ "value": 4294969100,
"names": {
"web": [
"NextCandidate"
@@ -3182,7 +3194,7 @@
},
"NonConvert": {
"name": "NonConvert",
- "value": 68719478541,
+ "value": 4294969101,
"names": {
"web": [
"NonConvert"
@@ -3196,13 +3208,13 @@
213
],
"fuchsia": [
- 4295426187
+ 77309870219
]
}
},
"PreviousCandidate": {
"name": "PreviousCandidate",
- "value": 68719478542,
+ "value": 4294969102,
"names": {
"web": [
"PreviousCandidate"
@@ -3219,7 +3231,7 @@
},
"Process": {
"name": "Process",
- "value": 68719478543,
+ "value": 4294969103,
"names": {
"web": [
"Process"
@@ -3228,7 +3240,7 @@
},
"SingleCandidate": {
"name": "SingleCandidate",
- "value": 68719478544,
+ "value": 4294969104,
"names": {
"web": [
"SingleCandidate"
@@ -3245,7 +3257,7 @@
},
"HangulMode": {
"name": "HangulMode",
- "value": 68719478545,
+ "value": 4294969105,
"names": {
"web": [
"HangulMode"
@@ -3262,30 +3274,24 @@
},
"HanjaMode": {
"name": "HanjaMode",
- "value": 68719478546,
+ "value": 4294969106,
"names": {
"web": [
"HanjaMode"
],
"gtk": [
"Hangul_Hanja"
- ],
- "windows": [
- "HANJA"
]
},
"values": {
"gtk": [
65332
- ],
- "windows": [
- 25
]
}
},
"JunjaMode": {
"name": "JunjaMode",
- "value": 68719478547,
+ "value": 4294969107,
"names": {
"web": [
"JunjaMode"
@@ -3302,7 +3308,7 @@
},
"Eisu": {
"name": "Eisu",
- "value": 68719478548,
+ "value": 4294969108,
"names": {
"web": [
"Eisu"
@@ -3325,7 +3331,7 @@
},
"Hankaku": {
"name": "Hankaku",
- "value": 68719478549,
+ "value": 4294969109,
"names": {
"web": [
"Hankaku"
@@ -3342,7 +3348,7 @@
},
"Hiragana": {
"name": "Hiragana",
- "value": 68719478550,
+ "value": 4294969110,
"names": {
"web": [
"Hiragana"
@@ -3359,7 +3365,7 @@
},
"HiraganaKatakana": {
"name": "HiraganaKatakana",
- "value": 68719478551,
+ "value": 4294969111,
"names": {
"web": [
"HiraganaKatakana"
@@ -3382,7 +3388,7 @@
},
"KanaMode": {
"name": "KanaMode",
- "value": 68719478552,
+ "value": 4294969112,
"names": {
"web": [
"KanaMode"
@@ -3390,13 +3396,13 @@
},
"values": {
"fuchsia": [
- 4295426184
+ 77309870216
]
}
},
"KanjiMode": {
"name": "KanjiMode",
- "value": 68719478553,
+ "value": 4294969113,
"names": {
"web": [
"KanjiMode"
@@ -3405,7 +3411,7 @@
"Kanji"
],
"windows": [
- "KANJI"
+ "HANJA, KANJI"
],
"android": [
"KANA"
@@ -3425,7 +3431,7 @@
},
"Katakana": {
"name": "Katakana",
- "value": 68719478554,
+ "value": 4294969114,
"names": {
"web": [
"Katakana"
@@ -3442,7 +3448,7 @@
},
"Romaji": {
"name": "Romaji",
- "value": 68719478555,
+ "value": 4294969115,
"names": {
"web": [
"Romaji"
@@ -3459,7 +3465,7 @@
},
"Zenkaku": {
"name": "Zenkaku",
- "value": 68719478556,
+ "value": 4294969116,
"names": {
"web": [
"Zenkaku"
@@ -3476,7 +3482,7 @@
},
"ZenkakuHankaku": {
"name": "ZenkakuHankaku",
- "value": 68719478557,
+ "value": 4294969117,
"names": {
"web": [
"ZenkakuHankaku"
@@ -3499,7 +3505,7 @@
},
"F1": {
"name": "F1",
- "value": 68719478785,
+ "value": 4294969345,
"names": {
"web": [
"F1"
@@ -3539,13 +3545,13 @@
131
],
"fuchsia": [
- 4295426106
+ 77309870138
]
}
},
"F2": {
"name": "F2",
- "value": 68719478786,
+ "value": 4294969346,
"names": {
"web": [
"F2"
@@ -3585,13 +3591,13 @@
132
],
"fuchsia": [
- 4295426107
+ 77309870139
]
}
},
"F3": {
"name": "F3",
- "value": 68719478787,
+ "value": 4294969347,
"names": {
"web": [
"F3"
@@ -3631,13 +3637,13 @@
133
],
"fuchsia": [
- 4295426108
+ 77309870140
]
}
},
"F4": {
"name": "F4",
- "value": 68719478788,
+ "value": 4294969348,
"names": {
"web": [
"F4"
@@ -3677,13 +3683,13 @@
134
],
"fuchsia": [
- 4295426109
+ 77309870141
]
}
},
"F5": {
"name": "F5",
- "value": 68719478789,
+ "value": 4294969349,
"names": {
"web": [
"F5"
@@ -3721,13 +3727,13 @@
135
],
"fuchsia": [
- 4295426110
+ 77309870142
]
}
},
"F6": {
"name": "F6",
- "value": 68719478790,
+ "value": 4294969350,
"names": {
"web": [
"F6"
@@ -3765,13 +3771,13 @@
136
],
"fuchsia": [
- 4295426111
+ 77309870143
]
}
},
"F7": {
"name": "F7",
- "value": 68719478791,
+ "value": 4294969351,
"names": {
"web": [
"F7"
@@ -3809,13 +3815,13 @@
137
],
"fuchsia": [
- 4295426112
+ 77309870144
]
}
},
"F8": {
"name": "F8",
- "value": 68719478792,
+ "value": 4294969352,
"names": {
"web": [
"F8"
@@ -3853,13 +3859,13 @@
138
],
"fuchsia": [
- 4295426113
+ 77309870145
]
}
},
"F9": {
"name": "F9",
- "value": 68719478793,
+ "value": 4294969353,
"names": {
"web": [
"F9"
@@ -3897,13 +3903,13 @@
139
],
"fuchsia": [
- 4295426114
+ 77309870146
]
}
},
"F10": {
"name": "F10",
- "value": 68719478794,
+ "value": 4294969354,
"names": {
"web": [
"F10"
@@ -3941,13 +3947,13 @@
140
],
"fuchsia": [
- 4295426115
+ 77309870147
]
}
},
"F11": {
"name": "F11",
- "value": 68719478795,
+ "value": 4294969355,
"names": {
"web": [
"F11"
@@ -3985,13 +3991,13 @@
141
],
"fuchsia": [
- 4295426116
+ 77309870148
]
}
},
"F12": {
"name": "F12",
- "value": 68719478796,
+ "value": 4294969356,
"names": {
"web": [
"F12"
@@ -4029,13 +4035,13 @@
142
],
"fuchsia": [
- 4295426117
+ 77309870149
]
}
},
"F13": {
"name": "F13",
- "value": 68719478797,
+ "value": 4294969357,
"names": {
"web": [
"F13"
@@ -4067,13 +4073,13 @@
124
],
"fuchsia": [
- 4295426152
+ 77309870184
]
}
},
"F14": {
"name": "F14",
- "value": 68719478798,
+ "value": 4294969358,
"names": {
"web": [
"F14"
@@ -4105,13 +4111,13 @@
125
],
"fuchsia": [
- 4295426153
+ 77309870185
]
}
},
"F15": {
"name": "F15",
- "value": 68719478799,
+ "value": 4294969359,
"names": {
"web": [
"F15"
@@ -4143,13 +4149,13 @@
126
],
"fuchsia": [
- 4295426154
+ 77309870186
]
}
},
"F16": {
"name": "F16",
- "value": 68719478800,
+ "value": 4294969360,
"names": {
"web": [
"F16"
@@ -4181,13 +4187,13 @@
127
],
"fuchsia": [
- 4295426155
+ 77309870187
]
}
},
"F17": {
"name": "F17",
- "value": 68719478801,
+ "value": 4294969361,
"names": {
"web": [
"F17"
@@ -4219,13 +4225,13 @@
128
],
"fuchsia": [
- 4295426156
+ 77309870188
]
}
},
"F18": {
"name": "F18",
- "value": 68719478802,
+ "value": 4294969362,
"names": {
"web": [
"F18"
@@ -4257,13 +4263,13 @@
129
],
"fuchsia": [
- 4295426157
+ 77309870189
]
}
},
"F19": {
"name": "F19",
- "value": 68719478803,
+ "value": 4294969363,
"names": {
"web": [
"F19"
@@ -4295,13 +4301,13 @@
130
],
"fuchsia": [
- 4295426158
+ 77309870190
]
}
},
"F20": {
"name": "F20",
- "value": 68719478804,
+ "value": 4294969364,
"names": {
"web": [
"F20"
@@ -4333,13 +4339,13 @@
131
],
"fuchsia": [
- 4295426159
+ 77309870191
]
}
},
"F21": {
"name": "F21",
- "value": 68719478805,
+ "value": 4294969365,
"names": {
"web": [
"F21"
@@ -4359,13 +4365,13 @@
132
],
"fuchsia": [
- 4295426160
+ 77309870192
]
}
},
"F22": {
"name": "F22",
- "value": 68719478806,
+ "value": 4294969366,
"names": {
"web": [
"F22"
@@ -4385,13 +4391,13 @@
133
],
"fuchsia": [
- 4295426161
+ 77309870193
]
}
},
"F23": {
"name": "F23",
- "value": 68719478807,
+ "value": 4294969367,
"names": {
"web": [
"F23"
@@ -4411,13 +4417,13 @@
134
],
"fuchsia": [
- 4295426162
+ 77309870194
]
}
},
"F24": {
"name": "F24",
- "value": 68719478808,
+ "value": 4294969368,
"names": {
"web": [
"F24"
@@ -4437,13 +4443,13 @@
135
],
"fuchsia": [
- 4295426163
+ 77309870195
]
}
},
"Soft1": {
"name": "Soft1",
- "value": 68719479041,
+ "value": 4294969601,
"names": {
"web": [
"Soft1"
@@ -4452,7 +4458,7 @@
},
"Soft2": {
"name": "Soft2",
- "value": 68719479042,
+ "value": 4294969602,
"names": {
"web": [
"Soft2"
@@ -4461,7 +4467,7 @@
},
"Soft3": {
"name": "Soft3",
- "value": 68719479043,
+ "value": 4294969603,
"names": {
"web": [
"Soft3"
@@ -4470,7 +4476,7 @@
},
"Soft4": {
"name": "Soft4",
- "value": 68719479044,
+ "value": 4294969604,
"names": {
"web": [
"Soft4"
@@ -4479,7 +4485,7 @@
},
"Soft5": {
"name": "Soft5",
- "value": 68719479045,
+ "value": 4294969605,
"names": {
"web": [
"Soft5"
@@ -4488,7 +4494,7 @@
},
"Soft6": {
"name": "Soft6",
- "value": 68719479046,
+ "value": 4294969606,
"names": {
"web": [
"Soft6"
@@ -4497,7 +4503,7 @@
},
"Soft7": {
"name": "Soft7",
- "value": 68719479047,
+ "value": 4294969607,
"names": {
"web": [
"Soft7"
@@ -4506,7 +4512,7 @@
},
"Soft8": {
"name": "Soft8",
- "value": 68719479048,
+ "value": 4294969608,
"names": {
"web": [
"Soft8"
@@ -4515,7 +4521,7 @@
},
"Close": {
"name": "Close",
- "value": 68719479297,
+ "value": 4294969857,
"names": {
"web": [
"Close"
@@ -4535,13 +4541,13 @@
128
],
"fuchsia": [
- 4295754243
+ 77310198275
]
}
},
"MailForward": {
"name": "MailForward",
- "value": 68719479298,
+ "value": 4294969858,
"names": {
"web": [
"MailForward"
@@ -4555,13 +4561,13 @@
269025168
],
"fuchsia": [
- 4295754379
+ 77310198411
]
}
},
"MailReply": {
"name": "MailReply",
- "value": 68719479299,
+ "value": 4294969859,
"names": {
"web": [
"MailReply"
@@ -4575,13 +4581,13 @@
269025138
],
"fuchsia": [
- 4295754377
+ 77310198409
]
}
},
"MailSend": {
"name": "MailSend",
- "value": 68719479300,
+ "value": 4294969860,
"names": {
"web": [
"MailSend"
@@ -4595,13 +4601,13 @@
269025147
],
"fuchsia": [
- 4295754380
+ 77310198412
]
}
},
"MediaPlayPause": {
"name": "MediaPlayPause",
- "value": 68719479301,
+ "value": 4294969861,
"names": {
"web": [
"MediaPlayPause"
@@ -4621,13 +4627,13 @@
85
],
"fuchsia": [
- 4295753933
+ 77310197965
]
}
},
"MediaStop": {
"name": "MediaStop",
- "value": 68719479303,
+ "value": 4294969863,
"names": {
"web": [
"MediaStop"
@@ -4653,13 +4659,13 @@
86
],
"fuchsia": [
- 4295753911
+ 77310197943
]
}
},
"MediaTrackNext": {
"name": "MediaTrackNext",
- "value": 68719479304,
+ "value": 4294969864,
"names": {
"web": [
"MediaTrackNext"
@@ -4679,13 +4685,13 @@
87
],
"fuchsia": [
- 4295753909
+ 77310197941
]
}
},
"MediaTrackPrevious": {
"name": "MediaTrackPrevious",
- "value": 68719479305,
+ "value": 4294969865,
"names": {
"web": [
"MediaTrackPrevious"
@@ -4705,13 +4711,13 @@
88
],
"fuchsia": [
- 4295753910
+ 77310197942
]
}
},
"New": {
"name": "New",
- "value": 68719479306,
+ "value": 4294969866,
"names": {
"web": [
"New"
@@ -4725,13 +4731,13 @@
269025128
],
"fuchsia": [
- 4295754241
+ 77310198273
]
}
},
"Open": {
"name": "Open",
- "value": 68719479307,
+ "value": 4294969867,
"names": {
"web": [
"Open"
@@ -4745,13 +4751,13 @@
269025131
],
"fuchsia": [
- 4295426164
+ 77309870196
]
}
},
"Print": {
"name": "Print",
- "value": 68719479308,
+ "value": 4294969868,
"names": {
"web": [
"Print"
@@ -4771,13 +4777,13 @@
42
],
"fuchsia": [
- 4295754248
+ 77310198280
]
}
},
"Save": {
"name": "Save",
- "value": 68719479309,
+ "value": 4294969869,
"names": {
"web": [
"Save"
@@ -4791,13 +4797,13 @@
269025143
],
"fuchsia": [
- 4295754247
+ 77310198279
]
}
},
"SpellCheck": {
"name": "SpellCheck",
- "value": 68719479310,
+ "value": 4294969870,
"names": {
"web": [
"SpellCheck"
@@ -4811,13 +4817,13 @@
269025148
],
"fuchsia": [
- 4295754155
+ 77310198187
]
}
},
"AudioVolumeDown": {
"name": "AudioVolumeDown",
- "value": 68719479311,
+ "value": 4294969871,
"names": {
"web": [
"AudioVolumeDown"
@@ -4855,13 +4861,13 @@
25
],
"fuchsia": [
- 4295426177
+ 77309870209
]
}
},
"AudioVolumeUp": {
"name": "AudioVolumeUp",
- "value": 68719479312,
+ "value": 4294969872,
"names": {
"web": [
"AudioVolumeUp"
@@ -4899,13 +4905,13 @@
24
],
"fuchsia": [
- 4295426176
+ 77309870208
]
}
},
"AudioVolumeMute": {
"name": "AudioVolumeMute",
- "value": 68719479313,
+ "value": 4294969873,
"names": {
"web": [
"AudioVolumeMute"
@@ -4943,13 +4949,13 @@
164
],
"fuchsia": [
- 4295426175
+ 77309870207
]
}
},
"LaunchApplication2": {
"name": "LaunchApplication2",
- "value": 68719479553,
+ "value": 4294970113,
"names": {
"web": [
"LaunchApplication2"
@@ -4958,7 +4964,7 @@
},
"LaunchCalendar": {
"name": "LaunchCalendar",
- "value": 68719479554,
+ "value": 4294970114,
"names": {
"web": [
"LaunchCalendar"
@@ -4978,13 +4984,13 @@
208
],
"fuchsia": [
- 4295754126
+ 77310198158
]
}
},
"LaunchMail": {
"name": "LaunchMail",
- "value": 68719479555,
+ "value": 4294970115,
"names": {
"web": [
"LaunchMail"
@@ -5010,13 +5016,13 @@
65
],
"fuchsia": [
- 4295754122
+ 77310198154
]
}
},
"LaunchMediaPlayer": {
"name": "LaunchMediaPlayer",
- "value": 68719479556,
+ "value": 4294970116,
"names": {
"web": [
"LaunchMediaPlayer"
@@ -5025,7 +5031,7 @@
},
"LaunchMusicPlayer": {
"name": "LaunchMusicPlayer",
- "value": 68719479557,
+ "value": 4294970117,
"names": {
"web": [
"LaunchMusicPlayer"
@@ -5042,7 +5048,7 @@
},
"LaunchApplication1": {
"name": "LaunchApplication1",
- "value": 68719479558,
+ "value": 4294970118,
"names": {
"web": [
"LaunchApplication1"
@@ -5051,7 +5057,7 @@
},
"LaunchScreenSaver": {
"name": "LaunchScreenSaver",
- "value": 68719479559,
+ "value": 4294970119,
"names": {
"web": [
"LaunchScreenSaver"
@@ -5065,13 +5071,13 @@
269025069
],
"fuchsia": [
- 4295754161
+ 77310198193
]
}
},
"LaunchSpreadsheet": {
"name": "LaunchSpreadsheet",
- "value": 68719479560,
+ "value": 4294970120,
"names": {
"web": [
"LaunchSpreadsheet"
@@ -5079,13 +5085,13 @@
},
"values": {
"fuchsia": [
- 4295754118
+ 77310198150
]
}
},
"LaunchWebBrowser": {
"name": "LaunchWebBrowser",
- "value": 68719479561,
+ "value": 4294970121,
"names": {
"web": [
"LaunchWebBrowser"
@@ -5102,7 +5108,7 @@
},
"LaunchWebCam": {
"name": "LaunchWebCam",
- "value": 68719479562,
+ "value": 4294970122,
"names": {
"web": [
"LaunchWebCam"
@@ -5111,7 +5117,7 @@
},
"LaunchWordProcessor": {
"name": "LaunchWordProcessor",
- "value": 68719479563,
+ "value": 4294970123,
"names": {
"web": [
"LaunchWordProcessor"
@@ -5119,13 +5125,13 @@
},
"values": {
"fuchsia": [
- 4295754116
+ 77310198148
]
}
},
"LaunchContacts": {
"name": "LaunchContacts",
- "value": 68719479564,
+ "value": 4294970124,
"names": {
"web": [
"LaunchContacts"
@@ -5139,13 +5145,13 @@
207
],
"fuchsia": [
- 4295754125
+ 77310198157
]
}
},
"LaunchPhone": {
"name": "LaunchPhone",
- "value": 68719479565,
+ "value": 4294970125,
"names": {
"web": [
"LaunchPhone"
@@ -5159,13 +5165,13 @@
269025134
],
"fuchsia": [
- 4295753868
+ 77310197900
]
}
},
"LaunchAssistant": {
"name": "LaunchAssistant",
- "value": 68719479566,
+ "value": 4294970126,
"names": {
"web": [
"LaunchAssistant"
@@ -5179,13 +5185,13 @@
219
],
"fuchsia": [
- 4295754187
+ 77310198219
]
}
},
"LaunchControlPanel": {
"name": "LaunchControlPanel",
- "value": 68719479567,
+ "value": 4294970127,
"names": {
"web": [
"LaunchControlPanel"
@@ -5193,13 +5199,13 @@
},
"values": {
"fuchsia": [
- 4295754143
+ 77310198175
]
}
},
"BrowserBack": {
"name": "BrowserBack",
- "value": 68719479809,
+ "value": 4294970369,
"names": {
"web": [
"BrowserBack"
@@ -5219,13 +5225,13 @@
166
],
"fuchsia": [
- 4295754276
+ 77310198308
]
}
},
"BrowserFavorites": {
"name": "BrowserFavorites",
- "value": 68719479810,
+ "value": 4294970370,
"names": {
"web": [
"BrowserFavorites"
@@ -5251,13 +5257,13 @@
174
],
"fuchsia": [
- 4295754282
+ 77310198314
]
}
},
"BrowserForward": {
"name": "BrowserForward",
- "value": 68719479811,
+ "value": 4294970371,
"names": {
"web": [
"BrowserForward"
@@ -5283,13 +5289,13 @@
125
],
"fuchsia": [
- 4295754277
+ 77310198309
]
}
},
"BrowserHome": {
"name": "BrowserHome",
- "value": 68719479812,
+ "value": 4294970372,
"names": {
"web": [
"BrowserHome"
@@ -5309,13 +5315,13 @@
172
],
"fuchsia": [
- 4295754275
+ 77310198307
]
}
},
"BrowserRefresh": {
"name": "BrowserRefresh",
- "value": 68719479813,
+ "value": 4294970373,
"names": {
"web": [
"BrowserRefresh"
@@ -5335,13 +5341,13 @@
168
],
"fuchsia": [
- 4295754279
+ 77310198311
]
}
},
"BrowserSearch": {
"name": "BrowserSearch",
- "value": 68719479814,
+ "value": 4294970374,
"names": {
"web": [
"BrowserSearch"
@@ -5367,13 +5373,13 @@
84
],
"fuchsia": [
- 4295754273
+ 77310198305
]
}
},
"BrowserStop": {
"name": "BrowserStop",
- "value": 68719479815,
+ "value": 4294970375,
"names": {
"web": [
"BrowserStop"
@@ -5393,13 +5399,13 @@
169
],
"fuchsia": [
- 4295754278
+ 77310198310
]
}
},
"AudioBalanceLeft": {
"name": "AudioBalanceLeft",
- "value": 68719480065,
+ "value": 4294970625,
"names": {
"web": [
"AudioBalanceLeft"
@@ -5408,7 +5414,7 @@
},
"AudioBalanceRight": {
"name": "AudioBalanceRight",
- "value": 68719480066,
+ "value": 4294970626,
"names": {
"web": [
"AudioBalanceRight"
@@ -5417,7 +5423,7 @@
},
"AudioBassBoostDown": {
"name": "AudioBassBoostDown",
- "value": 68719480067,
+ "value": 4294970627,
"names": {
"web": [
"AudioBassBoostDown"
@@ -5426,7 +5432,7 @@
},
"AudioBassBoostUp": {
"name": "AudioBassBoostUp",
- "value": 68719480068,
+ "value": 4294970628,
"names": {
"web": [
"AudioBassBoostUp"
@@ -5435,7 +5441,7 @@
},
"AudioFaderFront": {
"name": "AudioFaderFront",
- "value": 68719480069,
+ "value": 4294970629,
"names": {
"web": [
"AudioFaderFront"
@@ -5444,7 +5450,7 @@
},
"AudioFaderRear": {
"name": "AudioFaderRear",
- "value": 68719480070,
+ "value": 4294970630,
"names": {
"web": [
"AudioFaderRear"
@@ -5453,7 +5459,7 @@
},
"AudioSurroundModeNext": {
"name": "AudioSurroundModeNext",
- "value": 68719480071,
+ "value": 4294970631,
"names": {
"web": [
"AudioSurroundModeNext"
@@ -5462,7 +5468,7 @@
},
"AVRInput": {
"name": "AVRInput",
- "value": 68719480072,
+ "value": 4294970632,
"names": {
"web": [
"AVRInput"
@@ -5479,7 +5485,7 @@
},
"AVRPower": {
"name": "AVRPower",
- "value": 68719480073,
+ "value": 4294970633,
"names": {
"web": [
"AVRPower"
@@ -5496,7 +5502,7 @@
},
"ChannelDown": {
"name": "ChannelDown",
- "value": 68719480074,
+ "value": 4294970634,
"names": {
"web": [
"ChannelDown"
@@ -5510,13 +5516,13 @@
167
],
"fuchsia": [
- 4295753885
+ 77310197917
]
}
},
"ChannelUp": {
"name": "ChannelUp",
- "value": 68719480075,
+ "value": 4294970635,
"names": {
"web": [
"ChannelUp"
@@ -5530,13 +5536,13 @@
166
],
"fuchsia": [
- 4295753884
+ 77310197916
]
}
},
"ColorF0Red": {
"name": "ColorF0Red",
- "value": 68719480076,
+ "value": 4294970636,
"names": {
"web": [
"ColorF0Red"
@@ -5553,7 +5559,7 @@
},
"ColorF1Green": {
"name": "ColorF1Green",
- "value": 68719480077,
+ "value": 4294970637,
"names": {
"web": [
"ColorF1Green"
@@ -5570,7 +5576,7 @@
},
"ColorF2Yellow": {
"name": "ColorF2Yellow",
- "value": 68719480078,
+ "value": 4294970638,
"names": {
"web": [
"ColorF2Yellow"
@@ -5587,7 +5593,7 @@
},
"ColorF3Blue": {
"name": "ColorF3Blue",
- "value": 68719480079,
+ "value": 4294970639,
"names": {
"web": [
"ColorF3Blue"
@@ -5604,7 +5610,7 @@
},
"ColorF4Grey": {
"name": "ColorF4Grey",
- "value": 68719480080,
+ "value": 4294970640,
"names": {
"web": [
"ColorF4Grey"
@@ -5613,7 +5619,7 @@
},
"ColorF5Brown": {
"name": "ColorF5Brown",
- "value": 68719480081,
+ "value": 4294970641,
"names": {
"web": [
"ColorF5Brown"
@@ -5622,7 +5628,7 @@
},
"ClosedCaptionToggle": {
"name": "ClosedCaptionToggle",
- "value": 68719480082,
+ "value": 4294970642,
"names": {
"web": [
"ClosedCaptionToggle"
@@ -5636,13 +5642,13 @@
175
],
"fuchsia": [
- 4295753825
+ 77310197857
]
}
},
"Dimmer": {
"name": "Dimmer",
- "value": 68719480083,
+ "value": 4294970643,
"names": {
"web": [
"Dimmer"
@@ -5651,7 +5657,7 @@
},
"DisplaySwap": {
"name": "DisplaySwap",
- "value": 68719480084,
+ "value": 4294970644,
"names": {
"web": [
"DisplaySwap"
@@ -5660,7 +5666,7 @@
},
"Exit": {
"name": "Exit",
- "value": 68719480085,
+ "value": 4294970645,
"names": {
"web": [
"Exit"
@@ -5668,13 +5674,13 @@
},
"values": {
"fuchsia": [
- 4295753876
+ 77310197908
]
}
},
"FavoriteClear0": {
"name": "FavoriteClear0",
- "value": 68719480086,
+ "value": 4294970646,
"names": {
"web": [
"FavoriteClear0"
@@ -5683,7 +5689,7 @@
},
"FavoriteClear1": {
"name": "FavoriteClear1",
- "value": 68719480087,
+ "value": 4294970647,
"names": {
"web": [
"FavoriteClear1"
@@ -5692,7 +5698,7 @@
},
"FavoriteClear2": {
"name": "FavoriteClear2",
- "value": 68719480088,
+ "value": 4294970648,
"names": {
"web": [
"FavoriteClear2"
@@ -5701,7 +5707,7 @@
},
"FavoriteClear3": {
"name": "FavoriteClear3",
- "value": 68719480089,
+ "value": 4294970649,
"names": {
"web": [
"FavoriteClear3"
@@ -5710,7 +5716,7 @@
},
"FavoriteRecall0": {
"name": "FavoriteRecall0",
- "value": 68719480090,
+ "value": 4294970650,
"names": {
"web": [
"FavoriteRecall0"
@@ -5719,7 +5725,7 @@
},
"FavoriteRecall1": {
"name": "FavoriteRecall1",
- "value": 68719480091,
+ "value": 4294970651,
"names": {
"web": [
"FavoriteRecall1"
@@ -5728,7 +5734,7 @@
},
"FavoriteRecall2": {
"name": "FavoriteRecall2",
- "value": 68719480092,
+ "value": 4294970652,
"names": {
"web": [
"FavoriteRecall2"
@@ -5737,7 +5743,7 @@
},
"FavoriteRecall3": {
"name": "FavoriteRecall3",
- "value": 68719480093,
+ "value": 4294970653,
"names": {
"web": [
"FavoriteRecall3"
@@ -5746,7 +5752,7 @@
},
"FavoriteStore0": {
"name": "FavoriteStore0",
- "value": 68719480094,
+ "value": 4294970654,
"names": {
"web": [
"FavoriteStore0"
@@ -5755,7 +5761,7 @@
},
"FavoriteStore1": {
"name": "FavoriteStore1",
- "value": 68719480095,
+ "value": 4294970655,
"names": {
"web": [
"FavoriteStore1"
@@ -5764,7 +5770,7 @@
},
"FavoriteStore2": {
"name": "FavoriteStore2",
- "value": 68719480096,
+ "value": 4294970656,
"names": {
"web": [
"FavoriteStore2"
@@ -5773,7 +5779,7 @@
},
"FavoriteStore3": {
"name": "FavoriteStore3",
- "value": 68719480097,
+ "value": 4294970657,
"names": {
"web": [
"FavoriteStore3"
@@ -5782,7 +5788,7 @@
},
"Guide": {
"name": "Guide",
- "value": 68719480098,
+ "value": 4294970658,
"names": {
"web": [
"Guide"
@@ -5799,7 +5805,7 @@
},
"GuideNextDay": {
"name": "GuideNextDay",
- "value": 68719480099,
+ "value": 4294970659,
"names": {
"web": [
"GuideNextDay"
@@ -5808,7 +5814,7 @@
},
"GuidePreviousDay": {
"name": "GuidePreviousDay",
- "value": 68719480100,
+ "value": 4294970660,
"names": {
"web": [
"GuidePreviousDay"
@@ -5817,7 +5823,7 @@
},
"Info": {
"name": "Info",
- "value": 68719480101,
+ "value": 4294970661,
"names": {
"web": [
"Info"
@@ -5831,13 +5837,13 @@
165
],
"fuchsia": [
- 4295753824
+ 77310197856
]
}
},
"InstantReplay": {
"name": "InstantReplay",
- "value": 68719480102,
+ "value": 4294970662,
"names": {
"web": [
"InstantReplay"
@@ -5846,7 +5852,7 @@
},
"Link": {
"name": "Link",
- "value": 68719480103,
+ "value": 4294970663,
"names": {
"web": [
"Link"
@@ -5855,7 +5861,7 @@
},
"ListProgram": {
"name": "ListProgram",
- "value": 68719480104,
+ "value": 4294970664,
"names": {
"web": [
"ListProgram"
@@ -5864,7 +5870,7 @@
},
"LiveContent": {
"name": "LiveContent",
- "value": 68719480105,
+ "value": 4294970665,
"names": {
"web": [
"LiveContent"
@@ -5873,7 +5879,7 @@
},
"Lock": {
"name": "Lock",
- "value": 68719480106,
+ "value": 4294970666,
"names": {
"web": [
"Lock"
@@ -5882,7 +5888,7 @@
},
"MediaApps": {
"name": "MediaApps",
- "value": 68719480107,
+ "value": 4294970667,
"names": {
"web": [
"MediaApps"
@@ -5891,7 +5897,7 @@
},
"MediaFastForward": {
"name": "MediaFastForward",
- "value": 68719480108,
+ "value": 4294970668,
"names": {
"web": [
"MediaFastForward"
@@ -5911,13 +5917,13 @@
90
],
"fuchsia": [
- 4295753907
+ 77310197939
]
}
},
"MediaLast": {
"name": "MediaLast",
- "value": 68719480109,
+ "value": 4294970669,
"names": {
"web": [
"MediaLast"
@@ -5931,13 +5937,13 @@
229
],
"fuchsia": [
- 4295753859
+ 77310197891
]
}
},
"MediaPause": {
"name": "MediaPause",
- "value": 68719480110,
+ "value": 4294970670,
"names": {
"web": [
"MediaPause"
@@ -5957,13 +5963,13 @@
127
],
"fuchsia": [
- 4295753905
+ 77310197937
]
}
},
"MediaPlay": {
"name": "MediaPlay",
- "value": 68719480111,
+ "value": 4294970671,
"names": {
"web": [
"MediaPlay"
@@ -5985,13 +5991,13 @@
126
],
"fuchsia": [
- 4295753904
+ 77310197936
]
}
},
"MediaRecord": {
"name": "MediaRecord",
- "value": 68719480112,
+ "value": 4294970672,
"names": {
"web": [
"MediaRecord"
@@ -6011,13 +6017,13 @@
130
],
"fuchsia": [
- 4295753906
+ 77310197938
]
}
},
"MediaRewind": {
"name": "MediaRewind",
- "value": 68719480113,
+ "value": 4294970673,
"names": {
"web": [
"MediaRewind"
@@ -6037,13 +6043,13 @@
89
],
"fuchsia": [
- 4295753908
+ 77310197940
]
}
},
"MediaSkip": {
"name": "MediaSkip",
- "value": 68719480114,
+ "value": 4294970674,
"names": {
"web": [
"MediaSkip"
@@ -6052,7 +6058,7 @@
},
"NextFavoriteChannel": {
"name": "NextFavoriteChannel",
- "value": 68719480115,
+ "value": 4294970675,
"names": {
"web": [
"NextFavoriteChannel"
@@ -6061,7 +6067,7 @@
},
"NextUserProfile": {
"name": "NextUserProfile",
- "value": 68719480116,
+ "value": 4294970676,
"names": {
"web": [
"NextUserProfile"
@@ -6070,7 +6076,7 @@
},
"OnDemand": {
"name": "OnDemand",
- "value": 68719480117,
+ "value": 4294970677,
"names": {
"web": [
"OnDemand"
@@ -6079,7 +6085,7 @@
},
"PInPDown": {
"name": "PInPDown",
- "value": 68719480118,
+ "value": 4294970678,
"names": {
"web": [
"PinPDown"
@@ -6088,7 +6094,7 @@
},
"PInPMove": {
"name": "PInPMove",
- "value": 68719480119,
+ "value": 4294970679,
"names": {
"web": [
"PinPMove"
@@ -6097,7 +6103,7 @@
},
"PInPToggle": {
"name": "PInPToggle",
- "value": 68719480120,
+ "value": 4294970680,
"names": {
"web": [
"PinPToggle"
@@ -6106,7 +6112,7 @@
},
"PInPUp": {
"name": "PInPUp",
- "value": 68719480121,
+ "value": 4294970681,
"names": {
"web": [
"PinPUp"
@@ -6115,7 +6121,7 @@
},
"PlaySpeedDown": {
"name": "PlaySpeedDown",
- "value": 68719480122,
+ "value": 4294970682,
"names": {
"web": [
"PlaySpeedDown"
@@ -6124,7 +6130,7 @@
},
"PlaySpeedReset": {
"name": "PlaySpeedReset",
- "value": 68719480123,
+ "value": 4294970683,
"names": {
"web": [
"PlaySpeedReset"
@@ -6133,7 +6139,7 @@
},
"PlaySpeedUp": {
"name": "PlaySpeedUp",
- "value": 68719480124,
+ "value": 4294970684,
"names": {
"web": [
"PlaySpeedUp"
@@ -6142,7 +6148,7 @@
},
"RandomToggle": {
"name": "RandomToggle",
- "value": 68719480125,
+ "value": 4294970685,
"names": {
"web": [
"RandomToggle"
@@ -6151,7 +6157,7 @@
},
"RcLowBattery": {
"name": "RcLowBattery",
- "value": 68719480126,
+ "value": 4294970686,
"names": {
"web": [
"RcLowBattery"
@@ -6160,7 +6166,7 @@
},
"RecordSpeedNext": {
"name": "RecordSpeedNext",
- "value": 68719480127,
+ "value": 4294970687,
"names": {
"web": [
"RecordSpeedNext"
@@ -6169,7 +6175,7 @@
},
"RfBypass": {
"name": "RfBypass",
- "value": 68719480128,
+ "value": 4294970688,
"names": {
"web": [
"RfBypass"
@@ -6178,7 +6184,7 @@
},
"ScanChannelsToggle": {
"name": "ScanChannelsToggle",
- "value": 68719480129,
+ "value": 4294970689,
"names": {
"web": [
"ScanChannelsToggle"
@@ -6187,7 +6193,7 @@
},
"ScreenModeNext": {
"name": "ScreenModeNext",
- "value": 68719480130,
+ "value": 4294970690,
"names": {
"web": [
"ScreenModeNext"
@@ -6196,7 +6202,7 @@
},
"Settings": {
"name": "Settings",
- "value": 68719480131,
+ "value": 4294970691,
"names": {
"web": [
"Settings"
@@ -6213,7 +6219,7 @@
},
"SplitScreenToggle": {
"name": "SplitScreenToggle",
- "value": 68719480132,
+ "value": 4294970692,
"names": {
"web": [
"SplitScreenToggle"
@@ -6222,7 +6228,7 @@
},
"STBInput": {
"name": "STBInput",
- "value": 68719480133,
+ "value": 4294970693,
"names": {
"web": [
"STBInput"
@@ -6239,7 +6245,7 @@
},
"STBPower": {
"name": "STBPower",
- "value": 68719480134,
+ "value": 4294970694,
"names": {
"web": [
"STBPower"
@@ -6256,7 +6262,7 @@
},
"Subtitle": {
"name": "Subtitle",
- "value": 68719480135,
+ "value": 4294970695,
"names": {
"web": [
"Subtitle"
@@ -6265,7 +6271,7 @@
},
"Teletext": {
"name": "Teletext",
- "value": 68719480136,
+ "value": 4294970696,
"names": {
"web": [
"Teletext"
@@ -6282,7 +6288,7 @@
},
"TV": {
"name": "TV",
- "value": 68719480137,
+ "value": 4294970697,
"names": {
"web": [
"TV"
@@ -6299,7 +6305,7 @@
},
"TVInput": {
"name": "TVInput",
- "value": 68719480138,
+ "value": 4294970698,
"names": {
"web": [
"TVInput"
@@ -6316,7 +6322,7 @@
},
"TVPower": {
"name": "TVPower",
- "value": 68719480139,
+ "value": 4294970699,
"names": {
"web": [
"TVPower"
@@ -6333,7 +6339,7 @@
},
"VideoModeNext": {
"name": "VideoModeNext",
- "value": 68719480140,
+ "value": 4294970700,
"names": {
"web": [
"VideoModeNext"
@@ -6342,7 +6348,7 @@
},
"Wink": {
"name": "Wink",
- "value": 68719480141,
+ "value": 4294970701,
"names": {
"web": [
"Wink"
@@ -6351,7 +6357,7 @@
},
"ZoomToggle": {
"name": "ZoomToggle",
- "value": 68719480142,
+ "value": 4294970702,
"names": {
"web": [
"ZoomToggle"
@@ -6365,13 +6371,13 @@
255
],
"fuchsia": [
- 4295754290
+ 77310198322
]
}
},
"DVR": {
"name": "DVR",
- "value": 68719480143,
+ "value": 4294970703,
"names": {
"web": [
"DVR"
@@ -6388,7 +6394,7 @@
},
"MediaAudioTrack": {
"name": "MediaAudioTrack",
- "value": 68719480144,
+ "value": 4294970704,
"names": {
"web": [
"MediaAudioTrack"
@@ -6405,7 +6411,7 @@
},
"MediaSkipBackward": {
"name": "MediaSkipBackward",
- "value": 68719480145,
+ "value": 4294970705,
"names": {
"web": [
"MediaSkipBackward"
@@ -6422,7 +6428,7 @@
},
"MediaSkipForward": {
"name": "MediaSkipForward",
- "value": 68719480146,
+ "value": 4294970706,
"names": {
"web": [
"MediaSkipForward"
@@ -6439,7 +6445,7 @@
},
"MediaStepBackward": {
"name": "MediaStepBackward",
- "value": 68719480147,
+ "value": 4294970707,
"names": {
"web": [
"MediaStepBackward"
@@ -6456,7 +6462,7 @@
},
"MediaStepForward": {
"name": "MediaStepForward",
- "value": 68719480148,
+ "value": 4294970708,
"names": {
"web": [
"MediaStepForward"
@@ -6473,7 +6479,7 @@
},
"MediaTopMenu": {
"name": "MediaTopMenu",
- "value": 68719480149,
+ "value": 4294970709,
"names": {
"web": [
"MediaTopMenu"
@@ -6490,7 +6496,7 @@
},
"NavigateIn": {
"name": "NavigateIn",
- "value": 68719480150,
+ "value": 4294970710,
"names": {
"web": [
"NavigateIn"
@@ -6507,7 +6513,7 @@
},
"NavigateNext": {
"name": "NavigateNext",
- "value": 68719480151,
+ "value": 4294970711,
"names": {
"web": [
"NavigateNext"
@@ -6524,7 +6530,7 @@
},
"NavigateOut": {
"name": "NavigateOut",
- "value": 68719480152,
+ "value": 4294970712,
"names": {
"web": [
"NavigateOut"
@@ -6541,7 +6547,7 @@
},
"NavigatePrevious": {
"name": "NavigatePrevious",
- "value": 68719480153,
+ "value": 4294970713,
"names": {
"web": [
"NavigatePrevious"
@@ -6558,7 +6564,7 @@
},
"Pairing": {
"name": "Pairing",
- "value": 68719480154,
+ "value": 4294970714,
"names": {
"web": [
"Pairing"
@@ -6575,7 +6581,7 @@
},
"MediaClose": {
"name": "MediaClose",
- "value": 68719480155,
+ "value": 4294970715,
"names": {
"web": [
"MediaClose"
@@ -6584,7 +6590,7 @@
},
"AudioBassBoostToggle": {
"name": "AudioBassBoostToggle",
- "value": 68719480322,
+ "value": 4294970882,
"names": {
"web": [
"AudioBassBoostToggle"
@@ -6593,7 +6599,7 @@
},
"AudioTrebleDown": {
"name": "AudioTrebleDown",
- "value": 68719480324,
+ "value": 4294970884,
"names": {
"web": [
"AudioTrebleDown"
@@ -6602,7 +6608,7 @@
},
"AudioTrebleUp": {
"name": "AudioTrebleUp",
- "value": 68719480325,
+ "value": 4294970885,
"names": {
"web": [
"AudioTrebleUp"
@@ -6611,7 +6617,7 @@
},
"MicrophoneToggle": {
"name": "MicrophoneToggle",
- "value": 68719480326,
+ "value": 4294970886,
"names": {
"web": [
"MicrophoneToggle"
@@ -6620,7 +6626,7 @@
},
"MicrophoneVolumeDown": {
"name": "MicrophoneVolumeDown",
- "value": 68719480327,
+ "value": 4294970887,
"names": {
"web": [
"MicrophoneVolumeDown"
@@ -6629,7 +6635,7 @@
},
"MicrophoneVolumeUp": {
"name": "MicrophoneVolumeUp",
- "value": 68719480328,
+ "value": 4294970888,
"names": {
"web": [
"MicrophoneVolumeUp"
@@ -6638,7 +6644,7 @@
},
"MicrophoneVolumeMute": {
"name": "MicrophoneVolumeMute",
- "value": 68719480329,
+ "value": 4294970889,
"names": {
"web": [
"MicrophoneVolumeMute"
@@ -6655,7 +6661,7 @@
},
"SpeechCorrectionList": {
"name": "SpeechCorrectionList",
- "value": 68719480577,
+ "value": 4294971137,
"names": {
"web": [
"SpeechCorrectionList"
@@ -6664,7 +6670,7 @@
},
"SpeechInputToggle": {
"name": "SpeechInputToggle",
- "value": 68719480578,
+ "value": 4294971138,
"names": {
"web": [
"SpeechInputToggle"
@@ -6672,13 +6678,13 @@
},
"values": {
"fuchsia": [
- 4295753935
+ 77310197967
]
}
},
"AppSwitch": {
"name": "AppSwitch",
- "value": 68719480833,
+ "value": 4294971393,
"names": {
"web": [
"AppSwitch"
@@ -6695,7 +6701,7 @@
},
"Call": {
"name": "Call",
- "value": 68719480834,
+ "value": 4294971394,
"names": {
"web": [
"Call"
@@ -6712,7 +6718,7 @@
},
"CameraFocus": {
"name": "CameraFocus",
- "value": 68719480835,
+ "value": 4294971395,
"names": {
"web": [
"CameraFocus"
@@ -6729,7 +6735,7 @@
},
"EndCall": {
"name": "EndCall",
- "value": 68719480836,
+ "value": 4294971396,
"names": {
"web": [
"EndCall"
@@ -6746,7 +6752,7 @@
},
"GoBack": {
"name": "GoBack",
- "value": 68719480837,
+ "value": 4294971397,
"names": {
"web": [
"GoBack"
@@ -6763,7 +6769,7 @@
},
"GoHome": {
"name": "GoHome",
- "value": 68719480838,
+ "value": 4294971398,
"names": {
"web": [
"GoHome"
@@ -6780,7 +6786,7 @@
},
"HeadsetHook": {
"name": "HeadsetHook",
- "value": 68719480839,
+ "value": 4294971399,
"names": {
"web": [
"HeadsetHook"
@@ -6797,7 +6803,7 @@
},
"LastNumberRedial": {
"name": "LastNumberRedial",
- "value": 68719480840,
+ "value": 4294971400,
"names": {
"web": [
"LastNumberRedial"
@@ -6806,7 +6812,7 @@
},
"Notification": {
"name": "Notification",
- "value": 68719480841,
+ "value": 4294971401,
"names": {
"web": [
"Notification"
@@ -6823,7 +6829,7 @@
},
"MannerMode": {
"name": "MannerMode",
- "value": 68719480842,
+ "value": 4294971402,
"names": {
"web": [
"MannerMode"
@@ -6840,7 +6846,7 @@
},
"VoiceDial": {
"name": "VoiceDial",
- "value": 68719480843,
+ "value": 4294971403,
"names": {
"web": [
"VoiceDial"
@@ -6849,7 +6855,7 @@
},
"TV3DMode": {
"name": "TV3DMode",
- "value": 68719481089,
+ "value": 4294971649,
"names": {
"web": [
"TV3DMode"
@@ -6866,7 +6872,7 @@
},
"TVAntennaCable": {
"name": "TVAntennaCable",
- "value": 68719481090,
+ "value": 4294971650,
"names": {
"web": [
"TVAntennaCable"
@@ -6883,7 +6889,7 @@
},
"TVAudioDescription": {
"name": "TVAudioDescription",
- "value": 68719481091,
+ "value": 4294971651,
"names": {
"web": [
"TVAudioDescription"
@@ -6900,7 +6906,7 @@
},
"TVAudioDescriptionMixDown": {
"name": "TVAudioDescriptionMixDown",
- "value": 68719481092,
+ "value": 4294971652,
"names": {
"web": [
"TVAudioDescriptionMixDown"
@@ -6917,7 +6923,7 @@
},
"TVAudioDescriptionMixUp": {
"name": "TVAudioDescriptionMixUp",
- "value": 68719481093,
+ "value": 4294971653,
"names": {
"web": [
"TVAudioDescriptionMixUp"
@@ -6934,7 +6940,7 @@
},
"TVContentsMenu": {
"name": "TVContentsMenu",
- "value": 68719481094,
+ "value": 4294971654,
"names": {
"web": [
"TVContentsMenu"
@@ -6951,7 +6957,7 @@
},
"TVDataService": {
"name": "TVDataService",
- "value": 68719481095,
+ "value": 4294971655,
"names": {
"web": [
"TVDataService"
@@ -6968,7 +6974,7 @@
},
"TVInputComponent1": {
"name": "TVInputComponent1",
- "value": 68719481096,
+ "value": 4294971656,
"names": {
"web": [
"TVInputComponent1"
@@ -6985,7 +6991,7 @@
},
"TVInputComponent2": {
"name": "TVInputComponent2",
- "value": 68719481097,
+ "value": 4294971657,
"names": {
"web": [
"TVInputComponent2"
@@ -7002,7 +7008,7 @@
},
"TVInputComposite1": {
"name": "TVInputComposite1",
- "value": 68719481098,
+ "value": 4294971658,
"names": {
"web": [
"TVInputComposite1"
@@ -7019,7 +7025,7 @@
},
"TVInputComposite2": {
"name": "TVInputComposite2",
- "value": 68719481099,
+ "value": 4294971659,
"names": {
"web": [
"TVInputComposite2"
@@ -7036,7 +7042,7 @@
},
"TVInputHDMI1": {
"name": "TVInputHDMI1",
- "value": 68719481100,
+ "value": 4294971660,
"names": {
"web": [
"TVInputHDMI1"
@@ -7053,7 +7059,7 @@
},
"TVInputHDMI2": {
"name": "TVInputHDMI2",
- "value": 68719481101,
+ "value": 4294971661,
"names": {
"web": [
"TVInputHDMI2"
@@ -7070,7 +7076,7 @@
},
"TVInputHDMI3": {
"name": "TVInputHDMI3",
- "value": 68719481102,
+ "value": 4294971662,
"names": {
"web": [
"TVInputHDMI3"
@@ -7087,7 +7093,7 @@
},
"TVInputHDMI4": {
"name": "TVInputHDMI4",
- "value": 68719481103,
+ "value": 4294971663,
"names": {
"web": [
"TVInputHDMI4"
@@ -7104,7 +7110,7 @@
},
"TVInputVGA1": {
"name": "TVInputVGA1",
- "value": 68719481104,
+ "value": 4294971664,
"names": {
"web": [
"TVInputVGA1"
@@ -7121,7 +7127,7 @@
},
"TVMediaContext": {
"name": "TVMediaContext",
- "value": 68719481105,
+ "value": 4294971665,
"names": {
"web": [
"TVMediaContext"
@@ -7130,7 +7136,7 @@
},
"TVNetwork": {
"name": "TVNetwork",
- "value": 68719481106,
+ "value": 4294971666,
"names": {
"web": [
"TVNetwork"
@@ -7147,7 +7153,7 @@
},
"TVNumberEntry": {
"name": "TVNumberEntry",
- "value": 68719481107,
+ "value": 4294971667,
"names": {
"web": [
"TVNumberEntry"
@@ -7164,7 +7170,7 @@
},
"TVRadioService": {
"name": "TVRadioService",
- "value": 68719481108,
+ "value": 4294971668,
"names": {
"web": [
"TVRadioService"
@@ -7181,7 +7187,7 @@
},
"TVSatellite": {
"name": "TVSatellite",
- "value": 68719481109,
+ "value": 4294971669,
"names": {
"web": [
"TVSatellite"
@@ -7198,7 +7204,7 @@
},
"TVSatelliteBS": {
"name": "TVSatelliteBS",
- "value": 68719481110,
+ "value": 4294971670,
"names": {
"web": [
"TVSatelliteBS"
@@ -7215,7 +7221,7 @@
},
"TVSatelliteCS": {
"name": "TVSatelliteCS",
- "value": 68719481111,
+ "value": 4294971671,
"names": {
"web": [
"TVSatelliteCS"
@@ -7232,7 +7238,7 @@
},
"TVSatelliteToggle": {
"name": "TVSatelliteToggle",
- "value": 68719481112,
+ "value": 4294971672,
"names": {
"web": [
"TVSatelliteToggle"
@@ -7249,7 +7255,7 @@
},
"TVTerrestrialAnalog": {
"name": "TVTerrestrialAnalog",
- "value": 68719481113,
+ "value": 4294971673,
"names": {
"web": [
"TVTerrestrialAnalog"
@@ -7266,7 +7272,7 @@
},
"TVTerrestrialDigital": {
"name": "TVTerrestrialDigital",
- "value": 68719481114,
+ "value": 4294971674,
"names": {
"web": [
"TVTerrestrialDigital"
@@ -7283,7 +7289,7 @@
},
"TVTimer": {
"name": "TVTimer",
- "value": 68719481115,
+ "value": 4294971675,
"names": {
"web": [
"TVTimer"
@@ -7300,7 +7306,7 @@
},
"Key11": {
"name": "Key11",
- "value": 68719481345,
+ "value": 4294971905,
"names": {
"web": [
"Key11"
@@ -7309,690 +7315,16 @@
},
"Key12": {
"name": "Key12",
- "value": 68719481346,
+ "value": 4294971906,
"names": {
"web": [
"Key12"
]
}
},
- "GameButton1": {
- "name": "GameButton1",
- "value": 68719869697,
- "names": {
- "web": [
- "GameButton1"
- ],
- "android": [
- "BUTTON_1"
- ]
- },
- "values": {
- "android": [
- 188
- ],
- "fuchsia": [
- 4295360257
- ]
- }
- },
- "GameButton2": {
- "name": "GameButton2",
- "value": 68719869698,
- "names": {
- "web": [
- "GameButton2"
- ],
- "android": [
- "BUTTON_2"
- ]
- },
- "values": {
- "android": [
- 189
- ],
- "fuchsia": [
- 4295360258
- ]
- }
- },
- "GameButton3": {
- "name": "GameButton3",
- "value": 68719869699,
- "names": {
- "web": [
- "GameButton3"
- ],
- "android": [
- "BUTTON_3"
- ]
- },
- "values": {
- "android": [
- 190
- ],
- "fuchsia": [
- 4295360259
- ]
- }
- },
- "GameButton4": {
- "name": "GameButton4",
- "value": 68719869700,
- "names": {
- "web": [
- "GameButton4"
- ],
- "android": [
- "BUTTON_4"
- ]
- },
- "values": {
- "android": [
- 191
- ],
- "fuchsia": [
- 4295360260
- ]
- }
- },
- "GameButton5": {
- "name": "GameButton5",
- "value": 68719869701,
- "names": {
- "web": [
- "GameButton5"
- ],
- "android": [
- "BUTTON_5"
- ]
- },
- "values": {
- "android": [
- 192
- ],
- "fuchsia": [
- 4295360261
- ]
- }
- },
- "GameButton6": {
- "name": "GameButton6",
- "value": 68719869702,
- "names": {
- "web": [
- "GameButton6"
- ],
- "android": [
- "BUTTON_6"
- ]
- },
- "values": {
- "android": [
- 193
- ],
- "fuchsia": [
- 4295360262
- ]
- }
- },
- "GameButton7": {
- "name": "GameButton7",
- "value": 68719869703,
- "names": {
- "web": [
- "GameButton7"
- ],
- "android": [
- "BUTTON_7"
- ]
- },
- "values": {
- "android": [
- 194
- ],
- "fuchsia": [
- 4295360263
- ]
- }
- },
- "GameButton8": {
- "name": "GameButton8",
- "value": 68719869704,
- "names": {
- "web": [
- "GameButton8"
- ],
- "windows": [
- "GAMEPAD_A"
- ],
- "android": [
- "BUTTON_8"
- ]
- },
- "values": {
- "windows": [
- 195
- ],
- "android": [
- 195
- ],
- "fuchsia": [
- 4295360264
- ]
- }
- },
- "GameButton9": {
- "name": "GameButton9",
- "value": 68719869705,
- "names": {
- "web": [
- "GameButton9"
- ],
- "windows": [
- "GAMEPAD_B"
- ],
- "android": [
- "BUTTON_9"
- ]
- },
- "values": {
- "windows": [
- 196
- ],
- "android": [
- 196
- ],
- "fuchsia": [
- 4295360265
- ]
- }
- },
- "GameButton10": {
- "name": "GameButton10",
- "value": 68719869706,
- "names": {
- "web": [
- "GameButton10"
- ],
- "windows": [
- "GAMEPAD_X"
- ],
- "android": [
- "BUTTON_10"
- ]
- },
- "values": {
- "windows": [
- 197
- ],
- "android": [
- 197
- ],
- "fuchsia": [
- 4295360266
- ]
- }
- },
- "GameButton11": {
- "name": "GameButton11",
- "value": 68719869707,
- "names": {
- "web": [
- "GameButton11"
- ],
- "windows": [
- "GAMEPAD_Y"
- ],
- "android": [
- "BUTTON_11"
- ]
- },
- "values": {
- "windows": [
- 198
- ],
- "android": [
- 198
- ],
- "fuchsia": [
- 4295360267
- ]
- }
- },
- "GameButton12": {
- "name": "GameButton12",
- "value": 68719869708,
- "names": {
- "web": [
- "GameButton12"
- ],
- "windows": [
- "GAMEPAD_RIGHT_SHOULDER"
- ],
- "android": [
- "BUTTON_12"
- ]
- },
- "values": {
- "windows": [
- 199
- ],
- "android": [
- 199
- ],
- "fuchsia": [
- 4295360268
- ]
- }
- },
- "GameButton13": {
- "name": "GameButton13",
- "value": 68719869709,
- "names": {
- "web": [
- "GameButton13"
- ],
- "windows": [
- "GAMEPAD_LEFT_SHOULDER"
- ],
- "android": [
- "BUTTON_13"
- ]
- },
- "values": {
- "windows": [
- 200
- ],
- "android": [
- 200
- ],
- "fuchsia": [
- 4295360269
- ]
- }
- },
- "GameButton14": {
- "name": "GameButton14",
- "value": 68719869710,
- "names": {
- "web": [
- "GameButton14"
- ],
- "windows": [
- "GAMEPAD_LEFT_TRIGGER"
- ],
- "android": [
- "BUTTON_14"
- ]
- },
- "values": {
- "windows": [
- 201
- ],
- "android": [
- 201
- ],
- "fuchsia": [
- 4295360270
- ]
- }
- },
- "GameButton15": {
- "name": "GameButton15",
- "value": 68719869711,
- "names": {
- "web": [
- "GameButton15"
- ],
- "windows": [
- "GAMEPAD_RIGHT_TRIGGER"
- ],
- "android": [
- "BUTTON_15"
- ]
- },
- "values": {
- "windows": [
- 202
- ],
- "android": [
- 202
- ],
- "fuchsia": [
- 4295360271
- ]
- }
- },
- "GameButton16": {
- "name": "GameButton16",
- "value": 68719869712,
- "names": {
- "web": [
- "GameButton16"
- ],
- "windows": [
- "GAMEPAD_DPAD_UP"
- ],
- "android": [
- "BUTTON_16"
- ]
- },
- "values": {
- "windows": [
- 203
- ],
- "android": [
- 203
- ],
- "fuchsia": [
- 4295360272
- ]
- }
- },
- "GameButtonA": {
- "name": "GameButtonA",
- "value": 68719869713,
- "names": {
- "web": [
- "GameButtonA"
- ],
- "android": [
- "BUTTON_A"
- ]
- },
- "values": {
- "android": [
- 96
- ],
- "fuchsia": [
- 4295360273
- ]
- }
- },
- "GameButtonB": {
- "name": "GameButtonB",
- "value": 68719869714,
- "names": {
- "web": [
- "GameButtonB"
- ],
- "android": [
- "BUTTON_B"
- ]
- },
- "values": {
- "android": [
- 97
- ],
- "fuchsia": [
- 4295360274
- ]
- }
- },
- "GameButtonC": {
- "name": "GameButtonC",
- "value": 68719869715,
- "names": {
- "web": [
- "GameButtonC"
- ],
- "android": [
- "BUTTON_C"
- ]
- },
- "values": {
- "android": [
- 98
- ],
- "fuchsia": [
- 4295360275
- ]
- }
- },
- "GameButtonLeft1": {
- "name": "GameButtonLeft1",
- "value": 68719869716,
- "names": {
- "web": [
- "GameButtonLeft1"
- ],
- "android": [
- "BUTTON_L1"
- ]
- },
- "values": {
- "android": [
- 102
- ],
- "fuchsia": [
- 4295360276
- ]
- }
- },
- "GameButtonLeft2": {
- "name": "GameButtonLeft2",
- "value": 68719869717,
- "names": {
- "web": [
- "GameButtonLeft2"
- ],
- "android": [
- "BUTTON_L2"
- ]
- },
- "values": {
- "android": [
- 104
- ],
- "fuchsia": [
- 4295360277
- ]
- }
- },
- "GameButtonMode": {
- "name": "GameButtonMode",
- "value": 68719869718,
- "names": {
- "web": [
- "GameButtonMode"
- ],
- "android": [
- "BUTTON_MODE"
- ]
- },
- "values": {
- "android": [
- 110
- ],
- "fuchsia": [
- 4295360278
- ]
- }
- },
- "GameButtonRight1": {
- "name": "GameButtonRight1",
- "value": 68719869719,
- "names": {
- "web": [
- "GameButtonRight1"
- ],
- "android": [
- "BUTTON_R1"
- ]
- },
- "values": {
- "android": [
- 103
- ],
- "fuchsia": [
- 4295360279
- ]
- }
- },
- "GameButtonRight2": {
- "name": "GameButtonRight2",
- "value": 68719869720,
- "names": {
- "web": [
- "GameButtonRight2"
- ],
- "android": [
- "BUTTON_R2"
- ]
- },
- "values": {
- "android": [
- 105
- ],
- "fuchsia": [
- 4295360280
- ]
- }
- },
- "GameButtonSelect": {
- "name": "GameButtonSelect",
- "value": 68719869721,
- "names": {
- "web": [
- "GameButtonSelect"
- ],
- "android": [
- "BUTTON_SELECT"
- ]
- },
- "values": {
- "android": [
- 109
- ],
- "fuchsia": [
- 4295360281
- ]
- }
- },
- "GameButtonStart": {
- "name": "GameButtonStart",
- "value": 68719869722,
- "names": {
- "web": [
- "GameButtonStart"
- ],
- "android": [
- "BUTTON_START"
- ]
- },
- "values": {
- "android": [
- 108
- ],
- "fuchsia": [
- 4295360282
- ]
- }
- },
- "GameButtonThumbLeft": {
- "name": "GameButtonThumbLeft",
- "value": 68719869723,
- "names": {
- "web": [
- "GameButtonThumbLeft"
- ],
- "android": [
- "BUTTON_THUMBL"
- ]
- },
- "values": {
- "android": [
- 106
- ],
- "fuchsia": [
- 4295360283
- ]
- }
- },
- "GameButtonThumbRight": {
- "name": "GameButtonThumbRight",
- "value": 68719869724,
- "names": {
- "web": [
- "GameButtonThumbRight"
- ],
- "android": [
- "BUTTON_THUMBR"
- ]
- },
- "values": {
- "android": [
- 107
- ],
- "fuchsia": [
- 4295360284
- ]
- }
- },
- "GameButtonX": {
- "name": "GameButtonX",
- "value": 68719869725,
- "names": {
- "web": [
- "GameButtonX"
- ],
- "android": [
- "BUTTON_X"
- ]
- },
- "values": {
- "android": [
- 99
- ],
- "fuchsia": [
- 4295360285
- ]
- }
- },
- "GameButtonY": {
- "name": "GameButtonY",
- "value": 68719869726,
- "names": {
- "web": [
- "GameButtonY"
- ],
- "android": [
- "BUTTON_Y"
- ]
- },
- "values": {
- "android": [
- 100
- ],
- "fuchsia": [
- 4295360286
- ]
- }
- },
- "GameButtonZ": {
- "name": "GameButtonZ",
- "value": 68719869727,
- "names": {
- "web": [
- "GameButtonZ"
- ],
- "android": [
- "BUTTON_Z"
- ]
- },
- "values": {
- "android": [
- 101
- ],
- "fuchsia": [
- 4295360287
- ]
- }
- },
"Suspend": {
"name": "Suspend",
- "value": 73014444052,
+ "value": 8589934592,
"names": {
"web": [
"Suspend"
@@ -8006,13 +7338,13 @@
269025191
],
"fuchsia": [
- 4294967316
+ 77309411348
]
}
},
"Resume": {
"name": "Resume",
- "value": 73014444053,
+ "value": 8589934593,
"names": {
"web": [
"Resume"
@@ -8020,13 +7352,13 @@
},
"values": {
"fuchsia": [
- 4294967317
+ 77309411349
]
}
},
"Sleep": {
"name": "Sleep",
- "value": 73014509698,
+ "value": 8589934594,
"names": {
"web": [
"Sleep"
@@ -8052,13 +7384,145 @@
223
],
"fuchsia": [
- 4295032962
+ 77309476994
+ ]
+ }
+ },
+ "Abort": {
+ "name": "Abort",
+ "value": 8589934595,
+ "names": {
+ "web": [
+ "Abort"
+ ]
+ },
+ "values": {
+ "fuchsia": [
+ 77309870235
+ ]
+ }
+ },
+ "Lang1": {
+ "name": "Lang1",
+ "value": 8589934608,
+ "names": {
+ "web": [
+ "Lang1"
+ ],
+ "macos": [
+ "Lang1"
+ ],
+ "ios": [
+ "Lang1"
+ ],
+ "windows": [
+ "KANA, HANGEUL, HANGUL"
+ ]
+ },
+ "values": {
+ "macos": [
+ 104
+ ],
+ "ios": [
+ 144
+ ],
+ "windows": [
+ 21
+ ],
+ "fuchsia": [
+ 77309870224
+ ]
+ }
+ },
+ "Lang2": {
+ "name": "Lang2",
+ "value": 8589934609,
+ "names": {
+ "web": [
+ "Lang2"
+ ],
+ "macos": [
+ "Lang2"
+ ],
+ "ios": [
+ "Lang2"
+ ]
+ },
+ "values": {
+ "macos": [
+ 102
+ ],
+ "ios": [
+ 145
+ ],
+ "fuchsia": [
+ 77309870225
+ ]
+ }
+ },
+ "Lang3": {
+ "name": "Lang3",
+ "value": 8589934610,
+ "names": {
+ "web": [
+ "Lang3"
+ ],
+ "ios": [
+ "Lang3"
+ ]
+ },
+ "values": {
+ "ios": [
+ 146
+ ],
+ "fuchsia": [
+ 77309870226
+ ]
+ }
+ },
+ "Lang4": {
+ "name": "Lang4",
+ "value": 8589934611,
+ "names": {
+ "web": [
+ "Lang4"
+ ],
+ "ios": [
+ "Lang4"
+ ]
+ },
+ "values": {
+ "ios": [
+ 147
+ ],
+ "fuchsia": [
+ 77309870227
+ ]
+ }
+ },
+ "Lang5": {
+ "name": "Lang5",
+ "value": 8589934612,
+ "names": {
+ "web": [
+ "Lang5"
+ ],
+ "ios": [
+ "Lang5"
+ ]
+ },
+ "values": {
+ "ios": [
+ 148
+ ],
+ "fuchsia": [
+ 77309870228
]
}
},
"IntlBackslash": {
"name": "IntlBackslash",
- "value": 73014902884,
+ "value": 8589934624,
"names": {
"web": [
"IntlBackslash"
@@ -8066,13 +7530,13 @@
},
"values": {
"fuchsia": [
- 4295426148
+ 77309870180
]
}
},
"IntlRo": {
"name": "IntlRo",
- "value": 73014902919,
+ "value": 8589934625,
"names": {
"web": [
"IntlRo"
@@ -8098,13 +7562,13 @@
217
],
"fuchsia": [
- 4295426183
+ 77309870215
]
}
},
"IntlYen": {
"name": "IntlYen",
- "value": 73014902921,
+ "value": 8589934626,
"names": {
"web": [
"IntlYen"
@@ -8136,189 +7600,13 @@
216
],
"fuchsia": [
- 4295426185
- ]
- }
- },
- "Lang1": {
- "name": "Lang1",
- "value": 73014902928,
- "names": {
- "web": [
- "Lang1"
- ],
- "macos": [
- "Lang1"
- ],
- "ios": [
- "Lang1"
- ],
- "windows": [
- "KANA, HANGEUL, HANGUL"
- ]
- },
- "values": {
- "macos": [
- 104
- ],
- "ios": [
- 144
- ],
- "windows": [
- 21
- ],
- "fuchsia": [
- 4295426192
- ]
- }
- },
- "Lang2": {
- "name": "Lang2",
- "value": 73014902929,
- "names": {
- "web": [
- "Lang2"
- ],
- "macos": [
- "Lang2"
- ],
- "ios": [
- "Lang2"
- ]
- },
- "values": {
- "macos": [
- 102
- ],
- "ios": [
- 145
- ],
- "fuchsia": [
- 4295426193
- ]
- }
- },
- "Lang3": {
- "name": "Lang3",
- "value": 73014902930,
- "names": {
- "web": [
- "Lang3"
- ],
- "ios": [
- "Lang3"
- ]
- },
- "values": {
- "ios": [
- 146
- ],
- "fuchsia": [
- 4295426194
- ]
- }
- },
- "Lang4": {
- "name": "Lang4",
- "value": 73014902931,
- "names": {
- "web": [
- "Lang4"
- ],
- "ios": [
- "Lang4"
- ]
- },
- "values": {
- "ios": [
- 147
- ],
- "fuchsia": [
- 4295426195
- ]
- }
- },
- "Lang5": {
- "name": "Lang5",
- "value": 73014902932,
- "names": {
- "web": [
- "Lang5"
- ],
- "ios": [
- "Lang5"
- ]
- },
- "values": {
- "ios": [
- 148
- ],
- "fuchsia": [
- 4295426196
- ]
- }
- },
- "Abort": {
- "name": "Abort",
- "value": 73014902939,
- "names": {
- "web": [
- "Abort"
- ]
- },
- "values": {
- "fuchsia": [
- 4295426203
- ]
- }
- },
- "AltLeft": {
- "name": "AltLeft",
- "value": 3298534883586,
- "names": {
- "web": [
- "AltLeft"
- ],
- "macos": [
- "AltLeft"
- ],
- "ios": [
- "AltLeft"
- ],
- "gtk": [
- "Alt_L"
- ],
- "windows": [
- "LMENU"
- ],
- "android": [
- "ALT_LEFT"
- ]
- },
- "values": {
- "macos": [
- 58
- ],
- "ios": [
- 226
- ],
- "gtk": [
- 65513
- ],
- "windows": [
- 164
- ],
- "android": [
- 57
- ],
- "fuchsia": [
- 4295426274
+ 77309870217
]
}
},
"ControlLeft": {
"name": "ControlLeft",
- "value": 3298534883589,
+ "value": 8589934848,
"names": {
"web": [
"ControlLeft"
@@ -8358,57 +7646,57 @@
113
],
"fuchsia": [
- 4295426272
+ 77309870304
]
}
},
- "MetaLeft": {
- "name": "MetaLeft",
- "value": 3298534883593,
+ "ControlRight": {
+ "name": "ControlRight",
+ "value": 8589934849,
"names": {
"web": [
- "MetaLeft"
+ "ControlRight"
],
"macos": [
- "MetaLeft"
+ "ControlRight"
],
"ios": [
- "MetaLeft"
+ "ControlRight"
],
"gtk": [
- "Meta_L"
+ "Control_R"
],
"windows": [
- "LWIN"
+ "RCONTROL"
],
"android": [
- "META_LEFT"
+ "CTRL_RIGHT"
]
},
"values": {
"macos": [
- 55
+ 62
],
"ios": [
- 227
+ 228
],
"gtk": [
- 65511
+ 65508
],
"windows": [
- 91
+ 163
],
"android": [
- 117
+ 114
],
"fuchsia": [
- 4295426275
+ 77309870308
]
}
},
"ShiftLeft": {
"name": "ShiftLeft",
- "value": 3298534883597,
+ "value": 8589934850,
"names": {
"web": [
"ShiftLeft"
@@ -8448,13 +7736,101 @@
59
],
"fuchsia": [
- 4295426273
+ 77309870305
+ ]
+ }
+ },
+ "ShiftRight": {
+ "name": "ShiftRight",
+ "value": 8589934851,
+ "names": {
+ "web": [
+ "ShiftRight"
+ ],
+ "macos": [
+ "ShiftRight"
+ ],
+ "ios": [
+ "ShiftRight"
+ ],
+ "gtk": [
+ "Shift_R"
+ ],
+ "windows": [
+ "RSHIFT"
+ ],
+ "android": [
+ "SHIFT_RIGHT"
+ ]
+ },
+ "values": {
+ "macos": [
+ 60
+ ],
+ "ios": [
+ 229
+ ],
+ "gtk": [
+ 65506
+ ],
+ "windows": [
+ 161
+ ],
+ "android": [
+ 60
+ ],
+ "fuchsia": [
+ 77309870309
+ ]
+ }
+ },
+ "AltLeft": {
+ "name": "AltLeft",
+ "value": 8589934852,
+ "names": {
+ "web": [
+ "AltLeft"
+ ],
+ "macos": [
+ "AltLeft"
+ ],
+ "ios": [
+ "AltLeft"
+ ],
+ "gtk": [
+ "Alt_L"
+ ],
+ "windows": [
+ "LMENU"
+ ],
+ "android": [
+ "ALT_LEFT"
+ ]
+ },
+ "values": {
+ "macos": [
+ 58
+ ],
+ "ios": [
+ 226
+ ],
+ "gtk": [
+ 65513
+ ],
+ "windows": [
+ 164
+ ],
+ "android": [
+ 57
+ ],
+ "fuchsia": [
+ 77309870306
]
}
},
"AltRight": {
"name": "AltRight",
- "value": 4398046511362,
+ "value": 8589934853,
"names": {
"web": [
"AltRight"
@@ -8494,57 +7870,57 @@
58
],
"fuchsia": [
- 4295426278
+ 77309870310
]
}
},
- "ControlRight": {
- "name": "ControlRight",
- "value": 4398046511365,
+ "MetaLeft": {
+ "name": "MetaLeft",
+ "value": 8589934854,
"names": {
"web": [
- "ControlRight"
+ "MetaLeft"
],
"macos": [
- "ControlRight"
+ "MetaLeft"
],
"ios": [
- "ControlRight"
+ "MetaLeft"
],
"gtk": [
- "Control_R"
+ "Meta_L"
],
"windows": [
- "RCONTROL"
+ "LWIN"
],
"android": [
- "CTRL_RIGHT"
+ "META_LEFT"
]
},
"values": {
"macos": [
- 62
+ 55
],
"ios": [
- 228
+ 227
],
"gtk": [
- 65508
+ 65511
],
"windows": [
- 163
+ 91
],
"android": [
- 114
+ 117
],
"fuchsia": [
- 4295426276
+ 77309870307
]
}
},
"MetaRight": {
"name": "MetaRight",
- "value": 4398046511369,
+ "value": 8589934855,
"names": {
"web": [
"MetaRight"
@@ -8582,57 +7958,49 @@
118
],
"fuchsia": [
- 4295426279
+ 77309870311
]
}
},
- "ShiftRight": {
- "name": "ShiftRight",
- "value": 4398046511373,
+ "Control": {
+ "name": "Control",
+ "value": 8589935088,
"names": {
"web": [
- "ShiftRight"
- ],
- "macos": [
- "ShiftRight"
- ],
- "ios": [
- "ShiftRight"
- ],
- "gtk": [
- "Shift_R"
- ],
- "windows": [
- "RSHIFT"
- ],
- "android": [
- "SHIFT_RIGHT"
+ "Control"
]
- },
- "values": {
- "macos": [
- 60
- ],
- "ios": [
- 229
- ],
- "gtk": [
- 65506
- ],
- "windows": [
- 161
- ],
- "android": [
- 60
- ],
- "fuchsia": [
- 4295426277
+ }
+ },
+ "Shift": {
+ "name": "Shift",
+ "value": 8589935090,
+ "names": {
+ "web": [
+ "Shift"
+ ]
+ }
+ },
+ "Alt": {
+ "name": "Alt",
+ "value": 8589935092,
+ "names": {
+ "web": [
+ "Alt"
+ ]
+ }
+ },
+ "Meta": {
+ "name": "Meta",
+ "value": 8589935094,
+ "names": {
+ "web": [
+ "Meta"
]
}
},
"NumpadEnter": {
"name": "NumpadEnter",
- "value": 5497558138893,
+ "value": 8589935117,
"names": {
"web": [
"NumpadEnter"
@@ -8664,13 +8032,13 @@
160
],
"fuchsia": [
- 4295426136
+ 77309870168
]
}
},
"NumpadParenLeft": {
"name": "NumpadParenLeft",
- "value": 5497558138920,
+ "value": 8589935144,
"names": {
"web": [
"NumpadParenLeft"
@@ -8684,13 +8052,13 @@
162
],
"fuchsia": [
- 4295426230
+ 77309870262
]
}
},
"NumpadParenRight": {
"name": "NumpadParenRight",
- "value": 5497558138921,
+ "value": 8589935145,
"names": {
"web": [
"NumpadParenRight"
@@ -8704,13 +8072,13 @@
163
],
"fuchsia": [
- 4295426231
+ 77309870263
]
}
},
"NumpadMultiply": {
"name": "NumpadMultiply",
- "value": 5497558138922,
+ "value": 8589935146,
"names": {
"web": [
"NumpadMultiply"
@@ -8748,13 +8116,13 @@
155
],
"fuchsia": [
- 4295426133
+ 77309870165
]
}
},
"NumpadAdd": {
"name": "NumpadAdd",
- "value": 5497558138923,
+ "value": 8589935147,
"names": {
"web": [
"NumpadAdd"
@@ -8792,13 +8160,13 @@
157
],
"fuchsia": [
- 4295426135
+ 77309870167
]
}
},
"NumpadComma": {
"name": "NumpadComma",
- "value": 5497558138924,
+ "value": 8589935148,
"names": {
"web": [
"NumpadComma"
@@ -8809,6 +8177,9 @@
"ios": [
"NumpadComma"
],
+ "windows": [
+ "SEPARATOR"
+ ],
"android": [
"NUMPAD_COMMA"
]
@@ -8820,17 +8191,20 @@
"ios": [
133
],
+ "windows": [
+ 108
+ ],
"android": [
159
],
"fuchsia": [
- 4295426181
+ 77309870213
]
}
},
"NumpadSubtract": {
"name": "NumpadSubtract",
- "value": 5497558138925,
+ "value": 8589935149,
"names": {
"web": [
"NumpadSubtract"
@@ -8868,13 +8242,13 @@
156
],
"fuchsia": [
- 4295426134
+ 77309870166
]
}
},
"NumpadDecimal": {
"name": "NumpadDecimal",
- "value": 5497558138926,
+ "value": 8589935150,
"names": {
"web": [
"NumpadDecimal"
@@ -8912,13 +8286,13 @@
158
],
"fuchsia": [
- 4295426147
+ 77309870179
]
}
},
"NumpadDivide": {
"name": "NumpadDivide",
- "value": 5497558138927,
+ "value": 8589935151,
"names": {
"web": [
"NumpadDivide"
@@ -8956,13 +8330,13 @@
154
],
"fuchsia": [
- 4295426132
+ 77309870164
]
}
},
"Numpad0": {
"name": "Numpad0",
- "value": 5497558138928,
+ "value": 8589935152,
"names": {
"web": [
"Numpad0"
@@ -9002,13 +8376,13 @@
144
],
"fuchsia": [
- 4295426146
+ 77309870178
]
}
},
"Numpad1": {
"name": "Numpad1",
- "value": 5497558138929,
+ "value": 8589935153,
"names": {
"web": [
"Numpad1"
@@ -9048,13 +8422,13 @@
145
],
"fuchsia": [
- 4295426137
+ 77309870169
]
}
},
"Numpad2": {
"name": "Numpad2",
- "value": 5497558138930,
+ "value": 8589935154,
"names": {
"web": [
"Numpad2"
@@ -9094,13 +8468,13 @@
146
],
"fuchsia": [
- 4295426138
+ 77309870170
]
}
},
"Numpad3": {
"name": "Numpad3",
- "value": 5497558138931,
+ "value": 8589935155,
"names": {
"web": [
"Numpad3"
@@ -9140,13 +8514,13 @@
147
],
"fuchsia": [
- 4295426139
+ 77309870171
]
}
},
"Numpad4": {
"name": "Numpad4",
- "value": 5497558138932,
+ "value": 8589935156,
"names": {
"web": [
"Numpad4"
@@ -9186,13 +8560,13 @@
148
],
"fuchsia": [
- 4295426140
+ 77309870172
]
}
},
"Numpad5": {
"name": "Numpad5",
- "value": 5497558138933,
+ "value": 8589935157,
"names": {
"web": [
"Numpad5"
@@ -9230,13 +8604,13 @@
149
],
"fuchsia": [
- 4295426141
+ 77309870173
]
}
},
"Numpad6": {
"name": "Numpad6",
- "value": 5497558138934,
+ "value": 8589935158,
"names": {
"web": [
"Numpad6"
@@ -9276,13 +8650,13 @@
150
],
"fuchsia": [
- 4295426142
+ 77309870174
]
}
},
"Numpad7": {
"name": "Numpad7",
- "value": 5497558138935,
+ "value": 8589935159,
"names": {
"web": [
"Numpad7"
@@ -9322,13 +8696,13 @@
151
],
"fuchsia": [
- 4295426143
+ 77309870175
]
}
},
"Numpad8": {
"name": "Numpad8",
- "value": 5497558138936,
+ "value": 8589935160,
"names": {
"web": [
"Numpad8"
@@ -9368,13 +8742,13 @@
152
],
"fuchsia": [
- 4295426144
+ 77309870176
]
}
},
"Numpad9": {
"name": "Numpad9",
- "value": 5497558138937,
+ "value": 8589935161,
"names": {
"web": [
"Numpad9"
@@ -9414,13 +8788,13 @@
153
],
"fuchsia": [
- 4295426145
+ 77309870177
]
}
},
"NumpadEqual": {
"name": "NumpadEqual",
- "value": 5497558138941,
+ "value": 8589935165,
"names": {
"web": [
"NumpadEqual"
@@ -9458,7 +8832,681 @@
161
],
"fuchsia": [
- 4295426151
+ 77309870183
+ ]
+ }
+ },
+ "GameButton1": {
+ "name": "GameButton1",
+ "value": 8589935361,
+ "names": {
+ "web": [
+ "GameButton1"
+ ],
+ "android": [
+ "BUTTON_1"
+ ]
+ },
+ "values": {
+ "android": [
+ 188
+ ],
+ "fuchsia": [
+ 77309804289
+ ]
+ }
+ },
+ "GameButton2": {
+ "name": "GameButton2",
+ "value": 8589935362,
+ "names": {
+ "web": [
+ "GameButton2"
+ ],
+ "android": [
+ "BUTTON_2"
+ ]
+ },
+ "values": {
+ "android": [
+ 189
+ ],
+ "fuchsia": [
+ 77309804290
+ ]
+ }
+ },
+ "GameButton3": {
+ "name": "GameButton3",
+ "value": 8589935363,
+ "names": {
+ "web": [
+ "GameButton3"
+ ],
+ "android": [
+ "BUTTON_3"
+ ]
+ },
+ "values": {
+ "android": [
+ 190
+ ],
+ "fuchsia": [
+ 77309804291
+ ]
+ }
+ },
+ "GameButton4": {
+ "name": "GameButton4",
+ "value": 8589935364,
+ "names": {
+ "web": [
+ "GameButton4"
+ ],
+ "android": [
+ "BUTTON_4"
+ ]
+ },
+ "values": {
+ "android": [
+ 191
+ ],
+ "fuchsia": [
+ 77309804292
+ ]
+ }
+ },
+ "GameButton5": {
+ "name": "GameButton5",
+ "value": 8589935365,
+ "names": {
+ "web": [
+ "GameButton5"
+ ],
+ "android": [
+ "BUTTON_5"
+ ]
+ },
+ "values": {
+ "android": [
+ 192
+ ],
+ "fuchsia": [
+ 77309804293
+ ]
+ }
+ },
+ "GameButton6": {
+ "name": "GameButton6",
+ "value": 8589935366,
+ "names": {
+ "web": [
+ "GameButton6"
+ ],
+ "android": [
+ "BUTTON_6"
+ ]
+ },
+ "values": {
+ "android": [
+ 193
+ ],
+ "fuchsia": [
+ 77309804294
+ ]
+ }
+ },
+ "GameButton7": {
+ "name": "GameButton7",
+ "value": 8589935367,
+ "names": {
+ "web": [
+ "GameButton7"
+ ],
+ "android": [
+ "BUTTON_7"
+ ]
+ },
+ "values": {
+ "android": [
+ 194
+ ],
+ "fuchsia": [
+ 77309804295
+ ]
+ }
+ },
+ "GameButton8": {
+ "name": "GameButton8",
+ "value": 8589935368,
+ "names": {
+ "web": [
+ "GameButton8"
+ ],
+ "windows": [
+ "GAMEPAD_A"
+ ],
+ "android": [
+ "BUTTON_8"
+ ]
+ },
+ "values": {
+ "windows": [
+ 195
+ ],
+ "android": [
+ 195
+ ],
+ "fuchsia": [
+ 77309804296
+ ]
+ }
+ },
+ "GameButton9": {
+ "name": "GameButton9",
+ "value": 8589935369,
+ "names": {
+ "web": [
+ "GameButton9"
+ ],
+ "windows": [
+ "GAMEPAD_B"
+ ],
+ "android": [
+ "BUTTON_9"
+ ]
+ },
+ "values": {
+ "windows": [
+ 196
+ ],
+ "android": [
+ 196
+ ],
+ "fuchsia": [
+ 77309804297
+ ]
+ }
+ },
+ "GameButton10": {
+ "name": "GameButton10",
+ "value": 8589935370,
+ "names": {
+ "web": [
+ "GameButton10"
+ ],
+ "windows": [
+ "GAMEPAD_X"
+ ],
+ "android": [
+ "BUTTON_10"
+ ]
+ },
+ "values": {
+ "windows": [
+ 197
+ ],
+ "android": [
+ 197
+ ],
+ "fuchsia": [
+ 77309804298
+ ]
+ }
+ },
+ "GameButton11": {
+ "name": "GameButton11",
+ "value": 8589935371,
+ "names": {
+ "web": [
+ "GameButton11"
+ ],
+ "windows": [
+ "GAMEPAD_Y"
+ ],
+ "android": [
+ "BUTTON_11"
+ ]
+ },
+ "values": {
+ "windows": [
+ 198
+ ],
+ "android": [
+ 198
+ ],
+ "fuchsia": [
+ 77309804299
+ ]
+ }
+ },
+ "GameButton12": {
+ "name": "GameButton12",
+ "value": 8589935372,
+ "names": {
+ "web": [
+ "GameButton12"
+ ],
+ "windows": [
+ "GAMEPAD_RIGHT_SHOULDER"
+ ],
+ "android": [
+ "BUTTON_12"
+ ]
+ },
+ "values": {
+ "windows": [
+ 199
+ ],
+ "android": [
+ 199
+ ],
+ "fuchsia": [
+ 77309804300
+ ]
+ }
+ },
+ "GameButton13": {
+ "name": "GameButton13",
+ "value": 8589935373,
+ "names": {
+ "web": [
+ "GameButton13"
+ ],
+ "windows": [
+ "GAMEPAD_LEFT_SHOULDER"
+ ],
+ "android": [
+ "BUTTON_13"
+ ]
+ },
+ "values": {
+ "windows": [
+ 200
+ ],
+ "android": [
+ 200
+ ],
+ "fuchsia": [
+ 77309804301
+ ]
+ }
+ },
+ "GameButton14": {
+ "name": "GameButton14",
+ "value": 8589935374,
+ "names": {
+ "web": [
+ "GameButton14"
+ ],
+ "windows": [
+ "GAMEPAD_LEFT_TRIGGER"
+ ],
+ "android": [
+ "BUTTON_14"
+ ]
+ },
+ "values": {
+ "windows": [
+ 201
+ ],
+ "android": [
+ 201
+ ],
+ "fuchsia": [
+ 77309804302
+ ]
+ }
+ },
+ "GameButton15": {
+ "name": "GameButton15",
+ "value": 8589935375,
+ "names": {
+ "web": [
+ "GameButton15"
+ ],
+ "windows": [
+ "GAMEPAD_RIGHT_TRIGGER"
+ ],
+ "android": [
+ "BUTTON_15"
+ ]
+ },
+ "values": {
+ "windows": [
+ 202
+ ],
+ "android": [
+ 202
+ ],
+ "fuchsia": [
+ 77309804303
+ ]
+ }
+ },
+ "GameButton16": {
+ "name": "GameButton16",
+ "value": 8589935376,
+ "names": {
+ "web": [
+ "GameButton16"
+ ],
+ "windows": [
+ "GAMEPAD_DPAD_UP"
+ ],
+ "android": [
+ "BUTTON_16"
+ ]
+ },
+ "values": {
+ "windows": [
+ 203
+ ],
+ "android": [
+ 203
+ ],
+ "fuchsia": [
+ 77309804304
+ ]
+ }
+ },
+ "GameButtonA": {
+ "name": "GameButtonA",
+ "value": 8589935377,
+ "names": {
+ "web": [
+ "GameButtonA"
+ ],
+ "android": [
+ "BUTTON_A"
+ ]
+ },
+ "values": {
+ "android": [
+ 96
+ ],
+ "fuchsia": [
+ 77309804305
+ ]
+ }
+ },
+ "GameButtonB": {
+ "name": "GameButtonB",
+ "value": 8589935378,
+ "names": {
+ "web": [
+ "GameButtonB"
+ ],
+ "android": [
+ "BUTTON_B"
+ ]
+ },
+ "values": {
+ "android": [
+ 97
+ ],
+ "fuchsia": [
+ 77309804306
+ ]
+ }
+ },
+ "GameButtonC": {
+ "name": "GameButtonC",
+ "value": 8589935379,
+ "names": {
+ "web": [
+ "GameButtonC"
+ ],
+ "android": [
+ "BUTTON_C"
+ ]
+ },
+ "values": {
+ "android": [
+ 98
+ ],
+ "fuchsia": [
+ 77309804307
+ ]
+ }
+ },
+ "GameButtonLeft1": {
+ "name": "GameButtonLeft1",
+ "value": 8589935380,
+ "names": {
+ "web": [
+ "GameButtonLeft1"
+ ],
+ "android": [
+ "BUTTON_L1"
+ ]
+ },
+ "values": {
+ "android": [
+ 102
+ ],
+ "fuchsia": [
+ 77309804308
+ ]
+ }
+ },
+ "GameButtonLeft2": {
+ "name": "GameButtonLeft2",
+ "value": 8589935381,
+ "names": {
+ "web": [
+ "GameButtonLeft2"
+ ],
+ "android": [
+ "BUTTON_L2"
+ ]
+ },
+ "values": {
+ "android": [
+ 104
+ ],
+ "fuchsia": [
+ 77309804309
+ ]
+ }
+ },
+ "GameButtonMode": {
+ "name": "GameButtonMode",
+ "value": 8589935382,
+ "names": {
+ "web": [
+ "GameButtonMode"
+ ],
+ "android": [
+ "BUTTON_MODE"
+ ]
+ },
+ "values": {
+ "android": [
+ 110
+ ],
+ "fuchsia": [
+ 77309804310
+ ]
+ }
+ },
+ "GameButtonRight1": {
+ "name": "GameButtonRight1",
+ "value": 8589935383,
+ "names": {
+ "web": [
+ "GameButtonRight1"
+ ],
+ "android": [
+ "BUTTON_R1"
+ ]
+ },
+ "values": {
+ "android": [
+ 103
+ ],
+ "fuchsia": [
+ 77309804311
+ ]
+ }
+ },
+ "GameButtonRight2": {
+ "name": "GameButtonRight2",
+ "value": 8589935384,
+ "names": {
+ "web": [
+ "GameButtonRight2"
+ ],
+ "android": [
+ "BUTTON_R2"
+ ]
+ },
+ "values": {
+ "android": [
+ 105
+ ],
+ "fuchsia": [
+ 77309804312
+ ]
+ }
+ },
+ "GameButtonSelect": {
+ "name": "GameButtonSelect",
+ "value": 8589935385,
+ "names": {
+ "web": [
+ "GameButtonSelect"
+ ],
+ "android": [
+ "BUTTON_SELECT"
+ ]
+ },
+ "values": {
+ "android": [
+ 109
+ ],
+ "fuchsia": [
+ 77309804313
+ ]
+ }
+ },
+ "GameButtonStart": {
+ "name": "GameButtonStart",
+ "value": 8589935386,
+ "names": {
+ "web": [
+ "GameButtonStart"
+ ],
+ "android": [
+ "BUTTON_START"
+ ]
+ },
+ "values": {
+ "android": [
+ 108
+ ],
+ "fuchsia": [
+ 77309804314
+ ]
+ }
+ },
+ "GameButtonThumbLeft": {
+ "name": "GameButtonThumbLeft",
+ "value": 8589935387,
+ "names": {
+ "web": [
+ "GameButtonThumbLeft"
+ ],
+ "android": [
+ "BUTTON_THUMBL"
+ ]
+ },
+ "values": {
+ "android": [
+ 106
+ ],
+ "fuchsia": [
+ 77309804315
+ ]
+ }
+ },
+ "GameButtonThumbRight": {
+ "name": "GameButtonThumbRight",
+ "value": 8589935388,
+ "names": {
+ "web": [
+ "GameButtonThumbRight"
+ ],
+ "android": [
+ "BUTTON_THUMBR"
+ ]
+ },
+ "values": {
+ "android": [
+ 107
+ ],
+ "fuchsia": [
+ 77309804316
+ ]
+ }
+ },
+ "GameButtonX": {
+ "name": "GameButtonX",
+ "value": 8589935389,
+ "names": {
+ "web": [
+ "GameButtonX"
+ ],
+ "android": [
+ "BUTTON_X"
+ ]
+ },
+ "values": {
+ "android": [
+ 99
+ ],
+ "fuchsia": [
+ 77309804317
+ ]
+ }
+ },
+ "GameButtonY": {
+ "name": "GameButtonY",
+ "value": 8589935390,
+ "names": {
+ "web": [
+ "GameButtonY"
+ ],
+ "android": [
+ "BUTTON_Y"
+ ]
+ },
+ "values": {
+ "android": [
+ 100
+ ],
+ "fuchsia": [
+ 77309804318
+ ]
+ }
+ },
+ "GameButtonZ": {
+ "name": "GameButtonZ",
+ "value": 8589935391,
+ "names": {
+ "web": [
+ "GameButtonZ"
+ ],
+ "android": [
+ "BUTTON_Z"
+ ]
+ },
+ "values": {
+ "android": [
+ 101
+ ],
+ "fuchsia": [
+ 77309804319
]
}
}
diff --git a/dev/tools/gen_keycodes/data/mask_constants.json b/dev/tools/gen_keycodes/data/mask_constants.json
deleted file mode 100644
index a6769fc..0000000
--- a/dev/tools/gen_keycodes/data/mask_constants.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "valueMask": {
- "value": "0x000FFFFFFFF",
- "description": [
- "Mask for the 32-bit value portion of the key code.",
- "This is used by platform-specific code to generate Flutter key codes."
- ]
- },
-
- "platformMask": {
- "value": "0x0FF00000000",
- "description": [
- "Mask for the platform prefix portion of the key code.",
- "This is used by platform-specific code to generate Flutter key codes."
- ]
- },
-
- "unicodePlane": {
- "value": "0x00000000000",
- "description": [
- "The code prefix for keys which have a Unicode representation.",
- "This is used by platform-specific code to generate Flutter key codes."
- ]
- },
-
- "autogeneratedMask": {
- "value": "0x10000000000",
- "description": [
- "Mask for the auto-generated bit portion of the key code.",
- "This is used by platform-specific code to generate new Flutter key codes for keys which are not recognized."
- ]
- },
-
- "synonymMask": {
- "value": "0x20000000000",
- "description": [
- "Mask for the synonym pseudo-keys generated for keys which appear in more than one place on the keyboard.",
- "IDs in this range are used to represent keys which appear in multiple places on the keyboard, such as the SHIFT, ALT, CTRL, and numeric keypad keys. These key codes will never be generated by the key event system, but may be used in key maps to represent the union of all the keys of each type in order to match them.",
- "To look up the synonyms that are defined, look in the [synonyms] map."
- ]
- },
-
- "hidPlane": {
- "value": "0x00100000000",
- "description": [
- "The code prefix for keys which do not have a Unicode representation.",
- "This is used by platform-specific code to generate Flutter key codes using HID Usage codes."
- ]
- }
-}
diff --git a/dev/tools/gen_keycodes/data/physical_key_data.json b/dev/tools/gen_keycodes/data/physical_key_data.json
index 606bbba..3cdbfd0 100644
--- a/dev/tools/gen_keycodes/data/physical_key_data.json
+++ b/dev/tools/gen_keycodes/data/physical_key_data.json
@@ -1,12 +1,4 @@
{
- "None": {
- "names": {
- "name": "None"
- },
- "scanCodes": {
- "usb": 0
- }
- },
"Hyper": {
"names": {
"name": "Hyper",
diff --git a/dev/tools/gen_keycodes/data/printable_to_numpads.json b/dev/tools/gen_keycodes/data/printable_to_numpads.json
deleted file mode 100644
index 8b65e4d..0000000
--- a/dev/tools/gen_keycodes/data/printable_to_numpads.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "0": "Numpad0",
- "1": "Numpad1",
- "2": "Numpad2",
- "3": "Numpad3",
- "4": "Numpad4",
- "5": "Numpad5",
- "6": "Numpad6",
- "7": "Numpad7",
- "8": "Numpad8",
- "9": "Numpad9",
- ".": "NumpadDecimal",
- "+": "NumpadAdd",
- "-": "NumpadSubtract",
- "*": "NumpadMultiply",
- "/": "NumpadDivide",
- "=": "NumpadEqual",
- ",": "NumpadComma",
- "(": "NumpadParenLeft",
- ")": "NumpadParenRight",
- "\u000D": "NumpadEnter"
-}
diff --git a/dev/tools/gen_keycodes/data/supplemental_key_data.inc b/dev/tools/gen_keycodes/data/supplemental_key_data.inc
index a04c0c3..c7c38af 100644
--- a/dev/tools/gen_keycodes/data/supplemental_key_data.inc
+++ b/dev/tools/gen_keycodes/data/supplemental_key_data.inc
@@ -1,8 +1,8 @@
- // These are supplemental key data to be added to those that Chromium
- // defines.
+ // This file contains supplemental key data to be added to those that
+ // Chromium defines.
// ============================================================
- // Printable keys
+ // Printable keys (Unicode plane)
// ============================================================
// Key Enum Unicode code point
@@ -76,63 +76,105 @@
DOM_KEY_UNI("Tilde", TILDE, '~'),
DOM_KEY_UNI("Bar", BAR, '|'),
+ // The following keys reside in the Flutter plane (0x0100000000).
// ============================================================
- // Game controller buttons
+ // Miscellaneous (0x000__)
// ============================================================
- // Since the web doesn't have game controller buttons defined in the
- // same way, these map USB HID codes for game controller buttons to
- // Android/Linux button names.
- // Key Enum Value
- DOM_KEY_MAP("GameButton1", GAME_BUTTON_1, 0x05ff01),
- DOM_KEY_MAP("GameButton2", GAME_BUTTON_2, 0x05ff02),
- DOM_KEY_MAP("GameButton3", GAME_BUTTON_3, 0x05ff03),
- DOM_KEY_MAP("GameButton4", GAME_BUTTON_4, 0x05ff04),
- DOM_KEY_MAP("GameButton5", GAME_BUTTON_5, 0x05ff05),
- DOM_KEY_MAP("GameButton6", GAME_BUTTON_6, 0x05ff06),
- DOM_KEY_MAP("GameButton7", GAME_BUTTON_7, 0x05ff07),
- DOM_KEY_MAP("GameButton8", GAME_BUTTON_8, 0x05ff08),
- DOM_KEY_MAP("GameButton9", GAME_BUTTON_9, 0x05ff09),
- DOM_KEY_MAP("GameButton10", GAME_BUTTON_10, 0x05ff0a),
- DOM_KEY_MAP("GameButton11", GAME_BUTTON_11, 0x05ff0b),
- DOM_KEY_MAP("GameButton12", GAME_BUTTON_12, 0x05ff0c),
- DOM_KEY_MAP("GameButton13", GAME_BUTTON_13, 0x05ff0d),
- DOM_KEY_MAP("GameButton14", GAME_BUTTON_14, 0x05ff0e),
- DOM_KEY_MAP("GameButton15", GAME_BUTTON_15, 0x05ff0f),
- DOM_KEY_MAP("GameButton16", GAME_BUTTON_16, 0x05ff10),
- DOM_KEY_MAP("GameButtonA", GAME_BUTTON_A, 0x05ff11),
- DOM_KEY_MAP("GameButtonB", GAME_BUTTON_B, 0x05ff12),
- DOM_KEY_MAP("GameButtonC", GAME_BUTTON_C, 0x05ff13),
- DOM_KEY_MAP("GameButtonLeft1", GAME_BUTTON_L1, 0x05ff14),
- DOM_KEY_MAP("GameButtonLeft2", GAME_BUTTON_L2, 0x05ff15),
- DOM_KEY_MAP("GameButtonMode", GAME_BUTTON_MODE, 0x05ff16),
- DOM_KEY_MAP("GameButtonRight1", GAME_BUTTON_R1, 0x05ff17),
- DOM_KEY_MAP("GameButtonRight2", GAME_BUTTON_R2, 0x05ff18),
- DOM_KEY_MAP("GameButtonSelect", GAME_BUTTON_SELECT, 0x05ff19),
- DOM_KEY_MAP("GameButtonStart", GAME_BUTTON_START, 0x05ff1a),
- DOM_KEY_MAP("GameButtonThumbLeft", GAME_BUTTON_THUMBL, 0x05ff1b),
- DOM_KEY_MAP("GameButtonThumbRight", GAME_BUTTON_THUMBR, 0x05ff1c),
- DOM_KEY_MAP("GameButtonX", GAME_BUTTON_X, 0x05ff1d),
- DOM_KEY_MAP("GameButtonY", GAME_BUTTON_Y, 0x05ff1e),
- DOM_KEY_MAP("GameButtonZ", GAME_BUTTON_Z, 0x05ff1f),
-
+ // Key Enum Value
+ FLUTTER_KEY_MAP("Suspend", SUSPEND, 0x00000),
+ FLUTTER_KEY_MAP("Resume", RESUME, 0x00001),
+ FLUTTER_KEY_MAP("Sleep", SLEEP, 0x00002),
+ FLUTTER_KEY_MAP("Abort", ABORT, 0x00003),
+ FLUTTER_KEY_MAP("Lang1", LANG1, 0x00010),
+ FLUTTER_KEY_MAP("Lang2", LANG2, 0x00011),
+ FLUTTER_KEY_MAP("Lang3", LANG3, 0x00012),
+ FLUTTER_KEY_MAP("Lang4", LANG4, 0x00013),
+ FLUTTER_KEY_MAP("Lang5", LANG5, 0x00014),
+ FLUTTER_KEY_MAP("IntlBackslash", INTL_BACKSLASH, 0x00020),
+ FLUTTER_KEY_MAP("IntlRo", INTL_RO, 0x00021),
+ FLUTTER_KEY_MAP("IntlYen", INTL_YEN, 0x00022),
// ============================================================
- // Other buttons
+ // Modifiers (0x001__)
+ // ============================================================
+ // Key Enum Value
+ FLUTTER_KEY_MAP("ControlLeft", CONTROL_LEFT, 0x00100),
+ FLUTTER_KEY_MAP("ControlRight", CONTROL_RIGHT, 0x00101),
+ FLUTTER_KEY_MAP("ShiftLeft", SHIFT_LEFT, 0x00102),
+ FLUTTER_KEY_MAP("ShiftRight", SHIFT_RIGHT, 0x00103),
+ FLUTTER_KEY_MAP("AltLeft", ALT_LEFT, 0x00104),
+ FLUTTER_KEY_MAP("AltRight", ALT_RIGHT, 0x00105),
+ FLUTTER_KEY_MAP("MetaLeft", META_LEFT, 0x00106),
+ FLUTTER_KEY_MAP("MetaRight", META_RIGHT, 0x00107),
+ // Synonym keys are added for compatibility and will be removed in the future.
+ FLUTTER_KEY_MAP("Control", CONTROL, 0x001F0),
+ FLUTTER_KEY_MAP("Shift", SHIFT, 0x001F2),
+ FLUTTER_KEY_MAP("Alt", ALT, 0x001F4),
+ FLUTTER_KEY_MAP("Meta", META, 0x001F6),
+
+ // ============================================================
+ // Number pad (0x002__)
+ // ============================================================
+ // The value for number pad buttons are derived from their unicode code
+ // points.
+ FLUTTER_KEY_MAP("NumpadEnter", NUMPAD_ENTER, 0x0020D),
+ FLUTTER_KEY_MAP("NumpadParenLeft", NUMPAD_PAREN_LEFT, 0x00228),
+ FLUTTER_KEY_MAP("NumpadParenRight", NUMPAD_PAREN_RIGHT, 0x00229),
+ FLUTTER_KEY_MAP("NumpadMultiply", NUMPAD_MULTIPLY, 0x0022A),
+ FLUTTER_KEY_MAP("NumpadAdd", NUMPAD_ADD, 0x0022B),
+ FLUTTER_KEY_MAP("NumpadComma", NUMPAD_COMMA, 0x0022C),
+ FLUTTER_KEY_MAP("NumpadSubtract", NUMPAD_SUBTRACT, 0x0022D),
+ FLUTTER_KEY_MAP("NumpadDecimal", NUMPAD_DECIMAL, 0x0022E),
+ FLUTTER_KEY_MAP("NumpadDivide", NUMPAD_DIVIDE, 0x0022F),
+ FLUTTER_KEY_MAP("Numpad0", NUMPAD_0, 0x00230),
+ FLUTTER_KEY_MAP("Numpad1", NUMPAD_1, 0x00231),
+ FLUTTER_KEY_MAP("Numpad2", NUMPAD_2, 0x00232),
+ FLUTTER_KEY_MAP("Numpad3", NUMPAD_3, 0x00233),
+ FLUTTER_KEY_MAP("Numpad4", NUMPAD_4, 0x00234),
+ FLUTTER_KEY_MAP("Numpad5", NUMPAD_5, 0x00235),
+ FLUTTER_KEY_MAP("Numpad6", NUMPAD_6, 0x00236),
+ FLUTTER_KEY_MAP("Numpad7", NUMPAD_7, 0x00237),
+ FLUTTER_KEY_MAP("Numpad8", NUMPAD_8, 0x00238),
+ FLUTTER_KEY_MAP("Numpad9", NUMPAD_9, 0x00239),
+ FLUTTER_KEY_MAP("NumpadEqual", NUMPAD_EQUAL, 0x0023D),
+
+ // ============================================================
+ // Game controller buttons (0x003__)
// ============================================================
- // Key Enum Value
- DOM_KEY_MAP("None", NONE, 0x0),
- DOM_KEY_MAP("Suspend", SUSPEND, 0x100000014),
- DOM_KEY_MAP("Resume", RESUME, 0x100000015),
- DOM_KEY_MAP("Sleep", SLEEP, 0x100010082),
- DOM_KEY_MAP("IntlBackslash", INTL_BACKSLASH, 0x100070064),
- DOM_KEY_MAP("IntlRo", INTL_RO, 0x100070087),
- DOM_KEY_MAP("IntlYen", INTL_YEN, 0x100070089),
- DOM_KEY_MAP("Lang1", LANG1, 0x100070090),
- DOM_KEY_MAP("Lang2", LANG2, 0x100070091),
- DOM_KEY_MAP("Lang3", LANG3, 0x100070092),
- DOM_KEY_MAP("Lang4", LANG4, 0x100070093),
- DOM_KEY_MAP("Lang5", LANG5, 0x100070094),
- DOM_KEY_MAP("Abort", ABORT, 0x10007009b),
+ // The value for game controller buttons are derived from the last 8 bit
+ // of its USB HID usage.
+ // Key Enum Value
+ FLUTTER_KEY_MAP("GameButton1", GAME_BUTTON_1, 0x00301),
+ FLUTTER_KEY_MAP("GameButton2", GAME_BUTTON_2, 0x00302),
+ FLUTTER_KEY_MAP("GameButton3", GAME_BUTTON_3, 0x00303),
+ FLUTTER_KEY_MAP("GameButton4", GAME_BUTTON_4, 0x00304),
+ FLUTTER_KEY_MAP("GameButton5", GAME_BUTTON_5, 0x00305),
+ FLUTTER_KEY_MAP("GameButton6", GAME_BUTTON_6, 0x00306),
+ FLUTTER_KEY_MAP("GameButton7", GAME_BUTTON_7, 0x00307),
+ FLUTTER_KEY_MAP("GameButton8", GAME_BUTTON_8, 0x00308),
+ FLUTTER_KEY_MAP("GameButton9", GAME_BUTTON_9, 0x00309),
+ FLUTTER_KEY_MAP("GameButton10", GAME_BUTTON_10, 0x0030a),
+ FLUTTER_KEY_MAP("GameButton11", GAME_BUTTON_11, 0x0030b),
+ FLUTTER_KEY_MAP("GameButton12", GAME_BUTTON_12, 0x0030c),
+ FLUTTER_KEY_MAP("GameButton13", GAME_BUTTON_13, 0x0030d),
+ FLUTTER_KEY_MAP("GameButton14", GAME_BUTTON_14, 0x0030e),
+ FLUTTER_KEY_MAP("GameButton15", GAME_BUTTON_15, 0x0030f),
+ FLUTTER_KEY_MAP("GameButton16", GAME_BUTTON_16, 0x00310),
+ FLUTTER_KEY_MAP("GameButtonA", GAME_BUTTON_A, 0x00311),
+ FLUTTER_KEY_MAP("GameButtonB", GAME_BUTTON_B, 0x00312),
+ FLUTTER_KEY_MAP("GameButtonC", GAME_BUTTON_C, 0x00313),
+ FLUTTER_KEY_MAP("GameButtonLeft1", GAME_BUTTON_L1, 0x00314),
+ FLUTTER_KEY_MAP("GameButtonLeft2", GAME_BUTTON_L2, 0x00315),
+ FLUTTER_KEY_MAP("GameButtonMode", GAME_BUTTON_MODE, 0x00316),
+ FLUTTER_KEY_MAP("GameButtonRight1", GAME_BUTTON_R1, 0x00317),
+ FLUTTER_KEY_MAP("GameButtonRight2", GAME_BUTTON_R2, 0x00318),
+ FLUTTER_KEY_MAP("GameButtonSelect", GAME_BUTTON_SELECT, 0x00319),
+ FLUTTER_KEY_MAP("GameButtonStart", GAME_BUTTON_START, 0x0031a),
+ FLUTTER_KEY_MAP("GameButtonThumbLeft", GAME_BUTTON_THUMBL, 0x0031b),
+ FLUTTER_KEY_MAP("GameButtonThumbRight", GAME_BUTTON_THUMBR, 0x0031c),
+ FLUTTER_KEY_MAP("GameButtonX", GAME_BUTTON_X, 0x0031d),
+ FLUTTER_KEY_MAP("GameButtonY", GAME_BUTTON_Y, 0x0031e),
+ FLUTTER_KEY_MAP("GameButtonZ", GAME_BUTTON_Z, 0x0031f),
diff --git a/dev/tools/gen_keycodes/data/web_key_map_dart.tmpl b/dev/tools/gen_keycodes/data/web_key_map_dart.tmpl
index e8d04a7..5a5eeec 100644
--- a/dev/tools/gen_keycodes/data/web_key_map_dart.tmpl
+++ b/dev/tools/gen_keycodes/data/web_key_map_dart.tmpl
@@ -9,7 +9,7 @@
// Edit the template dev/tools/gen_keycodes/data/web_key_map_dart.tmpl instead.
// See dev/tools/gen_keycodes/README.md for more information.
-/// Maps Web KeyboardEvent codes to the matching LogicalKeyboardKey id.
+/// Maps Web KeyboardEvent keys to the matching LogicalKeyboardKey id.
const Map<String, int> kWebToLogicalKey = <String, int>{
@@@WEB_LOGICAL_KEY_CODE_MAP@@@
};
diff --git a/dev/tools/gen_keycodes/data/windows_flutter_key_map_cc.tmpl b/dev/tools/gen_keycodes/data/windows_flutter_key_map_cc.tmpl
index 97f3621..99603e5 100644
--- a/dev/tools/gen_keycodes/data/windows_flutter_key_map_cc.tmpl
+++ b/dev/tools/gen_keycodes/data/windows_flutter_key_map_cc.tmpl
@@ -37,6 +37,8 @@
@@@WINDOWS_SCAN_CODE_TO_LOGICAL_MAP@@@
};
+@@@MASK_CONSTANTS@@@
+
} // namespace flutter
#endif
diff --git a/dev/tools/gen_keycodes/data/windows_logical_to_window_vk.json b/dev/tools/gen_keycodes/data/windows_logical_to_window_vk.json
index e8d0224..e4803cb 100644
--- a/dev/tools/gen_keycodes/data/windows_logical_to_window_vk.json
+++ b/dev/tools/gen_keycodes/data/windows_logical_to_window_vk.json
@@ -10,8 +10,7 @@
"Lang1": ["HANGUL", "HANGEUL", "KANA"],
"JunjaMode": ["JUNJA"],
"FinalMode": ["FINAL"],
- "HanjaMode": ["HANJA"],
- "KanjiMode": ["KANJI"],
+ "KanjiMode": ["KANJI", "HANJA"],
"Escape": ["ESCAPE"],
"Convert": ["CONVERT"],
"Nonconvert": ["NONCONVERT"],
@@ -49,7 +48,7 @@
"Numpad9": ["NUMPAD9"],
"NumpadMultiply": ["MULTIPLY"],
"NumpadAdd": ["ADD"],
- "NumpadSeparator": ["SEPARATOR"],
+ "NumpadComma": ["SEPARATOR"],
"NumpadSubtract": ["SUBTRACT"],
"NumpadDecimal": ["DECIMAL"],
"NumpadDivide": ["DIVIDE"],
diff --git a/dev/tools/gen_keycodes/lib/constants.dart b/dev/tools/gen_keycodes/lib/constants.dart
index bf2c0f2..3fe8b75 100644
--- a/dev/tools/gen_keycodes/lib/constants.dart
+++ b/dev/tools/gen_keycodes/lib/constants.dart
@@ -2,147 +2,107 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-/* === LOGICAL KEY BITMASKS === */
-// The following constants are used to composite the value for a Flutter logical
-// key.
-//
-// A Flutter logical key supports up to 53-bits, as limited by JavaScript
-// integers.
-
-/* Bit 31-0: Value */
-// The lower 32 bits represent different values within a plane.
-
-/// Mask for the 32-bit value portion of the code.
-const int kValueMask = 0x000FFFFFFFF;
-
-
-/* Bit 39-32: Source of value */
-// The next 8 bits represent where the values come from, consequently how to
-// interpret them.
-
-/// Mask for bit #39-32 portion of the code, indicating the source of the value.
-const int kPlatformMask = 0x0FF00000000;
-
-/// The code prefix for keys that have a Unicode representation, generated from
-/// their code points.
-///
-/// See also:
-///
-/// * [kUnprintablePlane], for keys that are also generated from code points but
-/// unprintable.
-const int kUnicodePlane = 0x00000000000;
-
-/// The code prefix for keys generated from their USB HID usages.
-const int kHidPlane = 0x00100000000;
-
-/// The code prefix for unrecognized keys that are unique to Android, generated
-/// from platform-specific codes.
-const int kAndroidPlane = 0x00200000000;
-
-/// The code prefix for unrecognized keys that are unique to Fuchsia, generated
-/// from platform-specific codes.
-const int kFuchsiaPlane = 0x00300000000;
-
-/// The code prefix for unrecognized keys that are unique to iOS, generated
-/// from platform-specific codes.
-const int kIosPlane = 0x00400000000;
-
-/// The code prefix for unrecognized keys that are unique to macOS, generated
-/// from platform-specific codes.
-const int kMacOsPlane = 0x00500000000;
-
-/// The code prefix for unrecognized keys that are unique to Gtk, generated from
-/// platform-specific codes.
-const int kGtkPlane = 0x00600000000;
-
-/// The code prefix for unrecognized keys that are unique to Windows, generated
-/// from platform-specific codes.
-const int kWindowsPlane = 0x00700000000;
-
-/// The code prefix for unrecognized keys that are unique to Web, generated from
-/// platform-specific codes.
-const int kWebPlane = 0x00800000000;
-
-/// The code prefix for keys that do not have a Unicode representation, generated
-/// from their code points.
-///
-/// See also:
-///
-/// * [kUnicodePlane], for keys that are also generated from code points but
-/// printable.
-const int kUnprintablePlane = 0x01000000000;
-
-
-/* Bit 43-40: Key variation */
-// The next 4 bits represent keys that have multiple variations, such as a left
-// and right variation of a modifier key, or a Numpad variation of a digit key.
-
-/// Mask for bit #43-40 portion of the code, indicating the variation of the key.
-const int kVariationMask = 0xF0000000000;
-
-/// The code prefix for pseudo-keys which represent collections of key synonyms,
-/// such as Control.
-const int kSynonymPlane = 0x20000000000;
-
-/// The code prefix for the left modifier of a pair of modifiers, such as Control
-/// Left.
-const int kLeftModifierPlane = 0x30000000000;
-
-/// The code prefix for the right modifier of a pair of modifiers, such as Control
-/// Right.
-const int kRightModifierPlane = 0x40000000000;
-
-/// The code prefix for a Numpad key, such as Numpad 1.
-const int kNumpadPlane = 0x50000000000;
+import 'utils.dart';
class MaskConstant {
const MaskConstant({required this.name, required this.value, required this.description});
+ const MaskConstant.platform({required String platform, required int value})
+ : this(
+ name: '$platform Plane',
+ value: value,
+ description: 'The plane value for the private keys defined by the $platform embedding.'
+ );
+
final String name;
final int value;
- final List<String> description;
+ final String description;
+
+ String get upperCamelName {
+ return name
+ .split(' ')
+ .map<String>((String word) => lowerCamelToUpperCamel(word.toLowerCase()))
+ .join('');
+ }
+
+ String get lowerCamelName {
+ final String upperCamel = upperCamelName;
+ return upperCamel.substring(0, 1).toLowerCase() + upperCamel.substring(1);
+ }
}
-const List<MaskConstant> maskConstants = <MaskConstant>[
- MaskConstant(
- name: 'valueMask',
- value: kValueMask,
- description: <String>[
- 'Mask for the 32-bit value portion of the key code.',
- 'This is used by platform-specific code to generate Flutter key codes.',
- ],
- ),
- MaskConstant(
- name: 'platformMask',
- value: kPlatformMask,
- description: <String>[
- 'Mask for the platform prefix portion of the key code.',
- 'This is used by platform-specific code to generate Flutter key codes.'
- ],
- ),
- MaskConstant(
- name: 'unicodePlane',
- value: kUnicodePlane,
- description: <String>[
- 'The code prefix for keys which have a Unicode representation.',
- 'This is used by platform-specific code to generate Flutter key codes.'
- ],
- ),
- MaskConstant(
- name: 'synonymMask',
- value: kSynonymPlane,
- description: <String>[
- 'Mask for the synonym pseudo-keys generated for keys which appear in more than one place on the keyboard.',
- 'IDs in this range are used to represent keys which appear in multiple places on the keyboard, such as the SHIFT, ALT, CTRL, and numeric keypad keys. These key codes will never be generated by the key event system, but may be used in key maps to represent the union of all the keys of each type in order to match them.',
- 'To look up the synonyms that are defined, look in the [synonyms] map.'
- ],
- ),
- MaskConstant(
- name: 'hidPlane',
- value: kHidPlane,
- description: <String>[
- 'The code prefix for keys which do not have a Unicode representation.',
- 'This is used by platform-specific code to generate Flutter key codes using HID Usage codes.'
- ],
- ),
-];
+const MaskConstant kValueMask = MaskConstant(
+ name: 'Value Mask',
+ value: 0x00FFFFFFFF,
+ description: 'Mask for the 32-bit value portion of the key code.',
+);
+
+const MaskConstant kPlaneMask = MaskConstant(
+ name: 'Plane Mask',
+ value: 0xFF00000000,
+ description: 'Mask for the plane prefix portion of the key code.',
+);
+
+const MaskConstant kUnicodePlane = MaskConstant(
+ name: 'Unicode Plane',
+ value: 0x0000000000,
+ description: 'The plane value for keys which have a Unicode representation.',
+);
+
+const MaskConstant kUnprintablePlane = MaskConstant(
+ name: 'Unprintable Plane',
+ value: 0x0100000000,
+ description: 'The plane value for keys defined by Chromium and does not have a Unicode representation.',
+);
+
+const MaskConstant kFlutterPlane = MaskConstant(
+ name: 'Flutter Plane',
+ value: 0x0200000000,
+ description: 'The plane value for keys defined by Flutter.',
+);
+
+const MaskConstant kStartOfPlatformPlanes = MaskConstant(
+ name: 'Start Of Platform Planes',
+ value: 0x1100000000,
+ description: 'The platform plane with the lowest mask value, beyond which the keys are considered autogenerated.',
+);
+
+const MaskConstant kAndroidPlane = MaskConstant.platform(
+ platform: 'Android',
+ value: 0x1100000000,
+);
+
+const MaskConstant kFuchsiaPlane = MaskConstant.platform(
+ platform: 'Fuchsia',
+ value: 0x1200000000,
+);
+
+const MaskConstant kIosPlane = MaskConstant.platform(
+ platform: 'iOS',
+ value: 0x1300000000,
+);
+
+const MaskConstant kMacosPlane = MaskConstant.platform(
+ platform: 'macOS',
+ value: 0x1400000000,
+);
+
+const MaskConstant kGtkPlane = MaskConstant.platform(
+ platform: 'Gtk',
+ value: 0x1500000000,
+);
+
+const MaskConstant kWindowsPlane = MaskConstant.platform(
+ platform: 'Windows',
+ value: 0x1600000000,
+);
+
+const MaskConstant kWebPlane = MaskConstant.platform(
+ platform: 'Web',
+ value: 0x1700000000,
+);
+
+const MaskConstant kGlfwPlane = MaskConstant.platform(
+ platform: 'GLFW',
+ value: 0x1800000000,
+);
diff --git a/dev/tools/gen_keycodes/lib/gtk_code_gen.dart b/dev/tools/gen_keycodes/lib/gtk_code_gen.dart
index 1a61a5e..bca173a 100644
--- a/dev/tools/gen_keycodes/lib/gtk_code_gen.dart
+++ b/dev/tools/gen_keycodes/lib/gtk_code_gen.dart
@@ -5,6 +5,7 @@
import 'package:path/path.dart' as path;
import 'base_code_gen.dart';
+import 'constants.dart';
import 'logical_key_data.dart';
import 'physical_key_data.dart';
import 'utils.dart';
@@ -55,27 +56,27 @@
final StringBuffer result = StringBuffer();
source.forEach((String modifierBitName, List<String> keyNames) {
assert(keyNames.length == 2 || keyNames.length == 3);
- final String primaryLogicalName = keyNames[0];
- final String primaryPhysicalName = keyNames[1];
- final String? secondaryPhysicalName = keyNames.length == 3 ? keyNames[2] : null;
- final LogicalKeyEntry primaryLogical = logicalData.entryByName(primaryLogicalName);
+ final String primaryPhysicalName = keyNames[0];
+ final String primaryLogicalName = keyNames[1];
+ final String? secondaryLogicalName = keyNames.length == 3 ? keyNames[2] : null;
final PhysicalKeyEntry primaryPhysical = physicalData.entryByName(primaryPhysicalName);
- final PhysicalKeyEntry? secondaryPhysical = secondaryPhysicalName == null ? null : physicalData.entryByName(secondaryPhysicalName);
- if (secondaryPhysical == null && secondaryPhysicalName != null) {
- print('Unrecognized secondary physical key $secondaryPhysicalName specified for $debugFunctionName.');
+ final LogicalKeyEntry primaryLogical = logicalData.entryByName(primaryLogicalName);
+ final LogicalKeyEntry? secondaryLogical = secondaryLogicalName == null ? null : logicalData.entryByName(secondaryLogicalName);
+ if (secondaryLogical == null && secondaryLogicalName != null) {
+ print('Unrecognized secondary logical key $secondaryLogicalName specified for $debugFunctionName.');
return;
}
- final String pad = secondaryPhysical == null ? '' : ' ';
+ final String pad = secondaryLogical == null ? '' : ' ';
result.writeln('''
data = g_new(FlKeyEmbedderCheckedKey, 1);
g_hash_table_insert(table, GUINT_TO_POINTER(GDK_${modifierBitName}_MASK), data);
data->is_caps_lock = ${primaryPhysicalName == 'CapsLock' ? 'true' : 'false'};
- data->primary_logical_key = ${toHex(primaryLogical.value, digits: 11)};$pad // ${primaryLogical.constantName}
- data->primary_physical_key = ${toHex(primaryPhysical.usbHidCode, digits: 9)};$pad // ${primaryPhysical.constantName}''');
- if (secondaryPhysical != null) {
+ data->primary_physical_key = ${toHex(primaryPhysical.usbHidCode, digits: 9)};$pad // ${primaryPhysical.constantName}
+ data->primary_logical_key = ${toHex(primaryLogical.value, digits: 11)};$pad // ${primaryLogical.constantName}''');
+ if (secondaryLogical != null) {
result.writeln('''
- data->secondary_physical_key = ${toHex(secondaryPhysical.usbHidCode, digits: 9)}; // ${secondaryPhysical.constantName}''');
+ data->secondary_logical_key = ${toHex(secondaryLogical.value, digits: 11)}; // ${secondaryLogical.constantName}''');
}
});
return result.toString().trimRight();
@@ -91,6 +92,20 @@
}
final Map<String, List<String>> _lockBitMapping;
+ /// This generates the mask values for the part of a key code that defines its plane.
+ String get _maskConstants {
+ final StringBuffer buffer = StringBuffer();
+ const List<MaskConstant> maskConstants = <MaskConstant>[
+ kValueMask,
+ kUnicodePlane,
+ kGtkPlane,
+ ];
+ for (final MaskConstant constant in maskConstants) {
+ buffer.writeln('const uint64_t k${constant.upperCamelName} = ${toHex(constant.value, digits: 11)};');
+ }
+ return buffer.toString().trimRight();
+ }
+
@override
String get templatePath => path.join(dataRoot, 'gtk_key_mapping_cc.tmpl');
@@ -105,6 +120,7 @@
'GTK_KEYVAL_CODE_MAP': _gtkKeyvalCodeMap,
'GTK_MODIFIER_BIT_MAP': _gtkModifierBitMap,
'GTK_MODE_BIT_MAP': _gtkModeBitMap,
+ 'MASK_CONSTANTS': _maskConstants,
};
}
}
diff --git a/dev/tools/gen_keycodes/lib/ios_code_gen.dart b/dev/tools/gen_keycodes/lib/ios_code_gen.dart
index 5a631be..40cade2 100644
--- a/dev/tools/gen_keycodes/lib/ios_code_gen.dart
+++ b/dev/tools/gen_keycodes/lib/ios_code_gen.dart
@@ -25,10 +25,6 @@
const List<String> kSpecialPhysicalKeys = <String>['CapsLock'];
const List<String> kSpecialLogicalKeys = <String>['CapsLock'];
-String _toConstantVariableName(String variableName) {
- return 'k${variableName[0].toUpperCase()}${variableName.substring(1)}';
-}
-
/// Generates the key mapping for iOS, based on the information in the key
/// data structure given to it.
class IOSCodeGenerator extends PlatformCodeGenerator {
@@ -37,35 +33,39 @@
/// This generates the map of iOS key codes to physical keys.
String get _scanCodeMap {
- final StringBuffer scanCodeMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('iOS scancode map');
for (final PhysicalKeyEntry entry in keyData.entries) {
if (entry.iOSScanCode != null) {
- scanCodeMap.writeln(' {${toHex(entry.iOSScanCode)}, ${toHex(entry.usbHidCode)}}, // ${entry.constantName}');
+ lines.add(entry.iOSScanCode!,
+ ' {${toHex(entry.iOSScanCode)}, ${toHex(entry.usbHidCode)}}, // ${entry.constantName}');
}
}
- return scanCodeMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
String get _keyCodeToLogicalMap {
- final StringBuffer result = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('iOS keycode map');
for (final LogicalKeyEntry entry in logicalData.entries) {
zipStrict(entry.iOSKeyCodeValues, entry.iOSKeyCodeNames, (int iOSValue, String iOSName) {
- result.writeln(' {${toHex(iOSValue)}, ${toHex(entry.value, digits: 11)}}, // $iOSName');
+ lines.add(iOSValue, ' {${toHex(iOSValue)}, ${toHex(entry.value, digits: 11)}}, // $iOSName');
});
}
- return result.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the mask values for the part of a key code that defines its plane.
String get _maskConstants {
final StringBuffer buffer = StringBuffer();
+ const List<MaskConstant> maskConstants = <MaskConstant>[
+ kValueMask,
+ kUnicodePlane,
+ kIosPlane,
+ ];
for (final MaskConstant constant in maskConstants) {
buffer.writeln('/**');
- buffer.write(constant.description
- .map((String line) => wrapString(line, prefix: ' * '))
- .join(' *\n'));
+ buffer.write(wrapString(constant.description, prefix: ' * '));
buffer.writeln(' */');
- buffer.writeln('const uint64_t ${_toConstantVariableName(constant.name)} = ${toHex(constant.value, digits: 11)};');
+ buffer.writeln('const uint64_t k${constant.upperCamelName} = ${toHex(constant.value, digits: 11)};');
buffer.writeln('');
}
return buffer.toString().trimRight();
@@ -75,7 +75,8 @@
String get _keyToModifierFlagMap {
final StringBuffer modifierKeyMap = StringBuffer();
for (final String name in kModifiersOfInterest) {
- modifierKeyMap.writeln(' {${toHex(logicalData.entryByName(name).iOSKeyCodeValues[0])}, kModifierFlag${lowerCamelToUpperCamel(name)}},');
+ final String line = '{${toHex(logicalData.entryByName(name).iOSKeyCodeValues[0])}, kModifierFlag${lowerCamelToUpperCamel(name)}},';
+ modifierKeyMap.writeln(' ${line.padRight(42)}// $name');
}
return modifierKeyMap.toString().trimRight();
}
@@ -84,7 +85,8 @@
String get _modifierFlagToKeyMap {
final StringBuffer modifierKeyMap = StringBuffer();
for (final String name in kModifiersOfInterest) {
- modifierKeyMap.writeln(' {kModifierFlag${lowerCamelToUpperCamel(name)}, ${toHex(logicalData.entryByName(name).iOSKeyCodeValues[0])}},');
+ final String line = '{kModifierFlag${lowerCamelToUpperCamel(name)}, ${toHex(logicalData.entryByName(name).iOSKeyCodeValues[0])}},';
+ modifierKeyMap.writeln(' ${line.padRight(42)}// $name');
}
return modifierKeyMap.toString().trimRight();
}
diff --git a/dev/tools/gen_keycodes/lib/keyboard_keys_code_gen.dart b/dev/tools/gen_keycodes/lib/keyboard_keys_code_gen.dart
index cd83d02..10c680e 100644
--- a/dev/tools/gen_keycodes/lib/keyboard_keys_code_gen.dart
+++ b/dev/tools/gen_keycodes/lib/keyboard_keys_code_gen.dart
@@ -16,6 +16,23 @@
return wrapString(input, prefix: ' /// ');
}
+final List<MaskConstant> _maskConstants = <MaskConstant>[
+ kValueMask,
+ kPlaneMask,
+ kUnicodePlane,
+ kUnprintablePlane,
+ kFlutterPlane,
+ kStartOfPlatformPlanes,
+ kAndroidPlane,
+ kFuchsiaPlane,
+ kIosPlane,
+ kMacosPlane,
+ kGtkPlane,
+ kWindowsPlane,
+ kWebPlane,
+ kGlfwPlane,
+];
+
class SynonymKeyInfo {
SynonymKeyInfo(this.keys, this.name);
@@ -26,7 +43,6 @@
// It won't end up being the same value because it'll be in the pseudo-key
// plane.
LogicalKeyEntry get primaryKey => keys[0];
- int get value => (primaryKey.value & ~kVariationMask) + kSynonymPlane;
String get constantName => upperCamelToLowerCamel(name);
}
@@ -37,39 +53,36 @@
/// Gets the generated definitions of PhysicalKeyboardKeys.
String get _physicalDefinitions {
- final StringBuffer definitions = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Physical Key Definition');
for (final PhysicalKeyEntry entry in keyData.entries) {
final String firstComment = _wrapString('Represents the location of the '
'"${entry.commentName}" key on a generalized keyboard.');
final String otherComments = _wrapString('See the function '
- '[KeyEvent.physical] for more information.');
- definitions.write('''
-
+ '[RawKeyEvent.physicalKey] for more information.');
+ lines.add(entry.usbHidCode, '''
$firstComment ///
$otherComments static const PhysicalKeyboardKey ${entry.constantName} = PhysicalKeyboardKey(${toHex(entry.usbHidCode, digits: 8)});
''');
}
- return definitions.toString();
+ return lines.sortedJoin().trimRight();
}
String get _physicalDebugNames {
- final StringBuffer result = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Physical debug names');
for (final PhysicalKeyEntry entry in keyData.entries) {
- result.write('''
- ${toHex(entry.usbHidCode, digits: 8)}: '${entry.commentName}',
-''');
+ lines.add(entry.usbHidCode, '''
+ ${toHex(entry.usbHidCode, digits: 8)}: '${entry.commentName}',''');
}
- return result.toString();
+ return lines.sortedJoin().trimRight();
}
/// Gets the generated definitions of LogicalKeyboardKeys.
String get _logicalDefinitions {
- final StringBuffer definitions = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Logical debug names');
void printKey(int flutterId, String constantName, String commentName, {String? otherComments}) {
final String firstComment = _wrapString('Represents the logical "$commentName" key on the keyboard.');
- otherComments ??= _wrapString('See the function [KeyEvent.logical] for more information.');
- definitions.write('''
-
+ otherComments ??= _wrapString('See the function [RawKeyEvent.logicalKey] for more information.');
+ lines.add(flutterId, '''
$firstComment ///
$otherComments static const LogicalKeyboardKey $constantName = LogicalKeyboardKey(${toHex(flutterId, digits: 11)});
''');
@@ -80,67 +93,71 @@
entry.value,
entry.constantName,
entry.commentName,
+ otherComments: _otherComments(entry.name),
);
}
- for (final SynonymKeyInfo synonymInfo in synonyms) {
- // Use the first item in the synonyms as a template for the ID to use.
- // It won't end up being the same value because it'll be in the pseudo-key
- // plane.
- final Set<String> unionNames = synonymInfo.keys.map(
+ return lines.sortedJoin().trimRight();
+ }
+
+ String? _otherComments(String name) {
+ if (synonyms.containsKey(name)) {
+ final Set<String> unionNames = synonyms[name]!.keys.map(
(LogicalKeyEntry entry) => entry.constantName).toSet();
- printKey(synonymInfo.value, synonymInfo.constantName, PhysicalKeyEntry.getCommentName(synonymInfo.name),
- otherComments: _wrapString('This key represents the union of the keys '
+ return _wrapString('This key represents the union of the keys '
'$unionNames when comparing keys. This key will never be generated '
- 'directly, its main use is in defining key maps.'));
+ 'directly, its main use is in defining key maps.');
}
- return definitions.toString();
+ return null;
}
String get _logicalSynonyms {
final StringBuffer result = StringBuffer();
- for (final SynonymKeyInfo synonymInfo in synonyms) {
+ for (final SynonymKeyInfo synonymInfo in synonyms.values) {
for (final LogicalKeyEntry key in synonymInfo.keys) {
- final String synonymName = upperCamelToLowerCamel(synonymInfo.name);
- result.writeln(' ${key.constantName}: $synonymName,');
+ final LogicalKeyEntry synonnym = logicalData.entryByName(synonymInfo.name);
+ result.writeln(' ${key.constantName}: ${synonnym.constantName},');
}
}
return result.toString();
}
String get _logicalKeyLabels {
- final StringBuffer result = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Logical key labels');
for (final LogicalKeyEntry entry in logicalData.entries) {
- result.write('''
- ${toHex(entry.value, digits: 11)}: '${entry.commentName}',
-''');
+ lines.add(entry.value, '''
+ ${toHex(entry.value, digits: 11)}: '${entry.commentName}',''');
}
- for (final SynonymKeyInfo synonymInfo in synonyms) {
- result.write('''
- ${toHex(synonymInfo.value)}: '${synonymInfo.name}',
-''');
- }
- return result.toString();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of USB HID codes to physical keys.
String get _predefinedHidCodeMap {
- final StringBuffer scanCodeMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Physical key map');
for (final PhysicalKeyEntry entry in keyData.entries) {
- scanCodeMap.writeln(' ${toHex(entry.usbHidCode)}: ${entry.constantName},');
+ lines.add(entry.usbHidCode, ' ${toHex(entry.usbHidCode)}: ${entry.constantName},');
}
- return scanCodeMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of Flutter key codes to logical keys.
String get _predefinedKeyCodeMap {
- final StringBuffer keyCodeMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Logical key map');
for (final LogicalKeyEntry entry in logicalData.entries) {
- keyCodeMap.writeln(' ${toHex(entry.value, digits: 11)}: ${entry.constantName},');
+ lines.add(entry.value, ' ${toHex(entry.value, digits: 11)}: ${entry.constantName},');
}
- for (final SynonymKeyInfo synonymInfo in synonyms) {
- keyCodeMap.writeln(' ${toHex(synonymInfo.value, digits: 11)}: ${synonymInfo.constantName},');
+ return lines.sortedJoin().trimRight();
+ }
+
+ String get _maskConstantVariables {
+ final OutputLines<int> lines = OutputLines<int>('Mask constants', checkDuplicate: false);
+ for (final MaskConstant constant in _maskConstants) {
+ lines.add(constant.value, '''
+${_wrapString(constant.description)} ///
+ /// This is used by platform-specific code to generate Flutter key codes.
+ static const int ${constant.lowerCamelName} = ${toHex(constant.value, digits: 11)};
+''');
}
- return keyCodeMap.toString().trimRight();
+ return lines.join().trimRight();
}
@override
@@ -156,17 +173,21 @@
'PHYSICAL_KEY_MAP': _predefinedHidCodeMap,
'PHYSICAL_KEY_DEFINITIONS': _physicalDefinitions,
'PHYSICAL_KEY_DEBUG_NAMES': _physicalDebugNames,
+ 'MASK_CONSTANTS': _maskConstantVariables,
};
}
- late final List<SynonymKeyInfo> synonyms = LogicalKeyData.synonyms.entries.map(
- (MapEntry<String, List<String>> synonymDefinition) {
+ late final Map<String, SynonymKeyInfo> synonyms = Map<String, SynonymKeyInfo>.fromEntries(
+ LogicalKeyData.synonyms.entries.map((MapEntry<String, List<String>> synonymDefinition) {
final List<LogicalKeyEntry> entries = synonymDefinition.value.map(
(String name) => logicalData.entryByName(name)).toList();
- return SynonymKeyInfo(
- entries,
+ return MapEntry<String, SynonymKeyInfo>(
synonymDefinition.key,
+ SynonymKeyInfo(
+ entries,
+ synonymDefinition.key,
+ ),
);
- }
- ).toList();
+ }),
+ );
}
diff --git a/dev/tools/gen_keycodes/lib/keyboard_maps_code_gen.dart b/dev/tools/gen_keycodes/lib/keyboard_maps_code_gen.dart
index 5f8e49b..b83f283 100644
--- a/dev/tools/gen_keycodes/lib/keyboard_maps_code_gen.dart
+++ b/dev/tools/gen_keycodes/lib/keyboard_maps_code_gen.dart
@@ -51,24 +51,24 @@
/// This generates the map of GLFW number pad key codes to logical keys.
String get _glfwNumpadMap {
- final StringBuffer glfwNumpadMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('GLFW numpad map');
for (final PhysicalKeyEntry entry in _numpadKeyData) {
for (final int code in entry.glfwKeyCodes) {
- glfwNumpadMap.writeln(' $code: LogicalKeyboardKey.${entry.constantName},');
+ lines.add(code, ' $code: LogicalKeyboardKey.${entry.constantName},');
}
}
- return glfwNumpadMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of GLFW key codes to logical keys.
String get _glfwKeyCodeMap {
- final StringBuffer glfwKeyCodeMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('GLFW key code map');
for (final PhysicalKeyEntry entry in keyData.entries) {
for (final int code in entry.glfwKeyCodes) {
- glfwKeyCodeMap.writeln(' $code: LogicalKeyboardKey.${entry.constantName},');
+ lines.add(code, ' $code: LogicalKeyboardKey.${entry.constantName},');
}
}
- return glfwKeyCodeMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of GTK number pad key codes to logical keys.
@@ -95,13 +95,14 @@
/// This generates the map of XKB USB HID codes to physical keys.
String get _xkbScanCodeMap {
- final StringBuffer xkbScanCodeMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('GTK scancode map');
for (final PhysicalKeyEntry entry in keyData.entries) {
if (entry.xKbScanCode != null) {
- xkbScanCodeMap.writeln(' ${toHex(entry.xKbScanCode)}: PhysicalKeyboardKey.${entry.constantName},');
+ lines.add(entry.xKbScanCode!,
+ ' ${toHex(entry.xKbScanCode)}: PhysicalKeyboardKey.${entry.constantName},');
}
}
- return xkbScanCodeMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of Android key codes to logical keys.
@@ -128,26 +129,26 @@
/// This generates the map of Android scan codes to physical keys.
String get _androidScanCodeMap {
- final StringBuffer androidScanCodeMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Android scancode map');
for (final PhysicalKeyEntry entry in keyData.entries) {
if (entry.androidScanCodes != null) {
for (final int code in entry.androidScanCodes) {
- androidScanCodeMap.writeln(' $code: PhysicalKeyboardKey.${entry.constantName},');
+ lines.add(code, ' $code: PhysicalKeyboardKey.${entry.constantName},');
}
}
}
- return androidScanCodeMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of Windows scan codes to physical keys.
String get _windowsScanCodeMap {
- final StringBuffer windowsScanCodeMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Windows scancode map');
for (final PhysicalKeyEntry entry in keyData.entries) {
if (entry.windowsScanCode != null) {
- windowsScanCodeMap.writeln(' ${toHex(entry.windowsScanCode)}: PhysicalKeyboardKey.${entry.constantName},');
+ lines.add(entry.windowsScanCode!, ' ${entry.windowsScanCode}: PhysicalKeyboardKey.${entry.constantName},');
}
}
- return windowsScanCodeMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of Windows number pad key codes to logical keys.
@@ -181,34 +182,34 @@
/// This generates the map of macOS key codes to physical keys.
String get _macOSScanCodeMap {
- final StringBuffer macOSScanCodeMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('macOS scancode map');
for (final PhysicalKeyEntry entry in keyData.entries) {
if (entry.macOSScanCode != null) {
- macOSScanCodeMap.writeln(' ${toHex(entry.macOSScanCode)}: PhysicalKeyboardKey.${entry.constantName},');
+ lines.add(entry.macOSScanCode!, ' ${toHex(entry.macOSScanCode)}: PhysicalKeyboardKey.${entry.constantName},');
}
}
- return macOSScanCodeMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of macOS number pad key codes to logical keys.
String get _macOSNumpadMap {
- final StringBuffer macOSNumPadMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('macOS numpad map');
for (final PhysicalKeyEntry entry in _numpadKeyData) {
if (entry.macOSScanCode != null) {
- macOSNumPadMap.writeln(' ${toHex(entry.macOSScanCode)}: LogicalKeyboardKey.${entry.constantName},');
+ lines.add(entry.macOSScanCode!, ' ${toHex(entry.macOSScanCode)}: LogicalKeyboardKey.${entry.constantName},');
}
}
- return macOSNumPadMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
String get _macOSFunctionKeyMap {
- final StringBuffer macOSFunctionKeyMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('macOS function key map');
for (final PhysicalKeyEntry entry in _functionKeyData) {
if (entry.macOSScanCode != null) {
- macOSFunctionKeyMap.writeln(' ${toHex(entry.macOSScanCode)}: LogicalKeyboardKey.${entry.constantName},');
+ lines.add(entry.macOSScanCode!, ' ${toHex(entry.macOSScanCode)}: LogicalKeyboardKey.${entry.constantName},');
}
}
- return macOSFunctionKeyMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of macOS key codes to physical keys.
@@ -290,38 +291,38 @@
/// This generates the map of Web KeyboardEvent codes to physical keys.
String get _webPhysicalKeyMap {
- final StringBuffer result = StringBuffer();
+ final OutputLines<String> lines = OutputLines<String>('Web physical key map');
for (final PhysicalKeyEntry entry in keyData.entries) {
if (entry.name != null) {
- result.writeln(" '${entry.name}': PhysicalKeyboardKey.${entry.constantName},");
+ lines.add(entry.name, " '${entry.name}': PhysicalKeyboardKey.${entry.constantName},");
}
}
- return result.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
String get _webNumpadMap {
- final StringBuffer result = StringBuffer();
+ final OutputLines<String> lines = OutputLines<String>('Web numpad map');
for (final LogicalKeyEntry entry in _numpadLogicalKeyData) {
if (entry.name != null) {
- result.writeln(" '${entry.name}': LogicalKeyboardKey.${entry.constantName},");
+ lines.add(entry.name, " '${entry.name}': LogicalKeyboardKey.${entry.constantName},");
}
}
- return result.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of Web number pad codes to logical keys.
String get _webLocationMap {
final String jsonRaw = File(path.join(dataRoot, 'web_logical_location_mapping.json')).readAsStringSync();
final Map<String, List<String?>> locationMap = parseMapOfListOfNullableString(jsonRaw);
- final StringBuffer result = StringBuffer();
+ final OutputLines<String> lines = OutputLines<String>('Web location map');
locationMap.forEach((String key, List<String?> keyNames) {
final String keyStrings = keyNames.map((String? keyName) {
final String? constantName = keyName == null ? null : logicalData.entryByName(keyName).constantName;
return constantName != null ? 'LogicalKeyboardKey.$constantName' : 'null';
}).join(', ');
- result.writeln(" '$key': <LogicalKeyboardKey?>[$keyStrings],");
+ lines.add(key, " '$key': <LogicalKeyboardKey?>[$keyStrings],");
});
- return result.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
@override
diff --git a/dev/tools/gen_keycodes/lib/logical_key_data.dart b/dev/tools/gen_keycodes/lib/logical_key_data.dart
index cf75eda..c55c36c 100644
--- a/dev/tools/gen_keycodes/lib/logical_key_data.dart
+++ b/dev/tools/gen_keycodes/lib/logical_key_data.dart
@@ -120,15 +120,17 @@
/// Key Enum Value
/// DOM_KEY_MAP("Accel", ACCEL, 0x0101),
///
- /// Flutter's supplemental_key_data.inc also has a new format
- /// that uses a character as the 3rd argument.
+ /// Flutter's supplemental_key_data.inc also has some new formats.
+ /// The following format uses a character as the 3rd argument.
/// Key Enum Character
/// DOM_KEY_UNI("KeyB", KEY_B, 'b'),
+ ///
+ /// The following format should be mapped to the Flutter plane.
+ /// Key Enum Character
+ /// FLUTTER_KEY_MAP("Lang4", LANG4, 0x00013),
static void _readKeyEntries(Map<String, LogicalKeyEntry> data, String input) {
- final Map<String, String> unusedNumpad = Map<String, String>.from(_printableToNumpads);
-
final RegExp domKeyRegExp = RegExp(
- r'DOM_KEY_(?<kind>UNI|MAP)\s*\(\s*'
+ r'(?<source>DOM|FLUTTER)_KEY_(?<kind>UNI|MAP)\s*\(\s*'
r'"(?<name>[^\s]+?)",\s*'
r'(?<enum>[^\s]+?),\s*'
r"(?:0[xX](?<unicode>[a-fA-F0-9]+)|'(?<char>.)')\s*"
@@ -140,6 +142,7 @@
final RegExp commentRegExp = RegExp(r'//.*$', multiLine: true);
input = input.replaceAll(commentRegExp, '');
for (final RegExpMatch match in domKeyRegExp.allMatches(input)) {
+ final String source = match.namedGroup('source')!;
final String webName = match.namedGroup('name')!;
// ".AltGraphLatch" is consumed internally and not expressed to the Web.
if (webName.startsWith('.')) {
@@ -150,51 +153,21 @@
getHex(match.namedGroup('unicode')!) :
match.namedGroup('char')!.codeUnitAt(0);
final String? keyLabel = match.namedGroup('kind')! == 'UNI' ? String.fromCharCode(value) : null;
- // If it's a modifier key, add left and right keys instead.
- // Don't add web names and values; they're solved with locations.
- if (_chromeModifiers.containsKey(name)) {
- final _ModifierPair pair = _chromeModifiers[name]!;
- data[pair.left] = LogicalKeyEntry.fromName(
- value: value + kLeftModifierPlane,
- name: pair.left,
- keyLabel: null, // Modifier keys don't have keyLabels
- )..webNames.add(pair.left);
- data[pair.right] = LogicalKeyEntry.fromName(
- value: value + kRightModifierPlane,
- name: pair.right,
- keyLabel: null, // Modifier keys don't have keyLabels
- )..webNames.add(pair.right);
+ // Skip modifier keys from DOM. They will be added with supplemental data.
+ if (_chromeModifiers.containsKey(name) && source == 'DOM') {
continue;
}
- // If it has a numpad counterpart, also add the numpad key.
- final String? char = value < 256 ? String.fromCharCode(value) : null;
- if (char != null && _printableToNumpads.containsKey(char)) {
- final String numpadName = _printableToNumpads[char]!;
- data[numpadName] = LogicalKeyEntry.fromName(
- value: char.codeUnitAt(0) + kNumpadPlane,
- name: numpadName,
- keyLabel: null, // Don't add keyLabel for numpad counterparts
- )..webNames.add(numpadName);
- unusedNumpad.remove(char);
- }
-
+ final bool isPrintable = (keyLabel != null && !_isControlCharacter(keyLabel))
+ || printable.containsKey(name);
data.putIfAbsent(name, () {
- final bool isPrintable = (keyLabel != null && !_isControlCharacter(keyLabel))
- || printable.containsKey(name)
- || value == 0; // "None" key
return LogicalKeyEntry.fromName(
- value: value + (isPrintable ? kUnicodePlane : kUnprintablePlane),
+ value: toPlane(value, _sourceToPlane(source, isPrintable)),
name: name,
keyLabel: keyLabel,
)..webNames.add(webName);
});
}
-
- // Make sure every Numpad key that we care about has been defined.
- unusedNumpad.forEach((String key, String value) {
- print('Undefined numpad key $value');
- });
}
static void _readMacOsKeyCodes(
@@ -347,11 +320,11 @@
return 0;
final String? keyLabel = printable[entry.constantName];
if (keyLabel != null && !entry.constantName.startsWith('numpad')) {
- return kUnicodePlane | (keyLabel.codeUnitAt(0) & kValueMask);
+ return toPlane(keyLabel.codeUnitAt(0), kUnicodePlane.value);
} else {
final PhysicalKeyEntry? physicalEntry = physicalData.tryEntryByName(entry.name);
if (physicalEntry != null) {
- return kHidPlane | (physicalEntry.usbHidCode & kValueMask);
+ return toPlane(physicalEntry.usbHidCode, kFuchsiaPlane.value);
}
}
})();
@@ -376,14 +349,6 @@
.cast<String, String>();
})();
- // Map printable to corresponding numpad key name
- static late final Map<String, String> _printableToNumpads = () {
- final String rawJson = File(path.join(dataRoot, 'printable_to_numpads.json',)).readAsStringSync();
- return (json.decode(rawJson) as Map<String, dynamic>).map((String key, dynamic value) {
- return MapEntry<String, String>(key, value as String);
- });
- }();
-
/// Returns the static map of synonym representations.
///
/// These include synonyms for keys which don't have printable
@@ -400,6 +365,18 @@
return MapEntry<String, List<String>>(name, names);
});
})();
+
+ static int _sourceToPlane(String source, bool isPrintable) {
+ switch (source) {
+ case 'DOM':
+ return isPrintable ? kUnicodePlane.value : kUnprintablePlane.value;
+ case 'FLUTTER':
+ return kFlutterPlane.value;
+ default:
+ assert(false, 'Unrecognized logical key source $source');
+ return kFlutterPlane.value;
+ }
+ }
}
diff --git a/dev/tools/gen_keycodes/lib/macos_code_gen.dart b/dev/tools/gen_keycodes/lib/macos_code_gen.dart
index 85c09cb..316a1e4 100644
--- a/dev/tools/gen_keycodes/lib/macos_code_gen.dart
+++ b/dev/tools/gen_keycodes/lib/macos_code_gen.dart
@@ -25,10 +25,6 @@
const List<String> kSpecialPhysicalKeys = <String>['CapsLock'];
const List<String> kSpecialLogicalKeys = <String>['CapsLock'];
-String _toConstantVariableName(String variableName) {
- return 'k${variableName[0].toUpperCase()}${variableName.substring(1)}';
-}
-
/// Generates the key mapping for macOS, based on the information in the key
/// data structure given to it.
class MacOSCodeGenerator extends PlatformCodeGenerator {
@@ -37,36 +33,36 @@
/// This generates the map of macOS key codes to physical keys.
String get _scanCodeMap {
- final StringBuffer scanCodeMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('macOS scancode map');
for (final PhysicalKeyEntry entry in keyData.entries) {
if (entry.macOSScanCode != null) {
- scanCodeMap.writeln(' @${toHex(entry.macOSScanCode)} : @${toHex(entry.usbHidCode)}, // ${entry.constantName}');
+ lines.add(entry.macOSScanCode!, ' @${toHex(entry.macOSScanCode)} : @${toHex(entry.usbHidCode)}, // ${entry.constantName}');
}
}
- return scanCodeMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
String get _keyCodeToLogicalMap {
- final StringBuffer result = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('macOS keycode map');
for (final LogicalKeyEntry entry in logicalData.entries) {
zipStrict(entry.macOSKeyCodeValues, entry.macOSKeyCodeNames, (int macOSValue, String macOSName) {
- result.writeln(' @${toHex(macOSValue)} : @${toHex(entry.value, digits: 11)}, // $macOSName');
+ lines.add(macOSValue,
+ ' @${toHex(macOSValue)} : @${toHex(entry.value, digits: 11)}, // $macOSName -> ${entry.constantName}');
});
}
- return result.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the mask values for the part of a key code that defines its plane.
String get _maskConstants {
final StringBuffer buffer = StringBuffer();
+ const List<MaskConstant> maskConstants = <MaskConstant>[
+ kValueMask,
+ kUnicodePlane,
+ kMacosPlane,
+ ];
for (final MaskConstant constant in maskConstants) {
- buffer.writeln('/**');
- buffer.write(constant.description
- .map((String line) => wrapString(line, prefix: ' * '))
- .join(' *\n'));
- buffer.writeln(' */');
- buffer.writeln('const uint64_t ${_toConstantVariableName(constant.name)} = ${toHex(constant.value, digits: 11)};');
- buffer.writeln('');
+ buffer.writeln('const uint64_t k${constant.upperCamelName} = ${toHex(constant.value, digits: 11)};');
}
return buffer.toString().trimRight();
}
diff --git a/dev/tools/gen_keycodes/lib/physical_key_data.dart b/dev/tools/gen_keycodes/lib/physical_key_data.dart
index 3c60e9e..957b990 100644
--- a/dev/tools/gen_keycodes/lib/physical_key_data.dart
+++ b/dev/tools/gen_keycodes/lib/physical_key_data.dart
@@ -220,7 +220,7 @@
final String enumName = match.namedGroup('enum')!.replaceAll('MINIMIUM', 'MINIMUM');
final String name = chromiumCode ?? shoutingToUpperCamel(enumName);
- if (name == 'IntlHash') {
+ if (name == 'IntlHash' || name == 'None') {
// Skip key that is not actually generated by any keyboard.
continue;
}
diff --git a/dev/tools/gen_keycodes/lib/testing_key_codes_gen.dart b/dev/tools/gen_keycodes/lib/testing_key_codes_gen.dart
new file mode 100644
index 0000000..3f48dd6
--- /dev/null
+++ b/dev/tools/gen_keycodes/lib/testing_key_codes_gen.dart
@@ -0,0 +1,51 @@
+// Copyright 2014 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:path/path.dart' as path;
+
+import 'base_code_gen.dart';
+import 'logical_key_data.dart';
+import 'physical_key_data.dart';
+import 'utils.dart';
+
+String _toUpperCammel(String lowerCammel) {
+ return lowerCammel.substring(0, 1).toUpperCase() + lowerCammel.substring(1);
+}
+
+/// Generates the common/testing/key_codes.h based on the information in the key
+/// data structure given to it.
+class KeyCodesCcGenerator extends BaseCodeGenerator {
+ KeyCodesCcGenerator(PhysicalKeyData keyData, LogicalKeyData logicalData) : super(keyData, logicalData);
+
+ /// Gets the generated definitions of PhysicalKeyboardKeys.
+ String get _physicalDefinitions {
+ final OutputLines<int> lines = OutputLines<int>('Physical Key list');
+ for (final PhysicalKeyEntry entry in keyData.entries) {
+ lines.add(entry.usbHidCode, '''
+constexpr uint64_t kPhysical${_toUpperCammel(entry.constantName)} = ${toHex(entry.usbHidCode, digits: 8)};''');
+ }
+ return lines.sortedJoin().trimRight();
+ }
+
+ /// Gets the generated definitions of PhysicalKeyboardKeys.
+ String get _logicalDefinitions {
+ final OutputLines<int> lines = OutputLines<int>('Logical Key list');
+ for (final LogicalKeyEntry entry in logicalData.entries) {
+ lines.add(entry.value, '''
+constexpr uint64_t kLogical${_toUpperCammel(entry.constantName)} = ${toHex(entry.value, digits: 11)};''');
+ }
+ return lines.sortedJoin().trimRight();
+ }
+
+ @override
+ String get templatePath => path.join(dataRoot, 'key_codes_h.tmpl');
+
+ @override
+ Map<String, String> mappings() {
+ return <String, String>{
+ 'LOGICAL_KEY_DEFINITIONS': _logicalDefinitions,
+ 'PHYSICAL_KEY_DEFINITIONS': _physicalDefinitions,
+ };
+ }
+}
diff --git a/dev/tools/gen_keycodes/lib/utils.dart b/dev/tools/gen_keycodes/lib/utils.dart
index 7be65c6..cf8808e 100644
--- a/dev/tools/gen_keycodes/lib/utils.dart
+++ b/dev/tools/gen_keycodes/lib/utils.dart
@@ -7,6 +7,8 @@
import 'package:path/path.dart' as path;
+import 'constants.dart';
+
/// The location of the Flutter root directory, based on the known location of
/// this script.
final Directory flutterRoot = Directory(path.dirname(Platform.script.toFilePath())).parent.parent.parent.parent;
@@ -221,32 +223,63 @@
}
}
+/// The information for a line used by [OutputLines].
+class OutputLine<T extends Comparable<Object>> {
+ const OutputLine(this.key, this.value);
+
+ final T key;
+ final String value;
+}
+
/// A utility class to build join a number of lines in a sorted order.
///
/// Use [add] to add a line and associate it with an index. Use [sortedJoin] to
/// get the joined string of these lines joined sorting them in the order of the
/// index.
class OutputLines<T extends Comparable<Object>> {
- OutputLines(this.mapName);
+ OutputLines(this.mapName, {this.checkDuplicate = true});
+
+ /// If true, then lines with duplicate keys will be warned and discarded.
+ ///
+ /// Default to true.
+ final bool checkDuplicate;
/// The name for this map.
///
/// Used in warning messages.
final String mapName;
- final Map<T, String> lines = <T, String>{};
+ final Set<T> keys = <T>{};
+ final List<OutputLine<T>> lines = <OutputLine<T>>[];
void add(T code, String line) {
- if (lines.containsKey(code)) {
- print('Warn: $mapName is requested to add line $code as:\n $line\n but it already exists as:\n ${lines[code]}');
+ if (checkDuplicate) {
+ if (keys.contains(code)) {
+ final OutputLine<T> existing = lines.firstWhere((OutputLine<T> line) => line.key == code);
+ print('Warn: $mapName is requested to add line $code as:\n $line\n but it already exists as:\n ${existing.value}');
+ return;
+ }
+ keys.add(code);
}
- lines[code] = line;
+ lines.add(OutputLine<T>(code, line));
+ }
+
+ String join() {
+ return lines.map((OutputLine<T> line) => line.value).join('\n');
}
String sortedJoin() {
- return (lines.entries.toList()
- ..sort((MapEntry<T, String> a, MapEntry<T, String> b) => a.key.compareTo(b.key)))
- .map((MapEntry<T, String> entry) => entry.value)
+ return (lines.sublist(0)
+ ..sort((OutputLine<T> a, OutputLine<T> b) => a.key.compareTo(b.key)))
+ .map((OutputLine<T> line) => line.value)
.join('\n');
}
}
+
+int toPlane(int value, int plane) {
+ return (value & kValueMask.value) + (plane & kPlaneMask.value);
+}
+
+int getPlane(int value) {
+ return value & kPlaneMask.value;
+}
diff --git a/dev/tools/gen_keycodes/lib/web_code_gen.dart b/dev/tools/gen_keycodes/lib/web_code_gen.dart
index b5730a0..845d08f 100644
--- a/dev/tools/gen_keycodes/lib/web_code_gen.dart
+++ b/dev/tools/gen_keycodes/lib/web_code_gen.dart
@@ -5,6 +5,7 @@
import 'package:path/path.dart' as path;
import 'base_code_gen.dart';
+import 'constants.dart';
import 'logical_key_data.dart';
import 'physical_key_data.dart';
import 'utils.dart';
@@ -23,8 +24,11 @@
String get _webLogicalKeyCodeMap {
final OutputLines<String> lines = OutputLines<String>('Web logical map');
for (final LogicalKeyEntry entry in logicalData.entries) {
- for (final String name in entry.webNames) {
- lines.add(name, " '$name': ${toHex(entry.value, digits: 11)},");
+ final int plane = getPlane(entry.value);
+ if (plane == kUnprintablePlane.value) {
+ for (final String name in entry.webNames) {
+ lines.add(name, " '$name': ${toHex(entry.value, digits: 11)},");
+ }
}
}
return lines.sortedJoin().trimRight();
@@ -32,25 +36,29 @@
/// This generates the map of Web KeyboardEvent codes to physical key USB HID codes.
String get _webPhysicalKeyCodeMap {
- final StringBuffer result = StringBuffer();
+ final OutputLines<String> lines = OutputLines<String>('Web physical map');
for (final PhysicalKeyEntry entry in keyData.entries) {
if (entry.name != null) {
- result.writeln(" '${entry.name}': ${toHex(entry.usbHidCode)},");
+ lines.add(entry.name,
+ " '${entry.name}': ${toHex(entry.usbHidCode)}, // ${entry.constantName}");
}
}
- return result.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of Web number pad codes to logical key ids.
String get _webLogicalLocationMap {
- final StringBuffer result = StringBuffer();
+ final OutputLines<String> lines = OutputLines<String>('Web logical location map');
_logicalLocationMap.forEach((String webKey, List<String?> locations) {
final String valuesString = locations.map((String? value) {
- return value == null ? 'null' : toHex(logicalData.entryByName(value).value, digits: 10);
+ return value == null ? 'null' : toHex(logicalData.entryByName(value).value, digits: 11);
}).join(', ');
- result.writeln(" '$webKey': <int?>[$valuesString],");
+ final String namesString = locations.map((String? value) {
+ return value == null ? 'null' : logicalData.entryByName(value).constantName;
+ }).join(', ');
+ lines.add(webKey, " '$webKey': <int?>[$valuesString], // $namesString");
});
- return result.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
final Map<String, List<String?>> _logicalLocationMap;
diff --git a/dev/tools/gen_keycodes/lib/windows_code_gen.dart b/dev/tools/gen_keycodes/lib/windows_code_gen.dart
index f8553c5..cc83a4e 100644
--- a/dev/tools/gen_keycodes/lib/windows_code_gen.dart
+++ b/dev/tools/gen_keycodes/lib/windows_code_gen.dart
@@ -5,6 +5,7 @@
import 'package:path/path.dart' as path;
import 'base_code_gen.dart';
+import 'constants.dart';
import 'logical_key_data.dart';
import 'physical_key_data.dart';
import 'utils.dart';
@@ -21,24 +22,29 @@
/// This generates the map of Windows scan codes to physical keys.
String get _windowsScanCodeMap {
- final StringBuffer windowsScanCodeMap = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Windows scancode map');
for (final PhysicalKeyEntry entry in keyData.entries) {
if (entry.windowsScanCode != null) {
- windowsScanCodeMap.writeln(' {${toHex(entry.windowsScanCode)}, ${toHex(entry.usbHidCode)}}, // ${entry.constantName}');
+ lines.add(entry.windowsScanCode!,
+ ' {${toHex(entry.windowsScanCode)}, ${toHex(entry.usbHidCode)}}, // ${entry.constantName}');
}
}
- return windowsScanCodeMap.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map of Windows key codes to logical keys.
String get _windowsLogicalKeyCodeMap {
- final StringBuffer result = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Windows logical map');
for (final LogicalKeyEntry entry in logicalData.entries) {
- zipStrict(entry.windowsValues, entry.windowsNames, (int windowsValue, String windowsName) {
- result.writeln(' {${toHex(windowsValue)}, ${toHex(entry.value, digits: 11)}}, // $windowsName');
- });
+ zipStrict(entry.windowsValues, entry.windowsNames,
+ (int windowsValue, String windowsName) {
+ lines.add(windowsValue,
+ ' {${toHex(windowsValue)}, ${toHex(entry.value, digits: 11)}}, '
+ '// $windowsName -> ${entry.constantName}');
+ },
+ );
}
- return result.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
/// This generates the map from scan code to logical keys.
@@ -47,16 +53,32 @@
/// key codes are either 0 or ambiguous (multiple keys using the same key
/// code), these keys are resolved by scan codes.
String get _scanCodeToLogicalMap {
- final StringBuffer result = StringBuffer();
+ final OutputLines<int> lines = OutputLines<int>('Windows scancode to logical map');
_scancodeToLogical.forEach((String scanCodeName, String logicalName) {
final PhysicalKeyEntry physicalEntry = keyData.entryByName(scanCodeName);
- final int logicalValue = logicalData.entryByName(logicalName).value;
- result.writeln(' {${toHex(physicalEntry.windowsScanCode)}, ${toHex(logicalValue, digits: 10)}}, // ${physicalEntry.name}');
+ final LogicalKeyEntry logicalEntry = logicalData.entryByName(logicalName);
+ lines.add(physicalEntry.windowsScanCode!,
+ ' {${toHex(physicalEntry.windowsScanCode)}, ${toHex(logicalEntry.value, digits: 11)}}, '
+ '// ${physicalEntry.constantName} -> ${logicalEntry.constantName}');
});
- return result.toString().trimRight();
+ return lines.sortedJoin().trimRight();
}
final Map<String, String> _scancodeToLogical;
+ /// This generates the mask values for the part of a key code that defines its plane.
+ String get _maskConstants {
+ final StringBuffer buffer = StringBuffer();
+ const List<MaskConstant> maskConstants = <MaskConstant>[
+ kValueMask,
+ kUnicodePlane,
+ kWindowsPlane,
+ ];
+ for (final MaskConstant constant in maskConstants) {
+ buffer.writeln('const uint64_t KeyboardKeyEmbedderHandler::${constant.lowerCamelName} = ${toHex(constant.value, digits: 11)};');
+ }
+ return buffer.toString().trimRight();
+ }
+
@override
String get templatePath => path.join(dataRoot, 'windows_flutter_key_map_cc.tmpl');
@@ -70,6 +92,7 @@
'WINDOWS_SCAN_CODE_MAP': _windowsScanCodeMap,
'WINDOWS_SCAN_CODE_TO_LOGICAL_MAP': _scanCodeToLogicalMap,
'WINDOWS_KEY_CODE_MAP': _windowsLogicalKeyCodeMap,
+ 'MASK_CONSTANTS': _maskConstants,
};
}
}