JXA : JavaScript for Automation
[M1 Mac, Ventura 13.0]
クリップボードへのコピーは即時ではないことが判明したため、do…while文でループさせました。これで動作の再現性がようやく確保できました。
Google Chrome, Safari, Microsoft Excelではこのスクリプトで問題なく変換しますが、肝心のVSCodeがどうしてもダメです。
もう少しなので何とかしたいところです。
function run(input, parameters) {
var se = Application("System Events");
se.includeStandardAdditions = true;
var txt0 = se.theClipboard();
se.keystroke("a", {using:"command down"});
se.keystroke("c", {using:"command down"});
do {
var txt1 = se.theClipboard();
} while (txt0 == txt1);
// se.displayDialog(txt1);
lib = Library('convertlib');
var ret = lib.romaji_to_hiragana(txt1);
se.setTheClipboardTo(ret);
do {
var txt2 = se.theClipboard();
} while (txt1 == txt2);
// se.displayDialog(txt2);
se.keystroke("v", {using:"command down"});
se.keystroke("a", {using:"command down"});
// VSCodeを別扱いにしたいがうまくいかず
// var curApp = Application.currentApplication();
// var nameApp = curApp.name();
// se.displayDialog(nameApp);
se.keyCode(104);
se.keyCode(104);
// または
// se.keystroke("r", {using:["control down", "shift down"]});
return input;
}