Non credo che ciò che stai chiedendo sarà facilmente realizzabile. Credo che le funzioni secondarie di copia e incolla siano isolate in ogni app che le supporta e probabilmente richiederebbe il sequenziamento programmatico della sequenza di chiavi di destinazione e l'elaborazione di conseguenza. Questo è qualcosa che probabilmente dovrebbe essere scritto in C e Objective-C , compilato per essere eseguibile e residente in memoria.
Detto questo, credo che la scorciatoia ^ K taglia l'ultima riga di testo dalla posizione del cursore e la colloca su tavoletta secondaria . Quindi, con questa intesa, lascia che offra la seguente soluzione soluzione .
Il seguente esempio codice AppleScript , mostrato più avanti, verrà utilizzato in Automator servizio , dove si può quindi assegnare una scorciatoia da tastiera al servizio . Questo servizio utilizzerà ad es. ^⇧K (Control-Shift-K) e raggiungi l'obiettivo dell'OP. Che è quello di ottenere ciò che viene inserito nel tavolino secondario nel Terminale , premendo normalmente ^ K , nel pannello di sistema generale alias Appunti , anche se premendo per es ^⇧K invece.
Quanto segue è stato creato, testato e funziona per me in macOS High Sierra .
Crea il servizio ... di Automator
In Automator :
-
File > Nuovo o premi: ⌘N
- Seleziona Servizio e fai clic sul pulsante Scegli .
- Configura le impostazioni come mostrato nella prima immagine qui sotto.
- Aggiungi un Esegui AppleScript azione .
- Sostituisci il codice predefinito con il esempio AppleScript codice .
- Salva come ad es .: Mio Ctrl-K per Terminale
EsempioAppleScriptcodice:
tellapplication"Terminal"
if (count windows) is greater than 0 then
try
activate
set c1 to contents of selected tab of front window
tell application "System Events" to ¬
keystroke "k" using control down
delay 0.5
set c2 to contents of selected tab of front window
end try
else
return
end if
end tell
tell current application
set pCount to (count paragraphs of text of c1)
repeat with i from 1 to pCount
if (count characters of (paragraph i of c1)) is greater than 0 then
set t1 to (paragraph i of c1)
set t2 to (paragraph i of c2)
end if
end repeat
if (count characters of t1) is not equal to (count characters of t2) then
set AppleScript's text item delimiters to {t2}
set CtrlY to text items of t1
set AppleScript's text item delimiters to {}
set the clipboard to CtrlY as text
end if
end tell
- Nota: il esempio codice AppleScript è proprio quello e non contiene nessun'altra gestione degli errori quindi potrebbe essere presente L'onere è sempre sull'utente di impiegare la gestione degli errori appropriata e necessaria o desiderata.
- Il valore del comando
delay
può o non può essere necessario aggiustarlo per il tuo sistema. Regola il valore come potrebbe essere necessario e o aggiungi ulteriori delay
comandi come potrebbe essere necessario.
Assegnazione della scelta rapida da tastiera ...
In Preferenze di sistema ...
OrainTerminale,quandopremi^⇧Kotterrainegliappuntiquelloche^Kposizionailtabellonesecondario.
Comenotaamargine,seusiunprogrammacome FastScripts , devi solo usare l'esempio AppleScript codice come .scpt in Script Editor , non creare un Automator servizio e può assegnare la scorciatoia da tastiera in Preferenze per FastScripts . Nessuna delle altre istruzioni si applica a meno che non si desideri eseguire tutto in modo nativo senza l'utilizzo di software di terze parti.
Nota che non sono affiliato con lo sviluppatore di FastScripts, solo un utente soddisfatto.