6 个版本
使用旧的 Rust 2015
0.1.5 | 2017年6月30日 |
---|---|
0.1.4 | 2017年6月29日 |
#460 在 GUI
每月 108 次下载
11KB
140 行
Orbclient Window Shortcuts
描述
为 orbclient::Window
提供快捷键支持
该库使用了
#![feature(vec_remove_item)]
因此需要使用 rust nightly 构建。默认的分支是从 'testing' 克隆的。Crates.io 是可靠的库来源。文档可能无法构建并导致构建失败徽章。
请参阅:最近的构建日志 以获取更多详细信息。
先决条件
Orbclient 需要 sdl2 或 orbital (redox os) 来运行,并且可能没有在您的系统上安装。在 Arch Linux 上,您可以使用 pacman 安装 libsdl2。
$ pacman -Syu sdl2
在 Ubuntu 上,您可以从第三方安装 libsdl2 或从源代码编译
$ apt-get install libsdl2-dev
# wget https://www.libsdl.org/release/SDL2-2.0.5.tar.gz -O SDL2-2.0.5.tar.gz
# tar -xzvf SDL2-2.0.5.tar.gz
$ cd SDL2-2.0.5 && ./configure && make && sudo make install
实现
库在 creates.io 上可用。在您的 Cargo.toml 中添加它。
orbclient_window_shortcuts = "0.1.5"
在您的 lib 或 bin 代码中
use shortcut::{Shortcut, ShortcutId, ShortcutEq};
为您的 Window
应用实现
// Provides the capturing of default shortcuts: CTRL+O (Open), CTRL+N (New), CTRL-Q (Quit)
let mut sceq = ShortcutEq::with_defaults();
在循环中捕获窗口事件实现 EventOption::Key(ke)
每个支持的快捷键都会返回一个 ShortcutId::ShortcutId
,这可以匹配。
events: loop {
for event in window.events() {
match event.to_option() {
EventOption::Key(ke) => match sceq.update(ke) {
Some(sc) => {
// Sample action
if PartialEq::eq(sc, &ShortcutId::Quit) { break 'events }
None => {...},
},
...
未来和潜在的功能
- 对特定于窗口的快捷键提供通用支持
- 启用和禁用一组快捷键(添加和删除到支持的快捷键)
- 重构以更符合 Rust 习惯的代码
- 描述性方法声明快捷键
我会考虑任何建议和想法,以改进我的 Rust 编程能力。:)
贡献
非常感谢。请提交错误报告、增强建议或问题 issues,或者分支并请求合并。非常感谢。
抱歉
我对 Rust 相对较新,每天都在发现新事物。我为在 crates.io 上每天多次失败的构建、错误的徽章、版本号等表示歉意。
依赖关系
~2–3MB
~38K SLoC