「 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