Macropad - das gescheiterte Experiment

vorhergehende Artikel in: Java Komponenten Python
08.02.2024

Ich habe neulich ein Projekt angefangen, das sich aber nach einigen Tagen als undurchführbar herausstellte. Eigentlich wollte ich das gar nicht selbst entwickeln - es stellte sich aber heraus, dass es die geforderte Lösung so noch nicht gab. Als ich dann nach dem alten Amiga-Magazin-Grundsatz "Fehlt Dir was? Programmiers Dir doch!" vorgehen wollte stellte ich schnell fest, dass alles gar nicht so einfach war, wie ich es mir vorgestellt hatte.

Aber beginnen wir von vorn: Ich war auf $dayjob mit einer Aufgabe betraut, die erforderte, an vielen Stellen Text einzufügen. Die einzufügenden Texte wiederholten sich aber hin und wieder. Daher dachte ich, es wäre toll, ein Macropad zu haben, das automatisch die 10 (Beispiel) letzten in die Zwischenablage kopierten Texte auf die Tasten legt und mit Druck auf die Taste den jeweiligen Text einfügt.

Da ich kein Macropad kaufen wollte, habe ich überlegt, das per Software zu realisieren und dachte, dass es eine solche Software doch bereits geben müsste: Die 10 Hotkeys werden einfach konfiguriert - zum Beispiel Alt+F1 bis Alt+F10 und anschließend braucht man nur noch die Zwischenablage beobachten und die Texte automatisiert einzutippen.

OK -ich hielt also nach Möglichkeiten Ausschau, die Zwischenablage zu überwachen. Das stellte sich als einigermaßen schwierig, aber machbar heraus - ich fand solche Lösungen für Java und Python. Ich entschied mich für Java. Das nächste Puzzleteilchen war schon etwas schwieriger zu finden: zuverlässig systemweit Tastendrücke detektieren auch wenn die Anwendung vielleicht gar kein eigenes Fenster hat oder dieses Fenster den Eingabefokus nicht hat. Für Java konnte ich hier nur Bibliotheken finden, die JNI oder JNA benutzten. Ich biss in den sauren Apfel und entschied mich für eine davon, habe aber bisher noch keine Tests zur Portabilität der Lösung gemacht. Der Grund für die Vernachlässigung war, dass das dritte und letzte Puzzleteil (aus meiner Sicht) nicht realisierbar ist:

Das dritte Puzzleteil ist - überraschenderweise für mich - das schwierigste und das, für das ich keine Lösung finden konnte. Das ist auch der Grund, warum ich das Projekt wieder abgesagt habe: Das dritte Puzzleteil ist die Anforderung, Text in den Eingabestrom der Tastaturevents einzuspeisen. Denn egal, wo der Eingabefokus ist - auf Druck der festgelegten Taste muss der Content dort eingegeben werden. In Java, dies könnte mittels Robot erledigt werden - meine Tests zeigen aber, dass dies nicht zuverlässig funktioniert - außerdem ist es schwierig, Text in der Zwischenablage wieder in raw Key Events umzuwandeln. Und ich musste feststellen, dass bereits einfache Tastendrücke mittels Robot nicht zuverlässig einzuspeisen sind. Die alternative Idee, auf einen der konfigurierten Tastendrücke hin den aktuellen Wert der Zwischenablage zu überschreiben und anschließend die Tastenkombination für Einfügen aus der Zwischenablage auszulösen. Es stellte sich aber heraus, dass diese Idee mittels Robot gar nicht funktionierte.

Weitere Arbeit wollte ich aus Frustration nicht hineinstecken: Man könnte natürlich weitere Entdeckungsreisen in anderen Programmiersprachen unternehmen, aber...

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Certstream, InfluxDB, Grafana und Netflix

    16.04.2019

    Nachdem ich vor kurzem über mein erstes Spielen mit dem certstream berichtete, habe ich weitere Experimente gemacht und die Daten zur besseren Auswertung in eine InfluxDB gepackt, um sie mit Grafana untersuchen zu können.

    Weiterlesen...

Neueste Artikel

  • Die sQLshell ist nun cloudnative!

    Die sQLshell hat eine weitere Integration erfahren - obwohl ich eigentlich selber nicht viel dazu tun musste: Es existiert ein Projekt/Produkt namens steampipe, dessen Slogan ist select * from cloud; - Im Prinzip eine Wrapperschicht um diverse (laut Eigenwerbung mehr als 140) (cloud) data sources.

    Weiterlesen...
  • LinkCollections 2024 III

    Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2024 folgt hier gleich die nächste:

    Weiterlesen...
  • Funktionen mit mehreren Rückgabewerten in Java

    Da ich seit nunmehr einem Jahr bei meinem neeun Arbeitgeber beschäftigt und damit seit ungefähr derselben Zeit für Geld mit Python arbeite, haben sich gewisse Antipathien gegenüber Python vertieft (ich kann mit typlosen Sprachen einfach nicht umgehen) - aber auch einige meiner Gründe, Python zu lieben sind ebenso stärker geworden. Einer davon ist der Fakt, dass eine Methode in Python mehr als einen Wert zurückgeben kann.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.