Merge change 21102
* changes: Fix the way the simulator reports the capabilities of the input device. This makes it no longer pretend it has as a multitouch display, trackball, etc.
This commit is contained in:
@@ -31,14 +31,34 @@ typedef struct EventState {
|
|||||||
* (For now, just pretend to be a "goldfish" like the emulator.)
|
* (For now, just pretend to be a "goldfish" like the emulator.)
|
||||||
*/
|
*/
|
||||||
static const unsigned char gKeyBitMask[64] = {
|
static const unsigned char gKeyBitMask[64] = {
|
||||||
|
// These bits indicate which keys the device has
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
// These bits indicate other capabilities, such
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
// as whether it's a trackball or a touchscreen
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // touchscreen
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Abs bit mask, for EVIOCGBIT(EV_ABS).
|
||||||
|
*
|
||||||
|
* Pretend to be a normal single touch panel
|
||||||
|
*/
|
||||||
|
static const unsigned char gAbsBitMask[64] = {
|
||||||
|
// these bits indicate the capabilities of the touch screen
|
||||||
|
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ABS_X, ABS_Y
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -193,7 +213,9 @@ static int ioctlEvent(FakeDev* dev, int fd, int request, void* argp)
|
|||||||
} else if (!getenv("NOTOUCH") && _IOC_NR(urequest) == _IOC_NR(EVIOCGBIT(EV_ABS,0))) {
|
} else if (!getenv("NOTOUCH") && _IOC_NR(urequest) == _IOC_NR(EVIOCGBIT(EV_ABS,0))) {
|
||||||
// absolute controllers (touch screen)
|
// absolute controllers (touch screen)
|
||||||
int maxLen = _IOC_SIZE(urequest);
|
int maxLen = _IOC_SIZE(urequest);
|
||||||
memset(argp, 0xff, maxLen);
|
if (maxLen > (int) sizeof(gAbsBitMask))
|
||||||
|
maxLen = sizeof(gAbsBitMask);
|
||||||
|
memcpy(argp, gAbsBitMask, maxLen);
|
||||||
|
|
||||||
} else if (_IOC_NR(urequest) >= _IOC_NR(EVIOCGABS(ABS_X)) &&
|
} else if (_IOC_NR(urequest) >= _IOC_NR(EVIOCGABS(ABS_X)) &&
|
||||||
_IOC_NR(urequest) <= _IOC_NR(EVIOCGABS(ABS_MAX)))
|
_IOC_NR(urequest) <= _IOC_NR(EVIOCGABS(ABS_MAX)))
|
||||||
|
|||||||
Reference in New Issue
Block a user