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

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

?? qwsmouse_qws.cpp

?? qte2.3.2版本,但是里面沒有configure文件.需要重新添加
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************** $Id: qt/src/kernel/qwsmouse_qws.cpp   2.3.2   edited 2001-10-14 $**** Implementation of Qt/Embedded mouse 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 "qsocketnotifier.h"#include "qwsevent_qws.h"#include "qwscommand_qws.h"#include "qwsutils_qws.h"#include "qwsmouse_qws.h"#include <qapplication.h>#include <qpointarray.h>#include <qtimer.h>#include <qfile.h>#include <qtextstream.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <sys/ioctl.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <termios.h>#include <qgfx_qws.h>#if !defined(_OS_QNX6_)#ifdef QT_QWS_PSION#undef QT_QWS_IPAQ#endif#ifdef QT_QWS_CASSIOPEIA#include <linux/tpanel.h>#endif#if defined(QT_QWS_IPAQ)#define QT_QWS_IPAQ_RAWtypedef struct {        unsigned short pressure;        unsigned short x;        unsigned short y;        unsigned short pad;} TS_EVENT;#elif defined(QT_QWS_EBX)#define QT_QWS_EBX_RAW#ifndef QT_QWS_CUSTOMtypedef struct {        unsigned short pressure;        unsigned short x;        unsigned short y;        unsigned short pad;} TS_EVENT;#elsetypedef struct {       long y;       long x;       long pressure;       long long millisecs;} TS_EVENT;#define QT_QWS_TP_SAMPLE_SIZE 5#define QT_QWS_TP_PRESSURE_THRESHOLD 500#define QT_QWS_TP_MOVE_LIMIT 50#endif#endif#ifndef QT_QWS_TP_SAMPLE_SIZE#define QT_QWS_TP_SAMPLE_SIZE 5#endif#ifndef QT_QWS_TP_PRESSURE_THRESHOLD#define QT_QWS_TP_PRESSURE_THRESHOLD 1#endif#ifndef QT_QWS_TP_MOVE_LIMIT#define QT_QWS_TP_MOVE_LIMIT 100#endif//#define QWS_CUSTOMTOUCHPANEL/*!  \class QWSMouseHandler qwsmouse_qws.h  \brief Mouse driver/handler for Qt/Embedded  The mouse driver/handler handles events from system devices and  generates mouse events.  A QWSMouseHandler will usually open some system device in its  constructor, create a QSocketNotifier on that opened device and when  it receives data, it will call mouseChanged() to send the event  to Qt/Embedded for relaying to clients.*//*!  Constructs a mouse handler. This becomes the primary mouse handler.  Note that once created, mouse handlers are controlled by the system  and should not be deleted.*/QWSMouseHandler::QWSMouseHandler(){    QWSServer::setMouseHandler(this);}/*!  Destructs the mouse handler. You should not invoked this directly.*/QWSMouseHandler::~QWSMouseHandler(){}/*!  \fn void mouseChanged(const QPoint& pos, int bstate);  This signal is emited by the mouse handler to signal that the  mouse is now at position \a pos and the mouse buttons are now  in the state \a bstate.*/enum MouseProtocol { Unknown = -1, Auto = 0,		     MouseMan, IntelliMouse, Microsoft,		     QVFBMouse, TPanel, BusMouse,		     FirstAuto = MouseMan,		     LastAuto = Microsoft };static void limitToScreen( QPoint &pt ){    static int w = -1;    static int h;    if ( w < 0 ) {	w = qt_screen->deviceWidth();	h = qt_screen->deviceHeight();    }    pt.setX( QMIN( w-1, QMAX( 0, pt.x() )));    pt.setY( QMIN( h-1, QMAX( 0, pt.y() )));}static QPoint &mousePos = QWSServer::mousePosition;typedef struct {    char *name;    MouseProtocol id;} MouseConfig;static const MouseConfig mouseConfig[] = {    { "Auto",		Auto },    { "MouseMan",	MouseMan },    { "IntelliMouse",	IntelliMouse },    { "Microsoft",      Microsoft },    { "QVFbMouse",      QVFBMouse },    { "TPanel",         TPanel },    { "BusMouse",       BusMouse },    { 0,		Unknown }};/* * Automatic-detection mouse driver */class QAutoMouseSubHandler {protected:    enum { max_buf=32 };    int fd;    uchar buffer[max_buf];    int nbuf;    QPoint motion;    int bstate;    int goodness;    int badness;    virtual int tryData()=0;public:    QAutoMouseSubHandler(int f) : fd(f)    {	nbuf = bstate = goodness = badness = 0;    }    int file() const { return fd; }    void closeIfNot(int& f)    {	if ( fd != f ) {	    f = fd;	    close(fd);	}    }    void worse(int by=1) { badness+=by; }    bool reliable() const { return goodness >= 5 && badness < 50; }    int buttonState() const { return bstate; }    bool motionPending() const { return motion!=QPoint(0,0); }    QPoint takeMotion() { QPoint r=motion; motion=QPoint(0,0); return r; }    void appendData(uchar* data, int length)    {	memcpy(buffer+nbuf, data, length);	nbuf += length;    }    enum UsageResult { Insufficient, Motion, Button };    UsageResult useData()    {	int pbstate = bstate;	int n = tryData();	if ( n > 0 ) {	    if ( n<nbuf )		memcpy( buffer, buffer+n, nbuf-n );	    nbuf -= n;	    return pbstate == bstate ? Motion : Button;	}	return Insufficient;    }};class QAutoMouseSubHandler_intellimouse : public QAutoMouseSubHandler {    int packetsize;public:    QAutoMouseSubHandler_intellimouse(int f) : QAutoMouseSubHandler(f)    {	init();    }    void init()    {	int n;	uchar reply[20];	tcflush(fd,TCIOFLUSH);	static const uchar initseq[] = { 243, 200, 243, 100, 243, 80 };	static const uchar query[] = { 0xf2 };	if (write(fd, initseq, sizeof(initseq))!=sizeof(initseq)) {	    badness = 100;	    return;	}	usleep(10000);	tcflush(fd,TCIOFLUSH);	if (write(fd, query, sizeof(query))!=sizeof(query)) {	    badness = 100;	    return;	}	usleep(10000);	n = read(fd, reply, 20);	if ( n > 0 ) {	    goodness = 10;	    switch ( reply[n-1] ) {	      case 3:	      case 4:		packetsize = 4;		break;	     default:		packetsize = 3;	    }	} else {	    badness = 100;	}    }    int tryData()    {	if ( nbuf >= packetsize ) {	    //int overflow = (buffer[0]>>6 )& 0x03;	    if ( /*overflow ||*/ !(buffer[0] & 8) ) {		badness++;		return 1;	    } else {		motion +=		    QPoint((buffer[0] & 0x10) ? buffer[1]-256 : buffer[1],			   (buffer[0] & 0x20) ? 256-buffer[2] : -buffer[2]);		int nbstate = buffer[0] & 0x7;		if ( motion.x() || motion.y() || bstate != nbstate ) {		    bstate = nbstate;		    goodness++;		} else {		    badness++;		    return 1;		}	    }	    return packetsize;	}	return 0;    }};class QAutoMouseSubHandler_serial : public QAutoMouseSubHandler {public:    QAutoMouseSubHandler_serial(int f) : QAutoMouseSubHandler(f)    {	initSerial();    }protected:    void setflags(int f)    {	termios tty;	tcgetattr(fd, &tty);	tty.c_iflag     = IGNBRK | IGNPAR;	tty.c_oflag     = 0;	tty.c_lflag     = 0;	tty.c_cflag     = f | CREAD | CLOCAL | HUPCL;#if !defined(_OS_FREEBSD_)	tty.c_line      = 0;#endif	tty.c_cc[VTIME] = 0;	tty.c_cc[VMIN]  = 1;	tcsetattr(fd, TCSANOW, &tty);    }private:    void initSerial()    {	int speed[4] = { B9600, B4800, B2400, B1200 };        for (int n = 0; n < 4; n++) {	    setflags(CSTOPB | speed[n]);	    write(fd, "*q", 2);	    usleep(10000);        }    }};class QAutoMouseSubHandler_mousesystems : public QAutoMouseSubHandler_serial {public:    // ##### This driver has not been tested    QAutoMouseSubHandler_mousesystems(int f) : QAutoMouseSubHandler_serial(f)    {	init();    }    void init()    {	setflags(B1200|CS8|CSTOPB);	// 60Hz	if (write(fd, "R", 1)!=1) {	    badness = 100;	    return;	}	tcflush(fd,TCIOFLUSH);    }    int tryData()    {	if ( nbuf >= 5 ) {	    if ( (buffer[0] & 0xf8) != 0x80 ) {		badness++;		return 1;	    }	    motion +=		QPoint((signed char)buffer[1] + (signed char)buffer[3],		       -(signed char)buffer[2] + (signed char)buffer[4]);	    int t = ~buffer[0];	    int nbstate = ((t&3) << 1) | ((t&4) >> 2);	    if ( motion.x() || motion.y() || bstate != nbstate ) {		bstate = nbstate;		goodness++;	    } else {		badness++;		return 1;	    }	    return 5;	}	return 0;    }};class QAutoMouseSubHandler_ms : public QAutoMouseSubHandler_serial {    int mman;public:    QAutoMouseSubHandler_ms(int f) : QAutoMouseSubHandler_serial(f)    {	mman=0;	init();    }    void init()    {	setflags(B1200|CS7);	// 60Hz	if (write(fd, "R", 1)!=1) {	    badness = 100;	    return;	}	tcflush(fd,TCIOFLUSH);    }    int tryData()    {	if ( !(buffer[0] & 0x40) ) {	    if ( buffer[0] == 0x20 && (bstate & Qt::MidButton) ) {		mman=1; // mouseman extension	    }	    return 1;	}	int extra = mman&&(bstate & Qt::MidButton);	if ( nbuf >= 3+extra ) {	    int nbstate = 0;	    if ( buffer[0] == 0x40 && !bstate && !buffer[1] && !buffer[2] ) {		nbstate = Qt::MidButton;	    } else {		nbstate = ((buffer[0] & 0x20) >> 5)			| ((buffer[0] & 0x10) >> 3);		if ( extra && buffer[3] == 0x20 )		    nbstate = Qt::MidButton;	    }	    if ( buffer[1] & 0x40 ) {		badness++;		return 1;	    } else {		motion +=		    QPoint((signed char)((buffer[0]&0x3)<<6)			    |(signed char)(buffer[1]&0x3f),			   (signed char)((buffer[0]&0xc)<<4)			    |(signed char)(buffer[2]&0x3f));		if ( motion.x() || motion.y() || bstate != nbstate ) {		    bstate = nbstate;		    goodness++;		} else {		    badness++;		    return 1;		}		return 3+extra;	    }	}	return 0;    }};/*QAutoMouseHandler::UsageResult QAutoMouseHandler::useDev(Dev& d){    if ( d.nbuf >= mouseData[d.protocol].bytesPerPacket ) {	uchar *mb = d.buf;	int bstate = 0;	int dx = 0;	int dy = 0;	switch (mouseProtocol) {	    case MouseMan:	    case IntelliMouse:	    {		bstate = mb[0] & 0x7; // assuming Qt::*Button order		int overflow = (mb[0]>>6 )& 0x03;		if (mouseProtocol == MouseMan && overflow) {		    //### wheel events signalled with overflow bit, ignore for now		}		else {		    bool xs = mb[0] & 0x10;		    bool ys = mb[0] & 0x20;		    dx = xs ? mb[1]-256 : mb[1];		    dy = ys ? mb[2]-256 : mb[2];		}		break;	    }	    case Microsoft:		if ( ((mb[0] & 0x20) >> 3) ) {		    bstate |= Qt::LeftButton;		}		if ( ((mb[0] & 0x10) >> 4) ) {		    bstate |= Qt::RightButton;		}		dx=(signed char)(((mb[0] & 0x03) << 6) | (mb[1] & 0x3f));		dy=-(signed char)(((mb[0] & 0x0c) << 4) | (mb[2] & 0x3f));		break;	}    }    }*/class QAutoMouseHandler : public QWSMouseHandler {    Q_OBJECTpublic:    QAutoMouseHandler();    ~QAutoMouseHandler();private:    enum { max_dev=32 };    QAutoMouseSubHandler *sub[max_dev];    QList<QSocketNotifier> notifiers;    int nsub;    int retries;private slots:    void readMouseData(int);private:    void openDevices();    void closeDevices();    void notify(int fd);    bool sendEvent(QAutoMouseSubHandler& h)    {	if ( h.reliable() ) {	    mousePos += h.takeMotion();	    limitToScreen( mousePos );/*qDebug("%d,%d %c%c%c",mousePos.x(),mousePos.y(),(h.buttonState()&Qt::LeftButton)?'L':'.',(h.buttonState()&Qt::MidButton)?'M':'.',(h.buttonState()&Qt::RightButton)?'R':'.');*/	    emit mouseChanged(mousePos,h.buttonState());	    return TRUE;	} else {	    h.takeMotion();	    if ( h.buttonState() & (Qt::RightButton|Qt::MidButton) ) {		// Strange for the user to press right or middle without		// a moving mouse!		h.worse();	    }	    return FALSE;	}    }};QAutoMouseHandler::QAutoMouseHandler(){    notifiers.setAutoDelete( TRUE );    retries = 0;    openDevices();}QAutoMouseHandler::~QAutoMouseHandler(){    closeDevices();}void QAutoMouseHandler::openDevices(){    nsub=0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃精品视频在线| 91精品国产一区二区人妖| 精品成人佐山爱一区二区| 色综合久久中文综合久久牛| 国产中文字幕精品| 国产精品18久久久久久vr | 国产成人综合自拍| 成人午夜看片网址| 欧美喷潮久久久xxxxx| 精品国产成人在线影院| 亚洲国产精品激情在线观看| **性色生活片久久毛片| 日本欧美一区二区| 99久久99久久精品免费看蜜桃| 在线观看成人免费视频| 欧美一区在线视频| 亚洲电影视频在线| 成人av动漫网站| 在线不卡欧美精品一区二区三区| 欧美本精品男人aⅴ天堂| 一区二区三区免费在线观看| 免费精品视频在线| 欧美日韩高清在线播放| 亚洲欧美综合另类在线卡通| 久久不见久久见免费视频1| 91视频观看视频| 中文字幕佐山爱一区二区免费| 国产一区视频导航| 日韩三级视频中文字幕| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美国产视频在线| 成人h动漫精品| 自拍视频在线观看一区二区| 成人动漫在线一区| 亚洲视频 欧洲视频| 91国产精品成人| 午夜影院久久久| 精品久久久久一区二区国产| 青青草97国产精品免费观看无弹窗版| 在线看日韩精品电影| 丝袜美腿一区二区三区| 国产日韩欧美综合一区| 91麻豆123| 日韩电影在线一区| 国产午夜精品在线观看| 在线观看网站黄不卡| 久久精品久久综合| 国产精品电影一区二区| 日韩一级片在线播放| 国产激情视频一区二区在线观看| 亚洲欧洲日韩女同| 日韩精品一区二区三区视频| 99久久精品情趣| 青青草97国产精品免费观看 | 日韩精品一区二区三区三区免费| 国产老妇另类xxxxx| 亚洲国产精品麻豆| 亚洲免费观看高清完整版在线观看熊 | 久久久久久免费| 91精品啪在线观看国产60岁| bt欧美亚洲午夜电影天堂| 免费成人在线影院| 午夜精品久久久| 亚洲精品综合在线| 亚洲视频在线一区| 中文字幕欧美一| 欧美一区二区网站| 日韩午夜中文字幕| 日韩欧美一级片| 2020国产精品久久精品美国| 欧美日韩1234| 欧美一区二区三区爱爱| 日韩精品一区二区三区视频播放 | 蜜臀av一区二区在线观看| 视频一区二区中文字幕| 日韩av在线播放中文字幕| 日韩精品国产精品| 国产综合久久久久影院| 高清国产一区二区三区| 成人免费看的视频| 欧美美女视频在线观看| 日韩视频一区二区三区在线播放 | 91免费看`日韩一区二区| 欧美影视一区二区三区| 26uuu精品一区二区在线观看| 久久久久综合网| 午夜久久福利影院| 成人一级片在线观看| 欧美一区二区三区系列电影| 久久久蜜桃精品| 欧美日韩在线综合| 欧美成人免费网站| 欧美性生活一区| 精品国产91久久久久久久妲己| 精品毛片乱码1区2区3区| 国产精品盗摄一区二区三区| 午夜精品在线视频一区| 国产九九视频一区二区三区| 色综合久久中文字幕| 国产亚洲精品aa| 亚洲视频中文字幕| 不卡av在线网| 日韩亚洲电影在线| 石原莉奈一区二区三区在线观看| 国产一区二区主播在线| 欧美精品一区二区三区蜜桃视频| 亚洲精品第一国产综合野| 成人av资源站| 亚洲欧美日韩国产另类专区 | 欧美高清www午色夜在线视频| 2023国产精华国产精品| 亚洲成在人线免费| 不卡一区中文字幕| 国产午夜精品福利| 久久99国产精品久久99果冻传媒| 欧美肥妇毛茸茸| 五月天激情综合| 日韩欧美国产一二三区| 极品尤物av久久免费看| 久久久久久一级片| voyeur盗摄精品| 亚洲一区二区三区在线| 日韩欧美一区在线| bt7086福利一区国产| 夜夜精品视频一区二区 | 久久国产生活片100| 国产欧美日韩另类一区| 91激情五月电影| 美女网站色91| 亚洲天堂福利av| 久久久久久亚洲综合| 欧美吻胸吃奶大尺度电影| 国内精品免费在线观看| 亚洲综合图片区| 国产精品欧美一区喷水| 日韩午夜激情电影| 欧美日精品一区视频| 不卡的av在线| 国产99久久久国产精品潘金网站| 亚洲国产裸拍裸体视频在线观看乱了 | 国产91精品免费| 久久精品国产77777蜜臀| 一区二区国产视频| 国产精品色一区二区三区| 日韩你懂的在线播放| 91猫先生在线| 在线一区二区三区四区五区 | 精品国产一区二区三区不卡| 欧美日韩国产在线观看| 欧美日韩一区三区| 欧美日韩国产精品成人| 成人福利在线看| 91国产免费看| 欧美性生活大片视频| 国产999精品久久久久久绿帽| 麻豆精品视频在线观看| 国产精品一区免费在线观看| 国产河南妇女毛片精品久久久| 国产一区二区三区四区五区美女 | 精品国产乱码久久久久久闺蜜 | 东方aⅴ免费观看久久av| 99久久精品国产导航| 欧美日韩性生活| 26uuuu精品一区二区| 国产精品免费丝袜| 亚洲一二三区在线观看| 久久国产精品区| 波多野结衣91| 精品成人免费观看| 亚洲男人的天堂一区二区| 美女网站色91| 欧美片网站yy| 专区另类欧美日韩| 国产成人午夜片在线观看高清观看| 色综合色狠狠综合色| 精品国一区二区三区| 一区二区三区在线视频观看58| 蜜桃av噜噜一区二区三区小说| 国产精品亚洲一区二区三区妖精 | 欧美激情在线观看视频免费| 日韩黄色小视频| 欧美无砖专区一中文字| 精品精品欲导航| 日本亚洲天堂网| 日韩一区国产二区欧美三区| 亚洲综合激情另类小说区| 日本韩国精品在线| 亚洲精品国产无天堂网2021| 欧美视频一区二区三区| 亚洲电影视频在线| 欧美成人三级电影在线| 美女任你摸久久| 中文字幕国产精品一区二区| 成人手机电影网| 五月天久久比比资源色| 国产精品资源在线| 国产美女久久久久| 欧美唯美清纯偷拍| 亚洲人成亚洲人成在线观看图片 | av一区二区三区黑人|