亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qkeyboard_qws.cpp

?? 鍵盤驅動程序
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************** $Id: qt/src/kernel/qkeyboard_qws.cpp   2.3.6   edited 2003-05-12 $**** Implementation of Qt/Embedded keyboard drivers**** Created : 991025**** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.**** This file is part of the kernel module of the Qt GUI Toolkit.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition** licenses for Qt/Embedded may use this file in accordance with the** Qt Embedded Commercial License Agreement provided with the Software.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for**   information about Qt Commercial License Agreements.** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/// 增加了對SEUIC HPC 鍵盤的支持 2003.09.3 caoyang (需要增加宏 QT_QWS_HPC )// 問題單號: D0184#include "qwindowsystem_qws.h"#include "qwsutils_qws.h"#include "qgfx_qws.h"#include <qapplication.h>#include <qsocketnotifier.h>#include <qnamespace.h>#include <qtimer.h>#include <stdlib.h>#include <stdio.h>#include <ctype.h>#include <unistd.h>#ifdef _OS_LINUX_#include <linux/kd.h>#endif#include <sys/ioctl.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <signal.h>#include <termios.h>#include <unistd.h>#include <sys/ioctl.h>#ifndef QT_NO_QWS_KEYBOARD#ifdef QT_QWS_YOPY#include <qwidgetlist.h>#include <linux/kd.h>#include <linux/fb.h>#include <linux/yopy_button.h>extern "C" {    int getpgid(int);}#endif//A by caoyang for D0184 at 2003.09.3 begin#ifdef QT_QWS_HPC#include <qwidgetlist.h>#include <linux/kd.h>#include <linux/fb.h>extern "C" {    int getpgid(int);}#endif//A by caoyang for D0184 at 2003.09.3 end#if !defined(_OS_QNX6_)#include <termios.h>#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)#include <sys/kd.h>#include <sys/vt.h>#endif#ifdef QT_QWS_SL5XXX#include <asm/sharp_char.h>#endif#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX)static int dir_keyrot = -1;static int xform_dirkey(int key){    if (dir_keyrot < 0) {	// get the rotation	char *kerot = getenv("QWS_CURSOR_ROTATION");	if (kerot) {	    if (strcmp(kerot, "90") == 0)		dir_keyrot = 1;	    else if (strcmp(kerot, "180") == 0)		dir_keyrot = 2;	    else if (strcmp(kerot, "270") == 0)		dir_keyrot = 3;	    else		dir_keyrot = 0;	} else {	    dir_keyrot = 0;	}    }    int xf = qt_screen->transformOrientation() + dir_keyrot;    return (key-Qt::Key_Left+xf)%4+Qt::Key_Left;}#endif#define VTSWITCHSIG SIGUSR2static bool vtActive = true;static int  vtQws = 0;static int  kbdFD = -1;class QWSyopyButtonsHandler : public QWSKeyboardHandler{    Q_OBJECTpublic:    QWSyopyButtonsHandler();    virtual ~QWSyopyButtonsHandler();    bool isOpen() { return buttonFD > 0; }private slots:    void readKeyboardData();private:    QString terminalName;    int buttonFD;    struct termios newT, oldT;    QSocketNotifier *notifier;};#endif // QNX6#ifdef QT_QWS_SL5XXXstatic const QWSServer::KeyMap keyM[] = {    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 00    {	Qt::Key_A,		'a'     , 'A'     , 'A'-64  }, // 01    {	Qt::Key_B,		'b'     , 'B'     , 'B'-64  }, // 02    {	Qt::Key_C,		'c'     , 'C'     , 'C'-64  }, // 03    {	Qt::Key_D,		'd'     , 'D'     , 'D'-64  }, // 04    {	Qt::Key_E,		'e'     , 'E'     , 'E'-64  }, // 05    {	Qt::Key_F,		'f'     , 'F'     , 'F'-64  }, // 06    {	Qt::Key_G,		'g'     , 'G'     , 'G'-64  }, // 07    {	Qt::Key_H,		'h'     , 'H'     , 'H'-64  }, // 08    {	Qt::Key_I,		'i'     , 'I'     , 'I'-64  }, // 09    {	Qt::Key_J,		'j'     , 'J'     , 'J'-64  }, // 0a 10    {	Qt::Key_K,		'k'     , 'K'     , 'K'-64  }, // 0b    {	Qt::Key_L,		'l'     , 'L'     , 'L'-64  }, // 0c    {	Qt::Key_M,		'm'     , 'M'     , 'M'-64  }, // 0d    {	Qt::Key_N,		'n'     , 'N'     , 'N'-64  }, // 0e    {	Qt::Key_O,		'o'     , 'O'     , 'O'-64  }, // 0f    {	Qt::Key_P,		'p'     , 'P'     , 'P'-64  }, // 10    {	Qt::Key_Q,		'q'     , 'Q'     , 'Q'-64  }, // 11    {	Qt::Key_R,		'r'     , 'R'     , 'R'-64  }, // 12    {	Qt::Key_S,		's'     , 'S'     , 'S'-64  }, // 13    {	Qt::Key_T,		't'     , 'T'     , 'T'-64  }, // 14 20    {	Qt::Key_U,		'u'     , 'U'     , 'U'-64  }, // 15    {	Qt::Key_V,		'v'     , 'V'     , 'V'-64  }, // 16    {	Qt::Key_W,		'w'     , 'W'     , 'W'-64  }, // 17    {	Qt::Key_X,		'x'     , 'X'     , 'X'-64  }, // 18    {	Qt::Key_Y,		'y'     , 'Y'     , 'Y'-64  }, // 19    {	Qt::Key_Z,		'z'     , 'Z'     , 'Z'-64  }, // 1a    {	Qt::Key_Shift,		0xffff  , 0xffff  , 0xffff  }, // 1b    {	Qt::Key_Return,		13      , 13      , 0xffff  }, // 1c    {	Qt::Key_F11,	        0xffff  , 0xffff  , 0xffff  }, // 1d todo    {	Qt::Key_F22,		0xffff  , 0xffff  , 0xffff  }, // 1e 30    {	Qt::Key_Backspace,	8       , 8       , 0xffff  }, // 1f    {	Qt::Key_F31,		0xffff  , 0xffff  , 0xffff  }, // 20    {	Qt::Key_F35,		0xffff  , 0xffff  , 0xffff  }, // 21 light    {	Qt::Key_Escape,		0xffff  , 0xffff  , 0xffff  }, // 22    // Direction key code are for *UNROTATED* display.    {	Qt::Key_Up,		0xffff  , 0xffff  , 0xffff  }, // 23    {	Qt::Key_Right,		0xffff  , 0xffff  , 0xffff  }, // 24    {	Qt::Key_Left,		0xffff  , 0xffff  , 0xffff  }, // 25    {	Qt::Key_Down,		0xffff  , 0xffff  , 0xffff  }, // 26    {	Qt::Key_F33,		0xffff  , 0xffff  , 0xffff  }, // 27 OK    {	Qt::Key_F12,		0xffff  , 0xffff  , 0xffff  }, // 28 40 home    {	Qt::Key_1,		'1'     , 'q'     , 'Q'-64  }, // 29    {	Qt::Key_2,		'2'     , 'w'     , 'W'-64  }, // 2a    {	Qt::Key_3,		'3'     , 'e'     , 'E'-64  }, // 2b    {	Qt::Key_4,		'4'     , 'r'     , 'R'-64  }, // 2c    {	Qt::Key_5,		'5'     , 't'     , 'T'-64  }, // 2d    {	Qt::Key_6,		'6'     , 'y'     , 'Y'-64  }, // 2e    {	Qt::Key_7,		'7'     , 'u'     , 'U'-64  }, // 2f    {	Qt::Key_8,		'8'     , 'i'     , 'I'-64  }, // 30    {	Qt::Key_9,		'9'     , 'o'     , 'O'-64  }, // 31    {	Qt::Key_0,		'0'     , 'p'     , 'P'-64  }, // 32 50    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 33    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 34    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 35    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 36    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 37    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 38    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 39    {	Qt::Key_Minus,		'-'     , 'b'     , 'B'-64  }, // 3a    {	Qt::Key_Plus,		'+'     , 'n'     , 'N'-64  }, // 3b    {	Qt::Key_CapsLock,	0xffff  , 0xffff  , 0xffff  }, // 3c 60    {	Qt::Key_At,		'@'     , 's'     , 'S'-64  }, // 3d    {	Qt::Key_Question,	'?'     , '?'     , 0xffff  }, // 3e    {	Qt::Key_Comma,		','     , ','     , 0xffff  }, // 3f    {	Qt::Key_Period,		'.'     , '.'     , 0xffff  }, // 40    {	Qt::Key_Tab,		9       , '\\'    , 0xffff  }, // 41    {	Qt::Key_X,		0xffff 	, 'x'  	  , 'X'-64  }, // 42    {	Qt::Key_C,		0xffff 	, 'c'     , 'C'-64  }, // 43    {	Qt::Key_V,		0xffff 	, 'v'     , 'V'-64  }, // 44    {	Qt::Key_Slash,		'/'     , '/'     , 0xffff  }, // 45    {	Qt::Key_Apostrophe,	'\''    , '\''    , 0xffff  }, // 46 70    {	Qt::Key_Semicolon,	';'     , ';'     , 0xffff  }, // 47    {	Qt::Key_QuoteDbl,	'\"'    , '\"'    , 0xffff  }, // 48    {	Qt::Key_Colon,		':'     , ':'     , 0xffff  }, // 49    {	Qt::Key_NumberSign,	'#'     , 'd'     , 'D'-64  }, // 4a    {	Qt::Key_Dollar,		'$'     , 'f'     , 'F'-64  }, // 4b    {	Qt::Key_Percent,	'%'     , 'g'     , 'G'-64  }, // 4c    {	Qt::Key_Underscore,	'_'     , 'h'     , 'H'-64  }, // 4d    {	Qt::Key_Ampersand,	'&'     , 'j'     , 'J'-64  }, // 4e    {	Qt::Key_Asterisk,	'*'     , 'k'     , 'K'-64  }, // 4f    {	Qt::Key_ParenLeft,	'('     , 'l'     , 'L'-64  }, // 50 80    {	Qt::Key_Delete,		'['     , '['     , '['     }, // 51    {	Qt::Key_Z,		0xffff 	, 'z'     , 'Z'-64  }, // 52    {	Qt::Key_Equal,		'='     , 'm'     , 'M'-64  }, // 53    {	Qt::Key_ParenRight,	')'     , ']'     , ']'     }, // 54    {	Qt::Key_AsciiTilde,	'~'     , '^'     , '^'     }, // 55    {	Qt::Key_Less,		'<'     , '{'     , '{'     }, // 56    {	Qt::Key_Greater,	'>'     , '}'     , '}'     }, // 57    {	Qt::Key_F9,		0xffff  , 0xffff  , 0xffff  }, // 58 datebook    {	Qt::Key_F10,		0xffff  , 0xffff  , 0xffff  }, // 59 address    {	Qt::Key_F13,	        0xffff  , 0xffff  , 0xffff  }, // 5a 90 email    {	Qt::Key_F30,		' '      , ' '    , 0xffff  }, // 5b select    {	Qt::Key_Space,		' '     , '|'     , '`'     }, // 5c    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 5d    {	Qt::Key_Exclam,		'!'     , 'a'     , 'A'-64  }, // 5e    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 5f    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 60    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 61    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 62    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 63    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 64    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 65    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 66    {	Qt::Key_Meta,		0xffff  , 0xffff  , 0xffff  }, // 67    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 68    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 69    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 6a    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 6b    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 6c    {	Qt::Key_F34,		0xffff  , 0xffff  , 0xffff  }, // 6d power    {	Qt::Key_F13,		0xffff  , 0xffff  , 0xffff  }, // 6e mail long    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 6f    {	Qt::Key_NumLock,	0xffff  , 0xffff  , 0xffff  }, // 70    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 71    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 72    { 	0x20ac,	0xffff  , 0x20ac , 0x20ac }, // 73 Euro sign    {	Qt::Key_unknown,	0xffff  , 0xffff  , 0xffff  }, // 74    {	Qt::Key_F32,		0xffff  , 0xffff  , 0xffff  }, // 75 Sync    {	0,			0xffff  , 0xffff  , 0xffff  }};#else// Standard PC101static const QWSServer::KeyMap keyM[] = {    {   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_unknown,    0xffff  , 0xffff  , 0xffff  },    {   Qt::Key_unknown,    0xffff  , 0xffff  , 0xffff  },    {   Qt::Key_unknown,    0xffff  , 0xffff  , 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    {   0,          0xffff  , 0xffff  , 0xffff  }};#endifstatic const int keyMSize = sizeof(keyM)/sizeof(QWSServer::KeyMap)-1;static QIntDict<QWSServer::KeyMap> *overrideMap = 0;/*!  Changes the mapping of the keyboard; adding the scancode to Unicode  mappings from \a map. The server takes over ownership of \a map  and will delete it. Use QCollection::setAutoDelete() to control  whether the contents of \a map should be deleted.  Passing a null pointer for \a map will revert to the default keymap.*/void QWSServer::setOverrideKeys( QIntDict<QWSServer::KeyMap> *map ){    delete overrideMap;    overrideMap = map;}#if !defined(_OS_QNX6_)/*!  \class QWSKeyboardHandler qkeyboard_qws.h  \brief Keyboard driver/handler for Qt/Embedded  The keyboard driver/handler handles events from system devices and  generates key events.  A QWSKeyboardHandler will usually open some system device in its  constructor, create a QSocketNotifier on that opened device and when  it receives data, it will call processKeyEvent() to send the event  to Qt/Embedded for relaying to clients.*//*!  Subclasses call this to send a key event. The server may additionally  filter it before sending it on to applications.  <ul>  <li>\a unicode is the Unicode value for the key, or 0xffff if none is appropriate.  <li>\a keycode is the Qt keycode for the key (see Qt::Key).       for the list of codes).  <li>\a modifiers is the set of modifier keys (see Qt::Modifier).  <li>\a isPress says whether this is a press or a release.  <li>\a autoRepeat says whether this event was generated by an auto-repeat	    mechanism, or an actual key press.  </ul>*/void QWSKeyboardHandler::processKeyEvent(int unicode, int keycode, int modifiers,			bool isPress, bool autoRepeat){    qwsServer->processKeyEvent( unicode, keycode, modifiers, isPress, autoRepeat );}#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX)#define QT_QWS_AUTOREPEAT_MANUALLY#endifclass QWSPC101KeyboardHandler : public QWSKeyboardHandler{    Q_OBJECTpublic:    QWSPC101KeyboardHandler();    virtual ~QWSPC101KeyboardHandler();    void doKey(uchar scancode);    #ifdef QT_QWS_AUTOREPEAT_MANUALLY    void setAutoRepeat(int d, int p) { if ( d > 0 ) repeatdelay=d; 				       if ( p > 0 ) repeatperiod=p;}    void getAutoRepeat(int *d ,int *p ) { if (d) *d=repeatdelay;     					  if (p) *p=repeatperiod; }#endif    void restoreLeds();    private slots:    void autoRepeat();private:    bool shift;    bool alt;    bool ctrl;#if defined(QT_QWS_SL5XXX)    bool meta;    bool fn;    bool numLock;#endif    bool caps;#if defined(QT_QWS_IPAQ)    uint ipaq_return_pressed:1;#endif    int extended;    int modifiers;    int prevuni;    int prevkey;#ifdef QT_QWS_AUTOREPEAT_MANUALLY    // Could be used by other subclasses    QTimer* repeater;    int repeatdelay, repeatperiod;#endif};void QWSPC101KeyboardHandler::autoRepeat(){#ifdef QT_QWS_AUTOREPEAT_MANUALLY    processKeyEvent( prevuni, prevkey, modifiers, FALSE, TRUE );    processKeyEvent( prevuni, prevkey, modifiers, TRUE, TRUE );    repeater->start(repeatperiod);#endif}void QWSPC101KeyboardHandler::restoreLeds(){    char leds;    ioctl(0, KDGETLED, &leds);    leds = leds & ~LED_CAP;    if ( caps ) leds |= LED_CAP;    ioctl(0, KDSETLED, leds);}class QWSTtyKeyboardHandler : public QWSPC101KeyboardHandler{    Q_OBJECTpublic:    QWSTtyKeyboardHandler(const QString&);    virtual ~QWSTtyKeyboardHandler();private slots:    void readKeyboardData();private:    struct termios origTermData;};class QWSUsbKeyboardHandler : public QWSPC101KeyboardHandler{    Q_OBJECTpublic:    QWSUsbKeyboardHandler(const QString& device);    virtual ~QWSUsbKeyboardHandler();private slots:    void readKeyboardData();private:    int fd;};class QWSVr41xxButtonsHandler : public QWSKeyboardHandler{    Q_OBJECTpublic:    QWSVr41xxButtonsHandler();    virtual ~QWSVr41xxButtonsHandler();    bool isOpen() { return buttonFD > 0; }private slots:    void readKeyboardData();private:    QString terminalName;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本在线不卡一区| 精品视频一区二区三区免费| 国产精品色哟哟网站| 成人高清免费在线播放| 亚洲欧洲一区二区在线播放| 色天天综合久久久久综合片| 亚洲电影一级黄| 欧美一级爆毛片| 国产一本一道久久香蕉| 国产精品国产精品国产专区不蜜| 一本大道久久a久久综合婷婷| 亚洲一区二区在线免费看| 欧美一区二区三区四区五区| 黑人巨大精品欧美一区| 国产精品你懂的在线欣赏| 色婷婷激情综合| 日韩av不卡一区二区| 久久综合精品国产一区二区三区| 成人免费三级在线| 亚洲国产成人av| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产精品国产三级国产aⅴ中文| 日本韩国视频一区二区| 婷婷丁香久久五月婷婷| 久久久噜噜噜久噜久久综合| 不卡的电视剧免费网站有什么| 亚洲欧美色一区| 日韩亚洲欧美成人一区| 成人av网在线| 五月天激情综合网| 久久精品一级爱片| 欧洲一区二区av| 狠狠色综合播放一区二区| 亚洲婷婷国产精品电影人久久| 欧美日韩一区二区三区在线 | 欧美综合久久久| 狠狠色丁香久久婷婷综合丁香| 亚洲视频资源在线| 日韩精品一区二区三区蜜臀| 成人18精品视频| 婷婷开心激情综合| 国产精品美日韩| 91精品国产综合久久香蕉的特点 | 国产欧美1区2区3区| 色8久久精品久久久久久蜜| 麻豆专区一区二区三区四区五区| 国产精品第四页| 欧美一区二区三区在线电影| 成人avav影音| 久久精品99国产精品| 一级中文字幕一区二区| 久久精品欧美一区二区三区麻豆| 在线免费观看日本欧美| 九九视频精品免费| 亚洲永久免费视频| 国产精品午夜春色av| 日韩一卡二卡三卡四卡| 不卡av在线网| 狠狠色综合播放一区二区| 亚洲国产精品久久久久秋霞影院| 国产精品免费av| 精品乱码亚洲一区二区不卡| 欧美亚洲日本国产| 成人午夜av电影| 麻豆视频观看网址久久| 亚洲蜜桃精久久久久久久| 亚洲精品一区二区三区四区高清| 欧美日韩成人在线一区| 97久久精品人人澡人人爽| 国产精品伊人色| 美女视频免费一区| 亚洲v中文字幕| 亚洲精品第1页| 国产精品免费丝袜| 欧美精品一区二区三区蜜桃视频| 欧美日韩在线亚洲一区蜜芽| 99免费精品在线观看| 国产一区二区三区四区五区美女| 日韩在线一二三区| 亚洲最新在线观看| 中文字幕在线免费不卡| 国产午夜精品福利| 精品少妇一区二区三区在线播放| 欧美视频一区二区在线观看| 91麻豆高清视频| 99天天综合性| 成人国产亚洲欧美成人综合网| 国产盗摄一区二区三区| 精品夜夜嗨av一区二区三区| 日本亚洲天堂网| 日韩国产一区二| 天天亚洲美女在线视频| 亚洲成人av一区二区| 亚洲黄色av一区| 亚洲蜜臀av乱码久久精品| 亚洲特黄一级片| 亚洲视频每日更新| 日韩一区日韩二区| 亚洲欧美自拍偷拍色图| 中文字幕一区二区三区乱码在线| 国产天堂亚洲国产碰碰| 久久久美女毛片| 久久精品亚洲乱码伦伦中文| 久久综合色婷婷| 亚洲精品一区二区三区四区高清| 精品电影一区二区| 久久免费视频一区| 国产欧美精品区一区二区三区| 日本一区二区三区四区| 中文字幕乱码久久午夜不卡| 中文字幕欧美国产| 亚洲欧美在线观看| 玉米视频成人免费看| 亚洲一级电影视频| 天堂精品中文字幕在线| 蜜臀久久99精品久久久久久9| 久久精品久久精品| 韩国欧美国产1区| 国产精品亚洲专一区二区三区 | 九九久久精品视频| 国产美女精品人人做人人爽| 国产成人99久久亚洲综合精品| 粉嫩蜜臀av国产精品网站| a在线播放不卡| 日本精品一级二级| 欧美精品第一页| 欧美v日韩v国产v| 久久久久久亚洲综合影院红桃| 国产亚洲精品久| 国产精品福利影院| 亚洲线精品一区二区三区| 视频精品一区二区| 激情小说欧美图片| 国产成人99久久亚洲综合精品| 99久久精品99国产精品| 色天天综合色天天久久| 欧美高清dvd| 久久午夜国产精品| 国产精品理论片| 亚洲成人手机在线| 黄色日韩网站视频| 99久久免费国产| 欧美日韩一区二区三区四区五区 | 久久久久久97三级| 最新热久久免费视频| 亚洲大片在线观看| 国产一区在线看| 色婷婷久久久久swag精品| 91精品久久久久久蜜臀| 国产色综合久久| 亚洲激情六月丁香| 久色婷婷小香蕉久久| 大桥未久av一区二区三区中文| 色婷婷狠狠综合| 欧美www视频| 亚洲欧美偷拍卡通变态| 蜜桃视频一区二区三区| 成人深夜视频在线观看| 欧美日韩一二区| 久久久亚洲精品一区二区三区| 亚洲精品免费电影| 黄色日韩三级电影| 91福利视频网站| 久久奇米777| 亚洲成人一区二区在线观看| 国产一区二区看久久| 色噜噜夜夜夜综合网| 欧美成人三级在线| 一区二区三区中文字幕电影 | 精品国产伦一区二区三区观看体验| 中文一区一区三区高中清不卡| 亚洲成av人片| 丁香婷婷综合激情五月色| 欧美日韩视频专区在线播放| 国产亚洲一区二区三区四区 | 亚洲一区视频在线| 国产成人一区在线| 欧美欧美欧美欧美| 国产精品久久99| 久久国产精品第一页| 99久久精品免费| 久久综合色之久久综合| 亚洲国产色一区| 成人午夜av在线| 欧美大片国产精品| 亚洲乱码日产精品bd| 国产精品系列在线播放| 欧美日本免费一区二区三区| 亚洲欧洲无码一区二区三区| 九九视频精品免费| 欧美另类z0zxhd电影| 亚洲欧洲在线观看av| 国产综合色在线视频区| 欧美久久一二三四区| 国产精品传媒入口麻豆| 久久草av在线| 欧美日韩激情一区二区三区| 国产精品传媒入口麻豆| 国产一区二区看久久| 日韩欧美中文字幕制服|