From f7c9a960211da92336e64285802922ad736b8c7c Mon Sep 17 00:00:00 2001 From: Takumi Sueda Date: Sun, 3 Jan 2021 03:54:15 +0900 Subject: [PATCH] Add read_keys.py --- README.md | 2 ++ read_keys.py | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 read_keys.py diff --git a/README.md b/README.md index 2e9ff57..b1da604 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ + - [read_keys.py](read_keys.py) Initialize the keyboard MCU and poll key code + ### License diff --git a/read_keys.py b/read_keys.py new file mode 100644 index 0000000..2631512 --- /dev/null +++ b/read_keys.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 + +import smbus # install python3-smbus with apt +import time + + +i2c = smbus.SMBus(1) +addr = 0x28 + + +def read(reg): + v = i2c.read_byte_data(addr, reg) + print(f"Read b {reg:#04x} = {v:#04x}") + return v + + +def readw(reg): + v = i2c.read_word_data(addr, reg) + #print(f"Read w {reg:#04x} = {v:#06x}") + return v & 0x00ff, (v & 0xff00) >> 8 + + +def write(reg, v): + i2c.write_byte_data(addr, reg, v) + print(f"Write b {reg:#04x} = {v:#06x}") + + +def setup(): + read(0x00) + read(0x0a) + read(0x01) + + read(0x40) + read(0x41) + read(0x48) + + read(0x00) + readw(0x04) + read(0x01) + read(0x0a) + read(0x00) + read(0x0a) + read(0x01) + write(0x88, 0x08) + write(0x82, 0x05) + + read(0x00) + read(0x0a) + + write(0x82, 0x02) + write(0x82, 0x03) + + +def read_keys(): + keys = [] + n, key = readw(0x04) + if key == 0x00: + return + + keys.append(key) + + additional = n // 2 + for i in range(additional): + k1, k2 = readw(0x04) + keys.append(k1) + if i == additional-1 and n % 2 == 1: + keys.append(k2) + + print(f"N = {n:#04x}") + + keys = [f"{key:#04x}" for key in keys] + print(f"Keys = {', '.join(keys)}") + + +setup() +while True: + time.sleep(0.1) + read_keys()