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 Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Synchronisierung von Lorenz-Systemen III

    23.10.2020

    Nachdem ich in einem vorhergehenden Artikel auf das Problem des kleinen Parameterraums im Zusammenhang mit der Nutzung synchronisierter chaotischer Systeme hingewiesen hatte will ixch hier untersuchen, wie sensibel solche Systeme auf Abweichungen der Parameterwerte zwischen treibendem und getriebenen System reagieren

    Weiterlesen

Neueste Artikel

  • Plugin zur Arbeit mit Markdown für NeoVim

    Ich habe neulich beschrieben, dass ich aktuell mehr und mehr bemerke, dass Dinge, für die ich in meinem NeoVim-Setup Plugins benutzt habe sehr gut auch mit Bordmitteln funktionieren.

    Weiterlesen
  • Raspbian Upgrade von 11 (Bullseye) nach 12 (Bookworm)

    Ich habe neulich wieder einmal eine Upgrade- und Backup-Sitzung mit meinen diversen Linuxinstallationen veranstaltet. Der Zeitpunkt schien mir gekommen, da es eine neue stable Variante von Debian (Trixie) gibt.

    Weiterlesen
  • Meine praktischen Erfahrungen mit ollama (llava)

    Ich diskutiere immer wieder gern über das was heute Machine Intelligence oder Artificial Intelligence ( oder wie die ganzen anderen hohlen Phrasen heißen, die dafür heutzutage als Buzzwords missbraucht werden). Das geschieht online, in meinem $dayjob oder auch privat. Meine Meinung steht fest: das ist alles Quatsch und steht in keiner Relation zum Nutzen

    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, muss 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 Codeberg-Repositories findet man hier.