4 个版本 (2 个破坏性更改)
0.3.0 | 2020 年 8 月 3 日 |
---|---|
0.2.1 | 2020 年 6 月 9 日 |
0.2.0 | 2019 年 8 月 30 日 |
0.1.0 | 2019 年 2 月 25 日 |
#1171 in 硬件支持
每月 29 次下载
在 keyboard-layouts 中使用
56KB
1K SLoC
键盘布局
获取用于多种不同键盘布局输入 ASCII 字符串所需的键码和修饰键。
从 Teensyduino 项目 的 初始布局映射 中获得灵感和参考。
它通过预处理描述每个布局键映射的 C 头文件来工作,包括使用 #define
的任何死键。然后使用 bindgen 将这些转换为 Rust 常量,然后使用 syn 提取相关键码和掩码。最后使用 quote! 和 lazystatic! 生成布局映射,让您能够无需重新编译即可动态切换键盘布局。
示例用法
let test_string = "This is a test string.\n";
// Get the sequence of HID packets that would be produced by a keyboard with the specified layout
let hid_packets = keyboard_layouts::string_to_hid_packets("LAYOUT_UNITED_KINGDOM", test_string).unwrap();
// Write those HID packets to your virtual keyboard device. In this case a OTG HID gadget device file (linux).
std::fs::write("/dev/hidg0", hid_packets);
虚拟键盘设备
这取决于您的操作系统和底层硬件。到目前为止,这仅在 Linux 上进行了测试,但 HID 数据包应适用于 Windows 和 Mac。
在 Linux 上,您可以:
- 在具有 OTG USB 端口的 Linux SBC 上创建 HID 设备文件。例如,树莓派、Beaglebone。 本指南描述了如何操作
- 查看测试以了解如何使用 tokio-linux-uhid crate 在 Linux 桌面上创建虚拟 HID 设备
对于 Windows 和 Mac,我恐怕没有主意。
kbsim CLI 工具
包含一个名为 kbsim
的 CLI 工具,这可能很有用。
USAGE:
kbsim [FLAGS] [OPTIONS] [STRING]
FLAGS:
-h, --help Prints help information
-n, --newline Hit the 'Enter' key after writing the string
-V, --version Prints version information
OPTIONS:
-c, --cooldown <cooldown> Specify the number of milliseconds to wait between sending each HID packet to the
device file [default: 0]
-d, --delay <delay> Specify the number of seconds to wait before writing [default: 0]
-f, --hid-file <hid_file> The HID file to write to. Defaults to /dev/hidg0
-l, --layout <layout> The keyboard layout to use. Specify 'list' to show all available layouts [default:
LAYOUT_US_ENGLISH]
ARGS:
<STRING>
支持的布局
西班牙语
加拿大法语
德国 Mac
瑞士德语
冰岛语
英国
意大利语
瑞士法语
芬兰语
丹麦语
法语
德语
土耳其语
比利时法语
葡萄牙语
加拿大多语言
拉丁美洲西班牙语
美国英语
美国国际
瑞典语
巴西葡萄牙语
爱尔兰语
挪威语
测试
测试所有布局是否正确是困难的。因此,测试是临时性的。
每个布局的测试分为字母数字和符号。每个测试
- 设置用户会话的键盘布局(仅在纯虚拟控制台,无X)
- 在机器上使用 /dev/uhid 创建虚拟 HID 设备(用户需要权限)
- 将所有指定的字符写入虚拟 HID 设备(光标需要位于测试终端并保持在那里)
- 从 stdin 读取字符串类型并与原始字符串比较。
依赖项
~245KB