From 139222b912b1047ac5477b69cd8716485afb2737 Mon Sep 17 00:00:00 2001 From: Cube Date: Tue, 4 Mar 2025 12:54:48 +0000 Subject: [PATCH] improve --- CARDPUTER CircuitPython/full_display_test.py | 28 ++++++++++++++++++++ CARDPUTER CircuitPython/keyboard.py | 11 +++++--- 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 CARDPUTER CircuitPython/full_display_test.py diff --git a/CARDPUTER CircuitPython/full_display_test.py b/CARDPUTER CircuitPython/full_display_test.py new file mode 100644 index 0000000..2811224 --- /dev/null +++ b/CARDPUTER CircuitPython/full_display_test.py @@ -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 diff --git a/CARDPUTER CircuitPython/keyboard.py b/CARDPUTER CircuitPython/keyboard.py index 275fa29..29845d3 100644 --- a/CARDPUTER CircuitPython/keyboard.py +++ b/CARDPUTER CircuitPython/keyboard.py @@ -4,7 +4,7 @@ class Keyboard: def __init__(self): # 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.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={ "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", @@ -15,6 +15,9 @@ class Keyboard: "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" } + self.special={ + "0xa":"\n", "0x8":"BACKSP", "0x20":" ", "0x3b":"UP", "0x2e":"DOWN", "0x2c":"LEFT", "0x2f":"RIGHT", "0x10d":"OPTD", "0x4":"CTRLD", "0x13":"CTRLS" + } def scan(self): code=hex(ord(sys.stdin.read(1))) @@ -23,12 +26,14 @@ class Keyboard: key = None if code in self.number_row: key = str(self.number_row.index(code)) - elif code in self.shift_number_row: - key = self.shift_number_row[code] + elif code in self.chars: + key = self.chars[code] elif code in self.lowercase: key = self.lowercase[code] elif code in self.uppercase: key = self.uppercase[code] + elif code in self.special: + key = self.special[code] if key: return key