Applescript按住⌘F2并停留5秒钟?

时间:2014-01-31 04:24:11

标签: applescript

我基本上试图解决这个问题,因为我想将我的iMac用作我的macbook air的外接显示器。我也想将iMac键盘用于我的macbook air但是出于某种原因,Apple决定一旦按住Command F2激活目标显示模式(意味着它现在是外接显示器),键盘与iMac配对就不能了与iMac不一致。

为了解决这个问题,我想我最初只需将键盘与macbook air配对(留下没有键盘的iMac)并创建一个Applescript宏,模拟键盘按下并按住Command F2五秒钟,无需使用去买另一个Apple键盘。

到目前为止,这是我所拥有的,但它不起作用。它告诉我F2不对。我很确定F2的密钥代码是120。

tell application "System Events"
     key down Command
     key down F2
     delay 5
     key up Command
     key up F2
end tell

有谁知道我怎么做到这一点?

2 个答案:

答案 0 :(得分:3)

OS X 10.9.1的观察结果:

您发送F2的方式存在问题(您需要使用(key code 120)而非120),但更大的问题是 {{1只能使用修饰符键按预期工作。

虽然可以发送非修改键(使用key up/down语法),但向上/向下方面被忽略,同时(key code <n>)key down (key code <n>)语句key up (key code <n>) 有效相同(即发送key code <n>事件之后紧跟Key Down事件。

有一个建议的解决方法here,基于重复按顺序发送击键 - 值得一试,但从技术角度来看,这与保持按键[组合] 按下,所以我不确定它是否会起作用。

根据您的情况(并将Key Up替换为key down),我们得到:

key code

正如我所说:这可能行不通;还要注意循环是“紧”的,这意味着它会使你的机器非常繁忙(如果重复发送密钥,但不一定尽可能快,你可以插入一个短tell application "System Events" set now to the seconds of the (current date) set later to now + 5 if later > 60 then set later to later - 60 key down command # Workaround: send F2 repeatedly. repeat while the seconds of the (current date) is not later key code 120 end repeat key up command end tell )。

一些可选的背景信息

  • delaykey up命令虽然也需要key down上下文,但不会在应用程序字典System Events中公开(仅System Events.sdef和列出key code - 这可能表明Apple没有正式支持它们。
  • 在OS X 10.9.1上(与OS X 10.8不同 - 不了解早期版本)有一个奇怪的错误,即每当您使用keystroke key down时,会发送额外的“a”按键1}}说明符。
  • 确定键码值的方法(从各种其他SO答案收集,大多数是here):

答案 1 :(得分:1)

我已经启动了一个类似的项目,即监控iMac并自动触发目标显示模式,并在连接Macbook时关闭蓝牙。您可以从https://github.com/duanefields/VirtualKVM下载。