// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
+#include <string>
#include "atom/common/keyboad_util.h"
namespace atom {
// Return key code of the char.
-ui::KeyboardCode KeyboardCodeFromCharCode(char c, bool* shifted) {
+ui::KeyboardCode KeyboardCodeFromCharCode(base::char16 c, bool* shifted) {
*shifted = false;
switch (c) {
case 0x08: return ui::VKEY_BACK;
}
}
+// Return key code of the char.
+ui::KeyboardCode KeyboardCodeFromKeyIdentifier(std::string chr) {
+ if (chr == "enter") return ui::VKEY_RETURN;
+ if (chr == "backspace") return ui::VKEY_BACK;
+ if (chr == "delete") return ui::VKEY_DELETE;
+ if (chr == "tab") return ui::VKEY_TAB;
+ if (chr == "escape") return ui::VKEY_ESCAPE;
+ if (chr == "control") return ui::VKEY_CONTROL;
+ if (chr == "alt") return ui::VKEY_MENU;
+ if (chr == "shift") return ui::VKEY_SHIFT;
+ if (chr == "end") return ui::VKEY_END;
+ if (chr == "home") return ui::VKEY_HOME;
+ if (chr == "insert") return ui::VKEY_INSERT;
+ if (chr == "left") return ui::VKEY_LEFT;
+ if (chr == "up") return ui::VKEY_UP;
+ if (chr == "right") return ui::VKEY_RIGHT;
+ if (chr == "down") return ui::VKEY_DOWN;
+ if (chr == "pageup") return ui::VKEY_PRIOR;
+ if (chr == "pagedown") return ui::VKEY_NEXT;
+ if (chr == "printscreen") return ui::VKEY_SNAPSHOT;
+
+ return ui::VKEY_UNKNOWN;
+}
+
} // namespace atom
#ifndef ATOM_COMMON_KEYBOAD_UTIL_H_
#define ATOM_COMMON_KEYBOAD_UTIL_H_
+#include <string>
#include "ui/events/keycodes/keyboard_codes.h"
+#include "base/strings/string_util.h"
namespace atom {
// Return key code of the char, and also determine whether the SHIFT key is
// pressed.
-ui::KeyboardCode KeyboardCodeFromCharCode(char c, bool* shifted);
+ui::KeyboardCode KeyboardCodeFromCharCode(base::char16 c, bool* shifted);
+
+// Return key code of the char from a string representation of the char
+ui::KeyboardCode KeyboardCodeFromKeyIdentifier(std::string chr);
} // namespace atom
if (!ConvertFromV8(isolate, val, static_cast<blink::WebInputEvent*>(out)))
return false;
base::char16 code;
- if (!dict.Get("keyCode", &code))
- return false;
+ std::string identifier;
bool shifted = false;
- out->windowsKeyCode = atom::KeyboardCodeFromCharCode(code, &shifted);
+
+ if (dict.Get("keyCode", &code))
+ out->windowsKeyCode = atom::KeyboardCodeFromCharCode(code, &shifted);
+ else if (dict.Get("keyIdentifier", &identifier))
+ out->windowsKeyCode = atom::KeyboardCodeFromKeyIdentifier(
+ base::StringToLowerASCII(identifier));
+ else
+ return false;
+
if (shifted)
out->modifiers |= blink::WebInputEvent::ShiftKey;
out->setKeyIdentifierFromWindowsKeyCode();