4个版本 (2个重大更改)
0.3.0 | 2022年11月4日 |
---|---|
0.2.1 | 2022年2月15日 |
0.2.0 | 2021年11月10日 |
0.1.0 | 2021年8月1日 |
在GUI类别中排名第548
每月下载量25次
用于lillinput-cli
52KB
834 行
lillinput
lillinput
库提供了将libinput
事件与不同操作连接起来的构建模块。
构建模块
特性和实现
以下特性是库的主要构建模块
特性 | 描述 | 实现 |
---|---|---|
action::操作 |
特定操作的处理器,由应用程序事件触发 | actions::I3Action , actions::CommandAction |
events::处理器 |
负责与libinput 交互并调度其事件,将它们转换为应用程序事件 |
events::DefaultProcessor |
controllers::控制器 |
包含将应用程序事件连接到Action 的逻辑,并协调 |
controllers::DefaultController |
库还包括主要特性的一些基本Implementations
,采用“电池包含”的方法。
枚举
以下枚举表示库中的不同概念
枚举 | 描述 |
---|---|
events::ActionEvent |
高级应用程序事件,由Processor 发出并由Controller 用于将其映射到一个或多个Action |
actions::ActionType |
特定动作家族的标识符 |
概述
以下图表示组件之间的流程和关系
flowchart LR
libinput[fa:fa-external-link-alt libinput]
subgraph ::controllers
Controller([fa:fa-code Controller])
DefaultController
end
subgraph ::processor
Processor([fa:fa-code Processor])
DefaultProcessor
end
subgraph ::actions
Action([fa:fa-code Action])
I3Action
CommandAction
end
i3[fa:fa-external-link-alt i3 IPC]
shell[fa:fa-external-link-alt shell]
libinput -.-> |input::event::Event| Controller
Controller --> |::events::ActionEvent | Processor
Processor --> |executes associated| Action
DefaultController --> DefaultProcessor
DefaultProcessor --> I3Action
DefaultProcessor --> CommandAction
I3Action -.-> i3
CommandAction -.-> shell
classDef trait stroke-dasharray: 5 5;
class Controller,Processor,Action trait;
其他注意事项
错误处理
组件发出的错误在每个主要模块下的errors
模块中可用,基于thiserror
的错误Enums
重新导出以方便使用。
控制器执行
Controller
提供了一个run()
方法,该方法进入循环以接收来自Processor
的事件并调用根据接收到的事件触发的Action
%%{init: {'sequence': { 'mirrorActors': false, `0.`0.'actorMargin': 100, 'messageFontSize': 14}}}%%
sequenceDiagram
autonumber
actor User
participant Controller
participant Processor
participant libinput as <libinput>
participant Action
User->>+Controller: run()
loop
rect beige
note right of libinput: Receive events from Controller
Controller->>+Processor: dispatch()
Processor->>+libinput: dispatch()
libinput-->>-Processor: [libinput events]
Processor->>+Processor: process_event()
Processor->>-Processor: _end_event_to_action_event()
Processor-->>-Controller: [ActionEvents]
end
rect beige
note left of Action: Process application events
loop For each mapped action
Controller->>+Controller: process_action_event()
Controller->>Action: execute_command()
Action-->>Controller: Result
deactivate Controller
deactivate Controller
end
end
end
许可证
本项目采用BSD-3-Clause许可协议。
依赖项
约5MB
约88K SLoC