我基本上是想弄明白这一点,因为我想用我的iMac作为macbook air的外部显示器。我也想在我的macbook air上使用iMac键盘然而,由于某些原因,苹果公司决定,一旦你按下并按住F2命令激活目标显示模式(这意味着它现在是一个外部显示器),与iMac配对的键盘无法与iMac配对。
要解决这个问题,我想我可以先把键盘和macbook air配对(让iMac没有键盘),然后创建一个AppleScript宏来模拟键盘按住F2键5秒钟,这样就不需要再去买另一个苹果键盘了。
这是我到目前为止所拥有的,但它不起作用。它告诉我F2是不对的。我很确定F2的关键代码是120。
tell application "System Events"
key down Command
key down F2
delay 5
key up Command
key up F2
end tell有没有人知道我该怎么做?
发布于 2014-02-01 05:20:58
从OS X 10.9.1开始的观察:
您发送F2的方式有一个问题(您需要使用(key code 120),而不仅仅是120),但更大的问题是,key up/down 只能与修饰符键一起按预期工作。
虽然可以发送非修饰符键(使用(key code <n>)语法),但向上/向下方面被忽略,使得key down (key code <n>)和key up (key code <n>)语句实际上与代码相同(即,紧跟在<代码>D25事件之后的<>D24事件被发送)。
有一个建议的解决办法here,基于重复发送短序列的击键-它值得一试,但从技术角度来看,它与按住组合键不同,所以我不确定它是否有效。
根据您的情况进行调整(并用key code替换key down ),我们得到:
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正如我所说的:这可能不起作用;还要注意循环是“紧的”,这意味着它会使您的机器非常繁忙(如果可以选择重复发送密钥,但不一定要尽可能快,您可以插入一个简短的delay)。
一些可选的背景信息
key up和key down命令,虽然也需要System Events上下文,但不在System Events.sdef中展示,应用程序的字典(只列出了key code和keystroke )-这可能表明苹果没有正式支持它们。OS X 10.9.1上的(keycode <n>)时,就会发送额外的"a“按键(从各种SO答案中收集,主要是here):一个交互式使用的免费图形用户界面应用程序-非常方便。/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h
发布于 2014-06-25 20:30:20
我已经启动了一个类似的项目,即监控iMac并自动触发目标显示模式,并在连接Macbook时关闭蓝牙。你可以从https://github.com/duanefields/VirtualKVM下载。
https://stackoverflow.com/questions/21472368
复制相似问题