From: <c99...@us...> - 2007-07-28 19:00:44
|
Revision: 428 http://cadcdev.svn.sourceforge.net/cadcdev/?rev=428&view=rev Author: c99koder Date: 2007-07-28 12:00:43 -0700 (Sat, 28 Jul 2007) Log Message: ----------- Tiki: NDS: Touchscreen support Modified Paths: -------------- tiki/nds/src/plathid.cpp Modified: tiki/nds/src/plathid.cpp =================================================================== --- tiki/nds/src/plathid.cpp 2007-07-28 06:27:21 UTC (rev 427) +++ tiki/nds/src/plathid.cpp 2007-07-28 19:00:43 UTC (rev 428) @@ -3,46 +3,76 @@ #include "Tiki/hid.h" #include <dswifi9.h> +using namespace Tiki::Hid; + volatile uint64 __timecounter = 0; +class MouseDevice : public Device { +public: + MouseDevice() { } + virtual ~MouseDevice() { } + + virtual Type getType() const { return TypeMouse; } + virtual string getName() const { return "NDS Touchscreen"; } +}; + +class JsDevice : public Device { +public: + JsDevice() { } + virtual ~JsDevice() { } + + virtual Type getType() const { return TypeJoystick; } + virtual string getName() const { return "NDS Controller"; } +}; + +static RefPtr<MouseDevice> NDSmouse; +static RefPtr<JsDevice> NDSjs; + namespace Tiki { namespace Hid { #define CONTROLLER_BUTTON_MAP(OLDSTATE, NEWSTATE, BUTTON, EVENT) \ - if((NEWSTATE & BUTTON) && !(OLDSTATE & BUTTON)) { \ - Event evt(Event::EvtBtnPress); \ - evt.btn = EVENT; \ - evt.port = 1; \ - sendEvent(evt); \ - } \ - if(!(NEWSTATE & BUTTON) && (OLDSTATE & BUTTON)) { \ - Event evt(Event::EvtBtnRelease); \ - evt.btn = EVENT; \ - evt.port = 1; \ - sendEvent(evt); \ - } + if((NEWSTATE & BUTTON) && !(OLDSTATE & BUTTON)) { \ + Event evt(Event::EvtBtnPress); \ + evt.dev = NDSjs; \ + evt.btn = EVENT; \ + evt.port = 1; \ + sendEvent(evt); \ + } \ + if(!(NEWSTATE & BUTTON) && (OLDSTATE & BUTTON)) { \ + Event evt(Event::EvtBtnRelease); \ + evt.dev = NDSjs; \ + evt.btn = EVENT; \ + evt.port = 1; \ + sendEvent(evt); \ + } #define CONTROLLER_KEY_MAP(OLDSTATE, NEWSTATE, BUTTON, EVENT) \ - if((NEWSTATE & BUTTON) && !(OLDSTATE & BUTTON)) { \ - Event evtPress(Event::EvtKeypress); \ - evtPress.key = EVENT; \ - evtPress.port = 1; \ - sendEvent(evtPress); \ - \ - Event evt(Event::EvtKeyDown); \ - evt.key = EVENT; \ - evt.port = 1; \ - sendEvent(evt); \ - } \ - if(!(NEWSTATE & BUTTON) && (OLDSTATE & BUTTON)) { \ - Event evt(Event::EvtKeyUp); \ - evt.key = EVENT; \ - evt.port = 1; \ - sendEvent(evt); \ - } + if((NEWSTATE & BUTTON) && !(OLDSTATE & BUTTON)) { \ + Event evtPress(Event::EvtKeypress); \ + evtPress.dev = NDSjs; \ + evtPress.key = EVENT; \ + evtPress.port = 1; \ + sendEvent(evtPress); \ + \ + Event evt(Event::EvtKeyDown); \ + evt.dev = NDSjs; \ + evt.key = EVENT; \ + evt.port = 1; \ + sendEvent(evt); \ + } \ + if(!(NEWSTATE & BUTTON) && (OLDSTATE & BUTTON)) { \ + Event evt(Event::EvtKeyUp); \ + evt.dev = NDSjs; \ + evt.key = EVENT; \ + evt.port = 1; \ + sendEvent(evt); \ + } void TikiVBlank(void) { static u32 oldkeys = 0; + static u16 mouseX = 0, mouseY = 0; + touchPosition tp; scanKeys(); u32 keys = keysHeld(); @@ -66,6 +96,26 @@ CONTROLLER_KEY_MAP(oldkeys, keys, KEY_A, 32); CONTROLLER_KEY_MAP(oldkeys, keys, KEY_B, Event::KeyEsc); + //Touchscreen + if(keys & KEY_TOUCH) { + tp = touchReadXY(); + Event evt(Event::EvtBtnPress); + evt.dev = NDSmouse; + evt.btn = Event::MouseLeftBtn; + evt.port = 1; + evt.x = mouseX = tp.px; + evt.y = mouseY = tp.py; + sendEvent(evt); + } else if(oldkeys & KEY_TOUCH) { + Event evt(Event::EvtBtnRelease); + evt.dev = NDSmouse; + evt.btn = Event::MouseLeftBtn; + evt.port = 1; + evt.x = mouseX; + evt.y = mouseY; + sendEvent(evt); + } + oldkeys = keys; Wifi_Timer(50); __timecounter += 15000; @@ -74,6 +124,8 @@ bool platInit() { irqSet(IRQ_VCOUNT,&TikiVBlank); irqEnable(IRQ_VBLANK | IRQ_VCOUNT); + NDSjs = new JsDevice; + NDSmouse = new MouseDevice; return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |