【问题标题】:Send key down / up events for number keys using AppleScript使用 AppleScript 发送数字键的向下/向上事件
【发布时间】:2012-05-29 13:16:48
【问题描述】:

我需要向使用 AppleScript 的应用程序发送 按键按下/按键向上事件 以获取数字键。但是,命令:

key down "6"
delay 1
key up "6"

发送击键,就好像它们来自数字键盘一样。我需要将它们解释为来自键盘顶部的数字行。

我也尝试使用(ASCII character 54) 代替文字,但没有成功。

请注意,我需要发送密钥 - 发送 keystrokekey code 是不行的。

【问题讨论】:

    标签: keyboard applescript


    【解决方案1】:

    尝试发送key down 虚拟键代码而不是击键文字,即

    key down (key code <int>)
    

    int 是其中之一

    1 → 18
    2 → 19
    3 → 20
    4 → 21
    5 → 23
    6 → 22
    7 → 26
    8 → 28
    9 → 25
    0 → 29
    

    你会发现

    中声明的所有虚拟键码
    /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h
    

    但如果您不想将十六进制转换为整数,查找它们的最简单方法可能是使用 Many Tricks 的 Key Codesdj bazzie wazzieas suggested

    【讨论】:

    • 谢谢...但这似乎不起作用。 “key code”命令将击键发送到应用程序,但是按键向上/向下组件被忽略。
    • @monofonik:确实 - key up/down 仅在使用 修饰符 键时才能正常工作。虽然可以发送非修饰键(使用(key code &lt;n&gt;) 语法),但忽略向上/向下方面,使key down (key code &lt;n&gt;)key up (key code &lt;n&gt;) 语句实际上与key code &lt;n&gt; 相同
    • 使用key down (key code &lt;int&gt;),与任何&lt;int&gt; 一起因为总是a 被按下。有什么想法吗?
    • 也许这有助于解决“a”错误:stackoverflow.com/questions/25366014/…
    【解决方案2】:

    在使用需要键码或击键的系统事件时,上下键将不起作用。击键将执行它的值,而键码需要键号。从应用商店下载应用“钥匙代码”以确定正确的钥匙代码(它是免费的)。

    --activate the application (and it's first responder) first
    tell application "System Events"
        keystroke "1" --value "1"
        key code 18 --1 from upper num keys
        key code 83 --1 from num pad
    end tell
    

    【讨论】:

    • 感谢您的回答,但我实际上需要按住键,而不仅仅是击键。
    • 实际上,key downkey up 工作,尽管它们在 System Event 的 AppleScript 字典中不存在(想一想——也许是静默弃用)。
    猜你喜欢
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 2011-06-21
    相关资源
    最近更新 更多