Podemos usar defaults
para almacenar y leer valores (escriba man defaults
en una ventana Terminal.app
para leer más sobre esto).
Ejecutar Script 1
…
Script 1
global x
property defaultIdentifier : "com.chrome.scroll"
-- Since we start fresh lets reset x
resetX()
tell application "Google Chrome"
activate
set urlName to URL of active tab of front window
end tell
if urlName is "https://www.facebook.com" then
tell application "System Events"
tell application process "Google Chrome"
repeat while x = 0
set frontmost to true
key code 38
delay 1
my getX()
end repeat
end tell
end tell
else
tell application "System Events"
tell application process "Google Chrome"
repeat while x = 0
set frontmost to true
key code 49
delay 1
my getX()
end repeat
end tell
end tell
end if
on getX()
# Reading a value that does not exists will generate an error.
# Since this script creates (at launch) the value with "resetX()", this can only happen when someone
# deletes the defaults value while the script is running. (say, with "defaults delete 'com.chrome.scroll'").
try
set y to do shell script "defaults read" & space & quoted form of defaultIdentifier & space & "x"
# Because "x" is an integer but "do shell script" returns text, we want to convert "y" into an integer.
# This will throw an error if the value isn't an integer.
set y to y as integer # if this fails, "X" is left untouched since it goes straight into the "on error" part.
set x to y
on error
# To react to it, do something here.
# beep
end try
end getX
# When writing into the defaults, we can give a hint that "x" is an integer (using "-int").
# It would also work without it.
on resetX()
set x to 0
do shell script "defaults write" & space & quoted form of defaultIdentifier & space & "x" & space & "-int 0"
end resetX
... y deténgalo con Script 2
:
Script 2
property defaultIdentifier : "com.chrome.scroll"
do shell script "defaults write" & space & quoted form of defaultIdentifier & space & "x" & space & "-int 1"
También puedes ejecutarlo directamente en Terminal.app
o usarlo en un shell script
, como esto:
defaults write com.chrome.scroll x 1 # or:
defaults write com.chrome.scroll x -int 1
Notas
Pongo el set frontmost to true
en el bucle repeat
ya que el usuario podría activar otra aplicación mientras se ejecuta el script, lo que podría desordenar todo.
Realmente no necesitamos usar un property
para com.chrome.scroll
, pero como el código necesita esa información en dos lugares y es posible que desee cambiarla, lo hice de esa manera.
Si desea cambiarlo, use algo único, sin espacios ni caracteres especiales. iTunes
, por ejemplo, usa com.apple.iTunes
y Finder usa com.apple.Finder
. Por lo general, un application
está utilizando bundle identifier
como domain
para el defaults
.