#快捷键 #redox #助记符 #快捷 #轨道 #orbclient

nightly orbclient_window_shortcuts

为 orbclient::Window 提供快捷键支持

6 个版本

使用旧的 Rust 2015

0.1.5 2017年6月30日
0.1.4 2017年6月29日

#460GUI

Download history 1/week @ 2024-06-29 27/week @ 2024-07-06 81/week @ 2024-07-27

每月 108 次下载

MIT 许可证

11KB
140

Orbclient Window Shortcuts

crates.io Build Status License: MIT

描述

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