Skip to content

Commit

Permalink
Add key and code attributes to KeyboardEvents (#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
SneakyWhoami authored and pulkomandy committed Apr 27, 2019
1 parent 5e9efd3 commit 6ded75c
Showing 1 changed file with 323 additions and 1 deletion.
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

0 comments on commit 6ded75c

Please sign in to comment.