main.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. # -*- coding: utf-8 -*-
  2. # ließ und schreibt RGB Daten für die farbige Tastaturbeleuchtung auf Clevo NL51 Laptops
  3. # Notwendigerweise müssen die Treiber von NovaCustom oder Tuxedo kompiliert und geladen sein
  4. # siehe: https://wiki.siningsoft.de/doku.php?id=terra:1500p
  5. # Kernelmodul: tuxedo_keyboard
  6. # 2026-02-02 - devnull - initial
  7. # 2026-02-03 - devnull - added Brightness restore
  8. ver="0.1"
  9. import os
  10. import sys
  11. import argparse
  12. sysfs_color_fp = '/sys/devices/platform/tuxedo_keyboard/leds/rgb:kbd_backlight/multi_intensity'
  13. sysfs_bri_fp = '/sys/devices/platform/tuxedo_keyboard/leds/rgb:kbd_backlight/brightness'
  14. keep_color_fp = '/var/lib/kbdLED.state'
  15. keep_bri_fp = '/var/lib/kbdBRI.state'
  16. led_color = []
  17. # ließt die zwischengespeicherte Werte vom Dateisystem
  18. def get_Color_Keep(kfp):
  19. if os.access(kfp, os.R_OK):
  20. try:
  21. with open(kfp) as fh:
  22. return fh.read()
  23. except Exception as ex:
  24. print("- fehler beim Öffnen der Status Datei")
  25. else:
  26. print("- kann Datei " + kfp + " nicht zum lesen öffnen, wird später geschrieben")
  27. return "255 255 255"
  28. #schreibe die Haltewerte
  29. def set_Color_Keep(color, kfp):
  30. try:
  31. kfh = open(kfp, 'w')
  32. kfh.write(color)
  33. kfh.close()
  34. except:
  35. print("- Fehler beim Schreiben der Persistenzwerte")
  36. # ließt die aktuellen Werte der Tastaturbeleuchtung
  37. def get_Color_LED(afp):
  38. if os.access(afp, os.R_OK):
  39. try:
  40. with open(afp) as fh:
  41. return fh.read()
  42. except Exception as ex:
  43. print("- fehler beim Öffnen der Sysfs Datei " + afp)
  44. print("- Kernel Modul tuxedo_keybaord geladen ?")
  45. print(ex)
  46. sys.exit(1)
  47. else:
  48. print("- kann Datei " + afp + " nicht zum lesen öffnen, falsche Rechte ?")
  49. sys.exit(1)
  50. # schreibe die Haltewerte
  51. def set_Color_LED(color, afp):
  52. try:
  53. afh = open(afp, 'w')
  54. afh.write(color)
  55. afh.close()
  56. except:
  57. print("- Fehler beim Schreiben der Ist-Werte")
  58. # ließt die zwischengespeicherte Werte vom Dateisystem
  59. def get_Brig_Keep(kfp):
  60. if os.access(kfp, os.R_OK):
  61. try:
  62. with open(kfp) as fh:
  63. return fh.read()
  64. except Exception as ex:
  65. print("- fehler beim Öffnen der Status Datei")
  66. else:
  67. print("- kann Datei " + kfp + " nicht zum lesen öffnen, wird später geschrieben")
  68. return "255"
  69. #schreibe die Haltewerte
  70. def set_Brig_Keep(color, kfp):
  71. try:
  72. kfh = open(kfp, 'w')
  73. kfh.write(color)
  74. kfh.close()
  75. except:
  76. print("- Fehler beim Schreiben der Persistenzwerte")
  77. # ließt die aktuellen Werte der Tastaturbeleuchtung
  78. def get_Brig_LED(afp):
  79. if os.access(afp, os.R_OK):
  80. try:
  81. with open(afp) as fh:
  82. return fh.read()
  83. except Exception as ex:
  84. print("- fehler beim Öffnen der Sysfs Datei " + afp)
  85. print("- Kernel Modul tuxedo_keybaord geladen ?")
  86. print(ex)
  87. sys.exit(1)
  88. else:
  89. print("- kann Datei " + afp + " nicht zum lesen öffnen, falsche Rechte ?")
  90. sys.exit(1)
  91. # schreibe die Haltewerte
  92. def set_Brig_LED(color, afp):
  93. try:
  94. afh = open(afp, 'w')
  95. afh.write(color)
  96. afh.close()
  97. except:
  98. print("- Fehler beim Schreiben der Ist-Werte")
  99. # teilt den Eingabestring in die drei Farben
  100. def splitColor(color:str):
  101. color_array = color.split(' ')
  102. led_R = color_array[0]
  103. led_G = color_array[1]
  104. led_B = color_array[2]
  105. # Press the green button in the gutter to run the script.
  106. if __name__ == '__main__':
  107. parser = argparse.ArgumentParser(
  108. prog='T1500_KeyboardLED',
  109. description='saves and restore LED Colors',
  110. epilog='GPL')
  111. startstop = parser.add_mutually_exclusive_group()
  112. startstop.add_argument('--start', action='store_true', help='will be used for system starts')
  113. startstop.add_argument('--stop', action='store_true', help='will be used for system shutdowns')
  114. startstop.add_argument('--version', action='version', version='%(prog)s ' + ver, default='d')
  115. args = parser.parse_args()
  116. if args.start:
  117. print("Startup set Keyboard Color and Brightness")
  118. set_Color_LED(get_Brig_Keep(keep_color_fp), sysfs_color_fp)
  119. set_Brig_LED(get_Brig_Keep(keep_bri_fp), sysfs_bri_fp)
  120. elif args.stop:
  121. print("Shutdown save Keyboard Color Brightness")
  122. set_Color_Keep(get_Brig_LED(sysfs_color_fp), keep_color_fp)
  123. set_Brig_Keep(get_Brig_LED(sysfs_bri_fp), keep_bri_fp)
  124. sys.exit(0)