Cocoa 中用于在 unicode 字符和虚拟键码之间转换的内置函数?

发布于 2024-09-25 18:05:41 字数 170 浏览 7 评论 0 原文

有没有办法将 unicode 字符转换为 Mac 虚拟键码? (不构建我自己的表?)看起来 Windows 上有 VkKeyScanEx,但我不知道 OS X 上的 Cocoa 有类似的功能。

我实际上正在尝试为 iPad 执行此操作。我想将从键盘获取的字符转换为按键代码,因为 iPad 键盘不提供按键代码。

Is there a way to convert a unicode character to a Mac virtual keycode? (without building my own table?) It looks like on Windows there is VkKeyScanEx, but I'm not aware of a similar function for Cocoa on OS X.

I'm actually trying to do this for the iPad. I want to convert character taken from the keyboard and convert them into key codes, since the iPad keyboard won't supply keycodes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

塔塔猫 2024-10-02 18:05:59

我对为什么需要标记 iPhone/iPad 很感兴趣——你肯定可以在 OS X 中完成所有转换吗?此外,iPhone/iPad“键盘”从根本上来说是一种文本输入方法(参见 UITextInput)——并不是说它“不提供键码”;而是说它“不提供键码”。根本就没有(当你点击“A”,按住一会儿,然后选择一个随机重音版本时,它应该提供什么键码/修饰符?)。

如果您打算这样做,请在 iPad 和 OS X 上的各种(奇怪的)输入法上进行测试。如果有一个 API 可以插入字符串,请这样做(但这对于需要插入字符串的游戏来说可能效果不太好)读取扫描码...)。您甚至可以编写接受 Unicode 字符串的自定义输入法扩展。

当 Dvorak VNC 客户端输入 QWERTY VNC 服务器时会发生什么是有争议的……


我将以一个离题的故事结束:

一年多前(在我拥有 iPhone 之前),我得到了一台 N810。如果说有什么不同的话,那就是它是一个还算不错的 SSH/VNC 客户端,并且有一个不错的键盘。

只不过它不是标准键盘。 1 是 Fn-Q 并且 !是 Fn-A,但是当我输入 Fn-A 来获取“!”时,VNC 服务器最终输入“1”。键入 Shift-Fn-A 会显示“!”我一直在寻找(我认为 Shift-Fn-Q 也有效)。

某个地方的某个东西解析了字符“!”,确定它具有与“1”相同的扫描代码,并在不带修饰符的情况下键入 1 的扫描代码。它可以自动按住 Shift。它甚至可以插入字符串。相反,它只是失败了。

I'm interested in the reason why it needs to be tagged iPhone/iPad — surely you can do all the conversion in OS X? Also, the iPhone/iPad "keyboard" is fundamentally a text input method (see UITextInput) —it's not that it "won't supply keycodes"; there simply aren't any (and what keycode/modifiers should it supply when you tap "A", hold for a bit, and pick a random accented version?).

If you're going to do this, test it on a variety of (odd) input methods on both the iPad and OS X. If there's an API to insert a string, do so (but this might not work so well for games which read scan codes...). You could even write a custom input method extension which accepted Unicode strings.

It's debatable what should happen when a Dvorak VNC client types to a QWERTY VNC server...


I'll end with a tangential story:

A little over a year ago (before I got an iPhone), I got a N810. If anything, it makes a half-decent SSH/VNC client and has a decent keyboard.

Except it's not a standard keyboard. 1 is Fn-Q and ! is Fn-A, but when I type Fn-A to get "!", the VNC server ends up typing "1". Typing Shift-Fn-A gives me the "!" I was looking for (I think Shift-Fn-Q also works).

Something, somewhere, parses the character "!", decides that it has the same scan code as "1", and types the scan code for 1 with no modifier. It could automatically hold down Shift. It might even be able to insert a string. Instead, it just fails.

征棹 2024-10-02 18:05:52

GoogleCode 上的 ShortcutRecorder 项目有一个 NSValueTransformer 子类“http://code.google.com/p/shortcutrecorder/source/browse/trunk/Source/SRKeyCodeTransformer.m” rel="nofollow">将字符串转换为键码,反之亦然,但我不是确定它是否可以在 iOS 上运行。不过,这是一个开始寻找的好地方。

The ShortcutRecorder project on GoogleCode has an NSValueTransformer subclass for converting strings to keycodes and vice versa, but I'm not sure if it'll work on iOS. It's a great place to start looking, though.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文