【问题标题】:Send a keystroke to OS X programmatically以编程方式向 OS X 发送击键
【发布时间】:2012-09-21 14:50:24
【问题描述】:

您将如何以编程方式在 Mac OS X 上模拟击键 ö

这不仅仅是一个随机选择的字符,我知道您可以使用嵌入式 Applescript 或 CGEventCreateKeyboardEvent 模拟所有 ASCII 字符以及一些特殊字符,例如 EscBackspace 等。但是那些没有定义 CGKeyCode 的键呢?一定有办法!

【问题讨论】:

  • 这个问题的公认答案 (stackoverflow.com/q/1918841/3009) 可能就是您要找的。​​span>
  • @highlycaffeinated 我阅读了您提到的源代码,但它仅适用于 ASCII,我需要诸如 õñéč 等字符的键码。跨度>
  • 重音字符没有单一的键码。它们的正常输入需要多次按键,模拟输入也是如此。你也应该看看CGEventKeyboardSetUnicodeString()
  • @JoshCaswell,我认为CGEventKeyboardSetUnicodeString 是正确答案,您应该将其发布为答案。
  • 如果选择了德语键盘布局,tell application "System Events" to keystroke "ö" 将起作用。一些键盘布局为带有变音符号的拉丁字符提供单独的键(和键码)。

标签: objective-c cocoa applescript macos-carbon


【解决方案1】:

您需要使用 CGEventSetFlags 来设置一个 'u' 击键后跟一个向上键事件然后是一个 'o' 击键的选项修饰符。

https://developer.apple.com/library/mac/#documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html

如果您需要更多信息,请询问,我将创建一些代码示例

【讨论】:

  • 我明白了。对任意 UniChar 执行此操作是否可行?我的意思是有一个函数,或者至少是一个表,它可以将 unicode 字符映射到带有可选修饰符的击键?
  • 我不知道,如果你去我的github.com/nathanday/ndhotkeyevent,它包含一个名为 NDKeyboardLayout 的类,可以将 ASCII 字符转换为键盘键码,你可以看看可能会得到一些想法。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
相关资源
最近更新 更多