📄 qkbdpc101_qws.cpp
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the QtGui module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file. Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "qkbdpc101_qws.h"#ifndef QT_NO_QWS_KEYBOARD#include "qscreen_qws.h"#include "qwindowsystem_qws.h"#include "qnamespace.h"#include "qapplication.h"#include <unistd.h>#include <sys/ioctl.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#ifdef Q_OS_LINUX#include <sys/kd.h>#include <sys/vt.h>#endifstatic const QWSKeyMap pc101KeyM[] = { { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_Escape, 27 , 27 , 0xffff }, { Qt::Key_1, '1' , '!' , 0xffff }, { Qt::Key_2, '2' , '@' , 0xffff }, { Qt::Key_3, '3' , '#' , 0xffff }, { Qt::Key_4, '4' , '$' , 0xffff }, { Qt::Key_5, '5' , '%' , 0xffff }, { Qt::Key_6, '6' , '^' , 0xffff }, { Qt::Key_7, '7' , '&' , 0xffff }, { Qt::Key_8, '8' , '*' , 0xffff }, { Qt::Key_9, '9' , '(' , 0xffff }, // 10 { Qt::Key_0, '0' , ')' , 0xffff }, { Qt::Key_Minus, '-' , '_' , 0xffff }, { Qt::Key_Equal, '=' , '+' , 0xffff }, { Qt::Key_Backspace, 8 , 8 , 0xffff }, { Qt::Key_Tab, 9 , 9 , 0xffff }, { Qt::Key_Q, 'q' , 'Q' , 'Q'-64 }, { Qt::Key_W, 'w' , 'W' , 'W'-64 }, { Qt::Key_E, 'e' , 'E' , 'E'-64 }, { Qt::Key_R, 'r' , 'R' , 'R'-64 }, { Qt::Key_T, 't' , 'T' , 'T'-64 }, // 20 { Qt::Key_Y, 'y' , 'Y' , 'Y'-64 }, { Qt::Key_U, 'u' , 'U' , 'U'-64 }, { Qt::Key_I, 'i' , 'I' , 'I'-64 }, { Qt::Key_O, 'o' , 'O' , 'O'-64 }, { Qt::Key_P, 'p' , 'P' , 'P'-64 }, { Qt::Key_BraceLeft, '[' , '{' , 0xffff }, { Qt::Key_BraceRight, ']' , '}' , 0xffff }, { Qt::Key_Return, 13 , 13 , 0xffff }, { Qt::Key_Control, 0xffff , 0xffff , 0xffff }, { Qt::Key_A, 'a' , 'A' , 'A'-64 }, // 30 { Qt::Key_S, 's' , 'S' , 'S'-64 }, { Qt::Key_D, 'd' , 'D' , 'D'-64 }, { Qt::Key_F, 'f' , 'F' , 'F'-64 }, { Qt::Key_G, 'g' , 'G' , 'G'-64 }, { Qt::Key_H, 'h' , 'H' , 'H'-64 }, { Qt::Key_J, 'j' , 'J' , 'J'-64 }, { Qt::Key_K, 'k' , 'K' , 'K'-64 }, { Qt::Key_L, 'l' , 'L' , 'L'-64 }, { Qt::Key_Semicolon, ';' , ':' , 0xffff }, { Qt::Key_Apostrophe, '\'' , '"' , 0xffff }, // 40 { Qt::Key_QuoteLeft, '`' , '~' , 0xffff }, { Qt::Key_Shift, 0xffff , 0xffff , 0xffff }, { Qt::Key_Backslash, '\\' , '|' , 0xffff }, { Qt::Key_Z, 'z' , 'Z' , 'Z'-64 }, { Qt::Key_X, 'x' , 'X' , 'X'-64 }, { Qt::Key_C, 'c' , 'C' , 'C'-64 }, { Qt::Key_V, 'v' , 'V' , 'V'-64 }, { Qt::Key_B, 'b' , 'B' , 'B'-64 }, { Qt::Key_N, 'n' , 'N' , 'N'-64 }, { Qt::Key_M, 'm' , 'M' , 'M'-64 }, // 50 { Qt::Key_Comma, ',' , '<' , 0xffff }, { Qt::Key_Period, '.' , '>' , 0xffff }, { Qt::Key_Slash, '/' , '?' , 0xffff }, { Qt::Key_Shift, 0xffff , 0xffff , 0xffff }, { Qt::Key_Asterisk, '*' , '*' , 0xffff }, { Qt::Key_Alt, 0xffff , 0xffff , 0xffff }, { Qt::Key_Space, ' ' , ' ' , 0xffff }, { Qt::Key_CapsLock, 0xffff , 0xffff , 0xffff }, { Qt::Key_F1, 0xffff , 0xffff , 0xffff }, { Qt::Key_F2, 0xffff , 0xffff , 0xffff }, // 60 { Qt::Key_F3, 0xffff , 0xffff , 0xffff }, { Qt::Key_F4, 0xffff , 0xffff , 0xffff }, { Qt::Key_F5, 0xffff , 0xffff , 0xffff }, { Qt::Key_F6, 0xffff , 0xffff , 0xffff }, { Qt::Key_F7, 0xffff , 0xffff , 0xffff }, { Qt::Key_F8, 0xffff , 0xffff , 0xffff }, { Qt::Key_F9, 0xffff , 0xffff , 0xffff }, { Qt::Key_F10, 0xffff , 0xffff , 0xffff }, { Qt::Key_NumLock, 0xffff , 0xffff , 0xffff }, { Qt::Key_ScrollLock, 0xffff , 0xffff , 0xffff }, // 70 { Qt::Key_7, '7' , '7' , 0xffff }, { Qt::Key_8, '8' , '8' , 0xffff }, { Qt::Key_9, '9' , '9' , 0xffff }, { Qt::Key_Minus, '-' , '-' , 0xffff }, { Qt::Key_4, '4' , '4' , 0xffff }, { Qt::Key_5, '5' , '5' , 0xffff }, { Qt::Key_6, '6' , '6' , 0xffff }, { Qt::Key_Plus, '+' , '+' , 0xffff }, { Qt::Key_1, '1' , '1' , 0xffff }, { Qt::Key_2, '2' , '2' , 0xffff }, // 80 { Qt::Key_3, '3' , '3' , 0xffff }, { Qt::Key_0, '0' , '0' , 0xffff }, { Qt::Key_Period, '.' , '.' , 0xffff }, { Qt::Key_SysReq, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_Less, '<' , '>' , 0xffff }, { Qt::Key_F11, 0xffff , 0xffff , 0xffff }, { Qt::Key_F12, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 90 { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_Enter, 13 , 13 , 0xffff }, { Qt::Key_Control, 0xffff , 0xffff , 0xffff }, { Qt::Key_Slash, '/' , '/' , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 100 { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // break { Qt::Key_Home, 0xffff , 0xffff , 0xffff }, { Qt::Key_Up, 0xffff , 0xffff , 0xffff }, { Qt::Key_PageUp, 0xffff , 0xffff , 0xffff }, { Qt::Key_Left, 0xffff , 0xffff , 0xffff }, { Qt::Key_Right, 0xffff , 0xffff , 0xffff }, { Qt::Key_End, 0xffff , 0xffff , 0xffff }, { Qt::Key_Down, 0xffff , 0xffff , 0xffff }, { Qt::Key_PageDown, 0xffff , 0xffff , 0xffff }, { Qt::Key_Insert, 0xffff , 0xffff , 0xffff }, // 110 { Qt::Key_Delete, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // macro { Qt::Key_F13, 0xffff , 0xffff , 0xffff }, { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, { Qt::Key_Help, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // do { Qt::Key_F17, 0xffff , 0xffff , 0xffff }, { Qt::Key_Plus, '+' , '-' , 0xffff }, { Qt::Key_Pause, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, { 0, 0xffff , 0xffff , 0xffff }};static const int keyMSize = sizeof(pc101KeyM)/sizeof(QWSKeyMap)-1;//===========================================================================//// PC-101 type keyboards///*! \class QWSPC101KeyboardHandler \ingroup qws \internal*/QWSPC101KeyboardHandler::QWSPC101KeyboardHandler(const QString&){ shift = false; alt = false; ctrl = false; extended = 0; prevuni = 0; prevkey = 0; caps = false;#if defined(QT_QWS_IPAQ) // iPAQ Action Key has ScanCode 0x60: 0x60|0x80 = 0xe0 == extended mode 1 ! ipaq_return_pressed = false;#endif}QWSPC101KeyboardHandler::~QWSPC101KeyboardHandler(){}const QWSKeyMap *QWSPC101KeyboardHandler::keyMap() const{ return pc101KeyM;}void QWSPC101KeyboardHandler::doKey(uchar code){ int keyCode = Qt::Key_unknown; bool release = false; int keypad = 0; bool softwareRepeat = false;#ifndef QT_QWS_USE_KEYCODES // extended? if (code == 224
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -