Changeset 152961 in webkit


Ignore:
Timestamp:
Jul 22, 2013 4:44:08 AM (11 years ago)
Author:
allan.jensen@digia.com
Message:

[Qt] Implement more of DOM3 KeyEvent key-identifiers
https://bugs.webkit.org/show_bug.cgi?id=118566

Reviewed by Jocelyn Turcotte.

Implemented as many of the key values from http://www.w3.org/TR/DOM-Level-3-Events/#key-values-list
as Qt keycodes support.

Also corrected the mapping of the Menu key, which was confused because MENU
is also the ancient Microsoft speak for the Alt keys.

  • platform/qt/PlatformKeyboardEventQt.cpp:

(WebCore::keyIdentifierForQtKeyCode):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r152955 r152961  
     12013-07-11  Allan Sandfeld Jensen  <allan.jensen@digia.com>
     2
     3        [Qt] Implement more of DOM3 KeyEvent key-identifiers
     4        https://bugs.webkit.org/show_bug.cgi?id=118566
     5
     6        Reviewed by Jocelyn Turcotte.
     7
     8        Implemented as many of the key values from http://www.w3.org/TR/DOM-Level-3-Events/#key-values-list
     9        as Qt keycodes support.
     10
     11        Also corrected the mapping of the Menu key, which was confused because MENU
     12        is also the ancient Microsoft speak for the Alt keys.
     13
     14        * platform/qt/PlatformKeyboardEventQt.cpp:
     15        (WebCore::keyIdentifierForQtKeyCode):
     16
    1172013-07-21  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
    218
  • trunk/Source/WebCore/platform/qt/PlatformKeyboardEventQt.cpp

    r151588 r152961  
    4040String keyIdentifierForQtKeyCode(int keyCode)
    4141{
     42    // Based on http://www.w3.org/TR/DOM-Level-3-Events/#key-values-list
    4243    switch (keyCode) {
    43     case Qt::Key_Menu:
     44    case Qt::Key_unknown:
     45        return ASCIILiteral("Unidentified");
    4446    case Qt::Key_Alt:
    4547        return ASCIILiteral("Alt");
    46     case Qt::Key_Clear:
    47         return ASCIILiteral("Clear");
    48     case Qt::Key_Down:
    49         return ASCIILiteral("Down");
    50     case Qt::Key_End:
    51         return ASCIILiteral("End");
    52     case Qt::Key_Return:
    53     case Qt::Key_Enter:
    54         return ASCIILiteral("Enter");
    55     case Qt::Key_Execute:
    56         return ASCIILiteral("Execute");
     48    case Qt::Key_AltGr:
     49        return ASCIILiteral("AltGraph");
     50    case Qt::Key_Control:
     51        return ASCIILiteral("Control");
     52    case Qt::Key_Meta:
     53        return ASCIILiteral("Meta");
     54    case Qt::Key_Shift:
     55        return ASCIILiteral("Shift");
     56    case Qt::Key_Multi_key:
     57        return ASCIILiteral("Compose");
    5758    case Qt::Key_F1:
    5859        return ASCIILiteral("F1");
     
    103104    case Qt::Key_F24:
    104105        return ASCIILiteral("F24");
     106    // 'LaunchApplication1'
     107    // 'LaunchApplication2'
     108    case Qt::Key_LaunchMail:
     109        return ASCIILiteral("LaunchMail");
     110    // 'List'
     111    // 'Props'
     112    // 'Soft1'
     113    // 'Soft2'
     114    // 'Soft3'
     115    // 'Soft4'
     116    case Qt::Key_Yes:
     117        return ASCIILiteral("Accept");
     118    // 'Again'
     119    case Qt::Key_Return:
     120    case Qt::Key_Enter:
     121        return ASCIILiteral("Enter");
     122    // 'Find'
    105123    case Qt::Key_Help:
    106124        return ASCIILiteral("Help");
    107     case Qt::Key_Home:
    108         return ASCIILiteral("Home");
    109     case Qt::Key_Insert:
    110         return ASCIILiteral("Insert");
     125    // 'Info'
     126    case Qt::Key_Menu:
     127    case Qt::Key_MenuKB:
     128        return ASCIILiteral("Menu");
     129    case Qt::Key_Pause:
     130        return ASCIILiteral("Pause");
     131    case Qt::Key_Play:
     132        return ASCIILiteral("Play");
     133    case Qt::Key_Execute:
     134        return ASCIILiteral("Execute");
     135    case Qt::Key_Cancel:
     136        return ASCIILiteral("Cancel");
     137    case Qt::Key_Escape:
     138        return ASCIILiteral("Esc");
     139    // 'Exit'
     140    case Qt::Key_Zoom:
     141        return ASCIILiteral("Zoom");
     142    case Qt::Key_Comma:
     143        return ASCIILiteral("Seperator");
     144    case Qt::Key_Plus:
     145        return ASCIILiteral("Add");
     146    case Qt::Key_Minus:
     147        return ASCIILiteral("Subtract");
     148    case Qt::Key_Asterisk:
     149        return ASCIILiteral("Multiply");
     150    case Qt::Key_Slash:
     151        return ASCIILiteral("Divide");
     152    case Qt::Key_Equal:
     153        return ASCIILiteral("Equals");
     154    case Qt::Key_Period:
     155        return ASCIILiteral("Decimal");
     156    case Qt::Key_MonBrightnessDown:
     157        return ASCIILiteral("BrightnessDown");
     158    case Qt::Key_MonBrightnessUp:
     159        return ASCIILiteral("BrightnessUp");
     160    case Qt::Key_Camera:
     161        return ASCIILiteral("Camera");
     162    case Qt::Key_Eject:
     163        return ASCIILiteral("Eject");
     164    case Qt::Key_PowerDown:
     165    case Qt::Key_PowerOff:
     166        return ASCIILiteral("Power");
     167    case Qt::Key_Print:
     168        return ASCIILiteral("PrintScreen");
     169    case Qt::Key_Favorites:
     170        return ASCIILiteral("BrowserFavorites");
     171    case Qt::Key_HomePage:
     172        return ASCIILiteral("BrowserHome");
     173    case Qt::Key_Refresh:
     174        return ASCIILiteral("BrowserRefresh");
     175    case Qt::Key_Search:
     176        return ASCIILiteral("BrowserSearch");
     177    case Qt::Key_Stop:
     178        return ASCIILiteral("BrowserStop");
     179    case Qt::Key_Back:
     180        return ASCIILiteral("BrowserBack");
     181    case Qt::Key_Forward:
     182        return ASCIILiteral("BrowserForward");
    111183    case Qt::Key_Left:
    112184        return ASCIILiteral("Left");
     
    115187    case Qt::Key_PageUp:
    116188        return ASCIILiteral("PageUp");
    117     case Qt::Key_Pause:
    118         return ASCIILiteral("Pause");
    119     case Qt::Key_Print:
    120         return ASCIILiteral("PrintScreen");
    121189    case Qt::Key_Right:
    122190        return ASCIILiteral("Right");
     191    case Qt::Key_Up:
     192        return ASCIILiteral("Up");
     193    // 'UpLeft'
     194    // 'UpRight'
     195    case Qt::Key_Down:
     196        return ASCIILiteral("Down");
     197    // 'DownLeft'
     198    // 'DownRight'
     199    case Qt::Key_Home:
     200        return ASCIILiteral("Home");
     201    case Qt::Key_End:
     202        return ASCIILiteral("End");
    123203    case Qt::Key_Select:
    124204        return ASCIILiteral("Select");
    125     case Qt::Key_Up:
    126         return ASCIILiteral("Up");
    127         // Standard says that DEL becomes U+007F.
     205    case Qt::Key_Clear:
     206        return ASCIILiteral("Clear");
     207    case Qt::Key_Copy:
     208        return ASCIILiteral("Copy");
     209    case Qt::Key_Cut:
     210        return ASCIILiteral("Cut");
     211    // 'EraseEof'
     212    case Qt::Key_Insert:
     213        return ASCIILiteral("Insert");
     214    case Qt::Key_Paste:
     215        return ASCIILiteral("Paste");
     216    // 'Undo'
     217    case Qt::Key_Dead_Grave:
     218        return ASCIILiteral("DeadGrave");
     219    case Qt::Key_Dead_Acute:
     220        return ASCIILiteral("DeadAcute");
     221    case Qt::Key_Dead_Circumflex:
     222        return ASCIILiteral("DeadCircumflex");
     223    case Qt::Key_Dead_Tilde:
     224        return ASCIILiteral("DeadTilde");
     225    case Qt::Key_Dead_Macron:
     226        return ASCIILiteral("DeadMacron");
     227    case Qt::Key_Dead_Breve:
     228        return ASCIILiteral("DeadBreve");
     229    case Qt::Key_Dead_Abovedot:
     230        return ASCIILiteral("DeadAboveDot");
     231    case Qt::Key_Dead_Diaeresis:
     232        return ASCIILiteral("DeadUmlaut");
     233    case Qt::Key_Dead_Abovering:
     234        return ASCIILiteral("DeadAboveRing");
     235    case Qt::Key_Dead_Doubleacute:
     236        return ASCIILiteral("DeadDoubleAcute");
     237    case Qt::Key_Dead_Caron:
     238        return ASCIILiteral("DeadCaron");
     239    case Qt::Key_Dead_Cedilla:
     240        return ASCIILiteral("DeadCedilla");
     241    case Qt::Key_Dead_Ogonek:
     242        return ASCIILiteral("DeadOgonek");
     243    case Qt::Key_Dead_Iota:
     244        return ASCIILiteral("DeadIota");
     245    case Qt::Key_Dead_Voiced_Sound:
     246        return ASCIILiteral("DeadVoicedSound");
     247    case Qt::Key_Dead_Semivoiced_Sound:
     248        return ASCIILiteral("DeadSemivoicedSound");
     249
     250    case Qt::Key_MultipleCandidate:
     251        return ASCIILiteral("AllCandidate");
     252    case Qt::Key_SingleCandidate:
     253        return ASCIILiteral("NextCandidate");
     254    case Qt::Key_PreviousCandidate:
     255        return ASCIILiteral("PreviousCandidate");
     256    case Qt::Key_Codeinput:
     257        return ASCIILiteral("CodeInput");
     258
     259    case Qt::Key_Mode_switch:
     260        return ASCIILiteral("ModeChange");
     261    case Qt::Key_Hangul:
     262        return ASCIILiteral("HangulMode");
     263    case Qt::Key_Hangul_Hanja:
     264        return ASCIILiteral("HanjaMode");
     265    case Qt::Key_Hiragana:
     266        return ASCIILiteral("Hiragana");
     267    case Qt::Key_Kana_Lock:
     268    case Qt::Key_Kana_Shift:
     269        return ASCIILiteral("KanaMode");
     270    case Qt::Key_Kanji:
     271        return ASCIILiteral("KanjiMode");
     272    case Qt::Key_Katakana:
     273        return ASCIILiteral("Katakana");
     274
     275    // 'AudioFaderFront'
     276    // 'AudioFaderRear'
     277    // 'AudioBalanceLeft'
     278    // 'AudioBalanceRight'
     279    case Qt::Key_BassDown:
     280        return ASCIILiteral("AudioBassBoostDown");
     281    case Qt::Key_BassUp:
     282        return ASCIILiteral("AudioBassBoostUp");
     283    case Qt::Key_VolumeMute:
     284        return ASCIILiteral("VolumeMute");
     285    case Qt::Key_VolumeDown:
     286        return ASCIILiteral("VolumeDown");
     287    case Qt::Key_VolumeUp:
     288        return ASCIILiteral("VolumeUp");
     289    case Qt::Key_MediaPause:
     290        return ASCIILiteral("MediaPause");
     291    case Qt::Key_MediaPlay:
     292        return ASCIILiteral("MediaPlay");
     293    // 'MediaTrackEnd'
     294    case Qt::Key_MediaNext:
     295        return ASCIILiteral("MediaNextTrack");
     296    case Qt::Key_MediaTogglePlayPause:
     297        return ASCIILiteral("MediaPlayPause");
     298    case Qt::Key_MediaPrevious:
     299        return ASCIILiteral("MediaPreviousTrack");
     300    // 'MediaTrackSkip'
     301    // 'MediaTrackStart'
     302    case Qt::Key_MediaStop:
     303        return ASCIILiteral("MediaStop");
     304    case Qt::Key_LaunchMedia:
     305        return ASCIILiteral("SelectMedia");
     306
     307    case Qt::Key_AudioForward:
     308        return ASCIILiteral("FastFwd");
     309    case Qt::Key_MediaRecord:
     310        return ASCIILiteral("MediaRecord");
     311    case Qt::Key_AudioRewind:
     312        return ASCIILiteral("MediaRewind");
     313    case Qt::Key_Subtitle:
     314        return ASCIILiteral("Subtitle");
     315#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
     316    case Qt::Key_Blue:
     317        return ASCIILiteral("Blue");
     318    case Qt::Key_ChannelDown:
     319        return ASCIILiteral("ChannelDown");
     320    case Qt::Key_ChannelUp:
     321        return ASCIILiteral("ChannelUp");
     322    case Qt::Key_Green:
     323        return ASCIILiteral("Green");
     324    case Qt::Key_Red:
     325        return ASCIILiteral("Red");
     326    case Qt::Key_Yellow:
     327        return ASCIILiteral("Yellow");
     328#endif
     329    // Keys we have returned U+charcode for in the past.
     330    // FIXME: Change them to correct standard values if others do.
     331    case Qt::Key_Tab:
     332    case Qt::Key_Backtab:
     333        return ASCIILiteral("U+0009"); // return ASCIILiteral("Tab");
     334    case Qt::Key_Backspace:
     335        return ASCIILiteral("U+0008"); // return ASCIILiteral("Backspace");
    128336    case Qt::Key_Delete:
    129         return ASCIILiteral("U+007F");
    130     case Qt::Key_Backspace:
    131         return ASCIILiteral("U+0008");
    132     case Qt::Key_Tab:
    133         return ASCIILiteral("U+0009");
    134     case Qt::Key_Backtab:
    135         return ASCIILiteral("U+0009");
     337        return ASCIILiteral("U+007F"); // return ASCIILiteral("Del");
    136338    default:
    137         return String::format("U+%04X", toupper(keyCode));
     339        if (keyCode < 128)
     340            return String::format("U+%04X", toASCIIUpper(keyCode));
     341        return String();
    138342    }
    139343}
     
    218422    case Qt::Key_Control:
    219423        return VK_CONTROL; // (11) CTRL key
    220     case Qt::Key_Menu:
    221424    case Qt::Key_Alt:
    222425        return VK_MENU; // (12) ALT key
     
    407610        // case Qt::Key_Meta_R: FIXME: What to do here?
    408611        //    return VK_RWIN; // (5C) Right Windows key (Natural keyboard)
    409         // VK_APPS (5D) Applications key (Natural keyboard)
     612    case Qt::Key_Menu:
     613        return VK_APPS; // (5D) Applications key (Natural keyboard)
    410614        // VK_SLEEP (5F) Computer Sleep key
    411615        // VK_SEPARATOR (6C) Separator key
Note: See TracChangeset for help on using the changeset viewer.