import __main__ as MAIN import json import sys import time _file_path = "/opt/LibreLight/Xdesk/" sys.path.insert(0,"/opt/LibreLight/Xdesk/") from lib.cprint import cprint import lib.libtk as libtk def serialize_event(event): data = {} for k in dir(event): if k.startswith("_"): continue v = event.__getattribute__(k) if v == '??': continue if type(v) not in [int,str,float]: continue data[k] = v data["event"] = str(event).split()[0][1:] if "state" in data: del data["state"] if "time" in data: del data["time"] if "serial" in data: del data["serial"] keys = list(data.keys()) keys.sort() data2={} for k in keys: data2[k] = data[k] return data2 Control_L = 0 Alt_L = 0 def tk_event(event,data={}): #print("tk_event",event,data) global Control_L,Alt_L if MAIN._global_key_lock: return #print(" ",dir(event)) #.dict()) data = serialize_event(event) if 'keysym' in data: keysym = data["keysym"] if keysym == 'Control_L': if "Press" in data["event"]: Control_L = 1 if "Release" in data["event"]: Control_L = 0 if keysym == 'Alt_L': if "Press" in data["event"]: Alt_L = 1 if "Release" in data["event"]: Alt_L = 0 data["Alt_L"] = Alt_L data["Control_L"] = Control_L print("tk_event",data) ok=0 # CONTROL + KEY key_code = {"s":"SAVE\nSHOW","c":"RESTART" } if 'keysym' in data: keysym = data["keysym"] if keysym in key_code: if "Press" in data['event'] and data["Control_L"]: MOD = key_code[keysym] msg=json.dumps([{"event":MOD}]).encode("utf-8") cprint("SEND tk_event",msg,color="green") MAIN.cmd_client.send(msg) if MOD in ["RESTART"]: time.sleep(2) exit() ok = 1 if ok: return # NORMAL KEY key_code = {"r":"REC","x":"REC-FX","e":"EDIT","c":"CFG-BTN" ,"m":"MOVE","Delete":"DEL","End":"FX-OFF" ,"Escape":"ESC","s":"SELECT","f":"FLASH" ,"C":"COPY","d":"DEL","b":"BLIND","l":"LABEL" } if 'keysym' in data: keysym = data["keysym"] if keysym in key_code: if "Press" in data['event']: MOD = key_code[keysym] msg=json.dumps([{"event":MOD}]).encode("utf-8") cprint("SEND tk_event",msg,color="green") MAIN.cmd_client.send(msg) ok = 1 cprint("OK",ok) if not ok: libtk.tk_keyboard_callback(event,data=data)