JXA击键不适用于特殊字符

时间:2017-06-01 17:25:17

标签: applescript jxa

我正在尝试设置一个简单的Apple JXA脚本,将着名的耸肩表情符号写入屏幕(它模拟按键我猜)。我尝试的每件事都产生了这个“¯\ _ _(a)_ /¯”。我假设因为我正在使用按键来模拟按键,而我没有日语键盘,我总是会得到它。也许我应该将字符串复制到剪贴板?

到目前为止,这是我的代码:

// Shrug Script
// ¯\_(ツ)_/¯
//
// contains special character:
// ツ
// KATAKANA LETTER TU
// Unicode: U+30C4, UTF-8: E3 83 84

// thought maybe I needed to decode it ¯\_(ツ)_/¯
function decode_utf8(s) {
  return decodeURIComponent(escape(s));
}

// this is the newer "Script" aka Javascript way
var sysEvents = Application('System Events');

// this didn't work:
// sysEvents.keystroke("¯\\_(ツ)_/¯");

// this doesn't work either
sysEvents.keystroke("¯\\_("+ decode_utf8("\xE3\x83\x84") +")_/¯");

2 个答案:

答案 0 :(得分:0)

好的,所以将它添加到我的剪贴板并立即粘贴它要容易得多。这不是我问题的直接答案,但最终结果是我想要的。

Apple Script版本:

# Shrug Script
# ¯\_(ツ)_/¯
#
# contains special character:
# ツ
# KATAKANA LETTER TU
# Unicode: U+30C4, UTF-8: E3 83 84

set the clipboard to "¯\\_(ツ)_/¯"
tell application "System Events" to keystroke "v" using command down

JXA版本:

var app = Application.currentApplication()
    app.includeStandardAdditions = true
var seApp = Application('System Events')

// set current app's clipboard  
app.setTheClipboardTo("¯\\_(ツ)_/¯")
// paste!
seApp.keystroke('v', { using: 'command down' });

答案 1 :(得分:0)

我强烈推荐这类任务的服务,因为他们几乎可以在任何应用程序中直接操作文本;不需要像GUI脚本这样的hacky kludges。很容易在Automator中创建一个新的服务,它将输出一段文本,此外,您可以在完成后将其绑定到“系统偏好设置”中的键盘快捷键。这是一个你可以轻松适应的例子:

Creating an osx service to insert the current date and time