modify 修复前端展示配置与实际插件配置不一致的bug

This commit is contained in:
2026-09-17 15:34:34 +08:00
parent 293254c61a
commit e0211105bd
6 changed files with 261 additions and 40 deletions
+32 -1
View File
@@ -19,7 +19,7 @@ import time
from .config import (
EV_KEY, VALUE_RELEASE, VALUE_PRESS, VALUE_REPEAT,
DEFAULT_EVENT_DEVICE, GPIO_KEYS_NAME,
DEFAULT_EVENT_DEVICE, GPIO_KEYS_NAME, DEFAULT_IN2_KEY,
DEBOUNCE, DEFAULT_INTERVAL,
find_status_file,
)
@@ -259,6 +259,36 @@ def make_in1_backend(device=None, key=None, in_index=1):
# 4) 都找不到,返回一个 open 时会报错的 EventBackend
return EventBackend(DEFAULT_EVENT_DEVICE, key=key)
def make_in2_backend(device=None, key=None, in_index=2,
interval=DEFAULT_INTERVAL, debounce=DEBOUNCE):
"""自动为 IN2 选择后端:优先 sysfs(SE9),回退 gpio-keys event(SE5)。
SE5 无 gpio-in-2 状态文件,IN2 与 IN1 同走 gpio-keys 事件设备(不同键码)。
优先级:
1) 显式 device(event 设备路径) -> EventBackend
2) 查找 gpio-in-<in_index> 的状态文件 -> SysfsBackend
3) 自动查找 gpio-keys 的 event 设备 -> EventBackend(key 缺省 DEFAULT_IN2_KEY)
4) 都找不到 -> 返回 None(由调用方给出可诊断错误)
"""
# 1) 显式指定 event 设备
if device and device != "auto":
return EventBackend(device, key=key if key is not None else DEFAULT_IN2_KEY)
# 2) sysfs 状态文件(SE9)
status = find_status_file(in_index)
if status:
return SysfsBackend(status, debounce=debounce, interval=interval)
# 3) 回退到 gpio-keys 事件设备(SE5)
ev = EventBackend.find_event_device(GPIO_KEYS_NAME)
if ev:
return EventBackend(ev, key=key if key is not None else DEFAULT_IN2_KEY)
# 4) 都找不到
return None
def find_event_device(name=GPIO_KEYS_NAME):
"""模块级别别名,等价于 EventBackend.find_event_device."""
return EventBackend.find_event_device(name)
@@ -269,6 +299,7 @@ __all__ = [
"SysfsBackend",
"make_backend",
"make_in1_backend",
"make_in2_backend",
"find_status_file",
"find_event_device",
]