David il y a 10 ans
Parent
commit
8ad7876085
3 fichiers modifiés avec 59 ajouts et 26 suppressions
  1. 3 3
      client/clock.py
  2. 15 5
      client/keyboard.py
  3. 41 18
      client/main.py

+ 3 - 3
client/clock.py

@@ -1,15 +1,15 @@
 import threading
 import time
 class Clock(threading.Thread):
-    def __init__(self,sock):
+    def __init__(self,cb):
         super(Clock, self).__init__()
         self.running = False
-        self.sock=sock
+        self.cb=cb
 
     def run(self):
         self.running=True
         self.handleTime()
     def handleTime(self):
         while True:
-            self.sock.send( dict(type='time', time=time.strftime("%H:%M")))
+            self.cb(time.strftime("%H:%M"))
             time.sleep(15)

+ 15 - 5
client/keyboard.py

@@ -5,17 +5,20 @@ from evdev import ecodes, InputDevice, list_devices
 
 
 class Keyboard(threading.Thread):
-    def __init__(self,sock):
+    def __init__(self,next,prev,toggle):
         super(Keyboard, self).__init__()
         self.devices = [InputDevice(d) for d in list_devices("/dev/input/")]
-        self.sock = sock
         self.running = False
+        self.prev = prev
+        self.next = next
+        self.toggle = toggle
 
     def run(self):
         self.running=True
         self.handleInput()
     def handleInput(self):
-        dev = InputDevice("/dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_3000-event-kbd")
+        #dev = InputDevice("/dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_3000-event-kbd")
+        dev = InputDevice("/dev/input/by-path/platform-i8042-serio-0-event-kbd")
         VALID_KEYS = [ "KEY_PAGEUP", "KEY_PAGEDOWN", "KEY_F5" ]
         while True:
             r, w, e = select([dev], [], [])
@@ -23,7 +26,14 @@ class Keyboard(threading.Thread):
                 codename = '?'
                 if ev.type == ecodes.EV_SYN:
                    continue 
+                if ev.value != 0:
+                    continue
                 if ev.type in ecodes.bytype:
                     codename = ecodes.bytype[ev.type][ev.code]
-                if codename in VALID_KEYS and ev.value==0:
-                    print(codename)
+
+                if codename == "KEY_PAGEUP":
+                    self.prev()
+                if codename == "KEY_PAGEDOWN":
+                    self.next()
+                if codename == "KEY_F5":
+                    self.toggle()

+ 41 - 18
client/main.py

@@ -4,30 +4,53 @@ from sock import Sock
 from clock import Clock
 from slides import Slides
 from preguntas import Preg
+from enum import Enum
 #from websocket import ws
 import time
 
-HANDLE_KBD = 0 #esto particularmente porque requiere root/pertenecer al grupo input
-STATE = "diapo"
+class Mode(Enum):
+    diapo = 0
+    preg  = 1
 
-s = Sock()
-s.start()
-time.sleep(0.5)
-if HANDLE_KBD == 1:
-    k = Keyboard(s)
-    k.start()
+class Main(object):
+    def __init__(self):
+        self.mode = Mode.diapo
+        self.s = Sock()
+        self.s.start()
+        time.sleep(0.5)
+        self.k = Keyboard(self.next,self.prev,self.toggle)
+    
+        #self.ws = Websocket()
+        self.c = Clock(self.timerTick)
+    
+        self.slides = Slides("../node/")
+        self.preg = Preg()
 
-#ws = Websocket()
-#ws.start()
-c = Clock(s)
-c.start()
+        #self.ws.start()
+        self.k.start()
+        self.c.start()
+    
+        self.k.join() #?
+        self.c.join()
+        self.s.join()
 
-slides = Slides("../node/")
-preg = Preg()
+    def next(self):
+        print("next")
+        if self.mode == Mode.diapo:
+            self.s.send(self.slides.next())
 
-if HANDLE_KBD == 1:
-    k.join()
+    def prev(self):
+        print("prev")
+        if self.mode == Mode.diapo:
+            self.s.send(self.slides.prev())
 
+    def toggle(self):
+		if self.mode == Mode.diapo:
+			self.mode = Mode.preg
+		else
+			self.mode = Mode.diapo
+    def timerTick(self,data):
+        print(data)
 
-c.join()
-s.join()
+
+m = Main()