【问题标题】:Applescript Press and hold ⌘ F2 for 5 seconds?Applescript 按住⌘ F2 5 秒钟?
【发布时间】:2014-06-25 20:30:20
【问题描述】:

我基本上是想弄清楚这一点,因为我想将 iMac 用作我的 macbook air 的外接显示器。我也想在我的 macbook air 上使用 iMac 键盘,但是由于某种原因,Apple 决定,一旦您按住 Command F2 以激活目标显示模式(这意味着它现在是外接显示器),与 iMac 配对的键盘不能与 iMac 取消配对。

为了解决这个问题,我想我最初只需将键盘与 macbook air 配对(让 iMac 没有键盘)并创建一个 Applescript 宏,该宏将模拟键盘按住 Command 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

有谁知道我如何做到这一点?

【问题讨论】:

标签: applescript


【解决方案1】:

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>)语句实际上与key code <n> 相同(即,发送Key Down 事件后紧跟Key Up 事件)。

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

根据您的情况(并将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

正如我所说:这可能行不通;另请注意,循环是“紧密”的,这意味着它会使您的机器非常忙碌(如果可以选择重复发送密钥,但不一定要尽可能快,您可以插入一个简短的delay)。

一些可选的背景信息

  • key upkey down 命令虽然还需要 System Events 上下文,但不会在应用程序字典 System Events.sdef 中公开(仅列出了 key codekeystroke) - 这可能表明Apple 并未正式支持它们。
  • 在 OS X 10.9.1 上(与 OS X 10.8 上不同 - 不知道早期版本)有一个奇怪的错误,即每当您使用带有 (keycode <n>) 说明符的 key down 时都会发送一个额外的“a”按键.
  • 确定键码值的方法(从各种其他 SO 答案中收集,主要是 here):
    • Key Codes,一款免费的交互式 GUI 应用程序 - 非常方便。
    • 您系统上的以下头文件(十六进制格式的代码列表):
      /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h
    • List of decimal codes (incomplete)

【讨论】:

  • 非常感谢!我无法让它工作,但非常感谢您试图帮助我的努力!知识渊博。我完全会赞成你的回答,但我还没到 15 岁……我还有 2 个级别要走。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-05
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多