1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
#!/usr/bin/python3
"""
Simple program to walk through each key, illuminating it red so I can see
what element in the 22 RGB list each key refers to.
"""
import glob
colour_file = glob.glob('/sys/bus/hid/drivers/razerkbd/0*/matrix_custom_frame')[0]
custom_mode = glob.glob('/sys/bus/hid/drivers/razerkbd/0*/matrix_effect_custom')[0]
def clear_row(row_num):
result = bytes([row_num, 0x00, 0x15]) # Results in b'\x00', b'\x01' ...
for i in range(0, 22):
result += b'\x00\x00\x00'
return result
def gen_row(row_num):
result = bytes([row_num, 0, 0x15]) # Results in b'\x00', b'\x01' ...
for i in range(0, 22):
for j in range(0, 22):
if j == i:
result += b'\x00\xFF\x00'
else:
result += b'\x00\x00\x00'
yield result
# Reset result
result = bytes([row_num, 0x00, 0x15])
def write_binarystr(filename, binary_str):
with open(filename, 'wb') as bin_file:
bin_file.write(binary_str)
for i in range(0, 6):
write_binarystr(colour_file, clear_row(i))
write_binarystr(custom_mode, bytes('1', 'ascii'))
for i in range(0, 6):
for key_id, byte_str in enumerate(gen_row(i)):
write_binarystr(colour_file, byte_str)
write_binarystr(custom_mode, bytes('1', 'ascii'))
print("ROW {0}:{1}".format(i, key_id))
input()
write_binarystr(colour_file, clear_row(i))
write_binarystr(custom_mode, bytes('1', 'ascii'))
|