2017-06-01 7 views
0

J'essaye de configurer un simple script Apple JXA pour écrire les emoji shrug bien connus à l'écran (il simule la pression de touche je suppose). Chaque chose que j'essaie produit ceci "¯ \ _ (a) _/¯". Je suppose que j'utilise la touche pour simuler la touche et que je n'ai pas de clavier japonais. Peut-être que je devrais copier la chaîne dans le presse-papier à la place?La combinaison de touches JXA ne fonctionne pas avec les caractères spéciaux

Voici mon code à ce jour:

// 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") +")_/¯"); 

Répondre

0

ok afin d'ajouter à mon presse-papiers et le coller immédiatement était beaucoup plus facile. Ce n'est pas une réponse directe à ma question mais le résultat final est ce que je voulais.

d'Apple Script Version:

# 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 

version 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' }); 
0

Je recommande fortement les services pour ce genre de tâche, car ils peuvent directement manipuler du texte dans presque toutes les applications; pas besoin de kludges hacky comme scripting GUI. Très facile de faire un nouveau service dans Automator qui produira un morceau de texte, plus vous pouvez le lier à un raccourci clavier dans les Préférences Système lorsque vous avez terminé. Voici un exemple, vous pouvez facilement adapter:

Creating an osx service to insert the current date and time

+0

J'ai fait un service avant, mais ne sais pas pourquoi je ne le considère. Je vais essayer aussi. Merci! – Francisc0