2013-02-23 16 views
1

我想弄清楚如何去做一个应用程序,将有按钮时,将按下导致我的Mac键入某个字符(或修正值)。我已经得到了完全按照需要布置的按钮,因此我的项目现在距离完成仅有两步之遥:如何去做应用程序的iPad,使其成为一个Mac键盘

  1. 发送消息给mac,让它知道要按哪个键。
  2. 有mac按实际键 对于1我想建立一个bonjour服务,它发送一个字符串与在ipad上按下的键关联到mac。 mac会收到这个。我的键盘上的一些键需要移位(即@),所以我想这个代码就像S120一样。无论收到消息,然后将读取字符串看到它需要刺激移动按键与120关联。 对于2我没有什么想法。请记住,这需要快速,因为它将是键盘。我想做一个iokit项目,将接收字符串解码并模拟正确的密钥。尽管这可能是过度的,我听说你在处理内核时一定要小心。如果我的想法不正确,请提出更好的方法并填写详细信息。谢谢!
+0

这确实是两个问题,但iOS设备和Mac之间的通信是您可以单独研究的内容,例如http://stackoverflow.com/questions/7127832/robust-real-time-communication-between-ios -app-and-mac-app – joerick 2013-02-23 15:15:03

+0

你提供的这个链接很有帮助,但是听起来好像太慢了,并且过于夸张 – fozbstuios 2013-02-23 15:52:40

回答

0

至于模拟按键,有一个简单的方法来使用Applescript来做到这一点。

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

(您可能需要在辅助功能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/

+0

@JoerickYes但是在我的应用程序中,applescriot对于这个太慢了。然后有让它知道模拟哪个键的问题... – fozbstuios 2013-02-23 15:48:38

+0

iokit上的任何想法 – fozbstuios 2013-02-23 17:02:13

+0

我已经编辑了关于速度的建议帖子 – joerick 2013-02-25 00:01:34

相关问题