2020-03-03T21:29:12+09:00

System Event を使わないで キータイプ する AppleScript の修正版

System Event を使わないで キータイプ する AppleScript」を紹介しました。

復習すると、macOS 10.14 Mojave から AppleEvent の送信に最初に一回だけだけど、承認をもとめらるから、それを回避しようという話です。

あれはあれで動作するようでしたが、不完全だったので、修正版を紹介します。

修正点は、key down だけでなく、key up イベントも発生させているところ。ちゃんと、key up を発生させないと、なんかしら副作用があるみたい。自分のところでは、LaunchBar の Modifier Taps が効かなくなりました。

おまけとして、ちゃんと CFRelease してみました。これは、あまり関係ないかな。

on press_command_V()
run script "ObjC.import('Carbon');
const source = $.CGEventSourceCreate($.kCGEventSourceStateHIDSystemState);
const key_down = $.CGEventCreateKeyboardEvent(source, $.kVK_ANSI_V, true);
const key_up = $.CGEventCreateKeyboardEvent(source, $.kVK_ANSI_V, false);
$.CGEventSetFlags(key_down, $.kCGEventFlagMaskCommand);
$.CGEventPost($.kCGHIDEventTap, key_down);
$.CGEventPost($.kCGHIDEventTap, key_up);
$.CFRelease(key_down);
$.CFRelease(key_up);
$.CFRelease(source);" in "JavaScript"
end press_command_V