diff --git a/Source/WebCore/platform/haiku/PlatformKeyboardEventHaiku.cpp b/Source/WebCore/platform/haiku/PlatformKeyboardEventHaiku.cpp
--- a/Source/WebCore/platform/haiku/PlatformKeyboardEventHaiku.cpp
+++ b/Source/WebCore/platform/haiku/PlatformKeyboardEventHaiku.cpp
@@ -324,6 +324,332 @@
     return singleByte;
 }
 
+static String KeyValueForKeyEvent(unsigned char singleByte, 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"; // ?? why compose? fx also said "Process"
+                case B_MENU_KEY:
+                    return "ContextMenu";
+                case B_ESCAPE:
+                    return "Escape";
+                    
+                default: {
+                    String keyVal = String::format("%c", singleByte);
+                    if (keyVal != "") {
+                        return keyVal;
+                    }
+                    
+                }
+    }
+    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)
@@ -335,6 +663,8 @@
     m_keyIdentifier = keyIdentifierForHaikuKeyCode(bytes.ByteAt(0), nativeVirtualKeyCode);

     m_windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(bytes.ByteAt(0), nativeVirtualKeyCode);
+    m_key = KeyValueForKeyEvent(bytes.ByteAt(0), nativeVirtualKeyCode);
+    m_code = KeyCodeForKeyEvent(nativeVirtualKeyCode);
 
     if (message->what == B_KEY_UP)
         m_type = KeyUp;
diff --git a/Source/cmake/OptionsHaiku.cmake b/Source/cmake/OptionsHaiku.cmake
--- a/Source/cmake/OptionsHaiku.cmake
+++ b/Source/cmake/OptionsHaiku.cmake
@@ -77,6 +77,8 @@
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_DATE PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_MONTH PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_TIME PUBLIC ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_KEYBOARD_CODE_ATTRIBUTE PUBLIC ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_KEYBOARD_KEY_ATTRIBUTE PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_CAPTURE PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_CONTROLS_SCRIPT PUBLIC ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SOURCE PUBLIC OFF)

