You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.5 KiB
58 lines
1.5 KiB
#! /bin/python3 |
|
import sys |
|
import time |
|
import signal |
|
from openrazer_command import Keyboard, Color |
|
from evdev import InputDevice, ecodes |
|
|
|
class GracefulKiller: |
|
kill_now = False |
|
def __init__(self): |
|
signal.signal(signal.SIGINT, self.exit_gracefully) |
|
signal.signal(signal.SIGTERM, self.exit_gracefully) |
|
|
|
def exit_gracefully(self,signum, frame): |
|
self.kill_now = True |
|
|
|
keyboard = Keyboard() |
|
|
|
if not keyboard.found_keyboard(): |
|
print("No keyboard was found") |
|
exit() |
|
|
|
def redraw(capslock_enabled, numlock_enabled): |
|
keyboard.set_static(Color(0,100,0)) |
|
|
|
if capslock_enabled: |
|
keyboard.set_keys(Color(255,255,255), 'caps_lock') |
|
|
|
if numlock_enabled: |
|
keyboard.set_keys(Color(255,255,255), 'num_lock') |
|
|
|
keyboard.draw() |
|
|
|
def daemon(): |
|
device = InputDevice('/dev/input/by-id/usb-Razer_Razer_BlackWidow_Chroma_V2-event-kbd') |
|
capslock_enabled = False |
|
numlock_enabled = False |
|
killer = GracefulKiller() |
|
|
|
while not killer.kill_now: |
|
update = False |
|
|
|
capslock_previous = capslock_enabled |
|
numlock_previous = numlock_enabled |
|
leds = device.leds() |
|
capslock_enabled = 1 in leds |
|
numlock_enabled = 0 in leds |
|
if capslock_previous != capslock_enabled or numlock_previous != numlock_enabled: |
|
update = True |
|
|
|
if update: |
|
redraw(capslock_enabled, numlock_enabled) |
|
|
|
time.sleep(.1) |
|
sys.exit(0) |
|
|
|
if __name__=='__main__': |
|
daemon()
|
|
|