improve
This commit is contained in:
28
CARDPUTER CircuitPython/full_display_test.py
Normal file
28
CARDPUTER CircuitPython/full_display_test.py
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import board
|
||||||
|
import terminalio
|
||||||
|
from adafruit_display_text import label
|
||||||
|
from keyboard import Keyboard
|
||||||
|
|
||||||
|
# GUIDE
|
||||||
|
# type freely! CTRL+D clears the text.
|
||||||
|
# backspace, space, and return function as expected.
|
||||||
|
# keys not recognised WILL print "UNKNOWN 0x??", but this is useful for extra key scans
|
||||||
|
######
|
||||||
|
|
||||||
|
keyb = Keyboard()
|
||||||
|
|
||||||
|
text = ""
|
||||||
|
text_area = label.Label(terminalio.FONT, text=text)
|
||||||
|
text_area.x = 10
|
||||||
|
text_area.y = 10
|
||||||
|
board.DISPLAY.root_group = text_area
|
||||||
|
|
||||||
|
while True:
|
||||||
|
key = keyb.scan()
|
||||||
|
if key == "BACKSP":
|
||||||
|
text = text[:-1]
|
||||||
|
elif key == "CTRLD":
|
||||||
|
text = ""
|
||||||
|
else:
|
||||||
|
text = text+key
|
||||||
|
text_area.text = text
|
||||||
@@ -4,7 +4,7 @@ class Keyboard:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
# the number row starts with 3 and ends with the number, e.g. key number 5 is 0x35
|
# the number row starts with 3 and ends with the number, e.g. key number 5 is 0x35
|
||||||
self.number_row=["0x30","0x31","0x32","0x33","0x34","0x35","0x36","0x37","0x38","0x39"]
|
self.number_row=["0x30","0x31","0x32","0x33","0x34","0x35","0x36","0x37","0x38","0x39"]
|
||||||
self.shift_number_row={"0x21":"!","0x40":"@","0x23":"#","0x24":"$","0x25":"%","0x5e":"^","0x26":"&","0x2a":"*","0x28":"(","0x29":")"}
|
self.chars={"0x21":"!","0x40":"@","0x23":"#","0x24":"$","0x25":"%","0x5e":"^","0x26":"&","0x2a":"*","0x28":"(","0x29":")", "0x3f":"?"}
|
||||||
self.lowercase={
|
self.lowercase={
|
||||||
"0x71":"q", "0x77":"w", "0x65":"e", "0x72":"r", "0x74":"t", "0x79":"y", "0x75":"u", "0x69":"i", "0x6f":"o", "0x70":"p",
|
"0x71":"q", "0x77":"w", "0x65":"e", "0x72":"r", "0x74":"t", "0x79":"y", "0x75":"u", "0x69":"i", "0x6f":"o", "0x70":"p",
|
||||||
"0x61":"a", "0x73":"s", "0x64":"d", "0x66":"f", "0x67":"g", "0x68":"h", "0x6a":"j", "0x6b":"k", "0x6c":"l",
|
"0x61":"a", "0x73":"s", "0x64":"d", "0x66":"f", "0x67":"g", "0x68":"h", "0x6a":"j", "0x6b":"k", "0x6c":"l",
|
||||||
@@ -15,6 +15,9 @@ class Keyboard:
|
|||||||
"0x41":"A", "0x53":"S", "0x44":"D", "0x46":"F", "0x47":"G", "0x48":"H", "0x4a":"J", "0x4b":"K", "0x4c":"L",
|
"0x41":"A", "0x53":"S", "0x44":"D", "0x46":"F", "0x47":"G", "0x48":"H", "0x4a":"J", "0x4b":"K", "0x4c":"L",
|
||||||
"0x5a":"Z", "0x58":"X", "0x43":"C", "0x56":"V", "0x42":"B", "0x4e":"N", "0x4d":"M"
|
"0x5a":"Z", "0x58":"X", "0x43":"C", "0x56":"V", "0x42":"B", "0x4e":"N", "0x4d":"M"
|
||||||
}
|
}
|
||||||
|
self.special={
|
||||||
|
"0xa":"\n", "0x8":"BACKSP", "0x20":" ", "0x3b":"UP", "0x2e":"DOWN", "0x2c":"LEFT", "0x2f":"RIGHT", "0x10d":"OPTD", "0x4":"CTRLD", "0x13":"CTRLS"
|
||||||
|
}
|
||||||
|
|
||||||
def scan(self):
|
def scan(self):
|
||||||
code=hex(ord(sys.stdin.read(1)))
|
code=hex(ord(sys.stdin.read(1)))
|
||||||
@@ -23,12 +26,14 @@ class Keyboard:
|
|||||||
key = None
|
key = None
|
||||||
if code in self.number_row:
|
if code in self.number_row:
|
||||||
key = str(self.number_row.index(code))
|
key = str(self.number_row.index(code))
|
||||||
elif code in self.shift_number_row:
|
elif code in self.chars:
|
||||||
key = self.shift_number_row[code]
|
key = self.chars[code]
|
||||||
elif code in self.lowercase:
|
elif code in self.lowercase:
|
||||||
key = self.lowercase[code]
|
key = self.lowercase[code]
|
||||||
elif code in self.uppercase:
|
elif code in self.uppercase:
|
||||||
key = self.uppercase[code]
|
key = self.uppercase[code]
|
||||||
|
elif code in self.special:
|
||||||
|
key = self.special[code]
|
||||||
|
|
||||||
if key:
|
if key:
|
||||||
return key
|
return key
|
||||||
|
|||||||
Reference in New Issue
Block a user