Ticket #15038: D2.diff

File D2.diff, 10.2 KB (added by sneaky, 3 months ago)

stab at fix

  • Source/WebCore/platform/haiku/PlatformKeyboardEventHaiku.cpp

    diff --git a/Source/WebCore/platform/haiku/PlatformKeyboardEventHaiku.cpp b/Source/WebCore/platform/haiku/PlatformKeyboardEventHaiku.cpp
    a b  
    324324    return singleByte;
    325325}
    326326
     327static String KeyValueForKeyEvent(unsigned char singleByte, int keyCode)
     328{
     329    switch (singleByte) {
     330       
     331        case B_FUNCTION_KEY:
     332            switch (keyCode) {
     333                case B_F1_KEY:
     334                    return "F1";
     335                case B_F2_KEY:
     336                    return "F2";
     337                case B_F3_KEY:
     338                    return "F3";
     339                case B_F4_KEY:
     340                    return "F4";
     341                case B_F5_KEY:
     342                    return "F5";
     343                case B_F6_KEY:
     344                    return "F6";
     345                case B_F7_KEY:
     346                    return "F7";
     347                case B_F8_KEY:
     348                    return "F8";
     349                case B_F9_KEY:
     350                    return "F9";
     351                case B_F10_KEY:
     352                    return "F10";
     353                case B_F11_KEY:
     354                    return "F11";
     355                case B_F12_KEY:
     356                    return "F12";
     357                case B_PRINT_KEY:
     358                    return "Print";
     359                case B_PAUSE_KEY:
     360                    return "Pause";
     361                case B_SCROLL_KEY:
     362                    return "ScrollLock";
     363                case B_SHIFT_KEY:
     364                    return "Shift";
     365                case B_LEFT_CONTROL_KEY: // B_CONTROL_KEY = B_F3_KEY..?
     366                case B_RIGHT_CONTROL_KEY:
     367                    return "Control";
     368            }
     369           
     370            break;
     371           
     372                case B_BACKSPACE:
     373                    return "Backspace";
     374                case B_LEFT_ARROW:
     375                    return "ArrowLeft";
     376                case B_RIGHT_ARROW:
     377                    return "ArrowRight";
     378                case B_UP_ARROW:
     379                    return "ArrowUp";
     380                case B_DOWN_ARROW:
     381                    return "ArrowDown";
     382                case B_INSERT:
     383                    return "Insert";
     384                case B_ENTER:
     385                    return "Enter";
     386                case B_DELETE:
     387                    return "Delete";
     388                case B_HOME:
     389                    return "Home";
     390                case B_END:
     391                    return "End";
     392                case B_PAGE_UP:
     393                    return "PageUp";
     394                case B_PAGE_DOWN:
     395                    return "PageDown";
     396                case B_TAB:
     397                    return "Tab";
     398                case B_SPACE:
     399                    return " "; // (20) SPACEBAR
     400                   
     401                   
     402                case B_COMMAND_KEY:
     403                    return "Alt";
     404                   
     405                case B_OPTION_KEY:
     406                    return "Compose"; // ?? why compose? fx also said "Process"
     407                case B_MENU_KEY:
     408                    return "ContextMenu";
     409                case B_ESCAPE:
     410                    return "Escape";
     411                   
     412                default: {
     413                    String keyVal = String::format("%c", singleByte);
     414                    if (keyVal != "") {
     415                        return keyVal;
     416                    }
     417                   
     418                }
     419    }
     420    return "Unidentified";
     421}
     422
     423static String KeyCodeForKeyEvent(int keyCode)
     424{
     425    switch (keyCode) {
     426        case 0x0001:
     427            return "Escape";
     428        case 0x0002:
     429            return "F1";
     430        case 0x0003:
     431            return "F2";
     432        case 0x0004:
     433            return "F3";
     434        case 0x0005:
     435            return "F4";
     436        case 0x0006:
     437            return "F5";
     438        case 0x0007:
     439            return "F6";
     440        case 0x0008:
     441            return "F7";
     442        case 0x0009:
     443            return "F8";
     444        case 0x000A:
     445            return "F9";
     446        case 0x000B:
     447            return "F10";
     448        case 0x000C:
     449            return "F11";
     450        case 0x000D:
     451            return "F12";
     452
     453        case 0x000E:
     454            return "PrintScreen";
     455        case 0x000F:
     456            return "ScrollLock";
     457        case 0x0010:
     458            return "Pause";
     459
     460        case 0x0011:
     461            return "Backquote";
     462        case 0x0012:
     463            return "Digit1";
     464        case 0x0013:
     465            return "Digit2";
     466        case 0x0014:
     467            return "Digit3";
     468        case 0x0015:
     469            return "Digit4";
     470        case 0x0016:
     471            return "Digit5";
     472        case 0x0017:
     473            return "Digit6";
     474        case 0x0018:
     475            return "Digit7";
     476        case 0x0019:
     477            return "Digit8";
     478        case 0x001A:
     479            return "Digit9";
     480        case 0x001B:
     481            return "Digit0";
     482        case 0x001C:
     483            return "Minus";
     484        case 0x001D:
     485            return "Equal";
     486        case 0x001E:
     487            return "Backspace"; // IntYen
     488
     489        case 0x001F:
     490            return "Insert";
     491        case 0x0020:
     492            return "Home";
     493        case 0x0021:
     494            return "PageUp";
     495           
     496        case 0x0022:
     497            return "NumLock";
     498        case 0x0023:
     499            return "NumpadDivide";
     500        case 0x0024:
     501            return "NumpadMultiply";
     502        case 0x0025:
     503            return "NumpadSubtract";
     504
     505        case 0x0026:
     506            return "Tab";
     507        case 0x0027:
     508            return "KeyQ";
     509        case 0x0028:
     510            return "KeyW";
     511        case 0x0029:
     512            return "KeyE";
     513        case 0x002A:
     514            return "KeyR";
     515        case 0x002B:
     516            return "KeyT";
     517        case 0x002C:
     518            return "KeyY";
     519        case 0x002D:
     520            return "KeyU";
     521        case 0x002E:
     522            return "KeyI";
     523        case 0x002F:
     524            return "KeyO";
     525        case 0x0030:
     526            return "KepP";
     527        case 0x0031:
     528            return "BracketLeft";
     529        case 0x0032:
     530            return "BracketRight";
     531        case 0x0033:
     532            return "Backslash";
     533
     534        case 0x0034:
     535            return "Delete";
     536        case 0x0035:
     537            return "End";
     538        case 0x0036:
     539            return "PageDown";
     540
     541        case 0x0037:
     542            return "Numpad7";
     543        case 0x0038:
     544            return "Numpad8";
     545        case 0x0039:
     546            return "Numpad9";
     547        case 0x003A:
     548            return "NumpadAdd";
     549
     550        case 0x003B:
     551            return "CapsLock";
     552        case 0x003C:
     553            return "KeyA";
     554        case 0x003D:
     555            return "KeyS";
     556        case 0x003E:
     557            return "KeyD";
     558        case 0x003F:
     559            return "KeyF";
     560        case 0x0040:
     561            return "KeyG";
     562        case 0x0041:
     563            return "KeyH";
     564        case 0x0042:
     565            return "KeyJ";
     566        case 0x0043:
     567            return "KeyK";
     568        case 0x0044:
     569            return "KeyL";
     570        case 0x0045:
     571            return "Semicolon";
     572        case 0x0046:
     573            return "Quote";
     574        case 0x0047:
     575            return "Return";
     576
     577        case 0x0048:
     578            return "Numpad4";
     579        case 0x0049:
     580            return "Numpad5";
     581        case 0x004A:
     582            return "Numpad6";
     583
     584        case 0x004B:
     585            return "ShiftLeft";
     586        case 0x004C:
     587            return "KeyZ";
     588        case 0x004D:
     589            return "KeyX";
     590        case 0x004E:
     591            return "KeyC";
     592        case 0x004F:
     593            return "KeyV";
     594        case 0x0050:
     595            return "KeyB";
     596        case 0x0051:
     597            return "KeyN";
     598        case 0x0052:
     599            return "KeyM";
     600        case 0x0053:
     601            return "Comma";
     602        case 0x0054:
     603            return "Period";
     604        case 0x0055:
     605            return "Slash";
     606        case 0x0056:
     607            return "ShiftRight";
     608
     609        case 0x0057:
     610            return "ArrowUp";
     611        case 0x0058:
     612            return "Digit1";
     613        case 0x0059:
     614            return "Digit2";
     615        case 0x005A:
     616            return "Digit3";
     617        case 0x005B:
     618            return "NumpadEnter";
     619        case 0x005C:
     620            return "ControlLeft";
     621        case 0x005D:
     622            return "AltLeft";
     623        case 0x005E:
     624            return "Space";
     625        case 0x005F:
     626            return "AltRight";
     627        case 0x0060:
     628            return "ControlRight";
     629        case 0x0061:
     630            return "ArrowLeft";
     631        case 0x0062:
     632            return "ArrowDown";
     633        case 0x0063:
     634            return "ArrowRight";
     635        case 0x0064:
     636            return "Numpad0";
     637        case 0x0065:
     638            return "NumpadDecimal";
     639        case 0x0066:
     640            return "OSLeft"; // MetaLeft
     641        case 0x0067:
     642            return "OSRight";
     643        case 0x0068:
     644            return "ContextMenu";
     645        case 0x0069:
     646            return "IntlBackslash";
     647        case 0x006a:
     648            return "NumPadEqual";
     649    }
     650    return "Unidentified";
     651}
     652
    327653PlatformKeyboardEvent::PlatformKeyboardEvent(BMessage* message)
    328654    : m_autoRepeat(false)
    329655    , m_isKeypad(false)
     
    335663    m_keyIdentifier = keyIdentifierForHaikuKeyCode(bytes.ByteAt(0), nativeVirtualKeyCode);
    336664
    337665    m_windowsVirtualKeyCode = windowsKeyCodeForKeyEvent(bytes.ByteAt(0), nativeVirtualKeyCode);
     666    m_key = KeyValueForKeyEvent(bytes.ByteAt(0), nativeVirtualKeyCode);
     667    m_code = KeyCodeForKeyEvent(nativeVirtualKeyCode);
    338668
    339669    if (message->what == B_KEY_UP)
    340670        m_type = KeyUp;
  • Source/cmake/OptionsHaiku.cmake

    diff --git a/Source/cmake/OptionsHaiku.cmake b/Source/cmake/OptionsHaiku.cmake
    a b  
    7777WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_DATE PUBLIC ON)
    7878WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_MONTH PUBLIC ON)
    7979WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_TIME PUBLIC ON)
     80WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_KEYBOARD_CODE_ATTRIBUTE PUBLIC ON)
     81WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_KEYBOARD_KEY_ATTRIBUTE PUBLIC ON)
    8082WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_CAPTURE PUBLIC ON)
    8183WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_CONTROLS_SCRIPT PUBLIC ON)
    8284WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_SOURCE PUBLIC OFF)