Simple test¶
Ensure your device works with this simple test.
examples/softkeyboard_simpletest.py¶
1# SPDX-FileCopyrightText: 2023 DJDevon3
2# SPDX-License-Identifier: MIT
3# Started as ESP32-S3 Feather Weather MQTT Touchscreen
4# Coded for Circuit Python 8.2.x
5# Modified for SoftKeyboard by Tim C
6import os
7import time
8import board
9import displayio
10import terminalio
11from adafruit_display_text import label
12from adafruit_bitmap_font import bitmap_font
13import adafruit_touchscreen
14from softkeyboard.softkeyboard import SoftKeyboard, PRINTABLE_CHARACTERS
15
16_now = time.monotonic()
17
18DISPLAY_WIDTH = 480
19DISPLAY_HEIGHT = 320
20
21display = board.DISPLAY
22
23_touch_flip = (False, True)
24
25# Initialize 3.5" TFT Featherwing Touchscreen
26# ts_cs_pin = digitalio.DigitalInOut(board.D6)
27# touchscreen = adafruit_stmpe610.Adafruit_STMPE610_SPI(
28# board.SPI(),
29# ts_cs_pin,
30# calibration=((231, 3703), (287, 3787)),
31# size=(display.width, display.height),
32# disp_rotation=display.rotation,
33# touch_flip=_touch_flip,
34# )
35
36
37print("Init touchscreen")
38# pylint: disable=no-member
39touchscreen = adafruit_touchscreen.Touchscreen(
40 board.TOUCH_XL,
41 board.TOUCH_XR,
42 board.TOUCH_YD,
43 board.TOUCH_YU,
44 calibration=((6584, 59861), (9505, 57492)),
45 size=(board.DISPLAY.width, board.DISPLAY.height),
46)
47
48
49def _format_date(datetime):
50 return "{:02}/{:02}/{:02}".format(
51 datetime.tm_year,
52 datetime.tm_mon,
53 datetime.tm_mday,
54 )
55
56
57def _format_time(datetime):
58 return "{:02}:{:02}".format(
59 datetime.tm_hour,
60 datetime.tm_min,
61 # datetime.tm_sec,
62 )
63
64
65# Quick Colors for Labels
66TEXT_BLACK = 0x000000
67TEXT_BLUE = 0x0000FF
68TEXT_CYAN = 0x00FFFF
69TEXT_GRAY = 0x8B8B8B
70TEXT_GREEN = 0x00FF00
71TEXT_LIGHTBLUE = 0x90C7FF
72TEXT_MAGENTA = 0xFF00FF
73TEXT_ORANGE = 0xFFA500
74TEXT_PURPLE = 0x800080
75TEXT_RED = 0xFF0000
76TEXT_WHITE = 0xFFFFFF
77TEXT_YELLOW = 0xFFFF00
78
79forkawesome_font = bitmap_font.load_font("/fonts/forkawesome-12.pcf")
80
81input_lbl = label.Label(
82 terminalio.FONT, scale=2, text="", color=0xFFFFFF, background_color=0x00000
83)
84input_lbl.x = 10
85input_lbl.y = 10
86
87# Create subgroups
88splash = displayio.Group()
89text_group = displayio.Group()
90main_group = displayio.Group()
91
92main_group.append(input_lbl)
93board.DISPLAY.root_group = main_group
94
95soft_kbd = SoftKeyboard(
96 2, 100, DISPLAY_WIDTH - 2, DISPLAY_HEIGHT - 100, terminalio.FONT, forkawesome_font, layout_file="mobile_layout.json"
97)
98
99main_group.append(soft_kbd)
100
101print(f"size: {soft_kbd.width}, {soft_kbd.height}")
102print(f"cell size: {soft_kbd.layout.cell_size_pixels}")
103
104while True:
105 p = touchscreen.touch_point
106
107 # print(p)
108 key_value = soft_kbd.check_touches(p)
109
110 if key_value is not None:
111 if isinstance(key_value, str) and not key_value.startswith("layout:"):
112 input_lbl.text += key_value
113 elif isinstance(key_value, str) and key_value.startswith("layout:"):
114 layout_file = key_value.replace("layout:", "")
115 soft_kbd.layout_file = layout_file
116 display.root_group = None
117 display.root_group = main_group
118
119 elif key_value == 42: # 0x2a backspace key
120 input_lbl.text = input_lbl.text[:-1]