亚洲欧美第一页_禁久久精品乱码_粉嫩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精品久久久久久久91蜜桃| 99视频超级精品| 久久精品久久久精品美女| 成人免费小视频| 国产亚洲欧洲一区高清在线观看| 欧美日韩久久一区| 91色porny| 不卡一区二区在线| 国产在线精品视频| 久久疯狂做爰流白浆xx| 亚洲成国产人片在线观看| 亚洲精选视频免费看| 中文字幕第一区二区| 欧美成人精品1314www| 欧美网站一区二区| 在线国产亚洲欧美| 色综合久久88色综合天天免费| 国产精品99久| 国产精品18久久久久久久久| 激情文学综合网| 六月丁香综合在线视频| 日本成人在线视频网站| 日韩va欧美va亚洲va久久| 午夜成人免费视频| 亚洲午夜久久久久久久久久久| 亚洲欧美日韩国产另类专区| 日日骚欧美日韩| 日韩欧美国产一区二区三区| 欧美丰满少妇xxxxx高潮对白| 欧美亚洲动漫另类| 欧美亚洲一区二区在线观看| eeuss鲁片一区二区三区在线观看| 国产东北露脸精品视频| 国产盗摄一区二区| 国产激情一区二区三区四区| 国产精品一区二区三区99| 精品一区二区日韩| 国产自产2019最新不卡| 国产乱码精品一区二区三区五月婷| 美女在线视频一区| 国内不卡的二区三区中文字幕| 精品一区二区在线播放| 国产一区二区三区免费观看| 粉嫩一区二区三区性色av| 成人国产免费视频| 在线亚洲欧美专区二区| 欧美性做爰猛烈叫床潮| 555www色欧美视频| 久久这里都是精品| 欧美国产激情二区三区 | 国产午夜精品久久| 欧美国产综合一区二区| 亚洲欧美区自拍先锋| 亚洲综合自拍偷拍| 奇米色一区二区| 国产精品综合二区| 色婷婷亚洲综合| 欧美疯狂性受xxxxx喷水图片| 精品国产乱码久久久久久图片 | 国产精品久久久久影院亚瑟| 国产精品视频观看| 亚洲曰韩产成在线| 蜜臀av性久久久久蜜臀aⅴ| 成人免费视频app| 日本韩国欧美三级| 日韩欧美国产一区二区在线播放| 国产精品午夜在线观看| 亚洲一区二区三区在线看| 久久精品国产一区二区| 99视频一区二区| 91精品国产乱| 亚洲国产成人午夜在线一区| 午夜精品爽啪视频| 国产精品资源在线| 欧美性生活久久| 久久久久久电影| 亚洲成人三级小说| 国产精品一级二级三级| 欧美日本国产视频| 国产拍欧美日韩视频二区| 亚洲线精品一区二区三区| 国产成人午夜99999| 欧美色爱综合网| 欧美激情综合五月色丁香| 午夜精品国产更新| 成人不卡免费av| 欧美刺激脚交jootjob| 亚洲精品国产第一综合99久久 | 欧美色视频在线| 久久久久高清精品| 日韩成人av影视| 91黄色在线观看| 中文字幕av一区二区三区免费看| 视频在线观看91| 91久久国产综合久久| 国产女人aaa级久久久级| 蜜臀国产一区二区三区在线播放| 色婷婷狠狠综合| 久久这里只有精品首页| 日韩国产欧美三级| 欧美三级中文字幕| 亚洲欧洲精品一区二区三区| 狠狠色丁香久久婷婷综合丁香| 欧美日韩一区不卡| 亚洲欧美日韩一区二区三区在线观看| 韩国女主播成人在线观看| 7777精品久久久大香线蕉 | 日韩av在线播放中文字幕| 91视频在线观看免费| 国产精品三级视频| 国产一区视频网站| 欧美精品一区二区三区在线播放 | 日本一区二区视频在线观看| 蜜桃一区二区三区在线观看| 欧美日韩高清一区二区不卡| 亚洲影视在线播放| 欧美无砖砖区免费| 亚洲夂夂婷婷色拍ww47 | 欧美一区二区免费观在线| 一区二区三区国产精华| 色呦呦国产精品| 亚洲九九爱视频| 日本丰满少妇一区二区三区| 亚洲欧美日韩人成在线播放| 成人18视频日本| 亚洲少妇最新在线视频| 91免费国产视频网站| 一区二区在线观看视频| 91福利在线播放| 亚洲图片欧美色图| 欧美日韩成人综合在线一区二区| 香蕉av福利精品导航 | 1区2区3区精品视频| av成人动漫在线观看| ●精品国产综合乱码久久久久| 成人福利在线看| 亚洲欧美日韩国产另类专区| 91免费看`日韩一区二区| 亚洲自拍偷拍图区| 欧美精品第1页| 久久99国内精品| www久久久久| 成人精品免费视频| 一区二区不卡在线视频 午夜欧美不卡在| 91麻豆精东视频| 亚洲午夜激情网页| 欧美一级电影网站| 国产成人av一区二区| 综合在线观看色| 67194成人在线观看| 精品一区二区三区免费视频| 亚洲国产成人私人影院tom| 91麻豆成人久久精品二区三区| 午夜视频在线观看一区二区三区| 欧美成人vr18sexvr| 成人一区二区视频| 亚洲成av人片| 久久久久亚洲综合| 日本韩国一区二区三区视频| 日韩中文字幕区一区有砖一区| 欧美tk—视频vk| 不卡视频一二三| 视频在线观看国产精品| 国产午夜精品久久久久久久| 在线视频国内一区二区| 麻豆91免费观看| 国产精品久久久久久久久免费樱桃 | 另类人妖一区二区av| 日本一二三四高清不卡| 欧美中文字幕一区二区三区 | 在线免费不卡视频| 美女视频免费一区| 亚洲视频小说图片| 日韩免费性生活视频播放| 99这里只有精品| 日本不卡一二三| 成人欧美一区二区三区白人| 欧美一区二区三区小说| 不卡的看片网站| 麻豆91在线播放| 一区二区三区在线视频免费 | 久久综合精品国产一区二区三区| 91视频一区二区| 激情六月婷婷综合| 亚洲狠狠爱一区二区三区| 欧美—级在线免费片| 日韩欧美一级精品久久| 色综合天天综合网国产成人综合天 | 国产91丝袜在线播放| 日韩成人免费看| 亚洲欧美视频一区| 久久亚洲捆绑美女| 欧美日韩一区在线观看| 成人av在线资源| 久久精品国产一区二区三| 亚洲妇女屁股眼交7|