X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fpl_gun_ts.c;h=315c70c108cba870ca68a21aa527ccef7a87c3e2;hp=de7fe112cb2df0b2fdaf69b5f7c14fb2dc7ab4a4;hb=215ff9e69c0b845f24e7a3aa9faeef06d9276145;hpb=50306d8d6e20ede70c2dea274ae1099082aea88f diff --git a/frontend/pl_gun_ts.c b/frontend/pl_gun_ts.c index de7fe112..315c70c1 100644 --- a/frontend/pl_gun_ts.c +++ b/frontend/pl_gun_ts.c @@ -15,8 +15,16 @@ #include "plugin_lib.h" #include "pl_gun_ts.h" #include "menu.h" +#include "../plugins/dfinput/externals.h" #include "../plugins/dfinput/main.h" +#ifdef MAEMO +#define N900_TSMAX_X 4096 +#define N900_TSOFFSET_X 0 +#define N900_TSMAX_Y 4096 +#define N900_TSOFFSET_Y 0 +#endif + static int gun_x, gun_y, gun_in; static int ts_multiplier_x, ts_multiplier_y, ts_offs_x, ts_offs_y; static int (*pts_read)(struct tsdev *dev, struct ts_sample *sample, int nr); @@ -34,7 +42,11 @@ int pl_gun_ts_update_raw(struct tsdev *ts, int *x, int *y, int *p) if (ts != NULL) { while (pts_read(ts, &sample, 1) > 0) { sx = sample.x; +#ifdef MAEMO + sy = N900_TSMAX_Y - sample.y; +#else sy = sample.y; +#endif sp = sample.pressure; updated = 1; } @@ -61,6 +73,7 @@ int pl_gun_ts_update_raw(struct tsdev *ts, int *x, int *y, int *p) return 0; } +/* returns x, y in range 0..1023 (normalized to visible layer) */ void pl_gun_ts_update(struct tsdev *ts, int *x, int *y, int *in) { pl_gun_ts_update_raw(ts, NULL, NULL, NULL); @@ -95,9 +108,13 @@ struct tsdev *pl_gun_ts_init(void) struct tsdev *ts; void *ltsh; +#ifdef MAEMO + tsdevname = "/dev/input/ts"; +#else tsdevname = getenv("TSLIB_TSDEVICE"); if (tsdevname == NULL) tsdevname = "/dev/input/touchscreen0"; +#endif // avoid hard dep on tslib ltsh = dlopen("/usr/lib/libts-1.0.so.0", RTLD_NOW|RTLD_GLOBAL); @@ -122,18 +139,27 @@ struct tsdev *pl_gun_ts_init(void) } ts = pts_open(tsdevname, 1); - if (ts == NULL) + if (ts == NULL){ + printf("Failed pts_open, check permission on %s\n", tsdevname); goto fail_open; - if (pts_config(ts) != 0) + } + if (pts_config(ts) != 0){ + printf("Failed pts_config\n"); goto fail_config; + } // FIXME: we should be able to get this somewhere // the problem is this doesn't always match resolution due to different display modes +#ifdef MAEMO + pl_set_gun_rect(N900_TSOFFSET_X, N900_TSOFFSET_Y, N900_TSMAX_X, N900_TSMAX_Y); +#else #ifdef __ARM_ARCH_7A__ pl_set_gun_rect(0, 0, 800, 480); #else pl_set_gun_rect(0, 0, 320, 240); #endif +#endif + printf("Touchscreen configured, device=%s\n", tsdevname); return ts; fail_config: