我在哪里可以找到kCGKeyboardEventKeycode西里尔语的密钥代码列表



甚至不知道该把这个问题放在哪里。这是我找到的一段代码。

CGEventRef myCGEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {
//0x0b is the virtual keycode for "b"
//0x09 is the virtual keycode for "v"
if (CGEventGetIntegerValueField(event, kCGKeyboardEventKeycode) == 0x0B) {
CGEventSetIntegerValueField(event, kCGKeyboardEventKeycode, 0x09);
}
return event;
}

你可以在这里找到整个代码http://pastebin.com/eJ9PYPAZ.

它在任何应用程序中"全局"地交换一个字母与另一个字母。我想要的是能够把拉丁字母改成西里尔字母。kCGKeyboardEventKeycode使用键来访问一个整数字段,该字段包含按下键或按下键事件的虚拟键代码。例如0x0b是"b"的虚拟密钥代码。西里尔字母"б"的虚拟密钥是什么?

我的问题是,我无法在网上的任何地方找到西里尔字母的关键代码列表,就好像它们不存在一样。请帮忙。

据我所知,西里尔字母没有虚拟键代码。

虚拟密钥代码并不表示密钥将生成哪个字符。它们通过参考少数标准键盘型号(ANSI、ISO或JIS)中的一种来指示键的位置。

因此,例如,kVK_ANSI_B(0x0b;常数在<Carbon/HIToolbox/Events.h>中定义)是对ANSI键盘上"B"键所在位置的引用。也就是说,它引用了大致位于键底行中间的位置。然而,它并不意味着标记为"B"或产生"B"字符的键。产生的字符是当前选择的键盘布局的函数,由软件控制,可以随时更改。标签与计算机无关(尽管对用户有帮助)。

换句话说,虚拟键盘代码类似于硬件扫描代码,但它是"虚拟的",因为它是从任何实际的物理键盘中抽象出来的。它引用了一个理想化的键盘。

因此,为了解决您试图实现的目标,您需要为键位置指定虚拟键代码,当使用俄语/西里尔文键盘布局时,该代码将产生"б"。通过选择OS X附带的俄语键盘布局,我可以看出这将是kVK_ANSI_Comma(0x2b)。

最新更新