Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add key and code attributes to KeyboardEvents #9

Merged
merged 3 commits into from
Apr 27, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
324 changes: 323 additions & 1 deletion Source/WebCore/platform/haiku/PlatformKeyboardEventHaiku.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ static String keyIdentifierForHaikuKeyCode(char singleByte, int keyCode)
case B_SCROLL_KEY:
return ""; // FIXME
}
break;
break;

case B_BACKSPACE:
return "U+0008";
Expand Down Expand Up @@ -324,6 +324,326 @@ static int windowsKeyCodeForKeyEvent(char singleByte, int keyCode)
return singleByte;
}

static String KeyValueForKeyEvent(BString bytes, int keyCode)
{
switch (singleByte) {

case B_FUNCTION_KEY:
switch (keyCode) {
case B_F1_KEY:
return "F1";
case B_F2_KEY:
return "F2";
case B_F3_KEY:
return "F3";
case B_F4_KEY:
return "F4";
case B_F5_KEY:
return "F5";
case B_F6_KEY:
return "F6";
case B_F7_KEY:
return "F7";
case B_F8_KEY:
return "F8";
case B_F9_KEY:
return "F9";
case B_F10_KEY:
return "F10";
case B_F11_KEY:
return "F11";
case B_F12_KEY:
return "F12";
case B_PRINT_KEY:
return "Print";
case B_PAUSE_KEY:
return "Pause";
case B_SCROLL_KEY:
return "ScrollLock";
case B_SHIFT_KEY:
return "Shift";
case B_LEFT_CONTROL_KEY: // B_CONTROL_KEY = B_F3_KEY..?
case B_RIGHT_CONTROL_KEY:
return "Control";
}
break;

case B_BACKSPACE:
return "Backspace";
case B_LEFT_ARROW:
return "ArrowLeft";
case B_RIGHT_ARROW:
return "ArrowRight";
case B_UP_ARROW:
return "ArrowUp";
case B_DOWN_ARROW:
return "ArrowDown";
case B_INSERT:
return "Insert";
case B_ENTER:
return "Enter";
case B_DELETE:
return "Delete";
case B_HOME:
return "Home";
case B_END:
return "End";
case B_PAGE_UP:
return "PageUp";
case B_PAGE_DOWN:
return "PageDown";
case B_TAB:
return "Tab";
case B_SPACE:
return " "; // (20) SPACEBAR

case B_COMMAND_KEY:
return "Alt";

case B_OPTION_KEY:
return "Compose"; // fx also said "Process"
case B_MENU_KEY:
return "ContextMenu";
case B_ESCAPE:
return "Escape";

default: {
return bytes;
}
}
return "Unidentified";
}

static String KeyCodeForKeyEvent(int keyCode)
{
switch (keyCode) {
case 0x0001:
return "Escape";
case 0x0002:
return "F1";
case 0x0003:
return "F2";
case 0x0004:
return "F3";
case 0x0005:
return "F4";
case 0x0006:
return "F5";
case 0x0007:
return "F6";
case 0x0008:
return "F7";
case 0x0009:
return "F8";
case 0x000A:
return "F9";
case 0x000B:
return "F10";
case 0x000C:
return "F11";
case 0x000D:
return "F12";

case 0x000E:
return "PrintScreen";
case 0x000F:
return "ScrollLock";
case 0x0010:
return "Pause";

case 0x0011:
return "Backquote";
case 0x0012:
return "Digit1";
case 0x0013:
return "Digit2";
case 0x0014:
return "Digit3";
case 0x0015:
return "Digit4";
case 0x0016:
return "Digit5";
case 0x0017:
return "Digit6";
case 0x0018:
return "Digit7";
case 0x0019:
return "Digit8";
case 0x001A:
return "Digit9";
case 0x001B:
return "Digit0";
case 0x001C:
return "Minus";
case 0x001D:
return "Equal";
case 0x001E:
return "Backspace"; // IntYen

case 0x001F:
return "Insert";
case 0x0020:
return "Home";
case 0x0021:
return "PageUp";

case 0x0022:
return "NumLock";
case 0x0023:
return "NumpadDivide";
case 0x0024:
return "NumpadMultiply";
case 0x0025:
return "NumpadSubtract";

case 0x0026:
return "Tab";
case 0x0027:
return "KeyQ";
case 0x0028:
return "KeyW";
case 0x0029:
return "KeyE";
case 0x002A:
return "KeyR";
case 0x002B:
return "KeyT";
case 0x002C:
return "KeyY";
case 0x002D:
return "KeyU";
case 0x002E:
return "KeyI";
case 0x002F:
return "KeyO";
case 0x0030:
return "KepP";
case 0x0031:
return "BracketLeft";
case 0x0032:
return "BracketRight";
case 0x0033:
return "Backslash";

case 0x0034:
return "Delete";
case 0x0035:
return "End";
case 0x0036:
return "PageDown";

case 0x0037:
return "Numpad7";
case 0x0038:
return "Numpad8";
case 0x0039:
return "Numpad9";
case 0x003A:
return "NumpadAdd";

case 0x003B:
return "CapsLock";
case 0x003C:
return "KeyA";
case 0x003D:
return "KeyS";
case 0x003E:
return "KeyD";
case 0x003F:
return "KeyF";
case 0x0040:
return "KeyG";
case 0x0041:
return "KeyH";
case 0x0042:
return "KeyJ";
case 0x0043:
return "KeyK";
case 0x0044:
return "KeyL";
case 0x0045:
return "Semicolon";
case 0x0046:
return "Quote";
case 0x0047:
return "Return";

case 0x0048:
return "Numpad4";
case 0x0049:
return "Numpad5";
case 0x004A:
return "Numpad6";

case 0x004B:
return "ShiftLeft";
case 0x004C:
return "KeyZ";
case 0x004D:
return "KeyX";
case 0x004E:
return "KeyC";
case 0x004F:
return "KeyV";
case 0x0050:
return "KeyB";
case 0x0051:
return "KeyN";
case 0x0052:
return "KeyM";
case 0x0053:
return "Comma";
case 0x0054:
return "Period";
case 0x0055:
return "Slash";
case 0x0056:
return "ShiftRight";

case 0x0057:
return "ArrowUp";
case 0x0058:
return "Digit1";
case 0x0059:
return "Digit2";
case 0x005A:
return "Digit3";
case 0x005B:
return "NumpadEnter";
case 0x005C:
return "ControlLeft";
case 0x005D:
return "AltLeft";
case 0x005E:
return "Space";
case 0x005F:
return "AltRight";
case 0x0060:
return "ControlRight";
case 0x0061:
return "ArrowLeft";
case 0x0062:
return "ArrowDown";
case 0x0063:
return "ArrowRight";
case 0x0064:
return "Numpad0";
case 0x0065:
return "NumpadDecimal";
case 0x0066:
return "OSLeft"; // MetaLeft
case 0x0067:
return "OSRight";
case 0x0068:
return "ContextMenu";
case 0x0069:
return "IntlBackslash";
case 0x006a:
return "NumPadEqual";
}
return "Unidentified";
}

PlatformKeyboardEvent::PlatformKeyboardEvent(BMessage* message)
: m_autoRepeat(false)
, m_isKeypad(false)
Expand All @@ -337,6 +657,8 @@ PlatformKeyboardEvent::PlatformKeyboardEvent(BMessage* message)
m_keyIdentifier = keyIdentifierForHaikuKeyCode(bytes.ByteAt(0), nativeVirtualKeyCode);

m_windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(bytes.ByteAt(0), nativeVirtualKeyCode);
m_key = KeyValueForKeyEvent(bytes, nativeVirtualKeyCode);
m_code = KeyCodeForKeyEvent(nativeVirtualKeyCode);

if (message->what == B_KEY_UP)
m_type = KeyUp;
Expand Down