Fixed XDO not working

General cleanup in accordance with pep8
This commit is contained in:
NeoTheFox 2021-04-18 23:45:25 +03:00
parent 611621d4ab
commit 5d3f0778f1

View File

@ -31,6 +31,7 @@ BUTTON_BITS = {
0x80: 8, 0x80: 8,
} }
def main(): def main():
# Commandline arguments processing # Commandline arguments processing
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
@ -66,7 +67,6 @@ def main():
hidraw_path = get_tablet_hidraw(device_id) hidraw_path = get_tablet_hidraw(device_id)
if hidraw_path is not None: if hidraw_path is not None:
hidraw_paths = hidraw_paths + hidraw_path hidraw_paths = hidraw_paths + hidraw_path
if hidraw_paths: if hidraw_paths:
print("Found %s at %s" % (device_name, hidraw_paths)) print("Found %s at %s" % (device_name, hidraw_paths))
break break
@ -85,14 +85,14 @@ def main():
for thread in threads: for thread in threads:
thread.join() thread.join()
class PollThread(threading.Thread): class PollThread(threading.Thread):
cycle_mode = None cycle_mode = None
scroll_state = None
hidraw_path = None hidraw_path = None
xdo = None xdo = None
SCROLL_STATE=None
def __init__(self, hidraw_path): def __init__(self, hidraw_path):
super(PollThread, self).__init__() super(PollThread, self).__init__()
self.xdo = lib.xdo_new(ffi.NULL) self.xdo = lib.xdo_new(ffi.NULL)
@ -119,8 +119,6 @@ class PollThread(threading.Thread):
time.sleep(3) time.sleep(3)
break break
print("Got button %s" % (btn,)) print("Got button %s" % (btn,))
print(CYCLE_MODES)
print(self.cycle_mode)
if btn == CYCLE_BUTTON and CYCLE_BUTTON is not None: if btn == CYCLE_BUTTON and CYCLE_BUTTON is not None:
self.cycle_mode = self.cycle_mode + 1 self.cycle_mode = self.cycle_mode + 1
if self.cycle_mode > CYCLE_MODES: if self.cycle_mode > CYCLE_MODES:
@ -163,18 +161,18 @@ class PollThread(threading.Thread):
scroll_pos = sequence[5] scroll_pos = sequence[5]
if scroll_pos == 0: if scroll_pos == 0:
# reset scroll state after lifting finger off scroll strip # reset scroll state after lifting finger off scroll strip
self.SCROLL_STATE = None self.scroll_state = None
elif self.SCROLL_STATE is not None: elif self.scroll_state is not None:
# scroll strip is numbered from top to bottom so a greater new # scroll strip is numbered from top to bottom so a greater new
# value means they scrolled down # value means they scrolled down
if scroll_pos > self.SCROLL_STATE: if scroll_pos > self.scroll_state:
self.SCROLL_STATE = scroll_pos self.scroll_state = scroll_pos
return 'scroll_down' return 'scroll_down'
elif scroll_pos < self.SCROLL_STATE: elif scroll_pos < self.scroll_state:
self.SCROLL_STATE = scroll_pos self.scroll_state = scroll_pos
return 'scroll_up' return 'scroll_up'
else: else:
self.SCROLL_STATE = scroll_pos self.scroll_state = scroll_pos
continue continue
elif sequence[1] == 0xf1: # dial on Q620M, practically 2 buttons elif sequence[1] == 0xf1: # dial on Q620M, practically 2 buttons
if sequence[5] == 0x1: if sequence[5] == 0x1:
@ -190,11 +188,12 @@ class PollThread(threading.Thread):
if sequence[1] == 0xe0 and sequence[4] == 0 and sequence[5] == 0: if sequence[1] == 0xe0 and sequence[4] == 0 and sequence[5] == 0:
return True return True
def get_tablet_hidraw(device_id): def get_tablet_hidraw(device_id):
"""Finds the /dev/hidrawX file or files that belong to the given device ID (in xxxx:xxxx format).""" """Finds the /dev/hidrawX file or files that belong to the given device ID (in xxxx:xxxx format)."""
# TODO: is this too fragile? # TODO: is this too fragile?
hidraws = os.listdir('/sys/class/hidraw') hidraws = os.listdir('/sys/class/hidraw')
inputs = []; inputs = []
for h in hidraws: for h in hidraws:
device_path = os.readlink(os.path.join('/sys/class/hidraw', h, 'device')) device_path = os.readlink(os.path.join('/sys/class/hidraw', h, 'device'))
if device_id.upper() in device_path: if device_id.upper() in device_path:
@ -251,12 +250,14 @@ def read_config(config_file):
for binding in CONFIG[key]: for binding in CONFIG[key]:
DIAL_MODES[mode][binding] = CONFIG[key][binding].encode('utf-8') DIAL_MODES[mode][binding] = CONFIG[key][binding].encode('utf-8')
def make_rules(): def make_rules():
for device_name, device_id in TABLET_MODELS.items(): for device_name, device_id in TABLET_MODELS.items():
print("# %s" % (device_name, )) print("# %s" % (device_name, ))
VID, PID = device_id.split(':') VID, PID = device_id.split(':')
print('KERNEL=="hidraw*", ATTRS{idVendor}=="%s", ATTRS{idProduct}=="%s", MODE="0660", TAG+="uaccess"' % (VID, PID, )) print('KERNEL=="hidraw*", ATTRS{idVendor}=="%s", ATTRS{idProduct}=="%s", MODE="0660", TAG+="uaccess"' % (VID, PID, ))
def create_default_config(config_file): def create_default_config(config_file):
with open(config_file, 'w') as config: with open(config_file, 'w') as config:
config.write(""" config.write("""
@ -286,5 +287,6 @@ dial_cw=minus
dial_ccw=equal dial_ccw=equal
""") """)
if __name__ == "__main__": if __name__ == "__main__":
main() main()