1

我试图弄清楚如何制作一个具有按钮的应用程序,当按下这些按钮时,我的 mac 会键入某个字符(或修饰符)。我已经按照想要的方式布置了按钮,所以我的项目现在距离完成只有两步之遥:

  1. 向mac发送一条消息,让它知道要按哪个键。
  2. 让 mac 按下实际键 For 1 我正在考虑设置一个 bonjour 服务,该服务将与在 ipad 上按下的键相关联的字符串发送到 mac。然后mac会收到这个。我键盘上的一些键是需要移位的字符(即@),所以我想这个代码将类似于 S120。无论接收到什么消息,然后都会读取字符串,看到它需要刺激 shift 按下与 120 相关的键。对于 2,我不太清楚。请记住,这需要快速,因为它将是键盘。我正在考虑制作一个 iokit 项目,它将接收字符串解码并模拟正确的密钥。不过这可能有点过头了,而且我听说在处理内核时你真的必须小心。如果我的想法不正确,请提出更好的方法并填写详细信息。
4

2 回答 2

0

至于模拟按键,有一种使用 Applescript 的简单方法。

tell application "System Events"
    keystroke "A"
end tell

(您可能需要在 Accessibility prefpane 中“启用辅助设备访问”)。

或者,可以在命令行上运行相同的脚本

osascript -e 'tell app "System Events" to keystroke "a"' 

编辑:如果您担心速度,脚本桥可以提供帮助。

#import <Foundation/Foundation.h>
#import <ScriptingBridge/ScriptingBridge.h>

int main(int argc, char *argv[]) {
    @autoreleasepool {  
        id sysEvents = [SBApplication applicationWithBundleIdentifier: @"com.apple.systemevents"];

        [sysEvents keystroke: @"h" using: 'Ksft'];
        [sysEvents keystroke: @"e" using: 0];
        [sysEvents keystroke: @"l" using: 0];
        [sysEvents keystroke: @"l" using: 0];
        [sysEvents keystroke: @"o" using: 0];

        // keyCode might be more suitable for your purposes

        for (int i = 32; i < 64; i++) 
        {
            [sysEvents keyCode: i using: 0];    
        }
    }
}

您可以使用此应用程序找到关键代码。

http://manytricks.com/keycodes/

于 2013-02-23T15:18:49.590 回答
0

您可能需要Quartz 事件服务中的CGEventCreateKeyboardEvent()功能或类似功能。

于 2013-02-25T17:05:14.810 回答