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

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

?? qwsmouse_qws.cpp

?? qte2.3.2版本,但是里面沒有configure文件.需要重新添加
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
    int fd;    fd = open( "/dev/psaux", O_RDWR | O_NDELAY );    if ( fd >= 0 ) {	sub[nsub++] = new QAutoMouseSubHandler_intellimouse(fd);	notify(fd);    }#if !defined(QT_QWS_IPAQ) && !defined(QT_QWS_EBX)    char fn[] = "/dev/ttyS?";    for (int ch='0'; ch<='3'; ch++) {	fn[9] = ch;	fd = open( fn, O_RDWR | O_NDELAY );	if ( fd >= 0 ) {	    //sub[nsub++] = new QAutoMouseSubHandler_intellimouse(fd);	    sub[nsub++] = new QAutoMouseSubHandler_mousesystems(fd);	    sub[nsub++] = new QAutoMouseSubHandler_ms(fd);	    notify(fd);	}    }#endif    // ...}void QAutoMouseHandler::closeDevices(){    int pfd=-1;    for (int i=0; i<nsub; i++) {	sub[i]->closeIfNot(pfd);	delete sub[i];    }    notifiers.clear();}void QAutoMouseHandler::notify(int fd){    QSocketNotifier *mouseNotifier	= new QSocketNotifier( fd, QSocketNotifier::Read, this );    connect(mouseNotifier, SIGNAL(activated(int)),this, SLOT(readMouseData(int)));    notifiers.append( mouseNotifier );}void QAutoMouseHandler::readMouseData(int fd){    for (;;) {	uchar buf[8];	int n = read(fd, buf, 8);	if ( n<=0 )	    break;	for (int i=0; i<nsub; i++) {	    QAutoMouseSubHandler& h = *sub[i];	    if ( h.file() == fd ) {		h.appendData(buf,n);		for (;;) {		    switch ( h.useData() ) {		      case QAutoMouseSubHandler::Button:			sendEvent(h);		      case QAutoMouseSubHandler::Insufficient:			goto breakbreak;		      case QAutoMouseSubHandler::Motion:			break;		    }		}		breakbreak:		    ;	    }	}    }    bool any_reliable=FALSE;    for (int i=0; i<nsub; i++) {	QAutoMouseSubHandler& h = *sub[i];	if ( h.motionPending() )	    sendEvent(h);	any_reliable = any_reliable || h.reliable();    }    if ( any_reliable ) {	// ... get rid of all unreliable ones?  All bad ones?    } else if ( retries < 2 ) {	// Try again - maybe the mouse was being moved when we tried to init.	closeDevices();	openDevices();	retries++;    }}/* * Standard mouse driver */typedef struct {    int bytesPerPacket;} MouseData;static const MouseData mouseData[] = {    { 3 },  // dummy for auto protocal,  correction made by add by YYD    { 3 },  // MouseMan    { 4 },  // intelliMouse    { 3 },  // Microsoft    { 0 },  // QVFBMouse,    { 0 },  // TPanel,    { 3 },  // BusMouse,};class QWSMouseHandlerPrivate : public QWSMouseHandler {    Q_OBJECTpublic:    QWSMouseHandlerPrivate( MouseProtocol protocol, QString mouseDev );    ~QWSMouseHandlerPrivate();private:    static const int mouseBufSize = 128;    int mouseFD;    int mouseIdx;    uchar mouseBuf[mouseBufSize];    MouseProtocol mouseProtocol;    void handleMouseData();private slots:    void readMouseData();private:    int obstate;};void QWSMouseHandlerPrivate::readMouseData(){    int n;    if ( BusMouse == mouseProtocol ) {	// a workaround of linux busmouse driver interface.	// It'll only read 3 bytes a time and return all other buffer zeroed, thus cause protocol errors	for (;;) {	    if ( mouseBufSize - mouseIdx < 3 )		break;	    n = read( mouseFD, mouseBuf+mouseIdx, 3 );	    if ( n != 3 )		break;	    mouseIdx += 3;	}    } else {	do {	    n = read(mouseFD, mouseBuf+mouseIdx, mouseBufSize-mouseIdx );	    if ( n > 0 )		mouseIdx += n;	} while ( n > 0 );    }    handleMouseData();}/**/void QWSMouseHandlerPrivate::handleMouseData(){    static const int accel_limit = 5;    static const int accel = 2;    int idx = 0;    int bstate = 0;    int dx = 0, dy = 0;    bool sendEvent = false;    int tdx = 0, tdy = 0;    while ( mouseIdx-idx >= mouseData[mouseProtocol].bytesPerPacket ) {	//qDebug( "Got mouse data" );	uchar *mb = mouseBuf+idx;	bstate = 0;	dx = 0;	dy = 0;	sendEvent = false;	switch (mouseProtocol) {	    case MouseMan:	    case IntelliMouse:	    {		if (mb[0] & 0x01)		    bstate |= Qt::LeftButton;		if (mb[0] & 0x02)		    bstate |= Qt::RightButton;		if (mb[0] & 0x04)		    bstate |= Qt::MidButton;		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];		    sendEvent = true;		}#if 0 //debug		if (mouseProtocol == MouseMan)		    printf("(%2d) %02x %02x %02x ", idx, mb[0], mb[1], mb[2]);		else		    printf("(%2d) %02x %02x %02x %02x ",idx,mb[0],mb[1],mb[2],mb[3]);		const char *b1 = (mb[0] & 0x01) ? "b1":"  ";//left		const char *b2 = (mb[0] & 0x02) ? "b2":"  ";//right		const char *b3 = (mb[0] & 0x04) ? "b3":"  ";//mid		if ( overflow )		    printf( "Overflow%d %s %s %s  (%4d,%4d)\n", overflow,			    b1, b2, b3, mousePos.x(), mousePos.y() );		else		    printf( "%s %s %s (%+3d,%+3d)  (%4d,%4d)\n",			    b1, b2, b3, dx, dy, mousePos.x(), mousePos.y() );#endif		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));		sendEvent=true;		break;	    case BusMouse:	        if ( ((mb[0] & 0x4))  ) {		    bstate |= Qt::LeftButton;		}		if ( ((mb[0] & 0x01)) ) {		    bstate |= Qt::RightButton;		}		dx=(signed char)mb[1];		dy=(signed char)mb[2];		sendEvent=true;		break;	    default:		qWarning( "Unknown mouse protocol in QWSMouseHandlerPrivate" );		break;	}	if (sendEvent) {	    if ( QABS(dx) > accel_limit || QABS(dy) > accel_limit ) {		dx *= accel;		dy *= accel;	    }	    tdx += dx;	    tdy += dy;	    if ( bstate != obstate ) {		mousePos += QPoint(tdx,-tdy);		limitToScreen( mousePos );		emit mouseChanged(mousePos,bstate);		sendEvent = FALSE;		tdx = 0;		tdy = 0;		obstate = bstate;	    }	}	idx += mouseData[mouseProtocol].bytesPerPacket;    }    if ( sendEvent ) {	mousePos += QPoint(tdx,-tdy);	limitToScreen( mousePos );	emit mouseChanged(mousePos,bstate);    }    int surplus = mouseIdx - idx;    for ( int i = 0; i < surplus; i++ )	mouseBuf[i] = mouseBuf[idx+i];    mouseIdx = surplus;}QWSMouseHandlerPrivate::QWSMouseHandlerPrivate( MouseProtocol protocol,					  QString mouseDev ){    mouseProtocol = protocol;    if ( mouseDev.isEmpty() )	mouseDev = "/dev/mouse";    obstate = -1;    mouseFD = -1;    mouseFD = open( mouseDev.local8Bit(), O_RDWR | O_NDELAY);    if ( mouseFD < 0 ) {	mouseFD = open( mouseDev.local8Bit(), O_RDONLY | O_NDELAY);	if ( mouseFD < 0 )	    qDebug( "Cannot open %s (%s)", mouseDev.ascii(),		    strerror(errno));    } else {	// Clear pending input	tcflush(mouseFD,TCIFLUSH);	bool ps2 = false;	switch (mouseProtocol) {	    case MouseMan:		ps2 = true;		write(mouseFD,"",1);		usleep(50000);		write(mouseFD,"@EeI!",5);		break;	    case IntelliMouse: {//		    ps2 = true;		    const unsigned char init1[] = { 243, 200, 243, 100, 243, 80 };		    const unsigned char init2[] = { 246, 230, 244, 243, 100, 232, 3 };		    write(mouseFD,init1,sizeof(init1));		    usleep(50000);		    write(mouseFD,init2,sizeof(init2));		}		break;	    case Microsoft:		struct termios tty;		tcgetattr(mouseFD, &tty);		tty.c_iflag = IGNBRK | IGNPAR;		tty.c_oflag = 0;		tty.c_lflag = 0;#if !defined(_OS_FREEBSD_)		tty.c_line = 0;#endif // _OS_FREEBSD_		tty.c_cc[VTIME] = 0;		tty.c_cc[VMIN] = 1;		tty.c_cflag = B1200 | CS7 | CREAD | CLOCAL | HUPCL;		tcsetattr(mouseFD, TCSAFLUSH, &tty); /* set parameters */		break;	    case BusMouse:		usleep(50000);		break;	    default:		qDebug("Unknown mouse protocol");		exit(1);	}	if (ps2) {	    char buf[] = { 246, 244 };	    write(mouseFD,buf,1);	    write(mouseFD,buf+1,1);	}	usleep(50000);	tcflush(mouseFD,TCIFLUSH);	    // ### doesn't seem to work.	usleep(50000);	tcflush(mouseFD,TCIFLUSH);	    // ### doesn't seem to work.	char buf[100];				// busmouse driver will not read if bufsize < 3,  YYD	while (read(mouseFD, buf, 100) > 0) { }  // eat unwanted replies	mouseIdx = 0;	QSocketNotifier *mouseNotifier;	mouseNotifier = new QSocketNotifier( mouseFD, QSocketNotifier::Read, this );	connect(mouseNotifier, SIGNAL(activated(int)),this, SLOT(readMouseData()));    }}QWSMouseHandlerPrivate::~QWSMouseHandlerPrivate(){    if (mouseFD >= 0) {	tcflush(mouseFD,TCIFLUSH);	    // yyd.	close(mouseFD);    }}/* * */QCalibratedMouseHandler::QCalibratedMouseHandler()    : samples(5), currSample(0), numSamples(0){    clearCalibration();    readCalibration();}void QCalibratedMouseHandler::getCalibration( QWSPointerCalibrationData *cd ){    QPoint screen_tl = cd->screenPoints[ QWSPointerCalibrationData::TopLeft ];    QPoint screen_br = cd->screenPoints[ QWSPointerCalibrationData::BottomRight ];    int tlx = ( s * screen_tl.x() - c ) / a;    int tly = ( s * screen_tl.y() - f ) / e;    cd->devPoints[ QWSPointerCalibrationData::TopLeft ] = QPoint(tlx,tly);    cd->devPoints[ QWSPointerCalibrationData::BottomRight ] =	QPoint( tlx - (s * (screen_tl.x() - screen_br.x() ) / a),		tly - (s * (screen_tl.y() - screen_br.y() ) / e) );}void QCalibratedMouseHandler::clearCalibration(){    a = 1;    b = 0;    c = 0;    d = 0;    e = 1;    f = 0;    s = 1;}void QCalibratedMouseHandler::writeCalibration(){    QString calFile = "/etc/pointercal";#ifndef QT_NO_TEXTSTREAM    QFile file( calFile );    if ( file.open( IO_WriteOnly ) ) {	QTextStream t( &file );	t << a << " " << b << " " << c << " ";	t << d << " " << e << " " << f << " " << s;    } else#endif    {	qDebug( "Could not save calibration: %s", calFile.latin1() );    }}void QCalibratedMouseHandler::readCalibration(){    QString calFile = "/etc/pointercal";#ifndef QT_NO_TEXTSTREAM    QFile file( calFile );    if ( file.open( IO_ReadOnly ) ) {	QTextStream t( &file );	t >> a >> b >> c >> d >> e >> f >> s;    } else#endif    {	qDebug( "Could not read calibration: %s", calFile.latin1() );    }}void QCalibratedMouseHandler::calibrate( QWSPointerCalibrationData *cd ){    QPoint dev_tl = cd->devPoints[ QWSPointerCalibrationData::TopLeft ];    QPoint dev_br = cd->devPoints[ QWSPointerCalibrationData::BottomRight ];    QPoint screen_tl = cd->screenPoints[ QWSPointerCalibrationData::TopLeft ];    QPoint screen_br = cd->screenPoints[ QWSPointerCalibrationData::BottomRight ];    s = 1 << 16;    a = s * (screen_tl.x() - screen_br.x() ) / (dev_tl.x() - dev_br.x());    b = 0;    c = s * screen_tl.x() - a * dev_tl.x();    d = 0;    e = s * (screen_tl.y() - screen_br.y() ) / (dev_tl.y() - dev_br.y());    f = s * screen_tl.y() - e * dev_tl.y();    writeCalibration();}QPoint QCalibratedMouseHandler::transform( const QPoint &p ){    QPoint tp;    tp.setX( (a * p.x() + b * p.y() + c) / s );    tp.setY( (d * p.x() + e * p.y() + f) / s );    return tp;}void QCalibratedMouseHandler::setFilterSize( int s ){    samples.resize( s );    numSamples = 0;    currSample = 0;}bool QCalibratedMouseHandler::sendFiltered( const QPoint &p, int button ){    if ( !button ) {	if ( numSamples >= samples.count() ) {	    emit mouseChanged( mousePos, 0 );	}	currSample = 0;	numSamples = 0;	return TRUE;    }    bool sent = FALSE;    samples[currSample] = p;    numSamples++;    if ( numSamples >= samples.count() ) {	int maxd = 0;	unsigned int ignore = 0;	// throw away the "worst" sample	for ( unsigned int i = 0; i < samples.count(); i++ ) {	    int d = ( mousePos - samples[i] ).manhattanLength();	    if ( d > maxd ) {		maxd = d;		ignore = i;	    }	}	bool first = TRUE;	QPoint pos;	// average the rest	for ( unsigned int i = 0; i < samples.count(); i++ ) {	    if ( ignore != i ) {		if ( first ) {		    pos = samples[i];		    first = FALSE;		} else {		    pos += samples[i];		}	    }	}	pos /= (int)(samples.count() - 1);	pos = transform( pos );	if ( pos != mousePos || numSamples == samples.count() ) {	    mousePos = pos;	    emit mouseChanged( mousePos, button );	    sent = TRUE;	}    }    currSample++;    if ( currSample >= samples.count() )	currSample = 0;    return sent;}/* * Handler for /dev/tpanel Linux kernel driver */class QVrTPanelHandlerPrivate : public QCalibratedMouseHandler {    Q_OBJECTpublic:    QVrTPanelHandlerPrivate(MouseProtocol, QString dev);    ~QVrTPanelHandlerPrivate();private:    int mouseFD;    MouseProtocol mouseProtocol;private slots:    void sendRelease();    void readMouseData();private:    static const int mouseBufSize = 1280;    QTimer *rtimer;    int mouseIdx;    uchar mouseBuf[mouseBufSize];};#ifndef QT_QWS_CASSIOPEIAQVrTPanelHandlerPrivate::QVrTPanelHandlerPrivate( MouseProtocol, QString ) :    QCalibratedMouseHandler(){}#elseQVrTPanelHandlerPrivate::QVrTPanelHandlerPrivate( MouseProtocol, QString dev ) :    QCalibratedMouseHandler(){    if ( dev.isEmpty() )	dev = "/dev/tpanel";    if ((mouseFD = open( dev, O_RDONLY)) < 0) {        qFatal( "Cannot open %s (%s)", dev.latin1(), strerror(errno));    } else {        sleep(1);    }    struct scanparam s;    s.interval = 20000;    s.settletime = 480;    if ( ioctl(mouseFD, TPSETSCANPARM, &s) < 0

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波多野结衣在线aⅴ中文字幕不卡| 国产91精品欧美| 欧美日韩精品一区视频| 日韩毛片精品高清免费| 99久久777色| 国产精品久久夜| 成人动漫一区二区在线| 亚洲国产精品二十页| 丁香亚洲综合激情啪啪综合| 久久久久久久久蜜桃| 国产精品一区二区视频| 国产校园另类小说区| 国产丶欧美丶日本不卡视频| 久久久亚洲国产美女国产盗摄 | 日韩激情一区二区| 欧美区视频在线观看| 亚洲成人在线免费| 91.成人天堂一区| 蜜臀久久99精品久久久久久9 | 久久麻豆一区二区| 日韩欧美美女一区二区三区| 成人h动漫精品一区二| 色av成人天堂桃色av| 亚洲美女屁股眼交| 欧美性淫爽ww久久久久无| 亚洲综合在线观看视频| 欧美少妇bbb| 免费观看一级欧美片| 2014亚洲片线观看视频免费| 国产成人免费在线视频| 国产精品色婷婷| 91精品办公室少妇高潮对白| 午夜精品成人在线| 日韩欧美在线网站| 国产一区二区久久| 国产精品久久久一本精品| 日本高清无吗v一区| 亚洲成人一区二区| 精品对白一区国产伦| 国产成人精品一区二区三区四区 | 26uuu久久天堂性欧美| 国产成人一级电影| 日韩久久一区二区| 欧美日韩国产在线观看| 久久99国产精品麻豆| 中文字幕日韩一区| 国产欧美精品国产国产专区 | 精品国产乱码久久久久久1区2区| 国产在线看一区| 亚洲国产精品精华液ab| 色94色欧美sute亚洲线路一ni| 午夜a成v人精品| 久久久久久久综合| 色噜噜夜夜夜综合网| 蜜臀久久99精品久久久画质超高清 | 精品日本一线二线三线不卡| 国产91综合一区在线观看| 尤物视频一区二区| 91麻豆精品国产自产在线| 顶级嫩模精品视频在线看| 亚洲已满18点击进入久久| 日韩精品一区二区三区在线观看| 高清国产午夜精品久久久久久| 一区二区三区不卡在线观看 | 国内欧美视频一区二区| 亚洲手机成人高清视频| 日韩午夜激情视频| 91一区二区三区在线观看| 免费成人在线影院| 欧美男同性恋视频网站| 欧美一区二区三区免费大片| 免费成人在线观看视频| 91欧美激情一区二区三区成人| 午夜影院久久久| 国产欧美精品在线观看| 91精品欧美久久久久久动漫 | 不卡欧美aaaaa| 视频在线观看91| 国产精品婷婷午夜在线观看| 欧美巨大另类极品videosbest| 国产成人av一区二区三区在线观看| 亚洲自拍与偷拍| 国产三级一区二区| 欧美日本不卡视频| av电影在线观看完整版一区二区| 日本人妖一区二区| 亚洲乱码一区二区三区在线观看| 精品国产精品一区二区夜夜嗨| 在线亚洲高清视频| 国产福利一区二区三区视频| 日韩影院免费视频| 自拍偷拍国产亚洲| 国产亚洲精品aa| 日韩三级电影网址| 欧美日韩国产综合一区二区三区| 99国产精品国产精品久久| 国产美女主播视频一区| 日本一不卡视频| 亚洲电影一级黄| 亚洲日本在线看| 亚洲精品国产精华液| 久久免费视频一区| 欧美一级久久久久久久大片| 欧美系列在线观看| 91视频你懂的| av成人免费在线观看| 国产裸体歌舞团一区二区| 青椒成人免费视频| 天天综合网 天天综合色| 一区二区在线观看免费视频播放| 欧美激情中文字幕一区二区| 亚洲精品一区二区三区香蕉| 欧美高清性hdvideosex| 一道本成人在线| 91在线免费视频观看| 成人免费黄色在线| 国产99久久久久| 国产精品亚洲午夜一区二区三区 | 91成人看片片| 972aa.com艺术欧美| 粉嫩av一区二区三区| 丁香网亚洲国际| 高清不卡在线观看| 国产成人综合自拍| 国产精品影视网| 国产伦精品一区二区三区免费迷 | 91麻豆免费看| 91色婷婷久久久久合中文| 99久精品国产| 一本到不卡精品视频在线观看| 9色porny自拍视频一区二区| 99在线精品一区二区三区| 97精品久久久久中文字幕| 91捆绑美女网站| 欧美主播一区二区三区美女| 欧美日韩免费电影| 欧美日韩极品在线观看一区| 欧美久久久久中文字幕| 56国语精品自产拍在线观看| 91.成人天堂一区| 欧美大片拔萝卜| 久久精品欧美日韩精品| 中文字幕av在线一区二区三区| 中文字幕第一区二区| 日韩码欧中文字| 亚洲一区二区三区四区的 | 亚洲黄色在线视频| 香蕉成人伊视频在线观看| 日韩av中文字幕一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久精工是国产品牌吗| 国产精一区二区三区| 不卡av电影在线播放| 欧美在线观看一区二区| 在线播放一区二区三区| 欧美电视剧免费全集观看| 日本一区二区三区免费乱视频| 亚洲视频在线观看一区| 亚洲va天堂va国产va久| 另类小说一区二区三区| 福利91精品一区二区三区| 色av综合在线| 日韩欧美国产高清| 中文字幕精品三区| 亚洲精品日产精品乱码不卡| 日韩1区2区日韩1区2区| 国产一区二区在线免费观看| 95精品视频在线| 欧美老肥妇做.爰bbww| 久久综合成人精品亚洲另类欧美 | 中文字幕欧美一区| 亚洲成在人线免费| 国产乱子伦一区二区三区国色天香 | 亚洲成va人在线观看| 久久国产夜色精品鲁鲁99| 成人精品一区二区三区中文字幕| 欧美在线不卡视频| 日韩精品一区二区三区四区| 国产精品免费网站在线观看| 亚洲国产成人av网| 国模冰冰炮一区二区| 91麻豆国产福利在线观看| 国产精品99久久久久久似苏梦涵 | 亚洲v精品v日韩v欧美v专区| 精品一区二区影视| 成人黄色777网| 欧美日韩一区二区三区在线| 久久综合九色综合97_久久久 | 久久综合精品国产一区二区三区 | 琪琪久久久久日韩精品| 国产91精品入口| 91精品在线免费| 亚洲日本韩国一区| 精品在线观看视频| 91网站在线播放| 欧美精品一区二区蜜臀亚洲| 亚洲美女精品一区| 国产一区二区精品久久91| 欧美日韩一二三区| 中文字幕高清不卡|