0

我想用 Rust 编写一个低级、快速的文本编辑器。对于图形/窗口,我计划使用 SFML 在 Windows、macOS 和 Linux 之间轻松快速地交叉兼容。

现在,我遇到的问题是在需要 Shift 键的文本编辑器中键入字符时。SFML,甚至其他查询本机操作系统系统调用(如keyboard_query )的库只为您提供“按下SHIFT 和3”之类的扫描码,现在,在我的键盘(英国Macintosh 键盘)上,我希望它£在文本编辑器中生成一个,但是美国人会希望它#为其他键盘布局生产,依此类推。

是否有一种可靠的跨平台方法可以知道某人想要输入哪个字符,而不管他们的键盘布局如何?

如果做不到这一点,有没有办法只在 macOS 中做到这一点?或者我是否必须为我想要支持的每个键盘布局输入 Shift+whatever 键生成的大映射?

4

1 回答 1

3

如果您已经在使用 SFML,则无需转换扫描码。

与其看Event::KeyPressed,不如看Event::TextEntered。这样你就得到了一个unicode: char,你可以直接将它插入到你的字符串中。例外情况是,您仍然需要注意Event::KeyPressed,以便能够处理例如退格。

于 2021-02-16T17:40:45.780 回答