0 votos

script para cambiar la configuración de las teclas de función de las Preferencias del Sistema ya no funciona en Big Sur OS11

Tengo un simple script que he utilizado durante años para activar y desactivar la tecla de función (fn). La casilla se encuentra en Preferencias del Sistema > Teclado > Pestaña Teclado > 3ª casilla hacia abajo. Por desgracia, con OS11, dejó de funcionar. Ahora he modificado el script, pero genera un mensaje de error cada vez que lo ejecuto.

Soy un novato, así que puede haber una manera más elegante de hacer esto que el script de abajo - es simplemente lo que he estado usando.

tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events"
    tell process "System Preferences"
        click checkbox "Use F1, F2, etc. keys as standard function keys" of tab group 1 of window 1
    end tell
end tell
quit application "System Preferences"

Este es el error de índice inválido que recibo:

Can't get <> 1 or window 1 of <> "System Preferences" of application "System Events". Invalid Index.

Extrañamente, el script funciona cuando quito la línea <salir de la aplicación "preferencias del sistema"> y ejecuto el script desde el Editor script con las Preferencias del Sistema abiertas (para poder observar lo que ocurre). Cuando cierro las Preferencias del Sistema y vuelvo a añadir la última línea, <salir de la aplicación "preferencias del sistema">, este es el error que obtengo dentro del Editor de script:

error "System Events got an error: No se puede obtener el grupo de pestañas 1 de la ventana 1 del proceso "Preferencias del sistema". Número inválido" -1719 del grupo de pestañas 1 de la ventana 1 del proceso "Preferencias del Sistema".

Se agradece cualquier ayuda o consejo.

0voto

wch1zpink Puntos 11

Este código AppleScript me funciona en Big Sur.

tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events"
    tell process "System Preferences"
        repeat until checkbox "Use F1, F2, etc. keys as standard function keys on external keyboards" of tab group 1 of window "Keyboard" exists
            delay 0.1
        end repeat
        click checkbox "Use F1, F2, etc. keys as standard function keys on external keyboards" of tab group 1 of window "Keyboard"
    end tell
end tell
quit application "System Preferences"

Si esa versión arroja errores aquí hay una versión alternativa que también me funciona.

tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events" to tell process "System Preferences"
    repeat until checkbox 3 of tab group 1 of window "Keyboard" exists
        delay 0.1
    end repeat
    click checkbox 3 of tab group 1 of window "Keyboard"
end tell
quit application "System Preferences"

0voto

otech47 Puntos 1

Tuve problemas similares con mi script de expansión/compresión de pantalla y lo arreglé refactorizando para usar tell directamente en los grupos de pestañas. Tal vez puedas probar:

tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events"
    tell process "System Preferences"
        tell tab group 1 of window "Keyboard"
            click checkbox "Use F1, F2, etc. keys as standard function keys"
        end tell
    end tell
end tell
quit application "System Preferences"

Como referencia, mi caso era este script que funcionaba antes de Big Sur

on run {input, parameters}

    activate application "System Preferences"
    tell application "System Events"
        tell process "System Preferences"
            click button "Displays" of scroll area 1 of window "System Preferences"
            delay 0.5

            click radio button "Scaled" of radio group 1 of tab group 1 of window "LG ULTRAWIDE"
            delay 0.5
            select row 4 of table 1 of scroll area 1 of tab group 1 of window "LG ULTRAWIDE"

        end tell
        delay 1
        quit application "System Preferences"
    end tell

    return input
end run

y los cambios que tuve que hacer para que funcionara después de Big Sur

on run {input, parameters}

    activate application "System Preferences"
    tell application "System Events"
        tell process "System Preferences"
            click button "Displays" of scroll area 1 of window "System Preferences"
            delay 0.5

            tell tab group 1 of window "LG ULTRAWIDE"
                click radio button "Scaled"
                delay 0.5
                select row 4 of table 1 of scroll area 1
            end tell
        end tell
        delay 1
        quit application "System Preferences"
    end tell

    return input
end run

-1voto

user2100448 Puntos 106

Dependiendo de tu mac, el nombre de la casilla puede ser diferente (a mí no me funcionó en mi Macbook Air). He utilizado el índice en la solución sugerida en su lugar por lo que debería funcionar en todos los Macs hasta que Apple mueve la casilla de verificación en el panel.

También para tu información, la solución dejó de funcionar por una condición de carrera. Podrías añadir un retraso en tu solución inicial y habría funcionado.

Aquí hay un script con índice :

tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events"
    tell process "System Preferences"
        repeat until checkbox 3 of tab group 1 of window 1 exists
            delay 0.1
        end repeat
        click checkbox 3 of tab group 1 of window 1
    end tell
end tell
quit application "System Preferences"

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X