Browse Source

add --threshold, toss old variables

master
evan 6 years ago
parent
commit
5d88a678d9
  1. 61
      remarkable_mouse/remarkable_mouse.py

61
remarkable_mouse/remarkable_mouse.py

@ -12,19 +12,24 @@ import paramiko
from screeninfo import get_monitors from screeninfo import get_monitors
from pynput.mouse import Button, Controller from pynput.mouse import Button, Controller
# EVTYPE_SYNC = 0 # evtype_sync = 0
# EVTYPE_KEY = 1 # evtype_key = 1
EVTYPE_ABS = 3 e_type_abs = 3
# WACOM_EVCODE_DISTANCE = 25 # evcode_stylus_distance = 25
# WACOM_EVCODE_XTILT = 26 # evcode_stylus_xtilt = 26
# WACOM_EVCODE_YTILT = 27 # evcode_stylus_ytilt = 27
EVCODE_STYLUS_PRESSURE = 24 e_code_stylus_xpos = 1
EVCODE_STYLUS_XPOS = 0 e_code_stylus_ypos = 0
EVCODE_STYLUS_YPOS = 1 e_code_stylus_pressure = 24
# evcode_finger_xpos = 53
wacom_width = 15725 # evcode_finger_ypos = 54
wacom_height = 20951 # evcode_finger_pressure = 58
stylus_width = 15725
stylus_height = 20951
# finger_width = 767
# finger_height = 1023
mouse = Controller() mouse = Controller()
logging.basicConfig(format='%(message)s') logging.basicConfig(format='%(message)s')
@ -32,23 +37,23 @@ log = logging.getLogger(__name__)
# remap wacom coordinates in various orientations # remap wacom coordinates in various orientations
def fit(x, y, wacom_width, wacom_height, monitor, orientation): def fit(x, y, stylus_width, stylus_height, monitor, orientation):
if orientation == 'vertical': if orientation == 'vertical':
y = wacom_height - y y = stylus_height - y
elif orientation == 'right': elif orientation == 'right':
x, y = y, x x, y = y, x
wacom_width, wacom_height = wacom_height, wacom_width stylus_width, stylus_height = stylus_height, stylus_width
elif orientation == 'left': elif orientation == 'left':
x, y = wacom_height - y, wacom_width - x x, y = stylus_height - y, stylus_width - x
wacom_width, wacom_height = wacom_height, wacom_width stylus_width, stylus_height = stylus_height, stylus_width
ratio_width, ratio_height = monitor.width / wacom_width, monitor.height / wacom_height ratio_width, ratio_height = monitor.width / stylus_width, monitor.height / stylus_height
scaling = ratio_width if ratio_width > ratio_height else ratio_height scaling = ratio_width if ratio_width > ratio_height else ratio_height
return ( return (
scaling * (x - (wacom_width - monitor.width / scaling) / 2), scaling * (x - (stylus_width - monitor.width / scaling) / 2),
scaling * (y - (wacom_height - monitor.height / scaling) / 2) scaling * (y - (stylus_height - monitor.height / scaling) / 2)
) )
@ -103,22 +108,22 @@ def read_tablet(args):
while True: while True:
_, _, e_type, e_code, e_value = struct.unpack('2IHHi', stdout.read(16)) _, _, e_type, e_code, e_value = struct.unpack('2IHHi', stdout.read(16))
if e_type == EVTYPE_ABS: if e_type == e_type_abs:
# handle x direction # handle x direction
if e_code == WACOM_EVCODE_YPOS: if e_code == e_code_stylus_xpos:
log.debug(f'{e_value}') log.debug(f'{e_value}')
x = e_value x = e_value
new_x = True new_x = True
# handle y direction # handle y direction
if e_code == WACOM_EVCODE_XPOS: if e_code == e_code_stylus_ypos:
log.debug(f'\t{e_value}') log.debug(f'\t{e_value}')
y = e_value y = e_value
new_y = True new_y = True
# handle draw # handle draw
if e_code == WACOM_EVCODE_PRESSURE: if e_code == e_code_stylus_pressure:
log.debug(f'\t\t{e_value}') log.debug(f'\t\t{e_value}')
if e_value > args.threshold: if e_value > args.threshold:
mouse.press(Button.left) mouse.press(Button.left)
@ -127,10 +132,10 @@ def read_tablet(args):
# only move when x and y are updated for smoother mouse # only move when x and y are updated for smoother mouse
if new_x and new_y: if new_x and new_y:
x, y = fit(x, y, wacom_width, wacom_height, monitor, args.orientation) mapped_x, mapped_y = fit(x, y, stylus_width, stylus_height, monitor, args.orientation)
mouse.move( mouse.move(
monitor.x + x - mouse.position[0], monitor.x + mapped_x - mouse.position[0],
monitor.y + y - mouse.position[1] monitor.y + mapped_y - mouse.position[1]
) )
new_x = new_y = False new_x = new_y = False

Loading…
Cancel
Save