mirror of
https://github.com/erjiang/huion-keys.git
synced 2026-03-23 21:54:53 +03:00
Commandline argument parsing, udev rules
This commit is contained in:
parent
8a4ebaab82
commit
0c34a77f2a
@ -2,12 +2,12 @@
|
|||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import signal
|
import signal
|
||||||
|
import argparse
|
||||||
import configparser
|
import configparser
|
||||||
|
|
||||||
from _xdo_cffi import ffi, lib
|
from _xdo_cffi import ffi, lib
|
||||||
|
|
||||||
CONFIG_FILE_PATH = os.path.expanduser('~/.config/huion_keys.conf')
|
CONFIG_FILE_PATH = None
|
||||||
CONFIG = configparser.ConfigParser()
|
|
||||||
|
|
||||||
TABLET_MODELS = {
|
TABLET_MODELS = {
|
||||||
"Kamvas Pro (2019)": "256c:006e",
|
"Kamvas Pro (2019)": "256c:006e",
|
||||||
@ -22,6 +22,22 @@ CYCLE_MODES = 1
|
|||||||
DIAL_MODES = {}
|
DIAL_MODES = {}
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
#Commandline arguments processing
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description='Linux utility to create custom key bindings for the Huion Kamvas Pro (2019), Inspiroy Q620M, and potentially other tablets.')
|
||||||
|
parser.add_argument('--rules', action='store_true', default=False,
|
||||||
|
help='print out the udev rules for known tablets and exit')
|
||||||
|
parser.add_argument('-c', '--config', type=str, default='~/.config/huion_keys.conf',
|
||||||
|
help='location of config file, ~/.config/huion_keys.conf by default')
|
||||||
|
args = parser.parse_args()
|
||||||
|
if args.rules:
|
||||||
|
make_rules()
|
||||||
|
os._exit(0)
|
||||||
|
|
||||||
|
global CONFIG_FILE_PATH
|
||||||
|
#TODO: respect XDG_CONFIG_HOME
|
||||||
|
CONFIG_FILE_PATH = os.path.expanduser(args.config)
|
||||||
|
|
||||||
global CYCLE_MODES, CYCLE_MODE, CYCLE_BUTTON
|
global CYCLE_MODES, CYCLE_MODE, CYCLE_BUTTON
|
||||||
xdo = lib.xdo_new(ffi.NULL)
|
xdo = lib.xdo_new(ffi.NULL)
|
||||||
if os.path.isfile(CONFIG_FILE_PATH):
|
if os.path.isfile(CONFIG_FILE_PATH):
|
||||||
@ -98,6 +114,7 @@ def get_tablet_hidraw(device_id):
|
|||||||
|
|
||||||
def read_config(config_file):
|
def read_config(config_file):
|
||||||
global CYCLE_MODES, CYCLE_MODE, CYCLE_BUTTON
|
global CYCLE_MODES, CYCLE_MODE, CYCLE_BUTTON
|
||||||
|
CONFIG = configparser.ConfigParser()
|
||||||
CONFIG.read(config_file)
|
CONFIG.read(config_file)
|
||||||
# It is still better for performance to pre-encode these values
|
# It is still better for performance to pre-encode these values
|
||||||
for binding in CONFIG['Bindings']:
|
for binding in CONFIG['Bindings']:
|
||||||
@ -143,6 +160,12 @@ def handle_reload_signal(signum, frame):
|
|||||||
print("SIGUSR1 recieved - reloading config..")
|
print("SIGUSR1 recieved - reloading config..")
|
||||||
read_config(CONFIG_FILE_PATH)
|
read_config(CONFIG_FILE_PATH)
|
||||||
|
|
||||||
|
def make_rules():
|
||||||
|
for device_name, device_id in TABLET_MODELS.items():
|
||||||
|
print("# %s" % (device_name, ))
|
||||||
|
VID, PID = device_id.split(':')
|
||||||
|
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("""
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user