Browse Source

'before-input-event' is missing the code property #8471

liusi 8 years ago
parent
commit
87392ff046

+ 2 - 0
atom/common/native_mate_converters/blink_converter.cc

@@ -224,6 +224,8 @@ v8::Local<v8::Value> Converter<content::NativeWebKeyboardEvent>::ToV8(
   else if (in.type == blink::WebInputEvent::Type::KeyUp)
     dict.Set("type", "keyUp");
   dict.Set("key", ui::KeycodeConverter::DomKeyToKeyString(in.domKey));
+  dict.Set("code",
+    ui::KeycodeConverter::DomCodeToCodeString(static_cast<ui::DomCode>(in.domCode)));
 
   using Modifiers = blink::WebInputEvent::Modifiers;
   dict.Set("isAutoRepeat", (in.modifiers & Modifiers::IsAutoRepeat) != 0);

+ 1 - 0
docs/api/web-contents.md

@@ -240,6 +240,7 @@ Returns:
 * `input` Object - Input properties
   * `type` String - Either `keyUp` or `keyDown`
   * `key` String - Equivalent to [KeyboardEvent.key][keyboardevent]
+  * `code` String - Equivalent to [KeyboardEvent.code][keyboardevent]
   * `isAutoRepeat` Boolean - Equivalent to [KeyboardEvent.repeat][keyboardevent]
   * `shift` Boolean - Equivalent to [KeyboardEvent.shiftKey][keyboardevent]
   * `control` Boolean - Equivalent to [KeyboardEvent.controlKey][keyboardevent]

+ 5 - 0
spec/api-web-contents-spec.js

@@ -121,6 +121,7 @@ describe('webContents module', function () {
             w.webContents.once('before-input-event', (event, input) => {
               assert.equal(input.type, opts.type)
               assert.equal(input.key, opts.key)
+              assert.equal(input.code, opts.code)
               assert.equal(input.isAutoRepeat, opts.isAutoRepeat)
               assert.equal(input.shift, opts.shift)
               assert.equal(input.control, opts.control)
@@ -148,6 +149,7 @@ describe('webContents module', function () {
           return testBeforeInput({
             type: 'keyDown',
             key: 'A',
+            code: 'KeyA',
             keyCode: 'a',
             shift: true,
             control: true,
@@ -159,6 +161,7 @@ describe('webContents module', function () {
           return testBeforeInput({
             type: 'keyUp',
             key: '.',
+            code: 'Period',
             keyCode: '.',
             shift: false,
             control: true,
@@ -170,6 +173,7 @@ describe('webContents module', function () {
           return testBeforeInput({
             type: 'keyUp',
             key: '!',
+            code: 'Digit1',
             keyCode: '1',
             shift: true,
             control: false,
@@ -181,6 +185,7 @@ describe('webContents module', function () {
           return testBeforeInput({
             type: 'keyUp',
             key: 'Tab',
+            code: 'Tab',
             keyCode: 'Tab',
             shift: false,
             control: true,