Skip to main content

Inputronic Keyboard - Live typing to Serial

Overview

This example demonstrates live typing using the Inputronic Keyboard with output to the serial console. Characters are printed in real-time as you type, making this ideal for terminal-style input and debugging.


Initialization

Import the module, create the keyboard object, and initialize it. If the keyboard isn't found, the program halts.

from inputronic_keyboard import InputronicKeyboard
from time import sleep

kbd = InputronicKeyboard()

if not kbd.begin():
print("Keyboard not found!")
else:
print("Keyboard ready! Start typing...")

Handling Special Keys

Inside the main loop, after reading each key event with readMappedEvent(), special keys are handled by comparing the label string. Release events and modifier-only keys (CAPS, SHIFT) are skipped.

if label == "SPACE":
print(" ", end="")
continue

if label == "BACK":
print("\b \b", end="") # Terminal backspace
continue

if label == "ENTER":
print() # New line
continue

# CAPS and SHIFT are modifiers only
if label in ["CAPS", "SHIFT"]:
continue

Key Behavior

KeyAction
Printable keysPrinted to console
SPACEPrints space character
BACKTerminal-style backspace (\b \b)
ENTERPrints newline
CAPSToggles upper/lower keymap (internal)
SHIFTModifier (handled automatically)

Printing Characters

For all remaining keys, labelToChar() converts the label to a printable character with SHIFT applied automatically, and prints it to the console.

char = kbd.labelToChar(label, applyShift=True)
if char:
print(char, end="")

kbd.labelToChar(label, applyShift)

Converts a single-character label to a printable character. Automatically applies SHIFT and CAPS logic.

Returns value: String containing a single character, or None if the label is not a printable character

Function parameters:

TypeNameDescription
strlabelKey label from the keymap
boolapplyShiftWhether to apply SHIFT transformations (default: True)
ℹ️

SHIFT and CAPS logic is handled internally by the module. When SHIFT is held:

  • Letters have their case inverted (CAPS XOR SHIFT)
  • Numbers and symbols use the shift map (e.g., '1' becomes '!')

String Input Helper

The module also provides a convenient blocking stringInput() function for collecting text in one call:

text = kbd.stringInput(maxLen=64, endLabel="ENTER", backspaceLabel="BACK")
print("You typed: {}".format(text))

kbd.stringInput(maxLen, timeout, endLabel, backspaceLabel)

Blocking function that collects keyboard input until endLabel is pressed or timeout expires

Returns value: String containing all typed characters

Function parameters:

TypeNameDescription
intmaxLenMaximum string length (default: 64)
inttimeoutTimeout in milliseconds, 0=no timeout (default: 0)
strendLabelKey that ends input (default: 'ENTER')
strbackspaceLabelKey used for backspace (default: 'BACK')

Additional Functions

Get Last Pressed Key

label = kbd.getLastKeyLabel()
if label:
print("Last key pressed: {}".format(label))

kbd.getLastKeyLabel()

Returns the label of the last key that was pressed

Returns value: String containing the key label, or None if no key has been pressed

Check Active Keymap

keymap = kbd.getActiveKeymap()
# Returns 0 for UPPER, 1 for LOWER
print("Current keymap: {}".format("UPPER" if keymap == 0 else "LOWER"))

kbd.getActiveKeymap()

Returns the currently active keymap ID

Returns value: Integer: 0 for UPPER keymap, 1 for LOWER keymap

Count Held Keys

count = kbd.getHeldCount()
print("{} keys are currently pressed".format(count))

kbd.getHeldCount()

Returns the number of keys currently being held down

Returns value: Integer representing the count of pressed keys

Full Example

serial_type.py

Demonstrates live typing with the Inputronic Keyboard, printing characters to the console in real-time with support for SPACE, BACK, ENTER, SHIFT, and CAPS keys.