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

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

?? qkeyboard_qws.cpp

?? qt里加入自己的按鍵驅動
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************** $Id: qt/src/kernel/qkeyboard_qws.cpp   2.3.7   edited 2003-05-30 $**** 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.************************************************************************/#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>#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#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;    int buttonFD;    int kbdIdx;    int kbdBufferLen;    unsigned char *kbdBuffer;    QSocketNotifier *notifier;};class QWSVFbKeyboardHandler : public QWSKeyboardHandler{    Q_OBJECTpublic:    QWSVFbKeyboardHandler();    virtual ~QWSVFbKeyboardHandler();    bool isOpen() { return fd > 0; }private slots:    void readKeyboardData();private:    QString terminalName;    int fd;    int kbdIdx;    int kbdBufferLen;    unsigned char *kbdBuffer;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产片一区二区三区| 717成人午夜免费福利电影| 欧美激情一区二区三区在线| 国产一区二区看久久| 国产婷婷色一区二区三区 | 丝袜国产日韩另类美女| 欧美群妇大交群的观看方式| 日本中文在线一区| 欧美mv日韩mv亚洲| 成人在线一区二区三区| 亚洲日本在线观看| 欧美精品视频www在线观看 | 成人免费视频视频| 亚洲一区在线看| 精品国产一区二区三区久久久蜜月 | 亚洲欧洲精品一区二区精品久久久| av在线综合网| 日韩二区在线观看| 国产喷白浆一区二区三区| 99视频有精品| 国产精品一区二区无线| 色天使色偷偷av一区二区| 亚洲一区二区偷拍精品| 精品国产一区二区亚洲人成毛片 | 国产一区二区在线影院| 综合中文字幕亚洲| 日韩亚洲欧美一区二区三区| 国内成人免费视频| 亚洲一区二区高清| 国产亚洲精久久久久久| 欧美日韩三级一区| 成人精品免费视频| 免费观看久久久4p| 亚洲丝袜另类动漫二区| 欧美成人精品二区三区99精品| 成人网页在线观看| 免费视频一区二区| 亚洲激情校园春色| 久久免费国产精品 | 欧美精品自拍偷拍动漫精品| 国产成人精品免费一区二区| 天堂一区二区在线| 中文字幕亚洲精品在线观看| 26uuu亚洲| 91精品国产91综合久久蜜臀| 日本高清无吗v一区| 国产成a人亚洲| 美女一区二区三区| 亚洲一二三四区不卡| 亚洲天堂免费看| 国产日韩欧美a| 精品剧情在线观看| 在线播放一区二区三区| 91成人看片片| 91免费版pro下载短视频| 国产不卡免费视频| 国产精品1区2区| 精品一区二区久久久| 日韩精品电影在线| 亚洲国产综合在线| 亚洲宅男天堂在线观看无病毒 | 亚洲激情av在线| 国产亚洲一区字幕| 精品国精品国产| 精品免费99久久| 欧美va亚洲va在线观看蝴蝶网| 91精品国产色综合久久不卡电影| 欧美性猛交xxxx黑人交| 在线影院国内精品| 欧美伊人久久久久久午夜久久久久| 91在线小视频| 一本久道久久综合中文字幕| 99久久综合精品| 91在线丨porny丨国产| 成人久久18免费网站麻豆| 国产成人av影院| 国产成人一区在线| 国产成人精品免费视频网站| 国产精品77777竹菊影视小说| 国产精品自产自拍| 国产成人8x视频一区二区| 成人美女视频在线观看18| av日韩在线网站| 99精品视频一区| 色偷偷88欧美精品久久久| 在线亚洲免费视频| 91精品欧美福利在线观看| 日韩一级片在线播放| 欧美成人激情免费网| 久久久综合九色合综国产精品| 国产欧美日韩视频一区二区| 成人免费一区二区三区视频| 亚洲黄网站在线观看| 日韩激情在线观看| 国产主播一区二区| 成人一区二区视频| 欧美在线短视频| 91精品视频网| 国产欧美日韩麻豆91| 樱花草国产18久久久久| 日日摸夜夜添夜夜添精品视频 | 欧美精品18+| 久久综合久久综合九色| 国产精品国产三级国产aⅴ中文| 亚洲免费视频中文字幕| 人人爽香蕉精品| 成人一区二区三区| 日本久久电影网| 日韩欧美第一区| 综合久久久久久| 麻豆成人久久精品二区三区红| 国产精品综合一区二区| 欧美性xxxxxxxx| 国产调教视频一区| 亚洲电影第三页| 国产白丝网站精品污在线入口 | 91精品国产品国语在线不卡| 久久久久久久久97黄色工厂| 一区二区三区色| 国产一区二区三区免费| 色呦呦网站一区| 337p日本欧洲亚洲大胆色噜噜| 亚洲男人的天堂av| 国产一区二区不卡| 欧美日韩高清一区二区| 中文字幕av免费专区久久| 日韩精品一区第一页| 91天堂素人约啪| 久久综合资源网| 日本不卡123| 日本电影欧美片| 欧美韩国日本综合| 久久精品国产澳门| 欧美色精品天天在线观看视频| 中文字幕免费在线观看视频一区| 美女诱惑一区二区| 欧美体内she精高潮| 综合久久综合久久| 国产成人精品三级麻豆| 精品乱人伦小说| 美女性感视频久久| 欧美日韩三级视频| 亚洲一区二区在线免费观看视频| 99久久综合精品| 国产精品毛片久久久久久| 国产一区二区三区| 日韩午夜激情电影| 天堂va蜜桃一区二区三区漫画版| 94色蜜桃网一区二区三区| 亚洲国产高清在线| 成人性生交大片免费看中文网站| 精品久久久影院| 美女视频网站黄色亚洲| 91精品中文字幕一区二区三区| 亚洲国产一区二区在线播放| 91蜜桃网址入口| 亚洲视频一区在线观看| 91丨porny丨在线| 亚洲欧美乱综合| 99re66热这里只有精品3直播 | 亚洲图片另类小说| 91在线porny国产在线看| 自拍偷拍国产精品| 91免费国产视频网站| 一区二区三区四区亚洲| 欧洲亚洲国产日韩| 亚洲国产一区二区三区青草影视| 91美女片黄在线观看91美女| ...xxx性欧美| 在线看国产一区| 亚洲国产sm捆绑调教视频| 在线观看91av| 欧美a级一区二区| 久久综合国产精品| 国产成人亚洲综合a∨婷婷图片| 国产色91在线| 不卡在线视频中文字幕| 一区二区三区精品在线观看| 欧美综合亚洲图片综合区| 亚洲国产精品综合小说图片区| 欧美精品日韩精品| 麻豆精品一区二区| 欧美激情一区二区三区蜜桃视频| 99麻豆久久久国产精品免费 | 国产精品视频看| 91视频一区二区三区| 亚洲bdsm女犯bdsm网站| 69久久99精品久久久久婷婷 | 成人黄色在线视频| 夜夜嗨av一区二区三区网页| 在线成人高清不卡| 国产成人综合在线| 亚洲综合色丁香婷婷六月图片| 欧美一级视频精品观看| 福利视频网站一区二区三区| 亚洲激情校园春色| 欧美精品一区二区三区四区| 99久久亚洲一区二区三区青草| 亚洲成人福利片| 国产人成一区二区三区影院|