mirror of
https://github.com/brain-hackers/lab
synced 2025-03-07 08:50:04 +09:00
add SH3 key scanner
This commit is contained in:
parent
e501a574a9
commit
e7d67d4e8d
@ -3,7 +3,7 @@
|
||||
<img src="/the_rookie.jpg">
|
||||
|
||||
- [read_keys.py](read_keys.py) Initialize the keyboard MCU and poll key code
|
||||
|
||||
- [read_keys_SH3.py](read_keys_SH3.py) Scan key matrix and return key name
|
||||
|
||||
### License
|
||||
|
||||
|
181
read_keys_SH3.py
Normal file
181
read_keys_SH3.py
Normal file
@ -0,0 +1,181 @@
|
||||
import gpio #https://github.com/vitiral/gpio
|
||||
import time
|
||||
|
||||
def setup():
|
||||
#Bank2 Pin16~PIN21
|
||||
gpio.setup(80,gpio.OUT)
|
||||
gpio.setup(81,gpio.OUT)
|
||||
gpio.setup(82,gpio.OUT)
|
||||
gpio.setup(83,gpio.OUT)
|
||||
gpio.setup(84,gpio.OUT)
|
||||
gpio.setup(85,gpio.OUT)
|
||||
#Bank4 Pin0~7
|
||||
gpio.setup(128,gpio.IN)
|
||||
gpio.setup(129,gpio.IN)
|
||||
gpio.setup(130,gpio.IN)
|
||||
gpio.setup(131,gpio.IN)
|
||||
gpio.setup(132,gpio.IN)
|
||||
gpio.setup(133,gpio.IN)
|
||||
gpio.setup(134,gpio.IN)
|
||||
gpio.setup(135,gpio.IN)
|
||||
#Bank4 Pin8
|
||||
gpio.setup(136,gpio.OUT)
|
||||
|
||||
def keyread():
|
||||
keys = []
|
||||
for writeport in range(80,87):
|
||||
if writeport == 86:
|
||||
writeport=136
|
||||
gpio.set(writeport,1)
|
||||
time.sleep(0.002)
|
||||
key = 0
|
||||
for readport in range(135,127,-1):
|
||||
key = (key << 1) + gpio.read(readport)
|
||||
key=~((key ^ (key >> 1)) & 0x1f ^ (key >> 1)) & 0x7f
|
||||
keys.append(key)
|
||||
gpio.set(writeport,0)
|
||||
verify_keys = []
|
||||
for writeport in range(80,87):
|
||||
if writeport == 86:
|
||||
writeport=136
|
||||
gpio.set(writeport,1)
|
||||
time.sleep(0.001)
|
||||
key = 0
|
||||
for readport in range(135,127,-1):
|
||||
key = (key << 1) + gpio.read(readport)
|
||||
key=~((key ^ (key >> 1)) & 0x1f ^ (key >> 1)) & 0x7f
|
||||
verify_keys.append(key)
|
||||
gpio.set(writeport,0)
|
||||
if not keys == verify_keys:
|
||||
return
|
||||
temp = 0
|
||||
for key in keys:
|
||||
temp = temp | key
|
||||
if temp & 0x1:
|
||||
for i,key in enumerate(keys):
|
||||
if key & 0x1 == 0:
|
||||
if i==0:
|
||||
print("英和和英",end=" ")
|
||||
if i==1:
|
||||
print("調べる",end=" ")
|
||||
if i==2:
|
||||
print("国語漢字",end=" ")
|
||||
if i==3:
|
||||
print("My辞書",end=" ")
|
||||
if i==4:
|
||||
print("履歴/しおり",end=" ")
|
||||
if i==5:
|
||||
print("マーカーテスト",end=" ")
|
||||
if i==6:
|
||||
print("HOME",end=" ")
|
||||
if temp & 0x2:
|
||||
for i,key in enumerate(keys):
|
||||
if key & 0x2 == 0:
|
||||
if i==0:
|
||||
print("Q",end=" ")
|
||||
if i==1:
|
||||
print("W",end=" ")
|
||||
if i==2:
|
||||
print("E",end=" ")
|
||||
if i==3:
|
||||
print("T",end=" ")
|
||||
if i==4:
|
||||
print("Y",end=" ")
|
||||
if i==5:
|
||||
print("U",end=" ")
|
||||
if i==6:
|
||||
print("I",end=" ")
|
||||
if temp & 0x4:
|
||||
for i,key in enumerate(keys):
|
||||
if key & 0x4 == 0:
|
||||
if i==0:
|
||||
print("A",end=" ")
|
||||
if i==1:
|
||||
print("S",end=" ")
|
||||
if i==2:
|
||||
print("D",end=" ")
|
||||
if i==3:
|
||||
print("G",end=" ")
|
||||
if i==4:
|
||||
print("H",end=" ")
|
||||
if i==5:
|
||||
print("O",end=" ")
|
||||
if i==6:
|
||||
print("P",end=" ")
|
||||
if temp & 0x8:
|
||||
for i,key in enumerate(keys):
|
||||
if key & 0x8 == 0:
|
||||
if i==0:
|
||||
print("Z",end=" ")
|
||||
if i==1:
|
||||
print("X",end=" ")
|
||||
if i==2:
|
||||
print("C",end=" ")
|
||||
if i==3:
|
||||
print("B",end=" ")
|
||||
if i==4:
|
||||
print("J",end=" ")
|
||||
if i==5:
|
||||
print("K",end=" ")
|
||||
if i==6:
|
||||
print("L",end=" ")
|
||||
if temp & 0x10:
|
||||
for i,key in enumerate(keys):
|
||||
if key & 0x10 == 0:
|
||||
if i==0:
|
||||
print("Shift",end=" ")
|
||||
if i==1:
|
||||
print("R",end=" ")
|
||||
if i==2:
|
||||
print("F",end=" ")
|
||||
if i==3:
|
||||
print("記号",end=" ")
|
||||
if i==4:
|
||||
print("N",end=" ")
|
||||
if i==5:
|
||||
print("M",end=" ")
|
||||
if i==6:
|
||||
print("-",end=" ")
|
||||
if temp & 0x20:
|
||||
for i,key in enumerate(keys):
|
||||
if key & 0x20 == 0:
|
||||
if i==0:
|
||||
print("V",end=" ")
|
||||
if i==1:
|
||||
print("PageUp",end=" ")
|
||||
if i==2:
|
||||
print("Space",end=" ")
|
||||
if i==3:
|
||||
print("Left",end=" ")
|
||||
if i==4:
|
||||
print("Up",end=" ")
|
||||
if i==5:
|
||||
print("Down",end=" ")
|
||||
if i==6:
|
||||
print("Right",end=" ")
|
||||
if temp & 0x40:
|
||||
for i,key in enumerate(keys):
|
||||
if key & 0x40 == 0:
|
||||
if i==0:
|
||||
print("文字切替",end=" ")
|
||||
if i==1:
|
||||
print("PageDown",end=" ")
|
||||
if i==2:
|
||||
print("ツール",end=" ")
|
||||
if i==3:
|
||||
print("Esc",end=" ")
|
||||
if i==4:
|
||||
print("Enter",end=" ")
|
||||
if i==5:
|
||||
print("?",end=" ")
|
||||
if i==6:
|
||||
print("BackSpace",end=" ")
|
||||
keys = [f"{key:#04x}" for key in keys]
|
||||
|
||||
if not temp==0:
|
||||
print(f"\nKeys = {', '.join(keys)}")
|
||||
|
||||
setup()
|
||||
while True:
|
||||
time.sleep(0.001)
|
||||
keyread()
|
Loading…
Reference in New Issue
Block a user