NknSのSitE

Back

Seekey 开发与测试

Seekey 的模块边界、输入与渲染数据流、测试套件和提交前检查。

Seekey 使用 C、GTK4、GLib、libevdev、json-glib 和 ncurses。layer-shell 在编译和 运行时都按可选能力处理,使同一二进制能在 wlroots、GNOME 和 KDE 环境运行。

主要模块#

文件职责
src/main.cGTK 应用、气泡生命周期、打字与重复合并、窗口创建
src/input.c扫描 evdev、输入线程、修饰键状态和主线程投递
src/config.cINI 加载/保存、CLI、迁移、主题与 Matugen
src/gui.cfuzzel 风格 GUI、桌面入口偏好、启动/关闭主浮层
src/tui.cncurses 配置编辑器及纯字段操作
src/preview_session.cGUI/TUI 共用的隔离预览子进程
src/layer_shell.c可选 layer-shell 加载、锚点和层级
src/runtime_lock.c用户级输入锁与预览锁
src/window_state.c显示器与 desktop 启动偏好持久化

数据流#

/dev/input/event*
    -> libevdev poll thread
    -> KeyEventMessage
    -> GLib main context
    -> typing/combo/repeat decision
    -> GTK label + timeout
text

所有 GTK 调用都留在主线程。输入线程只解析设备事件并发送结构化消息。

构建和测试#

make
make check
sh

当前测试套件包含 100 项无头单元测试,覆盖配置迁移与严格校验、Matugen 解析和 回退、TUI 字段、按键名称、CSS、窗口状态及跨进程锁。GTK 事件循环和真实 evdev 仍需运行时检查。

进一步静态检查可运行:

scan-build --status-bugs make -B seekey
sh

提交前至少执行:

make check
git diff --check
./seekey --validate-config
sh

源码、问题追踪和贡献入口位于 GitHub 仓库。回到文档总览