Immer wieder kommt es vor, dass ich mir irgendwoher Text kopiere, der versal (komplett in GROSSBUCHSTABEN) geschrieben ist und den ich gerne komplett in Kleinbuchstaben oder – wie man es sonst von der deutschen Sprache kenn – mit dem ersten Buchstaben in groß und dem Rest in klein hätte.

Viele Textverarbeitungsprogramme bieten entsprechende Funktionen an, den markierten Text dementsprechend zu transformieren, aber oft will man den gewünschten Text in ein ganz anderes Programm einfügen, welches diesen Funktionsumfang nicht bietet.

Ich habe mir hierfür etwas gebastelt, welches den Inhalt der Zwischenablage von jedem gewünschten Programm aus anpasst. Alles, was man braucht, ist mein kleiner Freund Butler.

Die Skripte

Folgende Shell-Skripte habe ich zusammengebastelt/recherchiert:

# Formatierung vom Text entfernen
pbpaste | textutil -convert txt -stdin -stdout -encoding 30 | pbcopy

# Gesamter Text als Kleinbuchstaben
# Dies IST ein Test => dies ist ein test
pbpaste | tr '[:upper:]' '[:lower:]' | pbcopy

# Gesamter Text als Großbuchstaben
# Dies IST ein Test => DIES IST EIN TEST
pbpaste | tr '[:lower:]' '[:upper:]' | pbcopy

# Erster Buchstabe groß, Rest klein
# Dies IST ein Test => Dies ist ein test
pbpaste | tr '[:upper:]' '[:lower:]' | perl -ne 'print ucfirst' | pbcopy

# Erster Buchstabe jedes Wortes groß
# Dies IST ein Test => Dies Ist Ein Test
y=""; x=`pbpaste | tr "[:upper:]" "[:lower:]"`; for i in $x; do B=`echo "${i:0:1}" | tr "[:lower:]" "[:upper:]"`; y="$y ${B}${i:1}"; done; echo $y | pbcopy;
# (Leider nicht einfacher, als dieses Gebastel, hinbekommen)

Das ganze umschlossen von einem

do shell script ""
ergibt dann das Apple Script, welches wir in Butler zum Zwecke der Automatisierung mit Tastenkürzel einfügen können.
Beim letzten Skript sollte man hier nicht vergessen, sämtliche " zu escapen: \":

do shell script "y=\"\"; x=`pbpaste | tr \"[:upper:]\" \"[:lower:]\"`; for i in $x; do B=`echo \"${i:0:1}\" | tr \"[:lower:]\" \"[:upper:]\"`; y=\"$y ${B}${i:1}\"; done; printf $y | pbcopy;"

Hotkey-Funktionalität

In Butler für jedes Skript ein eigenes AppleScript hinzufügen
 
Unter Quelltext den Apple Script-Quelltext hinzufügen und unter Auslöser ein passendes Tastenkürzel eintragen.
Ich habe hier zum Beispiel Apfel-Wahl-Control-C (wie Capitalize) für "erster Buchstabe im Wort groß", Apfel-Wahl-Control-L (wie Lowercase) für Kleinbuchstaben, und Apfel-Wahl-Control-U (wie Uppercase) für Großbuchstaben.
Gleich drei Funktionstasten Apfel-Wahl-Control dass ich diese Tastenkürzel mit größter Wahrscheinlichkeit in allen Programmen ohne Kollission mit einem anderen Tastenkürzel verwenden kann.

Und wie funktioniert das jetzt?

Ich kopiere irgendwoher IRGENDEINEN TEXT in die Zwischenablage, benutze zum Beispiel das Tastenkürzel Apfel-Wahl-Control-C, worauf der Zwischenablagen-Inhalt geändert wird und füge den soeben geänderten Irgendeinen Text wie gehabt irgendwo ein.

Zwischenablage gleich nach der Transformation einfügen

Momentan habe ich drei Schritte:

  • Apfel-C um den Text zu kopieren
  • Apfel-Control-Wahl-wasauchimmer um den Text zu transformieren
  • Apfel-V um den Text einzufügen

Letzteres kann man sich natürlich auch sparen, dies macht die Sache in Butler allerdings etwas komplexer:

Wir brauchen je Skript einen Ordner/Container, welcher einmal das Apple Script und einmal das Butler-Smartitem Zwischenablage > Aktuelle Zwischenablage einfügen enthält.
Der Hotkey wird nun dem Container statt dem Skript-Eintrag zugeordnet. Weiterhin sollten beim Container unter "Optionen" die beiden Optionen "Kann von Menüs aus als Gruppe geöffnet werden" und "Inhalt ausblenden" aktiviert sein (sofern man diesen Befehl nicht nur als Hotkey, sondern auch vom Butler-Menü aus nutzen möchte).
 
Bei der ersten Benutzung fragt Butler noch einmal nach, ob man wirklich alle Elemente des Containers ausführen möchte, was mit einem "Immer alle öffnen" zu beantworten ist.