Mejoras en general
This commit is contained in:
47
lib/kbdctrl.py
Normal file
47
lib/kbdctrl.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import sys
|
||||
from struct import pack, unpack
|
||||
from pynput import keyboard
|
||||
from lib import log
|
||||
from lib.kbdmap import *
|
||||
|
||||
class KeyboardController:
|
||||
kbdmap = kbdmap
|
||||
kbdkey = ''
|
||||
downflag = None
|
||||
key = None
|
||||
controller = None
|
||||
kbd = None
|
||||
|
||||
def __init__(self):
|
||||
self.kbd = keyboard
|
||||
self.controller = self.kbd.Controller()
|
||||
|
||||
def process_event(self, data):
|
||||
# B = U8, L = U32
|
||||
(self.downflag, self.key) = unpack("!BxxL", data)
|
||||
log.debug("KeyEvent", self.downflag, hex(self.key))
|
||||
|
||||
# special key
|
||||
if self.key in self.kbdmap:
|
||||
self.kbdkey = self.kbdmap[self.key]
|
||||
log.debug("SPECIAL KEY", self.kbdkey)
|
||||
else: # normal key
|
||||
try:
|
||||
self.kbdkey = self.kbd.KeyCode.from_char(chr(self.key))
|
||||
except:
|
||||
self.kbdkey = None
|
||||
|
||||
# debug keypress to stdout
|
||||
try:
|
||||
log.debug("KEY:", self.kbdkey)
|
||||
except:
|
||||
log.debug("KEY: (unprintable)")
|
||||
|
||||
# send the actual keyboard event
|
||||
try:
|
||||
if self.downflag:
|
||||
self.controller.press(self.kbdkey)
|
||||
else:
|
||||
self.controller.release(self.kbdkey)
|
||||
except:
|
||||
log.debug("Error sending key")
|
||||
Reference in New Issue
Block a user