将AppleScript重写为appscript-rb,在Keyboard Maestro中设置变量

时间:2013-04-04 19:51:57

标签: ruby macos applescript appscript keyboard-maestro

我需要在Keyboard Maestro中设置一个变量,文档说明这可以用AppleScript完成:

tell application "Keyboard Maestro Engine"
  make variable with properties {name:"My Variable", value:"New Value"}
end tell

我正在尝试将其转换为appscript-rb表示法,到目前为止我已经

Appscript.app('Keyboard Maestro Engine').
  make(:variable, properties={:name=>'var1', :value => 'val1'})

我在此处记录了很多成功的摘录:http://reganmian.net/wiki/appscript,其中许多都遵循上述模式,但此代码段不起作用,它会提供“未知的关键字参数名称”。

3 个答案:

答案 0 :(得分:1)

您可以使用默认值write和defaults read将变量存储在自己的plist中。

答案 1 :(得分:1)

你的命令语法错误(很难想象AppleScript的语法清晰明确,我知道!)。

命令应该是这样的:

#!/usr/bin/ruby

require "rubygems";
require "appscript";

kme = Appscript.app('Keyboard Maestro Engine');
kme.make(:new => :variable, :with_properties => {:name => "My New Variable", :value => "New Value 2"});

我发现this draft book of Scripting Mac Applications With Ruby有助于弄清楚如何将AppleScript代码翻译为ruby。

顺便说一句,如果你知道变量已经存在,那么只使用简单的引用get / set命令就更容易了:

kme = Appscript.app('Keyboard Maestro Engine');
p kme.variables["My Variable"].value.get;
kme.variables["My Variable"].value.set("Next Value");
p kme.variables["My Variable"].value.get;

答案 2 :(得分:0)

所以我希望得到一个更优雅的答案,但根据Phillipe Martin的评论,这是一种有效的方法:

defaults write reganmian.net.researchr prelude "export LC_ALL=en_US.UTF-8;export LANG=en_US.UTF-8;declare -x LANG=en_CA.utf-8"
defaults write reganmian.net.researchr ruby "/usr/local/bin/ruby -KU"
defaults write reganmian.net.researchr path "/Users/Stian/src/folders2web"

然后

将其添加到Keyboard Maestro“执行shell命令

`defaults read reganmian.net.researchr prelude`
`defaults read reganmian.net.researchr ruby` `defaults read reganmian.net.researchr path`/dokuwiki.rb image

它有效,但看起来很笨重。

(这两件事会使这更容易,一个是能够配置Keyboard Maestro用来执行shell命令的shell - 这不是你的默认shell,不尊重〜/ .profile,和没有正确的代码页,路径等 - 另一个是允许在设置中定义任意变量,可以使用%variable%插入。