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.
59 lines
1.5 KiB
59 lines
1.5 KiB
4 years ago
|
#! /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()
|