|
|
@@ -0,0 +1,157 @@
|
|
|
+# -*- 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)
|