Wie ersetze ich den Befehl "GetAsyncKeyState" in LO in Ubuntu 18 Umgebung? Ich will die ESC-Taste als Abbruchbedingung in einer Schleife einbauen.

REM Folgendes Programm läuft in LO unter Windoofs und soll in LO in Ubuntu 18 portiert werden:

OPTION EXPLICIT
OPTION VBASupport 1

Declare Function GetAsyncKeyState Lib “user32.dll” (ByVal vKey As Long) As INTEGER

SUB Main
DIM to_finishing As INTEGER
DIM number AS LONG
number=1

DO UNTIL number>=1e5 OR GetAsyncKeyState(27) '!?!?!? ESC=CHR(27)
number=number+1
to_finishing = GetAsyncKeyState(27) '!?!?!?
IF to_finishing<0 THEN
MsgBox “ESC pressed”,vbCancel
EXIT DO
END IF
LOOP
MsgBox "number : "&number

END SUB

Mit VBASupport habe ich noch nie zu tun gehabt, auch mit speziell auf Windows gemünzten Makros. Aber suchst Du nicht so etwas wie den KeyCode. Mit einem einfachen Makro kannst Du erkennen, welche Taste was abgibt:

SUB Test(oEvent AS OBJECT)
msgbox oEvent.KeyCode
END SUB

Ich würde als Base-Mensch das Makro an ein Formular-Textfeld hängen, dann den Cursor dort platzieren und loslegen. Die Verbindung sollte über Formular → Ereignisse → Taste losgelassen erfolgen.

Aus Antwort von @Typ_KM entnommen und hier eingefügt. Antwort gelöscht.

@Typ_KM hat geschrieben:
Danke für den schnellen Kommentar und sorry für meine späte Rückmeldung. Leider habe ich dieses 3-Zeiler Makro in verschiedenen Variationen ausprobiert ohne Erfolg. Es kommt bei mir immer der Laufzeitfehler 91: Objektvariable nicht belegt.

@Typ_KM:
Um eine Frage oder Antwort zu kommentieren, klicke auf “kommentieren” hinter der jeweiligen Frage oder Antwort, bzw. hinter dem letzten Kommentar zu einer Frage oder Antwort.

Ich habe das jetzt getestet, weil Du ja anscheinend mit dem Makro nicht zurecht kamst:
Bei mir funktioniert das, wenn ich das über das Feld (nicht Formular wie im ersten Kommentar) einbinde.
Du musst das Makro an ein Textfeld in einem Formular anbinden und dann in dieses Feld Einträge machen.
Die ESC-Taste liefert den KeyCode 1281.

Danke RobertG für deine Hinweise. Leider habe ich keine Erfahrung in Base.
Ich will doch nur diese Simulation, was in Calc unter Windoof Umgebung läuft, in Linux/Ubuntu zum laufen bekommen. Und dann in Calc mit Linux/Ubuntu Umgebung schrittweise erweitern.
Eventuell sollte ich die Frage allgemeiner formulieren und damit das Problem aus zwei Richtungen eingrenzen:
In einer Windoofs Umgebung benötige ich die Bibliothek “user32.dll” um den Befehl für die Tastaturabfrage “GetAsyncKeyState” nutzen zu können.
Welche Bibliothek muss ich in Linux/Ubuntu Umgebung laden um so einen ähnlichen Befehl für die Tastaturabfrage zu nutzen? Wie ist dann die entsprechende Syntax für die Tastaturabfrage?
Die zweite oder andere Richtung: Zu dem kleinen Makro (s.O) was Du schon erfolgreich in Base angewendet hat, gibt es irgendwo im www einen Hinweis für die Programmierung mit Objektvariablen “oEvent.KeyCode” in Calc um das Ereignis: "ESC-Taste wurde gedrückt (KeyCode=1281) " abfragen zu können. Aber wo?

Wie bindest Du denn im Moment das Makro ein, das Du da auslöst?

Indem ich einfach die entsprechende Calc-Datei mit einem Makro aufrufe. Danach bestätige ich die Makrotätigkei und rufe dann mit ALT+F11 den Editor auf. wie gesagt in Windoofs funktioniert alles. Die Frage ist, wie portiere ich das in Linux/Ubuntu.
Folgendes habe ich auch schon ohne Erfolg im Editor ausprobiert und finde den Fehler nicht:

DIM oEv AS OBJECT 

SUB Main
  DIM number AS LONG  
  oEv = CreateUnoListener( "KeyListener_", "com.sun.star.awt.XKeyListener" )
  number=0  
  DO
    addKeyListener(KeyListener_keyReleased(oEv)) 
    number=number+1 
  LOOP UNTIL number>100000 OR (oEv.KeyCode=1281)   
  MsgBox "Ende:" &number
END SUB   

SUB KeyListener_keyPressed(oEv)
END SUB

SUB KeyListener_keyReleased(oEv)
   'IF (oEv.KeyCode = com.sun.star.awt.Key.ESCAPE) THEN
   IF com.sun.star.awt.Key.ESCAPE=true THEN
     MsgBox  "ESCAPE was pressed"
     Else
     com.sun.star.awt.Key.ESCAPE=false
     oEv=KeyListener
   END IF
END SUB  

SUB KeyListener_disposing(oEv)
END SUB