Come mostrare o nascondere il Visualizzatore tastiera con una scorciatoia da tastiera?


19

Vorrei visualizzare e nascondere il Visualizzatore tastiera usando una scorciatoia.

  • Esiste un modo per visualizzare il Visualizzatore tastiera tramite una scorciatoia da tastiera?
  • Esiste un modo per visualizzare automaticamente il Visualizzatore tastiera dopo il passaggio a una lingua specifica?

La soluzione ideale sarebbe quella di assegnare una scorciatoia da tastiera a uno script Apple che mostra la tastiera.
duci9y,

Risposte:


15

Avvia Keyboard Viewer con un servizio (migliorato)

È possibile avviare il Visualizzatore tastiera con un collegamento utilizzando Automator e la funzionalità Servizi OS X.

Il programma Keyboard Viewer vive su /System/Library/Input Methods/KeyboardViewer.app(nelle versioni precedenti a Lion, potrebbe essere su /System/Library/Components/KeyboardViewer.component/Contents/SharedSupport/KeyboardViewerServer.app). Lo si apre con un tasto di scelta rapida utilizzando Automator per creare un semplice servizio di avvio.

  1. Apri Automator e seleziona Servizio come tipo di nuovo documento.
  2. Impostare le opzioni (nella parte superiore dell'area del flusso di lavoro) su "Il servizio non riceve input in nessuna applicazione ".
  3. Aggiungi l' azione Esegui AppleScript al flusso di lavoro e sostituisci il testo con le seguenti righe:

    if application "KeyboardViewer" is running then
        quit application "KeyboardViewer"
    end if
    
    activate application "KeyboardViewer"
    
    -- wait until the window has been closed, then end the KeyboardViewer process
    set numberOfWindows to 1
    repeat until numberOfWindows = 0
        delay 5
        tell application "System Events"
            tell process "KeyboardViewer"
                set numberOfWindows to count windows
            end tell
        end tell
    end repeat
    quit application "KeyboardViewer"
    
  4. Salva con un nome come "Open Visore tastiera", quindi aprire Preferenze della tastiera al Tasti di scelta rapida scheda. Seleziona Servizi nel riquadro a sinistra e scorri verso il basso, dove dovresti vedere il nome del tuo servizio nella sezione Generale.
  5. Assicurarsi che la casella sia selezionata per abilitarlo, quindi selezionarlo e fare clic su Aggiungi collegamento per impostare un tasto di scelta rapida.
  6. Dopo aver impostato il tasto di scelta rapida, aprire il menu Servizi in qualsiasi applicazione (ad es. Finder> Servizi), quindi chiuderlo. Per qualche ragione il mio tasto di scelta rapida non ha funzionato fino a quando non l'ho fatto.

Un paio di note:

  • Lo script richiede di selezionare la casella Abilita accesso per dispositivi di assistenza nel riquadro delle preferenze Accesso universale .
  • La chiusura della finestra di Keyboard Viewer in realtà non chiude l'applicazione e, come sottolinea Lri, può essere un po 'un maiale delle risorse, quindi il repeatciclo verifica ogni 5 secondi se Keyboard Viewer ha delle finestre aperte e, in caso contrario, chiude il processi.
  • Se si esegue un sistema operativo pre-Lion, potrebbe essere necessario sostituire le istanze di KeyboardViewercon KeyboardViewerServer. Non ho nulla di pre-Lion a portata di mano per testarlo (se qualcun altro potesse riportare nei commenti, sarebbe fantastico.
  • Poiché lo script scorre fino a quando il Visualizzatore tastiera non viene chiuso, l'icona della ruota dentata di Automator verrà visualizzata nella barra dei menu fino alla chiusura.

SÌ! Questo è esattamente per quello che sto cercando. Conosco automator e shell-scripting, ho solo bisogno di un suggerimento. Grazie mille ... :)
jm666

Ho aggiornato questo usando un Applescript che esegue un controllo per vedere se la finestra è stata chiusa e, in tal caso, esce dal processo, per evitare il drenaggio delle prestazioni. Chiunque sia interessato alla vecchia versione basata su bash può trovare quella revisione qui .
robmathers

Con una modifica minima, questo script attiva il visualizzatore. Sostituisci "end if" con "else" e sposta "else if" alla fine.
AdamAL,

Ottima soluzione Tuttavia, la voce di menu "Mostra visualizzatore tastiera" non è a conoscenza del fatto che il visualizzatore tastiera è in esecuzione? Quindi questo tipo di interrompe quella voce di menu se ti capita di usarli entrambi.
Matt Sephton,

/System/Library/Input Methods/KeyboardViewer.appnon esiste su Catalina. Ho aperto tutte le applicazioni /System/Library/Input Methodse nessuna di esse ha aperto il visualizzatore tastiera. Qualche idea?
Kerndog73,

4

Il plug-in Extra Scripts di Quicksilver offre questa funzionalità fornendo Show Keyboard Viewer.scpt .

Inoltre, quando si crea un trigger Quicksilver per Show Keyboard Viewer.scpt con l'azione Esegui , viene visualizzato il tasto di scelta rapida globale per Keyboard Viewer.

Ecco la fonte dello script:

property theApplication : "KeyboardViewer"
property thePath : "/System/Library/Input Methods/KeyboardViewer.app"

set HFSPath to ((POSIX file thePath) as string)
tell application "System Events" to ¬
    set isRunning to 0 < (count (application processes whose name is theApplication))
if isRunning then
    tell application HFSPath to quit
else
    ignoring application responses
        tell application HFSPath to activate
    end ignoring
end if

Se KeyboardViewer viene aperto con AppleScript o con opene la finestra principale viene chiusa, il processo di Keyboard Viewer rimane aperto e continua a utilizzare circa lo 0-20% di CPU.


Di solito non mi piace installare app di terze parti per semplici operazioni di script, ma questa è l'eccezione . :) Grazie mille, lavorando come un fascino. ;)
jm666,

Se vuoi evitare software di terze parti, ho appena pubblicato una risposta che farà la stessa cosa con il software integrato.
robmathers

sry mach, @CanuckSkier ha pubblicato una risposta che mi piace di più, accettando così la sua risposta. +1 comunque per QuickSilver. ;)
jm666,

4

Sono contento di aver trovato questa discussione. Sulla base delle risposte sopra, ho creato uno script di estensione Alfred che attiva / disattiva Keyboard Viewer.

https://dl.dropbox.com/u/29440342/linkedFiles/Keyboard%20Viewer.alfredextension

Fornisce una parola chiave alfred "kv" che attiva e disattiva il Visualizzatore tastiera eseguendo il seguente script apple:

-- adapted from http://apple.stackexchange.com/a/62532
if application "KeyboardViewer" is running then
    quit application "KeyboardViewer"
else
    activate application "KeyboardViewer"
end if

(*
-- adapted from http://apple.stackexchange.com/a/59986
tell application "System Events" to tell process "SystemUIServer"
    tell (menu bar item 1 where description is "text input") of menu bar 1
        click
        click (menu item 1 where title ends with "Keyboard Viewer") of menu 1
    end tell
end tell
*)
-- icon ripped from osx /System/Library/PreferencePanes Keyboard.prefPane/Contents/Resources/Keyboard.icns

Ho lasciato commentato un'implementazione alternativa, nel caso in cui dovessi riscontrare problemi di prestazioni che doveva evitare.


1
Collegamento interrotto. Saresti così gentile da postarlo di nuovo. Questo è un flusso di lavoro Alfred che vorrei usare.
ddaa,

Eccoci, l'ho reimplementato (e ho anche aggiunto una scorciatoia da tastiera Cmd + Alt + Ctrl + Maiusc + K): packal.org/workflow/toggle-keyboard-viewer-0
Matt Sephton

3

Ho trovato un modo attraverso BetterTouchTool per fare quanto segue:

  • Attiva Keyboard Viewer tramite una scorciatoia
  • Chiudi Keyboard Viewer con un'altra scorciatoia
  • Attiva / disattiva Visualizzatore tastiera con una scorciatoia (non è necessario per le due precedenti)
  • Ho anche caricato AppleScript per comodità

Piattaforma: rMBP Mountain Lion OSX 10.8


Attiva Keyboard Viewer tramite una scorciatoia

  • Avvia BetterTouchTool
  • Aggiungi scorciatoia da tastiera
  • Aggiungi azione predefinita >> Apri applicazione / file / script ...
  • Passare a Macintosh HD / Sistema / Libreria / Metodi di input /
  • Seleziona KeyboardViewer

Ora hai una scorciatoia da tastiera per attivare il visualizzatore senza uno script aggiuntivo.

TUTTAVIA, ho notato che premendo il pulsante X rosso non si esce effettivamente dall'applicazione, il che significa che il visualizzatore della tastiera verrà attivato solo una volta. Quindi è necessario creare uno script per uscire dal programma.

Per risolvere questo problema:


Chiudi Keyboard Viewer con un'altra scorciatoia da tastiera

  • Apri Automator
  • Scegli Applicazione come tipo di documento
  • Aggiungi RunAppleScript
  • Dove dice (* Il tuo script va qui *), sostituiscilo con quit application "KeyboardViewer"
  • Compila e salva come nei documenti o dove vuoi (l'ho spostato nella stessa posizione di KeyboardViewer)
  • Apri BetterTouchTool
  • Aggiungi scorciatoia da tastiera
  • Aggiungi azione predefinita >> Apri applicazione / file / script ...
  • Individua il file dell'applicazione che hai appena salvato

Ora hai un modo per uscire definitivamente dal visualizzatore KeyBoard una volta attivato. Usalo al posto del pulsante X rosso. Fino a quando non capirò perché il visualizzatore della tastiera non si chiude completamente quando si preme il pulsante X, questa dovrebbe essere la soluzione.

MODIFICARE

Ho escogitato un modo per ATTIVARE il visualizzatore di tastiera !!


VISUALIZZA TASTIERA VISUALIZZATORE tramite una scorciatoia da tastiera

stesso processo di prima ma il codice è cambiato:

  • Apri Automator
  • Scegli Applicazione come tipo di documento
  • Aggiungi RunAppleScript
  • Dove dice (* Il tuo script va qui *), sostituiscilo con
  if application "KeyboardViewer" is running then
      quit application "KeyboardViewer"
  else
      activate application "KeyboardViewer"
  end if
  • Compila e salva come nei documenti o dove vuoi (l'ho spostato nella stessa posizione di KeyboardViewer)
  • Apri BetterTouchTool
  • Aggiungi scorciatoia da tastiera
  • Aggiungi azione predefinita >> Apri applicazione / file / script ...
  • Individua il file dell'applicazione che hai appena salvato

Ora il Visualizzatore tastiera è attivato e non è nemmeno necessario assegnare più scorciatoie!


Link per AppleScript

Ho caricato l'app online per un accesso più rapido anziché eseguire l'intera procedura di codifica sopra (basta attivare questa app tramite BetterTouchTool) Tuttavia, poiché non sono un editore identificato, il tuo sistema operativo potrebbe bloccare l'esecuzione di questa app, a seconda delle tue preferenze di sicurezza. Quindi, se preferisci non eseguire app da editori non identificati, segui i passaggi sopra per creare la tua app!

Link al file: https://www.box.com/s/e2461c91e30e0af025e7


Spero che aiuti chiunque come mi ha aiutato :)


fantastico!! Ho pensato che aggiungere l'app keyboardViewer direttamente al mio indice della barra di avvio sarebbe un buon sostituto per i miei scopi, ma non c'è alcuna opzione per chiudere kbv una volta che è in esecuzione! quindi, non puoi invocarlo una seconda volta - strano. comunque la tua sceneggiatura funziona a meraviglia! (Ho dovuto salvarlo come script / eseguirlo solo perché funzionasse per me.) Tx!
ptim

@memeLab Sono contento che abbia funzionato per te :)
Rendering

3

Ciò funzionerebbe anche dopo la chiusura della finestra principale facendo clic sul pulsante Chiudi:

if application "KeyboardViewer" is running then
    tell application "System Events" to number of windows of process "KeyboardViewer"
    if result is 0 then
        quit application "KeyboardViewer"
        delay 0.1
        launch application "KeyboardViewer"
    else
        quit application "KeyboardViewer"
    end if
else
    launch application "KeyboardViewer"
end if

Se Keyboard Viewer viene aperto con AppleScript o se open -a KeyboardViewerla finestra principale è chiusa, il processo rimane aperto e continua a utilizzare circa lo 0-15% di CPU. Non succede quando si seleziona Mostra visualizzatore tastiera dal menu di input. Quindi un'opzione migliore potrebbe essere quella di fare clic sulla voce di menu:

tell application "System Events" to tell process "SystemUIServer"
    tell (menu bar item 1 where description is "text input") of menu bar 1
        click
        click (menu item 1 where title ends with "Keyboard Viewer") of menu 1
    end tell
end tell

Entrambi gli script richiedono l'accesso per abilitare i dispositivi di assistenza nel riquadro delle preferenze di accessibilità.


2

Non è una scorciatoia a corsa singola, ma una soluzione "senza mouse" è Fn+ Ctrl+ F8per mettere a fuoco le icone " Menu stato " sul lato destro della barra dei menu. ( Sezione 4 )

inserisci qui la descrizione dell'immagine

Le frecce consentono di accedere all'icona Preferenze tastiera e alle opzioni Mostra / Nascondi. Quando si immette Fn+ Ctrl+ F8l'icona viene evidenziata nella parte più a sinistra delle icone del "menu Stato" che si trovano nella metà destra della barra dei menu. Una volta selezionato, quindi utilizzare Right Arrow →per navigare verso quello desiderato. Utilizzare Down Arrow ↓per aprire il menu e selezionare l'opzione desiderata. Si noti che il Optiontasto renderà disponibili diverse opzioni di menu in alcuni dei "menu di stato".

inserisci qui la descrizione dell'immagine

Da notare, Fn+ Ctrl+ F2attiverà l'icona del menu Apple  sul lato sinistro. Da lì Right Arrow →ti darà accesso al menu dell'applicazione. Queste opzioni sono disponibili in Preferenze di Sistema >> Tastiera >> Tasti di scelta rapida :: Tastiera:

inserisci qui la descrizione dell'immagine

A seconda di come sono configurati i tasti funzione, Fnè facoltativo.

inserisci qui la descrizione dell'immagine

In macOS Sierra puoi anche usare Siri per aiutarti. Richiama Siri con qualsiasi scorciatoia da tastiera che scegli tra Preferenze di Sistema >> Siri :: Scorciatoia da tastiera, ad esempio Option+Spacebar

inserisci qui la descrizione dell'immagine

... poi dì "Attiva il Visualizzatore tastiera"

inserisci qui la descrizione dell'immagine

... e voilà:

inserisci qui la descrizione dell'immagine

Sfortunatamente, Siri non chiuderà il Visualizzatore tastiera, né Command⌘+w


0

puoi fare tutto da Automator:

  1. apri Automator e seleziona "Applicazione"
  2. nella parte superiore della libreria trova "Avvia applicazione", fai doppio clic su di essa
  3. scegli "altro" e vai al file KeyboardViewer in / Sistema / Libreria / Metodi di input
  4. Salva con un nome come "avvia tastiera". Provalo.

la parte successiva è chiudere la tastiera:

  1. apri Automator e seleziona "Applicazione"
  2. nella parte superiore della libreria trova "Esci dall'applicazione", fai doppio clic su di essa
  3. scegli "altro" e vai al file KeyboardViewer in / Sistema / Libreria / Metodi di input

  4. Salva con un nome come "esci da tastiera". Provalo.

ora avrai due file uno per l'apertura, uno per la chiusura.

tutto ciò che serve è associare i pulsanti del mouse per avviare questi due file!

ad esempio, sto usando Microsoft Bluetooth Notebook Mouse 5000 e esso

funziona alla grande per me in 10.9.1


0

Activity Monitor, KeyboardViewer.app si avvia da

Posizione del Finder: / Sistema / Libreria / Metodi di input / KeyboardViewer.app .

Uso normale: apri dalla barra dei menu , chiudi dal passaggio del mouse per visualizzare i pulsanti della finestra in cui è possibile fare clic sul pulsante (x) chiudi . Per abilitare il pannello Barra dei menu , Preferenze di Sistema , Tastiera , scheda Tastiera , selezionare Mostra tastiera e Visualizzatori Emoji nella barra dei menu .

L'applet KeyboardViewer mostra comportamenti restrittivi.

  1. La finestra dell'applet non risponde a ⌘-Q , ⌘-W .
  2. Stranamente, quando aperto dalla cartella Metodi di input , Activity Monitor mostra che l'applet rimane in esecuzione dopo la chiusura della sua finestra.
  3. L'automatore AppleScript mostrato di seguito viene eseguito lentamente in background, i servizi di tastiera impiegano pochi secondi per registrare le azioni di apertura e chiusura in Activity Monitor.
  4. Lo script di scelta rapida mostrato di seguito viene eseguito senza errori ma il sistema sembra ignorare.
  5. L' applicazione Quit di Sierra Automator non chiuderà KeyboardViewer.app

Il seguente script di Automator può essere salvato come un'applicazione per aprire-chiudere KeyboardViewer.app con un solo clic (Activity Monitor mostra anche questa attività di apertura-chiusura) e funziona bene se posizionato nel Dock.

Automatore: Nuovo , Applicazione , Esegui AppleScript , salva questo script

-- see above post, Render
    on run {input, parameters}
        if application "KeyboardViewer" is running then
            quit application "KeyboardViewer"
        else 
            activate application "KeyboardViewer"
        end if
        return input
    end run
-- icon /System/Library/PreferencePanes Keyboard.prefPane/Contents/Resources/Keyboard.icns

Sfortunatamente, questo non aggiunge una scorciatoia da tastiera. Tuttavia, offre una soluzione alternativa con un clic. Potrebbe esserci un modo per aggiungere una scorciatoia da tastiera usando Automator. Uno script di scelta rapida generale è simile a questo (ma non è sicuro di come incorporarlo).

tell application "System Events"
    set application "KeyboardViewer" to keystroke "K" using control down
end tell

(macOS Sierra 10.12.6 su MP 6,1)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.