È possibile con CoreGraphics ( CGEventPost
), è un'API C (non funziona in un Cocoa-AppleScript), ma è possibile chiamare un eseguibile da un AppleScript.
Ecco il metodo per creare l'eseguibile con Xcode (versione 8.3.3):
Puoi farlo da solo (puoi scaricare Xcode da App Store ) o chiedere a una persona fidata di creare l'eseguibile.
1 - Apri Xcode, seleziona il menu " File " - > " Nuovo " - > " Progetto ..."
2-SelezionamacOSeStrumentodarigadicomando,faiclicsulpulsante" Avanti ".
3-chiamaloTypeCharacters
,selezionaObjective-Ccomelingua,faiclicsulpulsante" Avanti ".
4-salvailprogettonellacartelladesiderata.
5-NellafinestradiXcode,selezional'iconamain.m
,cancellailtestonellafinestraeincollaunodiquestiduecodici:
Ilcodicehabisognodiunloopacausadiunbug,ilmetodoCGEventKeyboardSetUnicodeString()
troncaunastringachesuperaiventicaratteri,oèunlimite(nondocumentato).
Questocodiceutilizzauncicloperdigitareunelencodicaratteriaogniiterazione,l'elencopuòconteneredaunoaventicaratteri.(Èveloce,1secondoperdigitare2400caratteriinundocumentodiTextEditsulmiocomputer.)
#import<Foundation/Foundation.h>intmain(intargc,constchar*argv[]){@autoreleasepool{if(argc>1){NSString*theString=[NSStringstringWithUTF8String:argv[1]];NSUIntegerlen=[theStringlength];NSUIntegern,i=0;CGEventRefkeyEvent=CGEventCreateKeyboardEvent(nil,0,true);unicharuChars[20];while(i<len){n=i+20;if(n>len){n=len;}[theStringgetCharacters:uCharsrange:NSMakeRange(i,n-i)];CGEventKeyboardSetUnicodeString(keyEvent,n-i,uChars);CGEventPost(kCGHIDEventTap,keyEvent);//keydownCGEventSetType(keyEvent,kCGEventKeyUp);CGEventPost(kCGHIDEventTap,keyEvent);//keyup(type20charactersmaximum)CGEventSetType(keyEvent,kCGEventKeyDown);i=n;[NSThreadsleepForTimeInterval:0.004];//wait4/1000ofsecond,0.002it'sOKonmycomputer,Iuse0.004tobesafe,increaseitIfyoustillhaveissues}CFRelease(keyEvent);}}return0;}
Questocodiceusauncicloperdigitareuncarattereadogniiterazione(èpiùlentodelprimocodice).
#import<Foundation/Foundation.h>intmain(intargc,constchar*argv[]){@autoreleasepool{if(argc>1){NSString*theString=[NSStringstringWithUTF8String:argv[1]];UniCharuChar;CGEventRefkeyEvent=CGEventCreateKeyboardEvent(nil,0,true);for(inti=0;i<[theStringlength];i++){uChar=[theStringcharacterAtIndex:i];CGEventKeyboardSetUnicodeString(keyEvent,1,&uChar);CGEventPost(kCGHIDEventTap,keyEvent);//keydownCGEventSetType(keyEvent,kCGEventKeyUp);CGEventPost(kCGHIDEventTap,keyEvent);//keyup(typethecharacter)CGEventSetType(keyEvent,kCGEventKeyDown);[NSThreadsleepForTimeInterval:0.001];//wait1/1000ofsecond,noneedofthislineonmycomputer,Iuse0.001tobesafe,increaseitIfyoustillhaveissues}CFRelease(keyEvent);}}return0;}
Nota:questocodicefunzionasumacOSSierraedovrebbefunzionaresuElCapitan,manonsuunsistemaoperativoprecedente.
6-Selezionailmenu" Prodotto " - > " Crea ".
7 - Seleziona l'icona TypeCharacters
nella cartella Prodotto , fai clic con il pulsante destro del mouse e seleziona il menu " Mostra nel Finder " in il menu contestuale.
8-DalFinder,spostailfile" TypeCharacters " nella cartella desiderata, esci Xcode , questo è tutto.
Da un AppleScript , chiama l'eseguibile, come questo
set myString to "ùéèà ² ³ é ½ ₭ "
do shell script "'/full path/of/TypeCharacters' " & quoted form of myString