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

  • Testdatengeneratoren als Microservices mit Docker

    02.11.2019

    Ich habe die verschiedenen Testdatengeneratoren mittels Microservices über HTTP zugänglich gemacht, um sie unabhängig von der verwendeten Programmiersprache und/ oder Version (Java 11) verwenden zu können.

    Weiterlesen...

Neueste Artikel

  • Generator für syntaktisch korrekten Python Code

    Nachdem es nun bereits seit einiger Zeit ein wenig stiller um meine diversen Generatoren für Testdaten geworden ist, habe ich über den Feiertag in Thüringen einen neuen begonnen.

    Weiterlesen...
  • ethersyncj - Java Bindings für Ethersync

    Ich wurde über einen Post auf Mastodon auf ein Projekt aufmerksam, das mir so interessant erschien, dass ich daraus meine neueste Fingerübung machte...

    Weiterlesen...
  • sQLshell Version 7.7pre8 build 10681

    Eine neue Version der sQLshell ist verfügbar!

    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.