From 88c4f8482fa00320024a9b53629d0b39eab96484 Mon Sep 17 00:00:00 2001 From: Shinyzenith Date: Thu, 9 Dec 2021 00:53:41 +0530 Subject: [PATCH] initial testing, not ready for production --- .gitignore | 1 + swhkd.py | 42 ++++++++++++++++++++++++++++++++++++++++++ utils.py | 19 +++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 .gitignore create mode 100755 swhkd.py create mode 100755 utils.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bee8a64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/swhkd.py b/swhkd.py new file mode 100755 index 0000000..7c41fc5 --- /dev/null +++ b/swhkd.py @@ -0,0 +1,42 @@ +#!/usr/bin/python3 +from utils import SWHKD_UTILS +import grp +import pwd +import getpass +import libevdev +import sys + +class SWHKD: + """ + Main Class. + """ + def __init__(self): + self.utils = SWHKD_UTILS() + self.user = getpass.getuser() + + def run_swhkd(self): + + groups = [g.gr_name for g in grp.getgrall() if self.user in g.gr_mem] + gid = pwd.getpwnam(self.user).pw_gid + groups.append(grp.getgrgid(gid).gr_name) + for group in groups: + if group.lower() == "input": + self.utils.log_info("User is in input group, proceeding.") + break; + + fd = open('/dev/input/event7','rb') + device = libevdev.Device(fd) + if not device.has(libevdev.EV_KEY.BTN_LEFT): + print('This does not look like a mouse device') + sys.exit(0) + + while True: + for event in device.events(): + if not event.matches(libevdev.EV_KEY): + continue + if event.matches(libevdev.EV_KEY.BTN_LEFT): + print('Left button event') + elif event.matches(libevdev.EV_KEY.BTN_RIGHT): + print('Right button event') + +SWHKD().run_swhkd() diff --git a/utils.py b/utils.py new file mode 100755 index 0000000..8459aef --- /dev/null +++ b/utils.py @@ -0,0 +1,19 @@ +class SWHKD_UTILS(): + """ + Helper Functions. + """ + def __init__(self): + self.COLOR_RED="\033[1;31m" + self.COLOR_GREEN="\033[1;32m" + self.COLOR_YELLOW="\033[1;33m" + self.COLOR_BLUE="\033[1;34m" + self.COLOR_RESET="\033[0m" + + def log_info(self, message:str): + print(f"{self.COLOR_GREEN}INFO:{self.COLOR_RESET} {message}") + + def log_error(self, message:str): + print(f"{self.COLOR_RED}ERROR:{self.COLOR_RESET} {message}") + + def log_warn(self, message:str): + print(f"{self.COLOR_YELLOW}WARN:{self.COLOR_RESET} {message}")