# -*- coding: utf-8 -*- # ließ und schreibt RGB Daten für die farbige Tastaturbeleuchtung auf Clevo NL51 Laptops # Notwendigerweise müssen die Treiber von NovaCustom oder Tuxedo kompiliert und geladen sein # siehe: https://wiki.siningsoft.de/doku.php?id=terra:1500p # Kernelmodul: tuxedo_keyboard # 2026-02-02 - devnull - initial # 2026-02-03 - devnull - added Brightness restore ver="0.1" import os import sys import argparse sysfs_color_fp = '/sys/devices/platform/tuxedo_keyboard/leds/rgb:kbd_backlight/multi_intensity' sysfs_bri_fp = '/sys/devices/platform/tuxedo_keyboard/leds/rgb:kbd_backlight/brightness' keep_color_fp = '/var/lib/kbdLED.state' keep_bri_fp = '/var/lib/kbdBRI.state' led_color = [] # ließt die zwischengespeicherte Werte vom Dateisystem def get_Color_Keep(kfp): if os.access(kfp, os.R_OK): try: with open(kfp) as fh: return fh.read() except Exception as ex: print("- fehler beim Öffnen der Status Datei") else: print("- kann Datei " + kfp + " nicht zum lesen öffnen, wird später geschrieben") return "255 255 255" #schreibe die Haltewerte def set_Color_Keep(color, kfp): try: kfh = open(kfp, 'w') kfh.write(color) kfh.close() except: print("- Fehler beim Schreiben der Persistenzwerte") # ließt die aktuellen Werte der Tastaturbeleuchtung def get_Color_LED(afp): if os.access(afp, os.R_OK): try: with open(afp) as fh: return fh.read() except Exception as ex: print("- fehler beim Öffnen der Sysfs Datei " + afp) print("- Kernel Modul tuxedo_keybaord geladen ?") print(ex) sys.exit(1) else: print("- kann Datei " + afp + " nicht zum lesen öffnen, falsche Rechte ?") sys.exit(1) # schreibe die Haltewerte def set_Color_LED(color, afp): try: afh = open(afp, 'w') afh.write(color) afh.close() except: print("- Fehler beim Schreiben der Ist-Werte") # ließt die zwischengespeicherte Werte vom Dateisystem def get_Brig_Keep(kfp): if os.access(kfp, os.R_OK): try: with open(kfp) as fh: return fh.read() except Exception as ex: print("- fehler beim Öffnen der Status Datei") else: print("- kann Datei " + kfp + " nicht zum lesen öffnen, wird später geschrieben") return "255" #schreibe die Haltewerte def set_Brig_Keep(color, kfp): try: kfh = open(kfp, 'w') kfh.write(color) kfh.close() except: print("- Fehler beim Schreiben der Persistenzwerte") # ließt die aktuellen Werte der Tastaturbeleuchtung def get_Brig_LED(afp): if os.access(afp, os.R_OK): try: with open(afp) as fh: return fh.read() except Exception as ex: print("- fehler beim Öffnen der Sysfs Datei " + afp) print("- Kernel Modul tuxedo_keybaord geladen ?") print(ex) sys.exit(1) else: print("- kann Datei " + afp + " nicht zum lesen öffnen, falsche Rechte ?") sys.exit(1) # schreibe die Haltewerte def set_Brig_LED(color, afp): try: afh = open(afp, 'w') afh.write(color) afh.close() except: print("- Fehler beim Schreiben der Ist-Werte") # teilt den Eingabestring in die drei Farben def splitColor(color:str): color_array = color.split(' ') led_R = color_array[0] led_G = color_array[1] led_B = color_array[2] # Press the green button in the gutter to run the script. if __name__ == '__main__': parser = argparse.ArgumentParser( prog='T1500_KeyboardLED', description='saves and restore LED Colors', epilog='GPL') startstop = parser.add_mutually_exclusive_group() startstop.add_argument('--start', action='store_true', help='will be used for system starts') startstop.add_argument('--stop', action='store_true', help='will be used for system shutdowns') startstop.add_argument('--version', action='version', version='%(prog)s ' + ver, default='d') args = parser.parse_args() if args.start: print("Startup set Keyboard Color and Brightness") set_Color_LED(get_Brig_Keep(keep_color_fp), sysfs_color_fp) set_Brig_LED(get_Brig_Keep(keep_bri_fp), sysfs_bri_fp) elif args.stop: print("Shutdown save Keyboard Color Brightness") set_Color_Keep(get_Brig_LED(sysfs_color_fp), keep_color_fp) set_Brig_Keep(get_Brig_LED(sysfs_bri_fp), keep_bri_fp) sys.exit(0)