From: pin Date: Fri, 24 Jun 2011 13:00:01 +0000 (+0000) Subject: Implémentation de la télécommande. Implémentation d'un callback qui émule une souris... X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/commitdiff_plain/0e6420a8ac9fcefa6a83a2f515b3fe6858a372cd?ds=sidebyside Implémentation de la télécommande. Implémentation d'un callback qui émule une souris à 2 boutons + roulette. git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@352 fe552daf-6dbe-4428-90eb-1537e0879342 --- diff --git a/src/minwii/app.py b/src/minwii/app.py index b0e249a..87c2082 100755 --- a/src/minwii/app.py +++ b/src/minwii/app.py @@ -80,6 +80,9 @@ class MinWii(object): key = pygame.K_q, unicode = u'q') pygame.event.post(event) + + elif self.screen in (SCREEN_HOME, SCREEN_INSTRUMENTS) : + pygame_wiimouse._full_mouse_event_cb(wt, id, wmp) def run(self) : "séquençage de l'affichage des écrans" @@ -94,12 +97,12 @@ class MinWii(object): while True : WT.resume() + WT.selectWiimote(self.nwiimotes - 1) # la télécommande est la souris self.screen = SCREEN_HOME exit, songFile, playMode, wiimoteIndex = \ self.selectSongAndOptions(songFile, playMode, wiimoteIndex) if exit : break - WT.selectWiimote(wiimoteIndex) self.screen = SCREEN_INSTRUMENTS instrumentDescription = self.selectInstrument() @@ -107,6 +110,7 @@ class MinWii(object): continue self.screen = SCREEN_PLAY + WT.selectWiimote(wiimoteIndex) self.runPlayingScreen(songFile, playMode, instrumentDescription) WT.pause() diff --git a/src/minwii/widgets/home.py b/src/minwii/widgets/home.py index 5b34403..8a671bc 100755 --- a/src/minwii/widgets/home.py +++ b/src/minwii/widgets/home.py @@ -86,7 +86,7 @@ class Home(object, Table) : playerTable = Table() self.selectedWiimote = Group(name='selectedWiimote', value=0) - for i in range(self.nwiimotes): + for i in range(self.nwiimotes - 1): r = Radio(self.selectedWiimote, i) playerTable.td(r) playerTable.td(self.createLabel(" %d " % (i+1))) diff --git a/src/pywiiuse/pygame_wiimouse.py b/src/pywiiuse/pygame_wiimouse.py index 7680581..e5d506c 100755 --- a/src/pywiiuse/pygame_wiimouse.py +++ b/src/pywiiuse/pygame_wiimouse.py @@ -57,8 +57,8 @@ class wiimote_thread(Thread): m = self.wiimotes[i] if m[0].event == wiiuse.EVENT: self.eventCallBack(self, i, m) - except : - pass + except Exception, e: + print e while True: try: @@ -107,7 +107,7 @@ class wiimote_thread(Thread): def _default_event_cb(self, id, wmp): - '''Called when the library has some data for the user.''' + ''' default callback that emulate a one button mouse ''' if id != self.selectedWiimoteIndex : return wm = wmp[0] pos = (wm.ir.x, wm.ir.y) @@ -129,6 +129,48 @@ def _default_event_cb(self, id, wmp): button = 1) pygame.event.post(event) +def _full_mouse_event_cb(self, id, wmp): + ''' callback that emulate a 2 buttons mouse with wheel ''' + if id != self.selectedWiimoteIndex : return + wm = wmp[0] + pos = (wm.ir.x, wm.ir.y) + pygame.mouse.set_pos(pos) + + eventType = None + + if wm.btns : + button = 0 + if wiiuse.is_just_pressed(wm, wiiuse.button['B']) : + button = 1 + elif wiiuse.is_just_pressed(wm, wiiuse.button['A']) : + button = 2 + elif wiiuse.is_just_pressed(wm, wiiuse.button['Up']) : + button = 4 + elif wiiuse.is_just_pressed(wm, wiiuse.button['Down']) : + button = 5 + + if button : + event = pygame.event.Event(pygame.MOUSEBUTTONDOWN, + pos = pos, + button = button) + pygame.event.post(event) + + if wm.btns_released : + button = 0 + if wiiuse.is_released(wm, wiiuse.button['B']) : + button = 1 + elif wiiuse.is_released(wm, wiiuse.button['A']) : + button = 2 + elif wiiuse.is_released(wm, wiiuse.button['Up']) : + button = 4 + elif wiiuse.is_released(wm, wiiuse.button['Down']) : + button = 5 + + if button : + event = pygame.event.Event(pygame.MOUSEBUTTONUP, + pos = pos, + button = 1) + pygame.event.post(event) WT = None