Algo más de información sobre este tema que he descubierto es que cuando se utiliza keystroke
con números, el Sistema de Eventos siempre los envía como ANSI_Keypad#
caracteres (código 82-92) en lugar de lo que cabría esperar como ANSI_#
caracteres (código 18-29).
Para la mayoría de las aplicaciones de Mac, esto no importa, ya que el propio OS X no se preocupa por (usar, apoyar, etc) el NUMLOCK
en un teclado, por lo que los números del teclado se ven igual que los números del teclado. Sin embargo, pasará el NUMLOCK
a la aplicación si tiene un teclado/teclado que tenga esta tecla.
Hay algunas aplicaciones que sí controlan el NUMLOCK
(por ejemplo, la aplicación VMware Fusion cuando se ejecuta una VM de Windows) y cambiará el comportamiento en función del NUMLOCK
estado.
Así, por ejemplo, si el AppleScript envía keystroke "456"
a un NUMLOCK
aplicación consciente.
- Si el
NUMLOCK
El estado es ON
aparecerán los números "456".
- Si el
NUMLOCK
El estado es OFF
las claves equivalentes recibidas son Left Arrow
5
Right Arrow
En la pregunta original, el AppleScript enviaba abc 123
pero lo más probable es que su aplicación (que no se mencionó) fuera consciente de la NUMLOCK
estado, que actualmente era OFF
y, por lo tanto, ejecutó las llaves como abc
[space]
End
Down Arrow
Page Down
He creado una pequeña función AppleScript que recorre la cadena dada enviando key code
para cualquier número y keystroke
comandos para cualquier otro personaje.
on numberAsKeycode(theString)
tell application "System Events"
repeat with currentChar in (every character of theString)
set cID to id of currentChar
if ((cID 48) and (cID 57)) then
key code {item (cID - 47) of {29, 18, 19, 20, 21, 23, 22, 26, 28, 25}}
else
keystroke currentChar
end if
end repeat
end tell
end numberAsKeycode
set myString to "abc 123"
numberAsKeycode(myString)
Que ejecuta lo siguiente
tell application "System Events"
keystroke "a"
keystroke "b"
keystroke "c"
keystroke " "
key code {18}
key code {19}
key code {20}
end tell
Espero que esto ayude :)
0 votos
Qué tipo de teclado tienes. Lo único que se me ocurre es algo así como un bloqueo de números (aunque me sorprendería que aunque lo tuvieras puesto afectara al comando de pulsación de teclas)
0 votos
Estoy en un MacBook Pro, no hay bloqueo numérico. También, me olvidé de mencionar que durante bastante tiempo tuve un AppleScript que era 'keystroke'ing números.