Tworzenie skrótu klawiaturowego lub skrótu klawiaturowego do wklejania określonej frazy tekstowej w Mac OSX

21

Mam frazę tekstową (właściwie kilka faz), której często używam w wielu aplikacjach. Chciałbym utworzyć skrót klawiaturowy lub klawisz skrótu, który wklei tę frazę tekstową wszędzie tam, gdzie umieściłem kursor w polu wprowadzania tekstu (Apple Mail, Microsoft Word, TextEdit, TextWrangler, okna przeglądarki itp.) Zamiast ciągłego kopiowania i wklejanie z karteczki.

Wolałbym nie kupować żadnych aplikacji (wydaje się, że Keyboard Maestro ma tę funkcję, ale wydaje się głupio płacić za to tylko 36 USD), chociaż darmowe aplikacje byłyby w porządku. Próbowałem szukać w Preferencjach systemowych> Klawiatura> Skróty klawiaturowe, ale nie ma oczywistego rozwiązania, a wszystkie znalezione przeze mnie skrypty AppleScript wydają się dla mnie niepoprawnie tłumaczyć. Znalazłem inne rozwiązania tego problemu na tym forum dla użytkowników systemu Windows (takie jak AutoHotKey), ale żadne dla użytkowników komputerów Mac.

Ruthie
źródło

Odpowiedzi:

16

Najprostszym sposobem na wpisanie tekstu za pomocą AppleScript jest uruchomienie:

tell application "System Events" to keystroke "foo bar"

Możesz to uruchomić za pomocą skrótu klawiaturowego, tworząc nową Szybką akcję (wcześniej nazywaną usługą ) w Automatorze. Ustaw go tak, aby nie odbierał danych wejściowych , a następnie przeciągnij Uruchom AppleScript z lewego panelu w prawo.

To powinno wyglądać tak:

Zapisz go, a następnie przypisz skrót klawiaturowy do tej usługi w Preferencjach systemowych »Klawiatura» Skróty klawiaturowe .

slhck
źródło
Wow, wielkie dzięki @slhck! Próbowałem tego, ale mam problemy na ostatnim etapie. Nie pojawia się w menu „Usługi”, kiedy przechodzę do „Skrótów klawiaturowych” w Preferencjach systemowych. Wiem, że działa, ponieważ po otwarciu Automatora i naciśnięciu Odtwarzaj tekst jest wpisywany w poprzedniej aplikacji, ale nie wyświetla się w usłudze, więc mogę dodać skrót klawiaturowy, mimo że zapisałem go w folderze Biblioteka> Usługi . Zgodnie z radą innych forów, które odwiedziłem w Google, dwukrotnie sprawdziłem, czy dane wejściowe usługi zostały ustawione na „Usługa odbiera: brak danych wejściowych” (tak było), i próbowałem ponownie uruchomić Findera. jakieś pomysły?
Ruthie,
Więc zapisałeś to od Automatora? Zwykle powinien on pojawiać się w opcjach Skrótów klawiszowych, w części Usługi i Ogólne u dołu. Czy próbowałeś się wylogować i ponownie zalogować, a nawet uruchomić ponownie?
slhck 30.01.2013
@slhck brzmi to świetny sposób na zrobienie tego, ale czy mógłbyś bardziej szczegółowo opisać swoją odpowiedź? Nie jestem biegły w sposobie działania Automatora, kiedy go uruchamiam, pyta mnie „wybrałem typ dla twojego dokumentu”, a potem jestem trochę zagubiony. Pójdę teraz z odpowiedzią Jonathana Huie, ale wciąż oznacza to wpisanie czegoś ... Dzięki!
MicroMachine,
@fabriced Musisz utworzyć usługę w Automatorze.
slhck,
2
Uważam, że działa to w edytorze tekstu, ale nie w polu tekstowym na stronie internetowej. Ktoś jeszcze?
Eliot
6

keystrokeKomenda może być używana tylko wstawić znaki, które znajdują się na bieżącym układ klawiatury, a tam jest widoczne opóźnienie dla długich ciągów tekstu. Możesz także wstawić tekst bezpośrednio:

Ta metoda też nie nadaje się do użycia. W wersjach 10.7 i 10.8 występuje błąd, w którym skróty do usług Automatora nie zawsze działają, dopóki nie najedziesz myszką na menu usług.

Użyłem FastScripts, aby przypisać ten skrypt do F3:

try
    set old to the clipboard as record
end try
try
    tell application "System Events"
        key code 123 using {option down, shift down}
        keystroke "c" using command down
    end tell
    delay 0.05
    set input to the clipboard
    read POSIX file "/Users/lauri/Notes/snippets.txt" as «class utf8» using delimiter linefeed
    repeat with p in result
        considering case
            if p starts with (input & " ") then
                set the clipboard to text ((offset of space in p) + 1) thru -1 of p
                tell application "System Events" to keystroke "v" using command down
                delay 0.05
                exit repeat
            end if
        end considering
    end repeat
end try
try
    set the clipboard to old
end try

snippets.txt wygląda następująco:

m [email protected]
cmd ⌘

Inną opcją jest użycie DefaultKeyBinding.dict . Spowodowałoby to, że ⌥M lub ⌥X im wstawiłby adres e-mail:

{
    "~m" = (insertText:, "[email protected]");
    "~x" = {
        "m" = ("insertText:", "[email protected]");
    };
}

Możesz także dodać niestandardowy tekst do okien wyświetlanych podczas przytrzymywania klawiszy. Zobacz to pytanie .

Lri
źródło
2

Poszukaj aplikacji o nazwie „Textexpander”, która daje możliwość definiowania fraz tekstowych, takich jak @dd, które - po wpisaniu - będą rozszerzone do zdefiniowanej treści - w tym przypadku faktycznej daty.

AFAIK to Shareware. Więc nie jest tak naprawdę darmowy, ale tryb demo nie jest ograniczony czasowo.

heiglandreas
źródło
Krótka uwaga na wypadek, gdyby była przydatna dla innych - TextExpander nie działa na oknach terminala X11.
ggkmath
2

Aplikacja Alfred pozwala ci to zrobić - oraz wiele innych rzeczy - korzystając z funkcji Workflow i Snippets. Cały czas używam Alfreda i bardzo go polecam. Aby odblokować przepływy pracy, musisz zapłacić za licencję Powerpack, ale nie pożałujesz. 😉

mklbtz
źródło
Zgadzam się, jest to jedna z najbardziej przydatnych aplikacji, które powinien posiadać każdy posiadacz komputera Mac. W pełni przeprowadziłem migrację z niestandardowych usług Automatora do Alfreda.
slhck
1

Wystarczy kliknąć: Preferencje systemowe, Klawiatura, Tekst i wprowadzić skrót i frazę

Jonathan Huie
źródło
1
Podoba mi się ta odpowiedź, ale tak naprawdę nie pozwala na „skrót klawiaturowy” lub „skrót klawiszowy”, wciąż trzeba wprowadzić tekst (a nie kombinację klawiszy), który zostanie zastąpiony przez maszynę.
MicroMachine,
1
Wydaje się, że działa to tylko w kilku wybranych aplikacjach. Nie działa w większości miejsc, które mi się podobają, np. W polach wejściowych przeglądarki, w moim kliencie poczty (Thunderbird), terminalu itp.
Don't Panic
0

Oddzielna klawiatura zwana klawiaturą marsjańską przechowuje ciągi tekstowe, takie jak zdania, a nawet krótkie akapity. Dzięki temu nie będziesz musiał wpisywać irytujących i nieprzyjemnych naciśnięć klawiszy, dzień po dniu. Klawisze działają jak klawisze „wklej”. Ma możliwość przechowywania wszystkich skrótów w programie Word na jednej klawiaturze przy użyciu klawiszy warstwy zmiany. Jest to głównie do użytku profesjonalnego, więc jest trochę drogie.

Stóg
źródło