mirror of
https://github.com/dekuNukem/USB4VC.git
synced 2025-10-31 11:26:46 -07:00
ps2 keyboard led working on lichee
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import select
|
||||
|
||||
gpio_path = "/sys/class/gpio/gpio16/value"
|
||||
gpio_path = "/sys/class/gpio/gpio131/value"
|
||||
|
||||
gpio_file = open(gpio_path, 'rb')
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
echo 16 > /sys/class/gpio/export
|
||||
echo in > /sys/class/gpio/gpio16/direction
|
||||
echo rising > /sys/class/gpio/gpio16/edge
|
||||
# to see list of all interrupts
|
||||
# cat /proc/interrupts
|
||||
echo 131 > /sys/class/gpio/unexport
|
||||
cat /proc/interrupts
|
||||
echo 131 > /sys/class/gpio/export
|
||||
echo in > /sys/class/gpio/gpio131/direction
|
||||
echo rising > /sys/class/gpio/gpio131/edge
|
||||
cat /proc/interrupts
|
||||
|
||||
@@ -1,3 +1,21 @@
|
||||
for item in scrolllock_list:
|
||||
if ps2kb_led_byte & 0x1:
|
||||
os.system("sudo bash -c 'echo 1 > " + os.path.join(item, 'brightness') + "'")
|
||||
else:
|
||||
os.system("sudo bash -c 'echo 0 > " + os.path.join(item, 'brightness') + "'")
|
||||
|
||||
for item in numlock_list:
|
||||
if ps2kb_led_byte & 0x2:
|
||||
os.system("sudo bash -c 'echo 1 > " + os.path.join(item, 'brightness') + "'")
|
||||
else:
|
||||
os.system("sudo bash -c 'echo 0 > " + os.path.join(item, 'brightness') + "'")
|
||||
|
||||
for item in capslock_list:
|
||||
if ps2kb_led_byte & 0x4:
|
||||
os.system("sudo bash -c 'echo 1 > " + os.path.join(item, 'brightness') + "'")
|
||||
else:
|
||||
os.system("sudo bash -c 'echo 0 > " + os.path.join(item, 'brightness') + "'")
|
||||
|
||||
if slave_result[SPI_BUF_INDEX_MAGIC] == SPI_MISO_MAGIC and slave_result[SPI_BUF_INDEX_MSG_TYPE] == SPI_MISO_MSG_KB_LED_REQ:
|
||||
print("good!", slave_result[3])
|
||||
for x in range(2):
|
||||
|
||||
@@ -10,16 +10,21 @@ with open('/etc/os-release') as os_version_file:
|
||||
is_on_raspberry_pi = 'raspbian' in os_version_file.read().lower()
|
||||
|
||||
spi = None
|
||||
gpio_file = None
|
||||
|
||||
if is_on_raspberry_pi:
|
||||
spi = spidev.SpiDev(0, 0) # rasp
|
||||
print("I'm on Raspberry Pi!")
|
||||
os.system("echo 16 > /sys/class/gpio/export")
|
||||
os.system("echo in > /sys/class/gpio/gpio16/direction")
|
||||
os.system("echo rising > /sys/class/gpio/gpio16/edge")
|
||||
gpio_file = open("/sys/class/gpio/gpio16/value", 'rb')
|
||||
print("GPIO init done")
|
||||
else:
|
||||
spi = spidev.SpiDev(1, 0) # lichee
|
||||
print("I'm on custom board!")
|
||||
print("DONT FORGET TO RUN gpio_setup.sh!")
|
||||
gpio_file = open("/sys/class/gpio/gpio131/value", 'rb')
|
||||
|
||||
spi.max_speed_hz = 2000000
|
||||
|
||||
@@ -27,7 +32,6 @@ keyboard_opened_device_dict = {}
|
||||
mouse_opened_device_dict = {}
|
||||
gamepad_opened_device_dict = {}
|
||||
|
||||
gpio_file = open("/sys/class/gpio/gpio16/value", 'rb')
|
||||
|
||||
epoll = select.epoll()
|
||||
epoll.register(gpio_file, select.EPOLLET)
|
||||
@@ -77,6 +81,11 @@ def make_spi_msg_ack():
|
||||
|
||||
led_device_path = '/sys/class/leds'
|
||||
|
||||
def get_01(value):
|
||||
if value:
|
||||
return 1
|
||||
return 0
|
||||
|
||||
def change_kb_led(ps2kb_led_byte):
|
||||
led_file_list = os.listdir(led_device_path)
|
||||
capslock_list = [os.path.join(led_device_path, x) for x in led_file_list if 'capslock' in x]
|
||||
@@ -84,24 +93,13 @@ def change_kb_led(ps2kb_led_byte):
|
||||
scrolllock_list = [os.path.join(led_device_path, x) for x in led_file_list if 'scrolllock' in x]
|
||||
|
||||
for item in scrolllock_list:
|
||||
if ps2kb_led_byte & 0x1:
|
||||
os.system("sudo bash -c 'echo 1 > " + os.path.join(item, 'brightness') + "'")
|
||||
else:
|
||||
os.system("sudo bash -c 'echo 0 > " + os.path.join(item, 'brightness') + "'")
|
||||
os.system(f"echo {get_01(ps2kb_led_byte & 0x1)} > {os.path.join(item, 'brightness')}")
|
||||
|
||||
for item in numlock_list:
|
||||
if ps2kb_led_byte & 0x2:
|
||||
os.system("sudo bash -c 'echo 1 > " + os.path.join(item, 'brightness') + "'")
|
||||
else:
|
||||
os.system("sudo bash -c 'echo 0 > " + os.path.join(item, 'brightness') + "'")
|
||||
os.system(f"echo {get_01(ps2kb_led_byte & 0x2)} > {os.path.join(item, 'brightness')}")
|
||||
|
||||
for item in capslock_list:
|
||||
if ps2kb_led_byte & 0x4:
|
||||
os.system("sudo bash -c 'echo 1 > " + os.path.join(item, 'brightness') + "'")
|
||||
else:
|
||||
os.system("sudo bash -c 'echo 0 > " + os.path.join(item, 'brightness') + "'")
|
||||
|
||||
# print(capslock_list, numlock_list, scrolllock_list)
|
||||
os.system(f"echo {get_01(ps2kb_led_byte & 0x4)} > {os.path.join(item, 'brightness')}")
|
||||
|
||||
def raw_input_event_worker():
|
||||
print("raw_input_event_parser_thread started")
|
||||
@@ -121,7 +119,7 @@ def raw_input_event_worker():
|
||||
to_transfer = keyboard_spi_msg_header + data + [0]*20
|
||||
to_transfer[3] = keyboard_opened_device_dict[key][1]
|
||||
spi.xfer(to_transfer)
|
||||
print(time.time(), 'sent')
|
||||
# print(time.time(), 'sent')
|
||||
# print(key)
|
||||
# print(to_transfer)
|
||||
# print('----')
|
||||
|
||||
Reference in New Issue
Block a user