add --threshold, toss old variables
This commit is contained in:
@@ -12,19 +12,24 @@ import paramiko
|
||||
from screeninfo import get_monitors
|
||||
from pynput.mouse import Button, Controller
|
||||
|
||||
# EVTYPE_SYNC = 0
|
||||
# EVTYPE_KEY = 1
|
||||
EVTYPE_ABS = 3
|
||||
# evtype_sync = 0
|
||||
# evtype_key = 1
|
||||
e_type_abs = 3
|
||||
|
||||
# WACOM_EVCODE_DISTANCE = 25
|
||||
# WACOM_EVCODE_XTILT = 26
|
||||
# WACOM_EVCODE_YTILT = 27
|
||||
EVCODE_STYLUS_PRESSURE = 24
|
||||
EVCODE_STYLUS_XPOS = 0
|
||||
EVCODE_STYLUS_YPOS = 1
|
||||
# evcode_stylus_distance = 25
|
||||
# evcode_stylus_xtilt = 26
|
||||
# evcode_stylus_ytilt = 27
|
||||
e_code_stylus_xpos = 1
|
||||
e_code_stylus_ypos = 0
|
||||
e_code_stylus_pressure = 24
|
||||
# evcode_finger_xpos = 53
|
||||
# evcode_finger_ypos = 54
|
||||
# evcode_finger_pressure = 58
|
||||
|
||||
wacom_width = 15725
|
||||
wacom_height = 20951
|
||||
stylus_width = 15725
|
||||
stylus_height = 20951
|
||||
# finger_width = 767
|
||||
# finger_height = 1023
|
||||
|
||||
mouse = Controller()
|
||||
logging.basicConfig(format='%(message)s')
|
||||
@@ -32,23 +37,23 @@ log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# 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':
|
||||
y = wacom_height - y
|
||||
y = stylus_height - y
|
||||
elif orientation == 'right':
|
||||
x, y = y, x
|
||||
wacom_width, wacom_height = wacom_height, wacom_width
|
||||
stylus_width, stylus_height = stylus_height, stylus_width
|
||||
elif orientation == 'left':
|
||||
x, y = wacom_height - y, wacom_width - x
|
||||
wacom_width, wacom_height = wacom_height, wacom_width
|
||||
x, y = stylus_height - y, stylus_width - x
|
||||
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
|
||||
|
||||
return (
|
||||
scaling * (x - (wacom_width - monitor.width / scaling) / 2),
|
||||
scaling * (y - (wacom_height - monitor.height / scaling) / 2)
|
||||
scaling * (x - (stylus_width - monitor.width / scaling) / 2),
|
||||
scaling * (y - (stylus_height - monitor.height / scaling) / 2)
|
||||
)
|
||||
|
||||
|
||||
@@ -103,22 +108,22 @@ def read_tablet(args):
|
||||
while True:
|
||||
_, _, 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
|
||||
if e_code == WACOM_EVCODE_YPOS:
|
||||
if e_code == e_code_stylus_xpos:
|
||||
log.debug(f'{e_value}')
|
||||
x = e_value
|
||||
new_x = True
|
||||
|
||||
# handle y direction
|
||||
if e_code == WACOM_EVCODE_XPOS:
|
||||
if e_code == e_code_stylus_ypos:
|
||||
log.debug(f'\t{e_value}')
|
||||
y = e_value
|
||||
new_y = True
|
||||
|
||||
# handle draw
|
||||
if e_code == WACOM_EVCODE_PRESSURE:
|
||||
if e_code == e_code_stylus_pressure:
|
||||
log.debug(f'\t\t{e_value}')
|
||||
if e_value > args.threshold:
|
||||
mouse.press(Button.left)
|
||||
@@ -127,10 +132,10 @@ def read_tablet(args):
|
||||
|
||||
# only move when x and y are updated for smoother mouse
|
||||
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(
|
||||
monitor.x + x - mouse.position[0],
|
||||
monitor.y + y - mouse.position[1]
|
||||
monitor.x + mapped_x - mouse.position[0],
|
||||
monitor.y + mapped_y - mouse.position[1]
|
||||
)
|
||||
new_x = new_y = False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user