ps2 keyboard led working on lichee

This commit is contained in:
dekunukem
2021-10-26 09:36:56 +01:00
parent dd4559f233
commit 6e90b84d53
4 changed files with 39 additions and 22 deletions

View File

@@ -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')

View File

@@ -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

View File

@@ -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):

View File

@@ -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('----')