+typedef struct ucb1x00_ts_event\r
+{\r
+ unsigned short pressure;\r
+ unsigned short x;\r
+ unsigned short y;\r
+ unsigned short pad;\r
+ struct timeval stamp;\r
+} UCB1X00_TS_EVENT;\r
+\r
+int gp2x_touchpad_read(int *x, int *y)\r
+{\r
+ UCB1X00_TS_EVENT event;\r
+ int retval;\r
+\r
+ if (touchdev < 0) return -1;\r
+\r
+ retval = read(touchdev, &event, sizeof(event));\r
+ if (retval < 0) {\r
+ printf("touch read failed %i %i\n", retval, errno);\r
+ return -1;\r
+ }\r
+\r
+ if (x) *x = (event.x * touchcal[0] + touchcal[2]) >> 16;\r
+ if (y) *y = (event.y * touchcal[4] + touchcal[5]) >> 16;\r
+ // printf("read %i %i %i\n", event.pressure, *x, *y);\r
+\r
+ return event.pressure;\r
+}\r
+\r
+\r