Tab5 Keyboard

Keyboard 类通过 I2C 控制 Tab5 键盘控制器。它支持字符输入回调、原始按键矩阵事件、键盘模式配置、背光亮度、RGB LED 设置和 I2C 地址管理。

UiFlow2 应用示例

键盘输入

在 UiFlow2 中打开 tab5_keyboard_example.m5f2 项目。

该示例演示从 Tab5 键盘读取字符输入,并将其追加到文本区域。

UiFlow2 代码块:

example.png

示例输出:

None

MicroPython 应用示例

键盘输入

该示例演示从 Tab5 键盘读取字符输入,并将其追加到文本区域。

MicroPython 代码块:

 1# SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import os, sys, io
 6import M5
 7from M5 import *
 8import m5ui
 9import lvgl as lv
10from tab5 import Keyboard
11from hardware import Pin
12from hardware import SoftI2C
13
14
15page0 = None
16textarea0 = None
17tab5_keyboard_0 = None
18
19
20key_char = None
21
22
23def tab5_keyboard_0_char_pressed_event(kb):
24    global page0, textarea0, tab5_keyboard_0, key_char
25    key_char = kb
26    textarea0.add_text(str(key_char))
27
28
29def setup():
30    global page0, textarea0, tab5_keyboard_0, key_char
31
32    M5.begin()
33    Widgets.setRotation(3)
34    m5ui.init()
35    page0 = m5ui.M5Page(bg_c=0xFFFFFF)
36    textarea0 = m5ui.M5TextArea(
37        text="textarea0",
38        placeholder="Placeholder...",
39        x=0,
40        y=0,
41        w=1280,
42        h=720,
43        font=lv.font_montserrat_24,
44        bg_c=0xFFFFFF,
45        border_c=0xE0E0E0,
46        text_c=0x212121,
47        parent=page0,
48    )
49
50    softi2c_0 = SoftI2C(scl=Pin(1), sda=Pin(0), freq=100000)
51    tab5_keyboard_0 = Keyboard(softi2c_0, 0x6D)
52    tab5_keyboard_0.set_callback(tab5_keyboard_0_char_pressed_event)
53    tab5_keyboard_0.set_keyboard_mode(tab5_keyboard_0.MODE_CHAR)
54    page0.screen_load()
55    textarea0.set_text("")
56
57
58def loop():
59    global page0, textarea0, tab5_keyboard_0, key_char
60    M5.update()
61    tab5_keyboard_0.tick()
62
63
64if __name__ == "__main__":
65    try:
66        setup()
67        while True:
68            loop()
69    except (Exception, KeyboardInterrupt) as e:
70        try:
71            m5ui.deinit()
72            from utility import print_error_msg
73
74            print_error_msg(e)
75        except ImportError:
76            print("please update to latest firmware")

示例输出:

None

API参考

Keyboard

class tab5.keyboard.Keyboard(i2c, address=109)

基类:object

创建 Tab5 键盘控制器对象。

参数:
  • i2c (I2C) – Tab5 键盘连接到的 I2C 总线。

  • address (int) – 键盘控制器的 I2C 地址。默认值为 0x6D

UiFlow2 代码块:

init.png

MicroPython 代码块:

from tab5 import Keyboard
from hardware import Pin, SoftI2C

softi2c_0 = SoftI2C(scl=Pin(1), sda=Pin(0), freq=100000)
keyboard = Keyboard(softi2c_0, 0x6D)
available()

检查是否有未读取的键盘事件排队。

返回:

如果控制器有待处理事件,则返回 True

返回类型:

bool

set_int_enable(mask)

启用键盘中断源。

参数:

mask (int) – 由 INT_NORMALINT_CHAR 组成的中断掩码。

返回类型:

None

get_int_status()

获取当前键盘中断状态。

返回:

锁存的中断状态位。

返回类型:

int

clear_int()

清除当前键盘中断状态。

返回类型:

None

get_event_count()

获取未读取键盘事件的数量。

返回:

排队事件的数量。

返回类型:

int

set_brightness(brightness)

设置键盘背光亮度。

参数:

brightness (int) – 亮度值范围为 0255

返回类型:

None

UiFlow2 代码块:

set_brightness.png

MicroPython 代码块:

keyboard.set_brightness(20)
get_brightness()

获取键盘背光亮度。

返回:

当前亮度值。

返回类型:

int

UiFlow2 代码块:

get_brightness.png

MicroPython 代码块:

keyboard.get_brightness()
set_keyboard_mode(mode)

设置键盘事件模式。

参数:

mode (int) – 事件模式,例如 MODE_NORMALMODE_CHAR

返回类型:

None

UiFlow2 代码块:

set_keyboard_mode.png

MicroPython 代码块:

keyboard.set_keyboard_mode(keyboard.MODE_CHAR)
get_keyboard_mode()

获取当前键盘事件模式。

返回:

当前键盘模式。

返回类型:

int

set_rgb_mode(mode)

设置 RGB LED 控制模式。

参数:

mode (int) – RGB 模式,例如 RGB_MODE_BOUNDRGB_MODE_CUSTOM

返回类型:

None

UiFlow2 代码块:

set_rgb_mode.png

MicroPython 代码块:

keyboard.set_rgb_mode(keyboard.RGB_MODE_BOUND)
get_rgb_mode()

获取 RGB LED 控制模式。

返回:

当前 RGB 模式。

返回类型:

int

read_key_event()

读取一个按键矩阵事件。

返回:

返回 (row, col, pressed) 元组;无可用事件时返回 None

返回类型:

tuple | None

get_char_event_length()

获取排队字符事件的字节长度。

返回:

字符载荷的长度。

返回类型:

int

read_char_event()

读取一个已解码的字符事件。

返回:

返回 (modifier, text) 元组;无可用事件时返回 None

返回类型:

tuple | None

is_pressed()

检查键盘是否有待处理输入。

返回:

如果有未读取输入,则返回 True

返回类型:

bool

set_callback(handler)

注册由 tick() 使用的回调函数。

参数:

handler (callable) – 接收键盘事件载荷的回调函数。

MicroPython 代码块:

def on_keyboard(data):
    print(data)

keyboard.set_callback(on_keyboard)
tick()

将一个待处理键盘事件分发给已注册的回调函数。

set_rgb_color(led_num, color)

设置键盘 RGB LED 的颜色。

参数:
  • led_num (int) – 要更新的 LED 索引。

  • color (int) – 24 位 RGB 颜色值。

返回类型:

None

UiFlow2 代码块:

set_rgb_color.png

MicroPython 代码块:

keyboard.set_rgb_color(0, 0x6600CC)
get_rgb_color(led_num)

获取键盘 RGB LED 的颜色。

参数:

led_num (int) – 要读取的 LED 索引。

返回:

24 位 RGB 颜色值。

返回类型:

int

UiFlow2 代码块:

get_rgb_color.png

MicroPython 代码块:

keyboard.get_rgb_color(0)
get_firmware_version()

获取键盘控制器的固件版本。

返回:

固件版本字节。

返回类型:

int

UiFlow2 代码块:

get_firmware_version.png

MicroPython 代码块:

keyboard.get_firmware_version()
set_i2c_address(addr)

为键盘控制器设置新的 I2C 地址。

参数:

addr (int) – 新的 I2C 地址。有效范围为 0x080x77

返回:

更新后的当前 I2C 地址。

返回类型:

int

UiFlow2 代码块:

set_i2c_address.png

MicroPython 代码块:

keyboard.set_i2c_address(0x6D)
get_i2c_address()

获取键盘控制器的当前 I2C 地址。

返回:

当前 I2C 地址。

返回类型:

int

UiFlow2 代码块:

get_i2c_address.png

MicroPython 代码块:

keyboard.get_i2c_address()