#!/usr/bin/env python3 # Set Huion H430P parameters from saved profiles using xsetwacom # Driver: https://github.com/DIGImend/digimend-kernel-drivers # # Write your config into ~/.config/huion-tablet-yml # Example: # # presets: # my-preset: # screen: DP2-2 # area: 0 0 24384 15240 # buttons: # pad: # 1: key Ctrl Z # 2: key Ctrl Shift Z # 3: key + # 8: key - # then run huion-tablet.py my-preset from subprocess import run import argparse import os.path import yaml def set_parameter(device, *args): if device == 'stylus': device = 'HUION Huion Tablet Pen stylus' elif device == 'pad': device = 'HUION Huion Tablet Pad pad' args = map(str, args) run(['xsetwacom', 'set', device, *args], check=True) parser = argparse.ArgumentParser(description='setup huion h430p tablet') parser.add_argument('--area', type=str, default='') parser.add_argument('--screen', type=str, default='') parser.add_argument('preset', metavar='PRESET', type=str, nargs='?', help='a preset') args = parser.parse_args() area = '0 0 24384 15240' screen = '' if args.preset is not None: with open(os.path.expanduser('~/.config/huion-tablet.yml'), 'r') as f: config = yaml.load(f, Loader=yaml.SafeLoader) preset = config['presets'][args.preset] area = preset['area'] screen = preset['screen'] if 'buttons' in preset: for device in preset['buttons']: for button, mapping in preset['buttons'][device].items(): set_parameter(device, 'button', button, *str(mapping).split(' ')) if args.area != '': area = args.area if args.screen != '': screen = args.screen area = tuple(map(int, area.split(' '))) set_parameter('stylus', 'Area', ' '.join(map(str, area))) set_parameter('stylus', 'MapToOutput', screen)