DSC 1941 1

Ich und die Tastaturen

Ich habe es kürzlich geschafft, die zweite Apple Tastatur zu töten. Und das mit einem Glas Wasser. Bier hätte ich auch cooler gefunden…

Das ist schon krass.

Die Dinger sind teuer, vertragen aber gar nix. Die vorige habe ich – um Kästner zu zitieren: „kaputt geputzt!“

Nachdem ich schon längers meine Mighty Mouse von Apple durch eine Maus von Logitech (MX Anywhere 2S) ersetzt hatte (auch weil die im Wechsel mit Ubuntu besser funktioniert), folgte nun auch tastatur-mäßig der Ersatz durch Logitech.

Ich habe relativ günstig die Craft erstanden. Neu, ist sie doch recht teuer.

DSC 1940

Eine klasse Tastatur. Mit Beleuchtung und einigen tollen Funktionen, die ich schon nicht mehr missen möchte: Das Drehrad z. B. (vor allem in Logic sehr praktisch). Das sanfte und lockere Tippen. Hab ich schon die Beleuchtung erwähnt? Und das man mit dem Dienstprogramm von Logitech die Tasten anders belegen kann? Oder das man noch weitere Geräte mit der Tastatur – per Bluetooth – verbinden kann, und diese mit einer von drei verfügbaren Funktionstaste speichern kann? So können für jedes Gerät entsprechende Tastatur-Konfigurationen eingerichtet werden.

Find ich gut. Damit kann ich z. B. längere Nachrichten auf meinem Android locker über die große Tastatur reinhauen.

Was allerdings fehlt, ist die Auswurftaste. Also das Öffnen des CD-Laufwerks per Tastendruck … bin ich eben so gewöhnt, und möchte ich auch so beibehalten. Geht zwar auch per Menü, ist aber etwas umständlicher.

Ist mir eben aufgefallen, als ich meine neueste musikalische Errungenschaft digitalisieren wollte.

Da musste schnell eine Lösung her.

F12 hat nichts bewirkt…

Folgendes hat für mich, auf Mac OS Sierra (10.12.6) funktioniert: über Automator einen Dienst einrichten, der per AppleScript ein Shell-Script startet, welches den Schacht öffnet, oder schliesst, wenn er schon geöffnet ist.

01 auto serv

Automator öffnen und als neues Dokument Dienst auswählen.

03 auto as

Wichtig ist, dass im Drop-Down-Menü Dienst empfängt die Option keine Eingabe ausgewählt ist.

Wir wollen das ja später anders aufrufen/starten.

In dieses neue Dokument fügen wir ein AppleScript ein. Das erfolgt über den Bibliotheks-Inhalt AppleScript ausführen.

04 auto insert as

Als Script fügen wir folgendes ein:

property last_choice : "Open"
 if last_choice = "Open" then
     do shell script "drutil tray open -drive internal"
     set last_choice to "Close"
 else
     do shell script "drutil tray close -drive internal"
     set last_choice to "Open"
 end if

AppleScript und Shell gemischt. Eine praktische Kombination.

05 auto save as

Über den Abspiel-Knopf können wir noch kurz prüfen, ob der Code auch funktioniert, und das tut, was wir uns vorher wünschten.

„Sonst hätten wir eben genauer wünschen müssen…“

Ist das so, speichern wir den Dienst unter einem sinnigen Namen. Ich habe mich für SuperDrive entschieden, da ich noch ein weiteres (externes) Laufwerk am Rechner habe.

09 services

Das kleine Automator-Programm wird unter Benutzer / Library / Services abgespeichert. Von dort kann es geöffnet, und auch nachträglich noch bearbeitget werden. Auch später kann das kleine Programm über das Kontext-Menü im Bereich Kurzbefehle der Systemeinstellung Tastatur aufgerufen und bearbeitet werden.

Das war nun kurz vorgegriffen…

Sobald wir also in Automator diesen Dinest abspeichern, wird er auch als solcher im Mac OS X global verfügbar.

06 sys set key short

Öffen wir die Systemeinstellungen und wechseln in die Tatstatur-Einstellungen, sehen wir bei den Allgemeinen Diensten unsere eben neu erstellten Programme … als Dienst getarnt.

Bei mir sind das zwei, wegen dem zusätzlichen (externen) Laufwerk.

07 sys set key short assign key

Diesen Diensten können wir jetzt noch einen Kurzbefehl zuweisen, damit man die Laufwerke gemütlich über die Tastatur öffnen und schliessen kann.

Wie man es – wie ich eben – von der Apple-Tastatur gewöhnt war.

08 sys set key short assign key 2

Die Entscheidung liegt bei euch. Achtet darauf, dass die Tastatur-Kombination nicht schon anders belegt ist.

Leider wird man nicht darauf hingewiesen, wenn eine Kombination schon verwendet wird.

property last_choice : "Open"
 if last_choice = "Open" then
     do shell script "drutil tray open -drive external"
     set last_choice to "Close"
 else
     do shell script "drutil tray close -drive external"
     set last_choice to "Open"
 end if

Das ist der Code für mein zweites (externes) Laufwerk. Wobei hier external auch mit einer 1 ersetzt werden kann … und so weiter.

Ich hoffe, dass das auch für den funktionert, der hier drüber gestolpert ist.

Und da der Mensch ein Gewohnheitstier ist, habe ich das Skript für das Super Drive mit dem Skript-Editor zusätzlich als Programm exportiert, und unter Dienstprogramme abgelegt.

Logitech Settings

Mit dem kleinen Helferlein Logitech Options habe ich das exportierte Programm auf die Sperren-Taste gelegt. Die brauch ich nicht wirklich, und sie hat ungefähr die gleiche Position wie die Auswerfen-Taste auf der Apple Tastatur.

Wenn man diese Funktion des Auswerfens und Schliessens gerne als Menüpunkt hätte, kann man das noch zuästzlich aktivieren.

Add the Eject Menue

Dazu klicken wir uns zu folgendem Ordner: System / Library / CoreServices / Menu Extras

Dort klicken wir doppelt auf die Datei Eject Menu, und schon haben wir einen funktionierenden Menüpunkt oben rechts.

Eject Menue

Falls ihr das mehrmals gemacht habt – aus Versehen –, dann könnt ihr mit gedrückter Befehlstaste die unnötigen Duplikate (oder die Funktion überhaupt) aus dem Menü heraus ziehen.

XPressMarkenEditor 1.0.1 (1997)

Bildschirmfoto 2017 12 23 um 18.05.43

Was einem alles so in die Hände fällt.

Ich hatte vor langer Zeit (1997) einen XPressMarkenEditor in HyperCard programmiert. Das war zu meiner Zeit beim Walter Druck in Brackenheim-Hausen.

Da hatten wir einige Kunden, die uns reine Texte zur Weiterverarbeitung geliefert hatten. Diese sollten in bestehende QuarkXPress-Layouts importiert und formatiert werden. Ich glaube, dass das meistens Geschäftsberichte und ähnliches waren.

Diese Texte mussten wir also händisch in das entsprechene Aussehen bringen. Bei Projekten mit mehreren hundert Seiten war das schon ein immenser Aufwand.

Eben darum wollte ich den Textverfassern ein Werkzeug zur Verfügung stellen, mit dem sie ihre Texte so liefern konnten, damit es später im Layout gleich so aussieht, wie wir uns das gedacht hatten. Eben mit all den Stilvorlagen und besonderen Schriftformatierungen. QuarkXPress war damals schweineteuer und nicht jeder Autor und Schreiberling wollte sich die Software anschaffen. Absolut verständlich.

Die Idee war also, dass Texte in diesem XPressMarkenEditor geschrieben oder über die Zwischenablage eingefügt und anschliessend bearbeitet werden konnten. Und dann eben darin all die Formatierungen wie „fett“ oder „kursiv“ und die anderen Absatzeinstellungen selbst ausgewählt werden konnten. Anschliessend war dann nur ein Export als XPressMarken-Datei notwendig.

Diese XPressMarken-Datei konnten wir dann in die bestehenden QuarkXPress-Layouts importieren und die Formatierungen wurden den entsprechenden Stilvorlagen zugeordnet. Somit waren dann Überschriften schon fett und hatten davor und danach die passenden Abstände, und die Texte waren linksbündig oder im Blocksatz. Und eben all die anderen schon vorher ausgedachten Gestaltungen und Formatierungen wurden automatisch über diesen Import dem Text zugeordnet.

Eine tolle Idee.

Leider lief dieses HyperCard-Programm nur aufm Mac, während die meisten unser dafür in Frage kommenden Kunden damals noch auf Windwos-Rechnern arbeiteten. Getestet hatten wir das nur mit einem Kunden, so weit ich mich erinnern kann. Da lief es aber ganz zufriedenstellend…

Im Bildschirmfoto sieht man noch einige Bereiche, die für später angedacht waren, aber nie vervollständigt wurden. Die Weiterentwicklung wird sich einfach so verlaufen haben. Schade.

Jedenfalls habe ich heute früh eine Sheepshaver-Installtion mit einem Mac OS 9 auf meinem Rechner gefunden, und konnte kurz mal in meinen alten HyperCard-Experimenten von damals herum klicken. Leider nicht mehr so funktional wie auf dem Original-System von damals.

Was ne Zeit. Wild. Verrückt. Hahahaha… Scherz beiseite.

Ist schon witzig, was man schon alles ausprobiert und experimentiert und gemacht hat. Dann fast vergessen … deswegen kommt das hier als Erinnerung rein.

 

Bildschirmfoto 2017 12 23 um 23.12.50
Zeichen und Buchstaben in QuarkXPress-Dokumenten zählen.

Bildschirmfoto 2017 12 23 um 23.09.45
Erinnerungs-Programm. Sind die Belichter schon an? Also schon aufgewärmt und startbereit.

Bildschirmfoto 2017 12 23 um 23.13.14
Arbeitszeiterfassung. (Ich Kapitalist.)

Bildschirmfoto 2017 12 23 um 23.21.05
Datei-Informations-Programm mit FaceSpan und AppleScript realisiert.

Ordner und Dateien automatisch online synchronisieren

Ordner und Dateien automatisch online synchronisieren…

…in einer Apple-Umgebung.

Wenn es darum geht, viele Dateien mit sich ständig aktualisierenden Inhalten, im Internet zum herunter laden anzubieten, sollte das automatisch und möglichst im Hintergrund ablaufen. Das heisst: sobald eine entsprechende Datei geändert/hinzugefügt/gelöscht wird, sollte das Hochladen/Synchronisieren automatisch erfolgen. Gleiches Spiel bei Ordnern (Verzeichnissen).

Wie kann man also Ordner und Dateien automatisch online synchronisieren? Und das automatisch, sobald eine Datei geändert oder neu zu einem Verzeichnis hinzugefügt wird?

Händisch ist das sehr aufwendig und Zeit raubend.

Nach einigen Tests mit CaptainFTP und dem zusätzlichen Programm CrowzNest (überwacht Ordner und lädt im Hintergrund mit CaptainFTP die Dateien auf den FTP-Server); Mac OS X Ordnerüberwachung mit gekoppeltem AppleScript, Automator, usw. …

…bin ich bei folgender Lösung gelandet. Alles andere funktionierte nie so, dass es nicht dauernd kontrolliert und neu gestartet werden musste. Also sehr unzuverlässig.

[CaptainFTP und seine Kompagnons gibt es mittlerweile (2022) schon gar nicht mehr.]

Was passiert während des Arbeitsablaufs (Workflow)? Hier ein kurzer Überblick:

  • per Launchd-Services wird der entsprechende Ordner und/oder die Datei überwacht
  • ein AppleScript wird bei Änderungen des Ordners oder der Datei gestartet
  • Transmit lädt die Dateien auf den FTP-Server hoch
  • im Kundenbereich organisiert ein Skript die Darstellung (Auflistung) und das Herunterladen der Dateien

Wie prüft man mit den Launchd-Services Ordner und Dateien auf Änderungen?

Das funktionierte für mich am besten mit dem Programm LaunchControl (eigentlich kostenpflichtig; funktioniert aber erstmal auch ohne zu bezahlen). Es gibt noch Lingon. Das hat leider nicht so gute Einstellungsmöglichkeiten per grafischer Oberfläche, und funktioniert auch nicht so zuverlässig. Jedenfalls in der Umgebung in der der Arbeitsablauf eingerichtet werden musste.

Man kann die Datei natürlich auch von Hand anlegen/bearbeiten. Wer es möchte … mir war der Weg mit benutzerfreundlicher Klickoberfläche lieber.

Über LaunchControl habe ich dann Launchd-Jobs angelegt, die die entsprechenden Verzeichnisse oder eine einzelne Datei auf Änderungen prüft. Sobald eine Datei geändert, hinzugefügt oder auch nur das Verzeichnis geöffnet wird, startet die Synchronisierung.

Über Watch paths kann man Verzeichnisse und Dateien überwachen. Eine Überwachung am besten wie im unteren Bildschirmfoto gezeigt zusammen stellen. Allerdings hatte ich nach einigen Tests festgestellt, dass es durchaus auf einem anderen System leicht anders aussehen kann.

Unter Mac OS X Snow Leopard und auch El Capitan lief und läuft (2022) es immer noch wie unten gezeigt am besten und eben zuverlässigsten.

Bildschirmfoto 2022 02 11 um 11.56.09

Ganz Wichtig!
Bei Program to run nicht auf die .app verlinken. Den Paketinhalt anzeigen lassen und auf das Applet darin verlinken. Das AppleScript kann hieraus nicht direkt gestartet werden.


Die Konfiguration mit Lingon sieht ähnlich aus

Bildschirmfoto 2022 02 11 um 09.54.54
Bildschirmfoto 2022 02 11 um 09.55.06

Die Synchronisierung

Über die Launchd-Services wird jeweils ein AppleScript gestartet, welches Transmit (FTP-Client) mit der Synchronisation der Dateien auf dem Server beauftragt. Es werden auch nur die Dateien hochgeladen, die verändert wurden. Das funktioniert mit Transmit ganz hervorragend.

Transmit benutze ich auch, wenn es darum geht, diverse Skripte im Internet zu aktualisieren. Der Abgleich, was alt aufm Server ist, und gegen lokale Dateien ausgetauscht werden muss, funktioniert wirklich wunderbar. Ist zum Beispiel bestens dazu geeignet, CMS-Skripte aktuell zu halten, die keine integrierte Aktualisierungs-Option eingebaut haben.

sync

Das AppleScript

Die ursprüngliche Version hab ich mir hier besorgt. Das funktioniert so schon richtig gut. Auch als Ordneraktion.

Für meinen Fall musste ich es aber nocht etwas anpassen;

  • das Skript soll prüfen, ob ein gewisses Server-Volume schon vorhanden (auf dem Schreibtisch angemeldet) ist
  • wenn nicht: das Volume holen, etwas warten und das Skript neu starten
Bildschirmfoto 2022 02 11 um 12.24.15

Mein AppleScript-Wissen war/ist leider etwas eingerostet. Ich weiss nicht, ob man es mit den eingebauten Schleifen nicht noch etwas optimieren kann. Wer mag kann das. Freu mich über Tipps und/oder eine neue Version des Skriptes. Ansonsten kann jeder das vorhandene Skript benutzen/erweitern/verbreiten wie er grad Lust und Zeit hat.

Sofern das unter der GNU General Public Lizenz erfolgt.

Oder eben die Einstellungen (sind im Skript markiert) anpassen und selbst verwenden.

Hier kann man es herunter laden (die neue Version 1.1 ist seit dem 2. Februar 2016 online; neu ist eine zusätzliche Schleife, die verhindert, dass das Server-Volume zu oft geholt wird).

Vielleicht hilft es ja bei der einen oder anderen Problemlösung.

Manchmal kommt es zu Problemen (wofür ich keine Problemlösung im Skript habe):

  • wenn das Volume sich nicht einhängen (anmelden) lässt und eine zu lange Schleife entsteht (ich denke, das habe ich mit der Version 1.1 behoben)
  • die Verbindung zu einem FTP-Server nicht funktioniert

Aber meistens (in 97% der Fälle) läuft es zuverlässig. Bei den oben genannten Problemen hilft etwas Geduld. Die Skripte beenden, Transmit ebenso. Etwas warten, denn der Prozess läuft ja im Hintergrund, und sollte bald erneut starten. Auf jeden Fall zu dem Moment, sobald etwas in den angegebenen Pfaden verändert wird.


Dieses Skript und Ideen zu den LaunchdJobs werden in der Hoffnung zur Verfügung gestellt, dass es hilfreich und nützlich sein kann. Ohne Garantie. Also am besten nicht gleich in laufende Arbeitsabläufe integrieren. Besser in einer Testumgebung.


-- AppleScript - Transmit - synchronize a local directory to an FTP directory
-- Copyright (C) 2010 Lincoln Mullen / (C) 2022 Marco Dinkel
-- Released under the GPL. See README.

doit(true)
on doit(theTransmit)
	if theTransmit then
		
		tell application "System Events" to set diskNames to name of every disk
		
		if "daten" is in diskNames then
			
			-- display dialog "Startbereit!"
			
			tell application "Transmit"
				-- Prevent interactive alerts from popping up during script execution
				set SuppressAppleScriptAlerts to true
				
				-- CONFIGURATION - edit what you need to below
				-- replace "LincolnMullen" with the name of your favorite
				set remoteFavorite to item 1 of (favorites whose name is "Upload-Lesezeichen")
				-- replace everything in between "" to the remote path you want to sync TO
				set remotePath to "/wp-content/uploads/"
				-- replace everything in between "" to the local path you want to sync FROM
				set localPath to "/Users/admin/Documents/"
				-- END CONFIGURATION
				
				-- set a variable naming all the skip rules that are enabled in Transmit preferences
				set myRules to (skip rules whose enabled is true)
				
				-- Create a new window (and thus a single tab) for this script
				tell current tab of (make new document at end)
					
					-- Go into the local and remote folders that we want to sync.
					change location of local browser to path localPath
					connect to remoteFavorite
					change location of remote browser to path remotePath
					
					-- Run a sync from the current local folder to the current remote folder
					synchronize local browser to remote browser using skip rules myRules with automatically determine time offset
					-- Close the current window
					close
				end tell
			end tell
			
		else
			
			-- es muss erst die Windows-Platte geholt werden
			-- wenn sie nicht schon da ist und nicht mehrfach geholt werden soll
			-- mount volume "afp://NAS01._afpovertcp._tcp.local/windows_daten"
			mount volume "smb://file-srv/daten"
			
			-- Sicherheitspuffer: bis die Platte auf dem Schreibtisch erscheint
			delay 30
			
			-- Neustart des Skriptes
			doit(theTransmit)
			
		end if
		
	else
		
		-- Beenden
		doit(false)
		
	end if
	
end doit

Das ist nur ein Weg, wie man Ordner und Dateien automatisch online synchronisieren kann…

…es gibt noch einige weitere Möglichkeiten: mit GoodSync kann man sich z. B. auch recht schnell einen stabilen Workflow zusammen klicken, der lokale Verzeichnisse mit so allerhand Online-Verzeichnissen und Wolken synchronisiert…


Der Beitrag und das AppleScript wurden am Freitag, 11. Februar 2022 aktualisiert.

Und der Workflow funktionieret unter macOS Catalina und Transmit in der Version 5 weiterhin tadellos.