Chain Key
Chain Key 是一个可连接到 M5Chain 系列设备的按键模块,提供读取按键状态的功能。
支持以下产品:
UiFlow2 应用示例
USB 键盘
在 UiFlow2 中打开 chain_key_usb_keyboard_example.m5f2 项目。
该示例演示如何将 Chain Key 作为 USB 键盘使用。
UiFlow2 代码块:
示例输出:
None
MicroPython 示例
USB 键盘
该示例演示如何将 Chain Key 作为 USB 键盘使用。
MicroPython 代码块:
1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from chain import KeyChain 9from chain import ChainBus 10from usb.device.keyboard import Keyboard 11from usb.device.hid import KeyCode 12 13 14bus2 = None 15keyboard = None 16chain_key_0 = None 17 18 19key_press = None 20 21 22def chain_key_0_click_event(args): 23 global bus2, keyboard, chain_key_0, key_press 24 key_press = True 25 26 27def setup(): 28 global bus2, keyboard, chain_key_0, key_press 29 30 M5.begin() 31 bus2 = ChainBus(2, tx=6, rx=5) 32 keyboard = Keyboard() 33 chain_key_0 = KeyChain(bus2, 1) 34 chain_key_0.set_click_callback(chain_key_0_click_event) 35 key_press = False 36 37 38def loop(): 39 global bus2, keyboard, chain_key_0, key_press 40 M5.update() 41 if keyboard.is_open(): 42 if key_press: 43 keyboard.input(KeyCode.A) 44 key_press = False 45 46 47if __name__ == "__main__": 48 try: 49 setup() 50 while True: 51 loop() 52 except (Exception, KeyboardInterrupt) as e: 53 try: 54 from utility import print_error_msg 55 56 print_error_msg(e) 57 except ImportError: 58 print("please update to latest firmware")
示例输出:
None
API参考
KeyChain
- class chain.key.KeyChain(bus, device_id)
基类:
object创建一个 KeyChain 对象。
UiFlow2 代码块:

MicroPython 代码块:
from chain import ChainBus from chain import KeyChain chainbus_0 = ChainBus(2, 32, 33, verbose=True) keychain_0 = KeyChain(chainbus_0, 1)
- MODE_POLL = 0
按钮轮询模式
- MODE_EVENT = 1
按钮事件模式
- get_button_state()
获取按钮状态。
- 返回:
按钮状态,按下为 True,否则为 False。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
keychain_0.get_button_state()
- set_click_callback(callback)
设置按钮单击回调。
- 参数:
callback – 回调函数。
- 返回类型:
None
备注
回调函数中不能调用 Chain 相关方法。
UiFlow2 代码块:

MicroPython 代码块:
def keychain_0_click_callback(args): print("click") keychain_0.set_click_callback(keychain_0_click_callback)
- set_double_click_callback(callback)
设置按钮双击回调。
- 参数:
callback – 回调函数。
- 返回类型:
None
备注
回调函数中不能调用 Chain 相关方法。
UiFlow2 代码块:

MicroPython 代码块:
def keychain_0_double_click_callback(args): print("double click") keychain_0.set_double_click_callback(keychain_0_double_click_callback)
- set_long_press_callback(callback)
设置按钮长按回调。
- 参数:
callback – 回调函数。
- 返回类型:
None
备注
回调函数中不能调用 Chain 相关方法。
UiFlow2 代码块:

MicroPython 代码块:
def keychain_0_long_press_callback(args): print("long press") keychain_0.set_long_press_callback(keychain_0_long_press_callback)
- set_button_double_click_trigger_interval(interval_ms)
设置按钮双击触发间隔。
UiFlow2 代码块:

MicroPython 代码块:
keychain_0.set_button_double_click_trigger_interval(100)
- set_button_long_press_trigger_interval(interval_ms)
设置按钮长按触发间隔。
UiFlow2 代码块:

MicroPython 代码块:
keychain_0.set_button_long_press_trigger_interval(3000)
- get_button_double_click_trigger_interval()
获取按钮双击触发间隔。
- 返回:
间隔时间(毫秒)。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
interval = keychain_0.get_button_double_click_trigger_interval()
- get_button_long_press_trigger_interval()
获取按钮长按触发间隔。
- 返回:
间隔时间(毫秒)。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
interval = keychain_0.get_button_long_press_trigger_interval()
- set_button_mode(mode)
设置按钮模式。
- 参数:
mode (int) – 按钮模式。使用
KeyChain.MODE_POLL或KeyChain.MODE_EVENT。- 返回:
成功返回 True,否则返回 False。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
keychain_0.set_button_mode(KeyChain.MODE_EVENT)
- get_button_mode()
获取按钮模式。
- 返回:
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
mode = keychain_0.get_button_mode()
- set_rgb_color(color)
设置 RGB 颜色。
UiFlow2 代码块:

MicroPython 代码块:
keychain_0.set_rgb_color(0xFF0000)
- get_rgb_color()
获取 RGB 颜色。
- 参数:
index – RGB LED 的索引。
- 返回:
RGB 颜色值。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
color = keychain_0.get_rgb_color()
- set_rgb_brightness(brightness, save=False)
设置 RGB 亮度。
- 参数:
- 返回:
成功返回 True,否则返回 False。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
keychain_0.set_rgb_brightness(80)
- get_rgb_brightness()
获取 RGB 亮度。
- 返回:
亮度值 (0-100)。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
brightness = keychain_0.get_rgb_brightness()
- get_bootloader_version()
获取引导程序版本。
- 返回:
引导程序版本。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
version = keychain_0.get_bootloader_version()
- get_firmware_version()
获取固件版本。
- 返回:
固件版本。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
version = keychain_0.get_firmware_version()


