Browse Source

add --threshold, toss old variables

master
evan 5 years ago
parent
commit
b936c89cc2
  1. 39
      remarkable_mouse/remarkable_mouse.py

39
remarkable_mouse/remarkable_mouse.py

@ -12,22 +12,19 @@ import paramiko @@ -12,22 +12,19 @@ import paramiko
from screeninfo import get_monitors
from pynput.mouse import Button, Controller
EV_SYNC = 0
EV_KEY = 1
EV_ABS = 3
# EVTYPE_SYNC = 0
# EVTYPE_KEY = 1
EVTYPE_ABS = 3
WACOM_EVCODE_PRESSURE = 24
WACOM_EVCODE_DISTANCE = 25
WACOM_EVCODE_XTILT = 26
WACOM_EVCODE_YTILT = 27
WACOM_EVCODE_XPOS = 0
WACOM_EVCODE_YPOS = 1
# WACOM_EVCODE_DISTANCE = 25
# WACOM_EVCODE_XTILT = 26
# WACOM_EVCODE_YTILT = 27
EVCODE_STYLUS_PRESSURE = 24
EVCODE_STYLUS_XPOS = 0
EVCODE_STYLUS_YPOS = 1
wacom_width = 15725
wacom_height = 20951
wacom_click_pressure_min = 1000
screen_width = 675
screen_height = 900
mouse = Controller()
logging.basicConfig(format='%(message)s')
@ -96,7 +93,6 @@ def open_eventfile(args): @@ -96,7 +93,6 @@ def open_eventfile(args):
def read_tablet(args):
"""Loop forever and map evdev events to mouse"""
updates_since_pressure = 0
new_x = new_y = False
monitor = get_monitors()[args.monitor]
@ -107,38 +103,28 @@ def read_tablet(args): @@ -107,38 +103,28 @@ def read_tablet(args):
while True:
_, _, e_type, e_code, e_value = struct.unpack('2IHHi', stdout.read(16))
if e_type == EV_ABS:
if e_type == EVTYPE_ABS:
# handle x direction
if e_code == WACOM_EVCODE_YPOS:
log.debug(f'{e_value}')
x = e_value
new_x = True
updates_since_pressure += 1
# handle y direction
if e_code == WACOM_EVCODE_XPOS:
log.debug(f'\t{e_value}')
updates_since_pressure += 1
y = e_value
new_y = True
# handle draw
if e_code == WACOM_EVCODE_PRESSURE:
log.debug(f'\t\t{e_value}')
updates_since_pressure = 0
if e_value > 1000:
if e_value > args.threshold:
mouse.press(Button.left)
else:
mouse.release(Button.left)
# FIXME: bug
# sometimes the last detected pressure is above threshold
# make sure pen doesnt get stuck down
if updates_since_pressure > 8:
updates_since_pressure = 0
mouse.release(Button.left)
# 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)
@ -146,7 +132,6 @@ def read_tablet(args): @@ -146,7 +132,6 @@ def read_tablet(args):
monitor.x + x - mouse.position[0],
monitor.y + y - mouse.position[1]
)
count = 0
new_x = new_y = False
def main():
@ -160,6 +145,8 @@ def main(): @@ -160,6 +145,8 @@ def main():
parser.add_argument('--key', type=str, metavar='PATH', help="ssh private key")
parser.add_argument('--password', default=None, type=str, help="ssh password")
parser.add_argument('--address', default='10.11.99.1', type=str, help="device address")
parser.add_argument('--threshold', default=1000, type=int, help="stylus pressure threshold (default 1000)")
args = parser.parse_args()
if args.debug:

Loading…
Cancel
Save