1 votos

¿Cómo puedo desactivar o activar la fuente de entrada del teclado?

Estoy usando MacOS Catalina v10.15.7 . Estoy usando Control+Space para seleccionar texto en emacs . Para conseguirlo estoy deseleccionando Select the previous input source y Select the next source Input menu .

=> Settings => Keyboard => Shortcuts => Input Sources
[ ] Select the previous input source  # deselected
[ ] Select next source in input menu  # deseleced

Así que cuando pulse Contol+Space no se abre abierto Input Source ventana.

En algunos casos creo que si MacOS se bloquea o si fuerzo el apagado de MacOS pulsando el botón de encendido, después de abrir MacOS y cuando pulso control+space está obligado a Input Source incluso si ( Seleccione la fuente de entrada anterior Seleccione la siguiente fuente en el menú de entrada ) están deseleccionados en la configuración.

¿Es posible cambiar la configuración de las fuentes de entrada utilizando un script en el inicio como

  • Seleccione primero Seleccione la fuente de entrada anterior y Seleccione la siguiente fuente en el menú de entrada

  • A continuación, deseleccione Seleccione la fuente de entrada anterior y *Seleccionar la siguiente fuente en el menú de entrada


=> Settings => Keyboard => Shortcuts => Input Sources
[X] Select the previous input source  # selected
[X] Select next source in input menu  # selected

then 

[ ] Select the previous input source  # deselected
[ ] Select next source in input menu  # deseleced

  • Estoy usando Control+Space marcar/desmarcar constantemente el texto en emacs que es la combinación de teclas por defecto.
C-SPC Set the mark at point, and activate it (set-mark-command).

1voto

user3439894 Puntos 5883

El ejemplo AppleScript código que se muestra más adelante, se probó bajo MacOS Catalina con Lengua y región ajustes en Preferencias del sistema ajustado a Inglés / Inglés (EE.UU.) - Primaria y Fuentes de entrada en Preferencias del sistema > Teclado ajustado a ESTADOS UNIDOS. . Se probó en Script Editor como script y probado guardado como un aplicación y se añade a Elementos de inicio de sesión en Preferencias del sistema > Usuarios y grupos para el objetivo Usuario .

Para probarlo como un aplicación Lo he guardado como Desmarcar las fuentes de entrada añadirlo a Preferencias del sistema > Seguridad y privacidad > Privacidad > Accesibilidad . Después de lo cual la primera vez que lo ejecuté manualmente, para ver que funcionaba, me preguntó...

  • "Desactivar fuentes de entrada" quiere acceder al control de "Eventos del sistema". Permitir el control dará acceso a los documentos y datos de "Eventos del sistema" y a realizar acciones dentro de esa app. Este script necesita controlar otras aplicaciones para ejecutarse.

    No permita que se le dé el visto bueno

A lo que hice clic: OK

Luego lo probé, reiniciando el sistema un par de veces y parecía funcionar sin problemas.

NOTA : Esto utiliza Guiones de interfaz de usuario y Eventos del sistema para alternar el objetivo casillas de verificación en Preferencias del sistema > Teclado > Atajos > Fuentes de entrada y lo hace sin mostrar el UI de Preferencias del sistema Sin embargo, todavía tiene que abrirlo y hacer lo suyo. Tenga esto en cuenta cuando inicie la sesión, y deje que el proceso se complete antes de hacer cualquier otra cosa. Sólo debería tardar unos segundos. (Así es la naturaleza de Guiones de interfaz de usuario .)


Ejemplo AppleScript código :

--  # Check to see if System Preferences is 
--  # running and if yes, then close it.
--  # 
--  # This is done so the script will not fail 
--  # if it is running and a modal sheet is 
--  # showing, hence the use of 'killall' 
--  # as 'quit' fails when done so, if it is.
--  #
--  # This is also done to allow default behaviors
--  # to be predictable from a clean occurrence.

if running of application "System Preferences" then
    try
        tell application "System Preferences" to quit
    on error
        do shell script "killall 'System Preferences'"
    end try
    delay 0.1
end if

--  # Make sure System Preferences is not running before
--  # opening it again. Otherwise there can be an issue
--  # when trying to reopen it while it is actually closing.

set i to 0
repeat while (running of ¬
    application "System Preferences") is true ¬
    or (i is equal to 20)
    delay 0.1
    set i to i + 1
end repeat
if i is equal to 20 then return

--  # Open System Preferences to the 
--  # Shortcuts tab of the Keyboard pane.

tell application "System Preferences" to ¬
    reveal anchor "shortcutsTab" of ¬
        pane id "com.apple.preference.keyboard"

--  # System Events does the navigating around the 
--  # Shortcuts tab of the Keyboard pane and toggles
--  # the state of the target keyboard shortcut
--  # checkbox so it is left unchecked.

tell application "System Events"

    --  # Make sure the UI is ready to be navigated.
    --  # Checks for the 'Use keyboard navigation 
    --  # to move focus between controls' checkbox.

    set i to 0
    repeat until (exists checkbox 1 of ¬
        tab group 1 of ¬
        window 1 of ¬
        process "System Preferences") ¬
        or (i is equal to 40)
        delay 0.05
        set i to i + 1
    end repeat
    if i is equal to 40 then return

    --  # Make sure 'Input Sources' exists in the
    --  # left hand pane, and if not exit the script.

    if not (exists (every row of ¬
        table 1 of ¬
        scroll area 1 of ¬
        splitter group 1 of ¬
        tab group 1 of ¬
        window 1 of ¬
        process "System Preferences" whose ¬
        value of static text 1 is "Input Sources")) ¬
        then return

    --  # Select 'Input Sources' in the left hand pane.
    --  # This is wrapped in a try statement to get
    --  # past a bug in how the select command is
    --  # interpreted and is silently eaten.

    try
        select (every row of ¬
            table 1 of ¬
            scroll area 1 of ¬
            splitter group 1 of ¬
            tab group 1 of ¬
            window 1 of ¬
            process "System Preferences" whose ¬
            value of static text 1 is "Input Sources")
    end try

    --  # make sure the target checkbox
    --  # is available before proceeding
    --  # Checks for the 'Select the  
    --  # previous input source' checkbox.

    set i to 0
    repeat until (exists checkbox 1 of ¬
        UI element 1 of ¬
        row 1 of ¬
        outline 1 of ¬
        scroll area 2 of ¬
        splitter group 1 of ¬
        tab group 1 of ¬
        window 1 of ¬
        process "System Preferences") ¬
        or (i is equal to 40)
        delay 0.05
        set i to i + 1
    end repeat
    if i is equal to 40 then return

end tell

--  # Get the state of the target checkbox
--  # as a boolean and toggle the state 
--  # of the target checkbox accordingly.
--  # The 'Select the previous input source'
--  # checkbox.

if my cbIsChecked(1) then
    my clickCheckbox(1)
else
    my clickCheckbox(1)
    delay 0.2
    my clickCheckbox(1)
end if

--  # Get the state of the target checkbox
--  # as a boolean and toggle the state 
--  # of the target checkbox accordingly.
--  # The 'Select next source in input menu'
--  # checkbox.

if my cbIsChecked(2) then
    my clickCheckbox(2)
else
    my clickCheckbox(2)
    delay 0.2
    my clickCheckbox(2)
end if

delay 0.2

tell application "System Preferences" to quit

--  # Handler(s)

--  # Get the current state of the target checkbox.
--  # 'Select the previous input source' checkbox. (1)
--  # 'Select next source in input menu' checkbox. (2)

on cbIsChecked(rowNumber)
    tell application "System Events" to ¬
        return (value of ¬
            checkbox 1 of ¬
            UI element 1 of ¬
            row rowNumber of ¬
            outline 1 of ¬
            scroll area 2 of ¬
            splitter group 1 of ¬
            tab group 1 of ¬
            window 1 of ¬
            process "System Preferences") ¬
            as boolean
end cbIsChecked

--  # Clicks the target checkbox of the target row.
--  # Due to the requirements of the OP this is
--  # called two to four times as needed based
--  # on the current state of the target checkboxes.
--  # 'Select the previous input source' checkbox. (1)
--  # 'Select next source in input menu' checkbox. (2)

on clickCheckbox(rowNumber)
    tell application "System Events" to ¬
        click checkbox 1 of ¬
            UI element 1 of ¬
            row rowNumber of ¬
            outline 1 of ¬
            scroll area 2 of ¬
            splitter group 1 of ¬
            tab group 1 of ¬
            window 1 of ¬
            process "System Preferences"
end clickCheckbox

Debido a los comentarios y al estilo de codificación, el script es muy largo. Termina con end clickCheckbox así que asegúrese de resaltarlo todo cuando copie y pegue en Script Editor para probarlo antes de guardarlo como aplicación con fines de producción.


Notas :

  • Tal y como está codificado, el repeat bucles se fijan para que se agote el tiempo de espera después de dos segundos si la condición principal no se cumple primero. Si se alcanza el tiempo de espera, el script se detiene sin ningún mensaje de error. Esto se puede modificar según se necesite/se quiera/se requiera.

  • Si no quiere que el icono de los guardados AppleScript aplicación que se muestra en el Muelle , entonces en Terminal utilice lo siguiente sintaxis del comando mientras se cambia /path/to/$name.app en el ejemplo comando '/path/to/$name.app/Contents/Info.plist' a la ruta de acceso de los salvados AppleScript aplicación :

    defaults write '/path/to/$name.app/Contents/Info.plist' LSUIElement -bool yes
  • Para mis pruebas he utilizado:

    defaults write '/Applications/Uncheck Input Sources.app/Contents/Info.plist' LSUIElement -bool yes
  • Si se modifica la información guardada AppleScript paquete de aplicaciones después de que se haya autorizado su ejecución, entonces tendrá que volver a autorizarlo antes de que el sistema se reinicie de nuevo. Vaya a Preferencias del sistema > Seguridad y privacidad > Privacidad > Accesibilidad y desmarcar el casilla de verificación para el objetivo aplicación y volver a comprobarlo. A continuación, ejecute el AppleScript aplicación manualmente para responder OK a la cuadro de diálogo que aparecen. Los guardados Safari aplicación se lee ahora para su uso en producción y no icono para que aparezca en el Muelle .


Nota: El <em>ejemplo </em><strong>AppleScript </strong><em>código </em>es sólo eso y sin ningún tipo de inclusión <em>tratamiento de errores </em>no contiene ningún otro <em>tratamiento de errores </em>según corresponda. Corresponde al usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado. Eche un vistazo a la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>intente </strong></a><em>declaración </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>error </strong></a><em>declaración </em>en el <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guía del lenguaje AppleScript </strong></a>. Véase también, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Trabajar con errores </strong></a>. Además, el uso del <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>retraso </strong></a><em>comando </em>puede ser necesario entre eventos cuando sea apropiado, por ejemplo <code>delay 0.5</code> con el <em>valor </em>de la <em>retraso </em>ajustado apropiadamente.

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