# ime-kmod **Repository Path**: leopard-project/ime-kmod ## Basic Information - **Project Name**: ime-kmod - **Description**: Kernel Module for input method of OpenXSKernel - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-28 - **Last Updated**: 2026-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ime-kmod Leopard 输入法业务的内核态实现,作为可加载内核模块(`.sys`)交付,而非编译进 精简内核。 ## 架构闭环 ``` leopard-ime 用户态输入法引擎/管理器(拼音合成、候选、UI) │ 依赖 XAPI_IME_* syscall(7474-7485,由本模块经 syscall 钩子提供) ▼ ime-kmod 本仓库:IME 业务(焦点、事件队列、投递、会话、配置、词库) │ 依赖 OpenXSKernel 头文件 + 导出符号(EXPORT_SYMBOL) ▼ OpenXSKernel 精简内核:只留输入原语(sink / 焦点 / 拦截器 / 路由 / getch) + syscall 钩子 + 进程退出钩子 + 导出符号表 ``` ## 职责划分(原语与业务分离) | 层 | 内容 | 归属 | |---|---|---| | 输入原语 | sink、焦点表、拦截器钩子、input_route_dispatch、getch | OpenXSKernel | | IME 业务 | ime_filter_message、事件队列、投递、session、config、user store | **本仓库** | | 合成算法 | 拼音→候选、词库、UI | leopard-ime(用户态) | 本模块的 `dlmain` 入口做两件事: 1. `input_route_set_interceptor` 注册 `ime_filter_message` 为输入流拦截器; 2. `OpenXJ380Socket_RegisterSyscallHook` 注册 `ime_syscall`,接管 XAPI_IME_* 号段。 ## 构建 依赖兄弟仓库 `../OpenXSKernel`(提供头文件与导出符号 ABI): ```sh python3 gen_ninja.py && ninja build # 产物 out/ime-kmod.sys ninja pack # 产物 out/ime-kmod-*.xbps ``` `.sys` 部署到镜像 `/mod/`(dlinker 从该目录加载)。