Macos cocoa以外的OSX Leopard键盘输入API

Macos cocoa以外的OSX Leopard键盘输入API,macos,events,keyboard,Macos,Events,Keyboard,我目前正试图在OSX上获得简单的键盘输入,现在我通过Leopard HID Manager对象来实现这一点,这通常是可行的,但由于这是一个相当低的级别,我想知道是否有一个API可以提供一些额外的功能,如键重复或Unicode支持(因为当我捕捉到HID I/O级别的事件时,我想我必须从头开始编写所有这些奇特的附加程序)我们有能力做到这一点,但我很确定它们已经被弃用了,因为在当前的OSX参考中你找不到任何关于它们的信息,我也不想使用任何弃用的信息,所以我想知道在我的搜索过程中是否有我没有遇到的替代方

我目前正试图在OSX上获得简单的键盘输入,现在我通过Leopard HID Manager对象来实现这一点,这通常是可行的,但由于这是一个相当低的级别,我想知道是否有一个API可以提供一些额外的功能,如键重复或Unicode支持(因为当我捕捉到HID I/O级别的事件时,我想我必须从头开始编写所有这些奇特的附加程序)我们有能力做到这一点,但我很确定它们已经被弃用了,因为在当前的OSX参考中你找不到任何关于它们的信息,我也不想使用任何弃用的信息,所以我想知道在我的搜索过程中是否有我没有遇到的替代方法

谢谢!

在Unicode级别,接收输入的官方API是Objective-C中的协议,处理键盘和程序之间输入的官方API是

而且,你永远无法从头开始正确地编写一个足够奇特的额外输入。你需要获得用户对国际键盘的设置,并相应地修改获得的键。你也永远无法从头开始编写一种将原始键输入转换为中文或日语的输入法

所以,我认为明智的选择是

  • 只需从键盘上获取原始ASCII数据,不要期望更多,或者
  • 至少在按键输入处理周围使用Cocoa,以获得附加功能
  • 没有

    在Unicode级别,接收输入的官方API是Objective-C中的协议,处理键盘和程序之间输入的官方API是

    而且,你永远无法从头开始正确地编写一个足够奇特的额外输入。你需要获得用户对国际键盘的设置,并相应地修改获得的键。你也永远无法从头开始编写一种将原始键输入转换为中文或日语的输入法

    所以,我认为明智的选择是

  • 只需从键盘上获取原始ASCII数据,不要期望更多,或者
  • 至少在按键输入处理周围使用Cocoa,以获得附加功能

  • 嘿,谢谢,我能不能把我的原始USB HID输入转换成OSX虚拟键代码,然后根据键盘的语言翻译键。这是我到目前为止的想法!
    UCTranslate
    不处理通用输入方法。它只适用于键到字符映射独特的键盘,比如欧洲键盘。东亚n个键盘不起作用。祝你好运,获得使用它所需的
    UCKeyboardLayout
    结构;它基于古老的
    rsrc
    系统,现在被.keyboardlayout XML文件取代。我不知道有什么易于使用的API可以将XML转换为所需的
    rsrc
    。说真的,只需使用Cocoa作为文本输入。这我的想法是:TISInputSourceRef currentKeyboard=TISCopyCurrentKeyboardInputSource();CFDataRef layoutData=(CFDataRef)TISGetInputSourceProperty(currentKeyboard,kTISPropertyUnicodeKeyLayoutData);const UCKeyboardLayout*keyboardLayout=(const UCKeyboardLayout*)CFDataGetBytePtr(layoutData);啊,我明白了。感谢您提供的信息:)为什么你首先使用HID输入?我希望能够同时使用多个键盘,并且还设计了具有Prababy思想的C++键盘类的功能。在这种情况下,Cocoa并没有真正融入其中。虽然包装cocoa对我的窗口类来说很好,但我无法真正让它在cocoa中对键盘起到很好的作用,所以我使用了HID管理器。嘿,谢谢,我不能将原始USB HID输入转换为OSX虚拟键代码,然后根据键盘语言转换键吗。到目前为止这是我的主意<代码>UCTranslate不处理通用输入方法。它只适用于键到字符映射唯一的键盘,如欧洲键盘。东亚键盘不起作用。祝你好运,获得使用它所需的
    UCKeyboardLayout
    结构;它基于古老的
    rsrc
    系统,现在被.keylayout XML文件取代。我不知道有什么易于使用的API可以将XML转换为所需的
    rsrc
    。说真的,只需使用Cocoa进行文本输入。这是我的想法:tiInputSourceRef currentKeyboard=TISCopyCurrentKeyboardInputSource();CFDataRef layoutData=(CFDataRef)TISGetInputSourceProperty(currentKeyboard,kTISPropertyUnicodeKeyLayoutData);常量UCKeyboardLayout*键盘布局=(常量UCKeyboardLayout*)CFDataGetBytePtr(布局数据);啊,我明白了。谢谢你的信息:为什么你首先使用HID输入?我想能够同时使用多个键盘,并且还设计了具有Prababy思想的C++键盘类的功能。在这种情况下,Cocoa并没有真正融入其中。虽然包装cocoa对于我的窗口类来说很好,但我无法在键盘的cocoa中以良好的方式工作,所以我选择了HID管理器。