123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476 | // Copyright (C) 2016 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#include <QtTest/qtestcase.h>#include <QtTest/qtestassert.h> QT_BEGIN_NAMESPACE /*! \internal Convert an ascii char key value to a Qt Key value. If the key is unknown a 0 is returned. Note: this may happen more than you like since not all known ascii keys _are_ converted already. So feel free to add all the keys you need. */Qt::Key QTest::asciiToKey(char ascii){switch(static_cast<unsigned char>(ascii)) {case0x08:returnQt::Key_Backspace;case0x09:returnQt::Key_Tab;case0x0b:returnQt::Key_Backtab;case0x0d:returnQt::Key_Return;case0x1b:returnQt::Key_Escape;case0x13:returnQt::Key_Up;case0x15:returnQt::Key_Down;case0x20:returnQt::Key_Space;case0x21:returnQt::Key_Exclam;case0x22:returnQt::Key_QuoteDbl;case0x23:returnQt::Key_NumberSign;case0x24:returnQt::Key_Dollar;case0x25:returnQt::Key_Percent;case0x26:returnQt::Key_Ampersand;case0x27:returnQt::Key_Apostrophe;case0x28:returnQt::Key_ParenLeft;case0x29:returnQt::Key_ParenRight;case0x2a:returnQt::Key_Asterisk;case0x2b:returnQt::Key_Plus;case0x2c:returnQt::Key_Comma;case0x2d:returnQt::Key_Minus;case0x2e:returnQt::Key_Period;case0x2f:returnQt::Key_Slash;case0x30:returnQt::Key_0;case0x31:returnQt::Key_1;case0x32:returnQt::Key_2;case0x33:returnQt::Key_3;case0x34:returnQt::Key_4;case0x35:returnQt::Key_5;case0x36:returnQt::Key_6;case0x37:returnQt::Key_7;case0x38:returnQt::Key_8;case0x39:returnQt::Key_9;case0x3a:returnQt::Key_Colon;case0x3b:returnQt::Key_Semicolon;case0x3c:returnQt::Key_Less;case0x3d:returnQt::Key_Equal;case0x3e:returnQt::Key_Greater;case0x3f:returnQt::Key_Question;case0x40:returnQt::Key_At;case0x41:returnQt::Key_A;case0x42:returnQt::Key_B;case0x43:returnQt::Key_C;case0x44:returnQt::Key_D;case0x45:returnQt::Key_E;case0x46:returnQt::Key_F;case0x47:returnQt::Key_G;case0x48:returnQt::Key_H;case0x49:returnQt::Key_I;case0x4a:returnQt::Key_J;case0x4b:returnQt::Key_K;case0x4c:returnQt::Key_L;case0x4d:returnQt::Key_M;case0x4e:returnQt::Key_N;case0x4f:returnQt::Key_O;case0x50:returnQt::Key_P;case0x51:returnQt::Key_Q;case0x52:returnQt::Key_R;case0x53:returnQt::Key_S;case0x54:returnQt::Key_T;case0x55:returnQt::Key_U;case0x56:returnQt::Key_V;case0x57:returnQt::Key_W;case0x58:returnQt::Key_X;case0x59:returnQt::Key_Y;case0x5a:returnQt::Key_Z;case0x5b:returnQt::Key_BracketLeft;case0x5c:returnQt::Key_Backslash;case0x5d:returnQt::Key_BracketRight;case0x5e:returnQt::Key_AsciiCircum;case0x5f:returnQt::Key_Underscore;case0x60:returnQt::Key_QuoteLeft;case0x61:returnQt::Key_A;case0x62:returnQt::Key_B;case0x63:returnQt::Key_C;case0x64:returnQt::Key_D;case0x65:returnQt::Key_E;case0x66:returnQt::Key_F;case0x67:returnQt::Key_G;case0x68:returnQt::Key_H;case0x69:returnQt::Key_I;case0x6a:returnQt::Key_J;case0x6b:returnQt::Key_K;case0x6c:returnQt::Key_L;case0x6d:returnQt::Key_M;case0x6e:returnQt::Key_N;case0x6f:returnQt::Key_O;case0x70:returnQt::Key_P;case0x71:returnQt::Key_Q;case0x72:returnQt::Key_R;case0x73:returnQt::Key_S;case0x74:returnQt::Key_T;case0x75:returnQt::Key_U;case0x76:returnQt::Key_V;case0x77:returnQt::Key_W;case0x78:returnQt::Key_X;case0x79:returnQt::Key_Y;case0x7a:returnQt::Key_Z;case0x7b:returnQt::Key_BraceLeft;case0x7c:returnQt::Key_Bar;case0x7d:returnQt::Key_BraceRight;case0x7e:returnQt::Key_AsciiTilde;// Latin 1 codes adapted from X: keysymdef.h,v 1.21 94/08/28 16:17:06case0xa0:returnQt::Key_nobreakspace;case0xa1:returnQt::Key_exclamdown;case0xa2:returnQt::Key_cent;case0xa3:returnQt::Key_sterling;case0xa4:returnQt::Key_currency;case0xa5:returnQt::Key_yen;case0xa6:returnQt::Key_brokenbar;case0xa7:returnQt::Key_section;case0xa8:returnQt::Key_diaeresis;case0xa9:returnQt::Key_copyright;case0xaa:returnQt::Key_ordfeminine;case0xab:returnQt::Key_guillemotleft;case0xac:returnQt::Key_notsign;case0xad:returnQt::Key_hyphen;case0xae:returnQt::Key_registered;case0xaf:returnQt::Key_macron;case0xb0:returnQt::Key_degree;case0xb1:returnQt::Key_plusminus;case0xb2:returnQt::Key_twosuperior;case0xb3:returnQt::Key_threesuperior;case0xb4:returnQt::Key_acute;case0xb5:returnQt::Key_micro;case0xb6:returnQt::Key_paragraph;case0xb7:returnQt::Key_periodcentered;case0xb8:returnQt::Key_cedilla;case0xb9:returnQt::Key_onesuperior;case0xba:returnQt::Key_masculine;case0xbb:returnQt::Key_guillemotright;case0xbc:returnQt::Key_onequarter;case0xbd:returnQt::Key_onehalf;case0xbe:returnQt::Key_threequarters;case0xbf:returnQt::Key_questiondown;case0xc0:returnQt::Key_Agrave;case0xc1:returnQt::Key_Aacute;case0xc2:returnQt::Key_Acircumflex;case0xc3:returnQt::Key_Atilde;case0xc4:returnQt::Key_Adiaeresis;case0xc5:returnQt::Key_Aring;case0xc6:returnQt::Key_AE;case0xc7:returnQt::Key_Ccedilla;case0xc8:returnQt::Key_Egrave;case0xc9:returnQt::Key_Eacute;case0xca:returnQt::Key_Ecircumflex;case0xcb:returnQt::Key_Ediaeresis;case0xcc:returnQt::Key_Igrave;case0xcd:returnQt::Key_Iacute;case0xce:returnQt::Key_Icircumflex;case0xcf:returnQt::Key_Idiaeresis;case0xd0:returnQt::Key_ETH;case0xd1:returnQt::Key_Ntilde;case0xd2:returnQt::Key_Ograve;case0xd3:returnQt::Key_Oacute;case0xd4:returnQt::Key_Ocircumflex;case0xd5:returnQt::Key_Otilde;case0xd6:returnQt::Key_Odiaeresis;case0xd7:returnQt::Key_multiply;case0xd8:returnQt::Key_Ooblique;case0xd9:returnQt::Key_Ugrave;case0xda:returnQt::Key_Uacute;case0xdb:returnQt::Key_Ucircumflex;case0xdc:returnQt::Key_Udiaeresis;case0xdd:returnQt::Key_Yacute;case0xde:returnQt::Key_THORN;case0xdf:returnQt::Key_ssharp;case0xe5:returnQt::Key_Aring;case0xe6:returnQt::Key_AE;case0xf7:returnQt::Key_division;case0xf8:returnQt::Key_Ooblique;case0xff:returnQt::Key_ydiaeresis;default:QTEST_ASSERT(false);returnQt::Key(0);}}/*! \internal Convert a Qt Key to an ascii char value. If the Qt key is unknown a 0 is returned. Note: this may happen more than you like since not all known Qt keys _are_ converted already. So feel free to add all the keys you need.*/charQTest::keyToAscii(Qt::Key key){switch(key) {caseQt::Key_Backspace:return0x8;//BScaseQt::Key_Tab:return0x09;// HTcaseQt::Key_Backtab:return0x0b;// VTcaseQt::Key_Enter:caseQt::Key_Return:return0x0d;// CRcaseQt::Key_Escape:return0x1b;// ESCcaseQt::Key_Space:return0x20;// 7 bit printable ASCIIcaseQt::Key_Exclam:return0x21;caseQt::Key_QuoteDbl:return0x22;caseQt::Key_NumberSign:return0x23;caseQt::Key_Dollar:return0x24;caseQt::Key_Percent:return0x25;caseQt::Key_Ampersand:return0x26;caseQt::Key_Apostrophe:return0x27;caseQt::Key_ParenLeft:return0x28;caseQt::Key_ParenRight:return0x29;caseQt::Key_Asterisk:return0x2a;caseQt::Key_Plus:return0x2b;caseQt::Key_Comma:return0x2c;caseQt::Key_Minus:return0x2d;caseQt::Key_Period:return0x2e;caseQt::Key_Slash:return0x2f;caseQt::Key_0:return0x30;caseQt::Key_1:return0x31;caseQt::Key_2:return0x32;caseQt::Key_3:return0x33;caseQt::Key_4:return0x34;caseQt::Key_5:return0x35;caseQt::Key_6:return0x36;caseQt::Key_7:return0x37;caseQt::Key_8:return0x38;caseQt::Key_9:return0x39;caseQt::Key_Colon:return0x3a;caseQt::Key_Semicolon:return0x3b;caseQt::Key_Less:return0x3c;caseQt::Key_Equal:return0x3d;caseQt::Key_Greater:return0x3e;caseQt::Key_Question:return0x3f;caseQt::Key_At:return0x40;caseQt::Key_A:return0x61;// 0x41 == 'A', 0x61 == 'a'caseQt::Key_B:return0x62;caseQt::Key_C:return0x63;caseQt::Key_D:return0x64;caseQt::Key_E:return0x65;caseQt::Key_F:return0x66;caseQt::Key_G:return0x67;caseQt::Key_H:return0x68;caseQt::Key_I:return0x69;caseQt::Key_J:return0x6a;caseQt::Key_K:return0x6b;caseQt::Key_L:return0x6c;caseQt::Key_M:return0x6d;caseQt::Key_N:return0x6e;caseQt::Key_O:return0x6f;caseQt::Key_P:return0x70;caseQt::Key_Q:return0x71;caseQt::Key_R:return0x72;caseQt::Key_S:return0x73;caseQt::Key_T:return0x74;caseQt::Key_U:return0x75;caseQt::Key_V:return0x76;caseQt::Key_W:return0x77;caseQt::Key_X:return0x78;caseQt::Key_Y:return0x79;caseQt::Key_Z:return0x7a;caseQt::Key_BracketLeft:return0x5b;caseQt::Key_Backslash:return0x5c;caseQt::Key_BracketRight:return0x5d;caseQt::Key_AsciiCircum:return0x5e;caseQt::Key_Underscore:return0x5f;caseQt::Key_QuoteLeft:return0x60;caseQt::Key_BraceLeft:return0x7b;caseQt::Key_Bar:return0x7c;caseQt::Key_BraceRight:return0x7d;caseQt::Key_AsciiTilde:return0x7e;caseQt::Key_Delete:return0;caseQt::Key_Insert:return0;// = 0x1006,caseQt::Key_Pause:return0;// = 0x1008,caseQt::Key_Print:return0;// = 0x1009,caseQt::Key_SysReq:return0;// = 0x100a,caseQt::Key_Clear:return0;// = 0x100b,caseQt::Key_Home:return0;// = 0x1010, // cursor movementcaseQt::Key_End:return0;// = 0x1011,caseQt::Key_Left:return0;// = 0x1012,caseQt::Key_Up:return0;// = 0x1013,caseQt::Key_Right:return0;// = 0x1014,caseQt::Key_Down:return0;// = 0x1015,caseQt::Key_PageUp:return0;// = 0x1016,caseQt::Key_PageDown:return0;// = 0x1017,caseQt::Key_Shift:return0;// = 0x1020, // modifierscaseQt::Key_Control:return0;// = 0x1021,caseQt::Key_Meta:return0;// = 0x1022,caseQt::Key_Alt:return0;// = 0x1023,caseQt::Key_CapsLock:return0;// = 0x1024,caseQt::Key_NumLock:return0;// = 0x1025,caseQt::Key_ScrollLock:return0;// = 0x1026,caseQt::Key_F1:return0;// = 0x1030, // function keyscaseQt::Key_F2:return0;// = 0x1031,caseQt::Key_F3:return0;// = 0x1032,caseQt::Key_F4:return0;// = 0x1033,caseQt::Key_F5:return0;// = 0x1034,caseQt::Key_F6:return0;// = 0x1035,caseQt::Key_F7:return0;// = 0x1036,caseQt::Key_F8:return0;// = 0x1037,caseQt::Key_F9:return0;// = 0x1038,caseQt::Key_F10:return0;// = 0x1039,caseQt::Key_F11:return0;// = 0x103a,caseQt::Key_F12:return0;// = 0x103b,caseQt::Key_F13:return0;// = 0x103c,caseQt::Key_F14:return0;// = 0x103d,caseQt::Key_F15:return0;// = 0x103e,caseQt::Key_F16:return0;// = 0x103f,caseQt::Key_F17:return0;// = 0x1040,caseQt::Key_F18:return0;// = 0x1041,caseQt::Key_F19:return0;// = 0x1042,caseQt::Key_F20:return0;// = 0x1043,caseQt::Key_F21:return0;// = 0x1044,caseQt::Key_F22:return0;// = 0x1045,caseQt::Key_F23:return0;// = 0x1046,caseQt::Key_F24:return0;// = 0x1047,caseQt::Key_F25:return0;// = 0x1048, // F25 .. F35 only on X11caseQt::Key_F26:return0;// = 0x1049,caseQt::Key_F27:return0;// = 0x104a,caseQt::Key_F28:return0;// = 0x104b,caseQt::Key_F29:return0;// = 0x104c,caseQt::Key_F30:return0;// = 0x104d,caseQt::Key_F31:return0;// = 0x104e,caseQt::Key_F32:return0;// = 0x104f,caseQt::Key_F33:return0;// = 0x1050,caseQt::Key_F34:return0;// = 0x1051,caseQt::Key_F35:return0;// = 0x1052,caseQt::Key_Super_L:return0;// = 0x1053, // extra keyscaseQt::Key_Super_R:return0;// = 0x1054,caseQt::Key_Menu:return0;// = 0x1055,caseQt::Key_Hyper_L:return0;// = 0x1056,caseQt::Key_Hyper_R:return0;// = 0x1057,caseQt::Key_Help:return0;// = 0x1058,caseQt::Key_Direction_L:return0;// = 0x1059,caseQt::Key_Direction_R:return0;// = 0x1060,// Latin 1 codes adapted from X: keysymdef.h,v 1.21 94/08/28 16:17:06caseQt::Key_nobreakspace:returnchar(0xa0);caseQt::Key_exclamdown:returnchar(0xa1);caseQt::Key_cent:returnchar(0xa2);caseQt::Key_sterling:returnchar(0xa3);caseQt::Key_currency:returnchar(0xa4);caseQt::Key_yen:returnchar(0xa5);caseQt::Key_brokenbar:returnchar(0xa6);caseQt::Key_section:returnchar(0xa7);caseQt::Key_diaeresis:returnchar(0xa8);caseQt::Key_copyright:returnchar(0xa9);caseQt::Key_ordfeminine:returnchar(0xaa);caseQt::Key_guillemotleft:returnchar(0xab);// left angle quotation marcaseQt::Key_notsign:returnchar(0xac);caseQt::Key_hyphen:returnchar(0xad);caseQt::Key_registered:returnchar(0xae);caseQt::Key_macron:returnchar(0xaf);caseQt::Key_degree:returnchar(0xb0);caseQt::Key_plusminus:returnchar(0xb1);caseQt::Key_twosuperior:returnchar(0xb2);caseQt::Key_threesuperior:returnchar(0xb3);caseQt::Key_acute:returnchar(0xb4);caseQt::Key_micro:returnchar(0xb5);caseQt::Key_paragraph:returnchar(0xb6);caseQt::Key_periodcentered:returnchar(0xb7);caseQt::Key_cedilla:returnchar(0xb8);caseQt::Key_onesuperior:returnchar(0xb9);caseQt::Key_masculine:returnchar(0xba);caseQt::Key_guillemotright:returnchar(0xbb);// right angle quotation marcaseQt::Key_onequarter:returnchar(0xbc);caseQt::Key_onehalf:returnchar(0xbd);caseQt::Key_threequarters:returnchar(0xbe);caseQt::Key_questiondown:returnchar(0xbf);caseQt::Key_Agrave:returnchar(0xc0);caseQt::Key_Aacute:returnchar(0xc1);caseQt::Key_Acircumflex:returnchar(0xc2);caseQt::Key_Atilde:returnchar(0xc3);caseQt::Key_Adiaeresis:returnchar(0xc4);caseQt::Key_Aring:returnchar(0xe5);caseQt::Key_AE:returnchar(0xe6);caseQt::Key_Ccedilla:returnchar(0xc7);caseQt::Key_Egrave:returnchar(0xc8);caseQt::Key_Eacute:returnchar(0xc9);caseQt::Key_Ecircumflex:returnchar(0xca);caseQt::Key_Ediaeresis:returnchar(0xcb);caseQt::Key_Igrave:returnchar(0xcc);caseQt::Key_Iacute:returnchar(0xcd);caseQt::Key_Icircumflex:returnchar(0xce);caseQt::Key_Idiaeresis:returnchar(0xcf);caseQt::Key_ETH:returnchar(0xd0);caseQt::Key_Ntilde:returnchar(0xd1);caseQt::Key_Ograve:returnchar(0xd2);caseQt::Key_Oacute:returnchar(0xd3);caseQt::Key_Ocircumflex:returnchar(0xd4);caseQt::Key_Otilde:returnchar(0xd5);caseQt::Key_Odiaeresis:returnchar(0xd6);caseQt::Key_multiply:returnchar(0xd7);caseQt::Key_Ooblique:returnchar(0xf8);caseQt::Key_Ugrave:returnchar(0xd9);caseQt::Key_Uacute:returnchar(0xda);caseQt::Key_Ucircumflex:returnchar(0xdb);caseQt::Key_Udiaeresis:returnchar(0xdc);caseQt::Key_Yacute:returnchar(0xdd);caseQt::Key_THORN:returnchar(0xde);caseQt::Key_ssharp:returnchar(0xdf);caseQt::Key_division:returnchar(0xf7);caseQt::Key_ydiaeresis:returnchar(0xff);// multimedia/internet keys - ignored by default - see QKeyEvent c'torcaseQt::Key_Back :return0;// = 0x1061,caseQt::Key_Forward :return0;// = 0x1062,caseQt::Key_Stop :return0;// = 0x1063,caseQt::Key_Refresh :return0;// = 0x1064,caseQt::Key_VolumeDown:return0;// = 0x1070,caseQt::Key_VolumeMute :return0;// = 0x1071,caseQt::Key_VolumeUp:return0;// = 0x1072,caseQt::Key_BassBoost:return0;// = 0x1073,caseQt::Key_BassUp:return0;// = 0x1074,caseQt::Key_BassDown:return0;// = 0x1075,caseQt::Key_TrebleUp:return0;// = 0x1076,caseQt::Key_TrebleDown:return0;// = 0x1077,caseQt::Key_MediaPlay :return0;// = 0x1080,caseQt::Key_MediaStop :return0;// = 0x1081,caseQt::Key_MediaPrevious :return0;// = 0x1082,caseQt::Key_MediaNext :return0;// = 0x1083,caseQt::Key_MediaRecord:return0;// = 0x1084,caseQt::Key_HomePage :return0;// = 0x1090,caseQt::Key_Favorites :return0;// = 0x1091,caseQt::Key_Search :return0;// = 0x1092,caseQt::Key_Standby:return0;// = 0x1093,caseQt::Key_OpenUrl:return0;// = 0x1094,caseQt::Key_LaunchMail :return0;// = 0x10a0,caseQt::Key_LaunchMedia:return0;// = 0x10a1,caseQt::Key_Launch0 :return0;// = 0x10a2,caseQt::Key_Launch1 :return0;// = 0x10a3,caseQt::Key_Launch2 :return0;// = 0x10a4,caseQt::Key_Launch3 :return0;// = 0x10a5,caseQt::Key_Launch4 :return0;// = 0x10a6,caseQt::Key_Launch5 :return0;// = 0x10a7,caseQt::Key_Launch6 :return0;// = 0x10a8,caseQt::Key_Launch7 :return0;// = 0x10a9,caseQt::Key_Launch8 :return0;// = 0x10aa,caseQt::Key_Launch9 :return0;// = 0x10ab,caseQt::Key_LaunchA :return0;// = 0x10ac,caseQt::Key_LaunchB :return0;// = 0x10ad,caseQt::Key_LaunchC :return0;// = 0x10ae,caseQt::Key_LaunchD :return0;// = 0x10af,caseQt::Key_LaunchE :return0;// = 0x10b0,caseQt::Key_LaunchF :return0;// = 0x10b1,// Keypad navigation keyscaseQt::Key_Select :return0;// = 0x01010000caseQt::Key_Yes :return0;// = 0x01010001caseQt::Key_No :return0;// = 0x01010002default:qWarning() << __FUNCTION__ <<"Unhandled key code"<< key;return0;}} QT_END_NAMESPACE
|