mirror of
https://gitee.com/houstudio/Cdroid.git
synced 2024-11-29 18:59:14 +08:00
motionevent history suuported
This commit is contained in:
parent
ceaf741c84
commit
1088075330
@ -325,6 +325,8 @@ TouchDevice::TouchDevice(int fd):InputDevice(fd){
|
|||||||
mLastBits.clear();
|
mLastBits.clear();
|
||||||
mCurrBits.clear();
|
mCurrBits.clear();
|
||||||
mEvent = nullptr;
|
mEvent = nullptr;
|
||||||
|
mActionButton = 0;
|
||||||
|
mButtonState = 0;
|
||||||
mDeviceInfo.addSource(SOURCE_CLASS_POINTER);
|
mDeviceInfo.addSource(SOURCE_CLASS_POINTER);
|
||||||
LOGI("screen(%d,%d) rotation=%d [%s] X(%d,%d) Y(%d,%d) invert=%d,%d switchXY=%d",mScreenWidth, mScreenHeight,
|
LOGI("screen(%d,%d) rotation=%d [%s] X(%d,%d) Y(%d,%d) invert=%d,%d switchXY=%d",mScreenWidth, mScreenHeight,
|
||||||
display.getRotation(),section.c_str(),mMinX,mMaxX,mMinY,mMaxY,mInvertX,mInvertY,mSwitchXY);
|
display.getRotation(),section.c_str(),mMinX,mMaxX,mMinY,mMaxY,mInvertX,mInvertY,mSwitchXY);
|
||||||
@ -447,7 +449,7 @@ int TouchDevice::getActionByBits(int& pointIndex){
|
|||||||
|
|
||||||
int TouchDevice::putRawEvent(const struct timeval&tv,int type,int code,int value){
|
int TouchDevice::putRawEvent(const struct timeval&tv,int type,int code,int value){
|
||||||
if(!isValidEvent(type,code,value))return -1;
|
if(!isValidEvent(type,code,value))return -1;
|
||||||
int pointIndex,eventAction;
|
int pointIndex,action;
|
||||||
LOGV("%lu:%04u %d,%d,%d",tv.tv_sec,tv.tv_usec,type,code,value);
|
LOGV("%lu:%04u %d,%d,%d",tv.tv_sec,tv.tv_usec,type,code,value);
|
||||||
switch(type){
|
switch(type){
|
||||||
case EV_KEY:
|
case EV_KEY:
|
||||||
@ -455,24 +457,24 @@ int TouchDevice::putRawEvent(const struct timeval&tv,int type,int code,int value
|
|||||||
switch(code){
|
switch(code){
|
||||||
case BTN_TOUCH :
|
case BTN_TOUCH :
|
||||||
case BTN_STYLUS:
|
case BTN_STYLUS:
|
||||||
//mEvent.setActionButton(MotionEvent::BUTTON_PRIMARY);
|
mActionButton = MotionEvent::BUTTON_PRIMARY;
|
||||||
if(value)mCurrBits.markBit(0);else mCurrBits.clearBit(0);
|
if(value)mCurrBits.markBit(0);else mCurrBits.clearBit(0);
|
||||||
if(value){
|
if(value){
|
||||||
mMoveTime = mDownTime = tv.tv_sec * 1000 + tv.tv_usec/1000;
|
mMoveTime = mDownTime = tv.tv_sec * 1000 + tv.tv_usec/1000;
|
||||||
//mEvent.setButtonState(MotionEvent::BUTTON_PRIMARY);
|
mButtonState = MotionEvent::BUTTON_PRIMARY;
|
||||||
}else{
|
}else{
|
||||||
mMoveTime = tv.tv_sec * 1000 + tv.tv_usec/1000;
|
mMoveTime = tv.tv_sec * 1000 + tv.tv_usec/1000;
|
||||||
//mEvent.setButtonState(mEvent.getButtonState()&(~MotionEvent::BUTTON_PRIMARY));
|
mButtonState &= ~MotionEvent::BUTTON_PRIMARY;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BTN_0:
|
case BTN_0:
|
||||||
case BTN_STYLUS2:
|
case BTN_STYLUS2:
|
||||||
/*mEvent.setActionButton(MotionEvent::BUTTON_SECONDARY);
|
mActionButton = MotionEvent::BUTTON_SECONDARY;
|
||||||
if(value)
|
if(value)
|
||||||
mEvent.setButtonState(MotionEvent::BUTTON_SECONDARY);
|
mButtonState = MotionEvent::BUTTON_SECONDARY;
|
||||||
else
|
else
|
||||||
mEvent.setButtonState(mEvent.getButtonState()&(~MotionEvent::BUTTON_SECONDARY));
|
mButtonState &= ~MotionEvent::BUTTON_SECONDARY;
|
||||||
break;*/
|
break;
|
||||||
case BTN_TOOL_FINGER:break;
|
case BTN_TOOL_FINGER:break;
|
||||||
}break;
|
}break;
|
||||||
case EV_ABS:
|
case EV_ABS:
|
||||||
@ -492,8 +494,7 @@ int TouchDevice::putRawEvent(const struct timeval&tv,int type,int code,int value
|
|||||||
switch(code){
|
switch(code){
|
||||||
case SYN_MT_REPORT:break;
|
case SYN_MT_REPORT:break;
|
||||||
case SYN_REPORT:
|
case SYN_REPORT:
|
||||||
eventAction = getActionByBits(pointIndex);
|
action = getActionByBits(pointIndex);
|
||||||
LOGD_IF(eventAction!=2,"mask=%08x,%08x eventAction=%d pointIndex=%d",mLastBits.value,mCurrBits.value,eventAction,pointIndex);
|
|
||||||
mMoveTime =(tv.tv_sec * 1000LL + tv.tv_usec/1000);
|
mMoveTime =(tv.tv_sec * 1000LL + tv.tv_usec/1000);
|
||||||
{
|
{
|
||||||
int pointerCount = 0;
|
int pointerCount = 0;
|
||||||
@ -504,29 +505,39 @@ int TouchDevice::putRawEvent(const struct timeval&tv,int type,int code,int value
|
|||||||
props [pointerCount] = p.second.prop;
|
props [pointerCount] = p.second.prop;
|
||||||
pointerCount ++;
|
pointerCount ++;
|
||||||
}
|
}
|
||||||
if(mEvent!=nullptr)mEvent->recycle();
|
if( (mEvent==nullptr)||(mEvent && (action!=MotionEvent::ACTION_MOVE)) ){
|
||||||
|
if(mEvent) mEvent->recycle();
|
||||||
mEvent = MotionEvent::obtain(mMoveTime,mMoveTime,
|
mEvent = MotionEvent::obtain(mMoveTime,mMoveTime,
|
||||||
eventAction|(pointIndex<<MotionEvent::ACTION_POINTER_INDEX_SHIFT),
|
action|(pointIndex<<MotionEvent::ACTION_POINTER_INDEX_SHIFT),
|
||||||
pointerCount,props,coords, 0/*metaState*/, 0/*buttonState*/,.0,.0/*x/yPrecision*/,
|
pointerCount,props,coords, 0/*metaState*/,mButtonState,.0,.0/*x/yPrecision*/,
|
||||||
getId()/*deviceId*/, 0/*edgeFlags*/, getSources(), 0/*flags*/);
|
getId()/*deviceId*/, 0/*edgeFlags*/, getSources(), 0/*flags*/);
|
||||||
|
mEvent->setActionButton(mActionButton);
|
||||||
|
}else {
|
||||||
|
#if 0
|
||||||
|
MotionEvent*ne = MotionEvent::obtain(*mEvent);
|
||||||
|
mEvent->recycle();
|
||||||
|
mEvent = ne;
|
||||||
|
mEvent->addSample(mMoveTime,coords);
|
||||||
|
#else
|
||||||
|
MotionEvent*ne = mEvents.size()?(MotionEvent*)mEvents.back():nullptr;
|
||||||
|
if(ne&&ne->getActionMasked()==MotionEvent::ACTION_MOVE){
|
||||||
|
mEvent->addSample(mMoveTime,coords);
|
||||||
|
goto CLEAR_END;
|
||||||
|
}else{
|
||||||
|
ne = MotionEvent::obtain(*mEvent);
|
||||||
|
mEvent->recycle();
|
||||||
|
mEvent = ne;
|
||||||
|
mEvent->addSample(mMoveTime,coords);
|
||||||
}
|
}
|
||||||
LOGD_IF(eventAction!=MotionEvent::ACTION_MOVE,"%s pos=%.f,%.f",MotionEvent::actionToString(eventAction).c_str(),
|
#endif
|
||||||
mEvent->getX(pointIndex),mEvent->getY(pointIndex));
|
|
||||||
if( eventAction == MotionEvent::ACTION_MOVE ) {
|
|
||||||
MotionEvent*last = mEvents.size() ? (MotionEvent*)mEvents.back() : nullptr;
|
|
||||||
if(0&&last&&(last->getAction()==MotionEvent::ACTION_MOVE)&&(mMoveTime-last->getEventTime()<20)){
|
|
||||||
//the same positioned moveing ,skip this event
|
|
||||||
mEvents.pop_back();
|
|
||||||
mEvents.push_back(MotionEvent::obtain(last->getDownTime(),last->getEventTime(),
|
|
||||||
last->getAction(),mEvent->getX(),mEvent->getY(),last->getMetaState()));
|
|
||||||
last->recycle();
|
|
||||||
LOGV("%lld,%lld,%d events",mMoveTime,last->getEventTime(),mEvents.size());
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
mEvent->setAction(action|(pointIndex<<MotionEvent::ACTION_POINTER_INDEX_SHIFT));
|
||||||
}
|
}
|
||||||
|
LOGD_IF(action!=MotionEvent::ACTION_MOVE,"mask=%08x,%08x action=%d Poiter[%d]=(%.f,%.f)",mLastBits.value,
|
||||||
|
mCurrBits.value,action,pointIndex,mEvent->getX(pointIndex),mEvent->getY(pointIndex));
|
||||||
if( mLastBits.count() > mCurrBits.count() ){
|
if( mLastBits.count() > mCurrBits.count() ){
|
||||||
const uint32_t pointerIndex = BitSet32::firstMarkedBit(mLastBits.value^mCurrBits.value);
|
const uint32_t pointerIndex = BitSet32::firstMarkedBit(mLastBits.value^mCurrBits.value);
|
||||||
LOGV("clearbits %d %08x,%08x",pointerIndex,mLastBits.value,mCurrBits.value);
|
LOGD("clearbits %d %08x,%08x",pointerIndex,mLastBits.value,mCurrBits.value);
|
||||||
mCurrBits.clearBit(pointIndex);
|
mCurrBits.clearBit(pointIndex);
|
||||||
auto it = mTrack2Slot.find(pointerIndex);
|
auto it = mTrack2Slot.find(pointerIndex);
|
||||||
if( it != mTrack2Slot.end() )mTrack2Slot.erase(it);
|
if( it != mTrack2Slot.end() )mTrack2Slot.erase(it);
|
||||||
@ -540,6 +551,7 @@ int TouchDevice::putRawEvent(const struct timeval&tv,int type,int code,int value
|
|||||||
MotionEvent*e = MotionEvent::obtain(*mEvent);
|
MotionEvent*e = MotionEvent::obtain(*mEvent);
|
||||||
mEvents.push_back(e);
|
mEvents.push_back(e);
|
||||||
}
|
}
|
||||||
|
CLEAR_END:
|
||||||
mLastBits.value = mCurrBits.value;
|
mLastBits.value = mCurrBits.value;
|
||||||
if( (mDeviceClasses&INPUT_DEVICE_CLASS_TOUCH_MT) && (mTypeB==false) ){
|
if( (mDeviceClasses&INPUT_DEVICE_CLASS_TOUCH_MT) && (mTypeB==false) ){
|
||||||
mCurrBits.clear();//only typeA
|
mCurrBits.clear();//only typeA
|
||||||
@ -649,8 +661,7 @@ static void appendInputDeviceConfigurationFileRelativePath(std::string& path,
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string getInputDeviceConfigurationFilePathByName(const std::string& name,const std::string&type) {
|
std::string getInputDeviceConfigurationFilePathByName(const std::string& name,const std::string&type) {
|
||||||
// Search system repository.
|
std::string path;// Search system repository.
|
||||||
std::string path;
|
|
||||||
struct stat st;
|
struct stat st;
|
||||||
// Treblized input device config files will be located /odm/usr or /vendor/usr.
|
// Treblized input device config files will be located /odm/usr or /vendor/usr.
|
||||||
const char *rootsForPartition[] {"/odm", "/vendor", getenv("ANDROID_ROOT")};
|
const char *rootsForPartition[] {"/odm", "/vendor", getenv("ANDROID_ROOT")};
|
||||||
|
@ -238,6 +238,8 @@ protected:
|
|||||||
int32_t mLastDownX,mLastDownY;
|
int32_t mLastDownX,mLastDownY;
|
||||||
int32_t mMinX,mMaxX;
|
int32_t mMinX,mMaxX;
|
||||||
int32_t mMinY,mMaxY;
|
int32_t mMinY,mMaxY;
|
||||||
|
int32_t mActionButton;
|
||||||
|
int32_t mButtonState;
|
||||||
bool mSwitchXY;
|
bool mSwitchXY;
|
||||||
bool mInvertX;
|
bool mInvertX;
|
||||||
bool mInvertY;
|
bool mInvertY;
|
||||||
|
@ -129,12 +129,12 @@ INT InputGetDeviceInfo(int device,INPUTDEVICEINFO*devinfo) {
|
|||||||
strcpy(devinfo->name,"Touch-Inject");
|
strcpy(devinfo->name,"Touch-Inject");
|
||||||
devinfo->vendor = INJECTDEV_TOUCH>>16;
|
devinfo->vendor = INJECTDEV_TOUCH>>16;
|
||||||
devinfo->product= INJECTDEV_TOUCH&0xFF;
|
devinfo->product= INJECTDEV_TOUCH&0xFF;
|
||||||
#if 0
|
#if 1
|
||||||
SET_BIT(devinfo->keyBitMask,BTN_TOUCH);
|
SET_BIT(devinfo->keyBitMask,BTN_TOUCH);
|
||||||
SET_BIT(devinfo->absBitMask,ABS_X);
|
SET_BIT(devinfo->absBitMask,ABS_X);
|
||||||
SET_BIT(devinfo->absBitMask,ABS_Y);
|
SET_BIT(devinfo->absBitMask,ABS_Y);
|
||||||
#else
|
#else
|
||||||
SET_BIT(devinfo->keyBitMask,BTN_TOUCH);
|
//SET_BIT(devinfo->keyBitMask,BTN_TOUCH);
|
||||||
SET_BIT(devinfo->absBitMask,ABS_MT_POSITION_X);
|
SET_BIT(devinfo->absBitMask,ABS_MT_POSITION_X);
|
||||||
SET_BIT(devinfo->absBitMask,ABS_MT_POSITION_Y);
|
SET_BIT(devinfo->absBitMask,ABS_MT_POSITION_Y);
|
||||||
#endif
|
#endif
|
||||||
|
@ -82,28 +82,28 @@ TEST_F(EVENT,MT){
|
|||||||
{EV_SYN,SYN_REPORT,0},
|
{EV_SYN,SYN_REPORT,0},
|
||||||
|
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_MOVE
|
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_MOVE
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,14},
|
{EV_ABS,ABS_MT_POSITION_X ,20},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,20},
|
{EV_ABS,ABS_MT_POSITION_Y ,30},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
{EV_SYN,SYN_REPORT,0},
|
{EV_SYN,SYN_REPORT,0},
|
||||||
|
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_DOWN finger 0
|
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_DOWN finger 0
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,14},
|
{EV_ABS,ABS_MT_POSITION_X ,20},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,20},
|
{EV_ABS,ABS_MT_POSITION_Y ,30},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,46},//ACTION_POINTER_DOWN finger 1
|
{EV_ABS,ABS_MT_TRACKING_ID,46},//ACTION_POINTER_DOWN finger 1
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,10},
|
{EV_ABS,ABS_MT_POSITION_X ,40},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,200},
|
{EV_ABS,ABS_MT_POSITION_Y ,100},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
{EV_SYN,SYN_REPORT,0},
|
{EV_SYN,SYN_REPORT,0},
|
||||||
|
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_DOWN finger 0
|
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_DOWN finger 0
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,14},
|
{EV_ABS,ABS_MT_POSITION_X ,20},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,20},
|
{EV_ABS,ABS_MT_POSITION_Y ,30},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,46},//ACTION_POINTER_DOWN finger 1
|
{EV_ABS,ABS_MT_TRACKING_ID,46},//ACTION_POINTER_DOWN finger 1
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,10},
|
{EV_ABS,ABS_MT_POSITION_X ,40},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,200},
|
{EV_ABS,ABS_MT_POSITION_Y ,100},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,47},//ACTION_POINTER_DOWN finger 2
|
{EV_ABS,ABS_MT_TRACKING_ID,47},//ACTION_POINTER_DOWN finger 2
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,200},
|
{EV_ABS,ABS_MT_POSITION_X ,200},
|
||||||
@ -112,41 +112,41 @@ TEST_F(EVENT,MT){
|
|||||||
{EV_SYN,SYN_REPORT,0},
|
{EV_SYN,SYN_REPORT,0},
|
||||||
|
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_UP finger 2
|
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_UP finger 2
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,16},
|
{EV_ABS,ABS_MT_POSITION_X ,20},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,20},
|
{EV_ABS,ABS_MT_POSITION_Y ,30},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,46},
|
{EV_ABS,ABS_MT_TRACKING_ID,46},
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,6},
|
{EV_ABS,ABS_MT_POSITION_X ,40},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,200},
|
{EV_ABS,ABS_MT_POSITION_Y ,100},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
//{EV_ABS,ABS_MT_TRACKING_ID,-1},
|
//{EV_ABS,ABS_MT_TRACKING_ID,-1},
|
||||||
{EV_SYN,SYN_REPORT,0},
|
{EV_SYN,SYN_REPORT,0},
|
||||||
#if 10//2 moveevents
|
#if 10//2 moveevents
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_UP finger 2
|
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_UP finger 2
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,18},
|
{EV_ABS,ABS_MT_POSITION_X ,20},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,20},
|
{EV_ABS,ABS_MT_POSITION_Y ,30},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,46},
|
{EV_ABS,ABS_MT_TRACKING_ID,46},
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,8},
|
{EV_ABS,ABS_MT_POSITION_X ,40},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,200},
|
{EV_ABS,ABS_MT_POSITION_Y ,100},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
//{EV_ABS,ABS_MT_TRACKING_ID,-1},
|
//{EV_ABS,ABS_MT_TRACKING_ID,-1},
|
||||||
{EV_SYN,SYN_REPORT,0},
|
{EV_SYN,SYN_REPORT,0},
|
||||||
|
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_UP finger 2
|
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_MOVE finger 1
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,19},
|
{EV_ABS,ABS_MT_POSITION_X ,20},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,20},
|
{EV_ABS,ABS_MT_POSITION_Y ,30},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,46},
|
{EV_ABS,ABS_MT_TRACKING_ID,46},
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,10},
|
{EV_ABS,ABS_MT_POSITION_X ,60},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,200},
|
{EV_ABS,ABS_MT_POSITION_Y ,120},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
//{EV_ABS,ABS_MT_TRACKING_ID,-1},
|
//{EV_ABS,ABS_MT_TRACKING_ID,-1},
|
||||||
{EV_SYN,SYN_REPORT,0},
|
{EV_SYN,SYN_REPORT,0},
|
||||||
#endif
|
#endif
|
||||||
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_UP finger 1
|
{EV_ABS,ABS_MT_TRACKING_ID,45},//ACTION_POINTER_UP finger 1
|
||||||
{EV_ABS,ABS_MT_POSITION_X ,18},
|
{EV_ABS,ABS_MT_POSITION_X ,20},
|
||||||
{EV_ABS,ABS_MT_POSITION_Y ,20},
|
{EV_ABS,ABS_MT_POSITION_Y ,30},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
//{EV_ABS,ABS_MT_TRACKING_ID,-1},
|
//{EV_ABS,ABS_MT_TRACKING_ID,-1},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
@ -155,6 +155,7 @@ TEST_F(EVENT,MT){
|
|||||||
{EV_ABS,ABS_MT_TRACKING_ID,-1},
|
{EV_ABS,ABS_MT_TRACKING_ID,-1},
|
||||||
{EV_SYN,SYN_MT_REPORT,0},
|
{EV_SYN,SYN_MT_REPORT,0},
|
||||||
{EV_SYN,SYN_REPORT,0},
|
{EV_SYN,SYN_REPORT,0},
|
||||||
|
|
||||||
};
|
};
|
||||||
for(int i=0;i<sizeof(mts)/sizeof(MTEvent);i++){
|
for(int i=0;i<sizeof(mts)/sizeof(MTEvent);i++){
|
||||||
int32_t tmEVT = i*20*100000;
|
int32_t tmEVT = i*20*100000;
|
||||||
|
Loading…
Reference in New Issue
Block a user