G15-Tasten in AutoIT?

  • Hiho,

    vor nicht allzu langer Zeit hab ich mir ne G15 zugelegt und dachte mir nun, wenn ich schonmal eine habe, möchte ich sie auch im vollen Umfang nutzen.
    Zum öffnen von Dateien oder zum Abspeichern von "quotes" (ob in irgendnem Spiel oder icq etc) find ich die Tasten zu schade, auch wenn ich 54 davon zur Verfügung habe.

    Nun ist mir die Idee gekommen, die G-Tasten als Hotkeys zu verwenden, sprich meine scripts damit zu steuern ohne andere Tasten unnötig shortcuts oder selten verwendete Tasten zu benutzen.
    den G-Tasten shortcuts anzueignen finde ich auch nicht so eine tolle idee, da ich wahrscheinlich recht schnell für alle Tasten verwendung hätte, jedoch 54 shortcuts zu finden, die nicht belegt sind und auch nicht belegt werden zu finden ist nicht leicht.

    Die G-Tasten darauf zu programmieren, dass sie eine bestimmte Datei öffnen hätte leider auch recht wenig sinn, da durch das drücken einer Taste in das vorhandene Script eingegriffen werden muss (sei es das Script zu pausieren, vorab werte überprüfen, schleifen überspringen etc.

    Lange Rede kurzer Sinn... Hätte jemand von euch eine Idee, wie man die G-Tasten in AutoIT "ansprechen" kann, sodass ich z.B.
    HotKeySet( "{G1}", _pause() )
    nutzen kann? (war jetzt nur als beispiel gedacht, dass man G1..G54 oder G1M1...G18M1..G18M3 deklariert, wie genau könnte ich ja eh selbst bezeichnen, wenn ich erstmal ne Routine hätte, wie man die Tasten einbinden könnte ^^)


    Wäre sehr verbunden, wenn mir bei dem Problem jemand helfen könnte.

    mfg

    nofuture

    • Offizieller Beitrag

    Hallo

    Nein tut es leider nicht. Das ist nur für das LCD gedacht.
    Ich hab bisher noch nichts gefunden, womit sich die G Tasten ansteuern lassen. Es sind ja auch keine von Windows bekannte Tasten sondern das fungiert eher wie ein externes gerät mit Knöpfen was du an nem USB Port anschließt.
    Aber was du machen kannst: Du kannst mit dem KeyProfiler (von Logitech) eine Taste einen bestimmten Tastendruck zuweisen (z.B. STRG + ALT + F5 oder sowas). Und dann in deinem AutoIt script STRG + ALT + F5 (^!{F5} oder so, hab lang nicht mehr damit gearbeitet :P) auf _pause zeigen (mit HotKeySet)

    So mache ich das immer, z.B. auch bei Winamp für den "Jump to file" Dialog ;)

    Mfg Spider

  • soweit, dass darüber nicht mal eben nen paar treffer im google landen bin ich auch schon ^^
    Wie gesagt, die shortcuts müssten zwar rein theoretisch funktionieren, jedoch wäre es schwer 54 Tastenkürzel zu finden, die nie eingesetzt werden.
    zusätzlich würde ich meine scripts auch anwenderfreundlich gestalten, da ich viele davon an Freunde weitergebe (worunter auch Leute sind, die ne G15 besitzen).

    Und... Eigentlich müssten die tasten doch, genau wie alle andere Tasten auch, über Ihre Adresse ansprechbar sein,
    ich meine - die Software von Logitech macht doch auch nichts anderes wie reagieren, wenn die Taste gedrückt wird, oder irre ich mich da?

    Ich kenn mich im Bereich user32.dll / winapi und was da alles zugehört leider nicht besonders aus...
    Jedoch hab ich für normale (bzw normale und special)-keys (um diese gemütlich im Hintergrund rattern zu lassen) ne udf...
    da steht dann z.B. drin

    [autoit]


    Case "RETURN"
    $skey = 0x0D
    Case "SPACE"
    $skey = 0x20

    [/autoit]

    ich gehe mal davon aus, dass das Speicherwerte der user32.dll sind, die dort verarbeitet werden.

    Da käme doch eigentlich die funktion IsPressed gerade wie gerufen um evtl herausfinden zu können, welcher speicherwert in der user32.dll zu den Tasten gehört).
    falls davon überhaupt was in der user32.dll steht.
    Nur leider habe ich es bisher noch nicht auf die Reihe bekommen, die funktion so zu gestalten, dass alles durchgeforstet wird :(

    • Offizieller Beitrag

    Hallo

    Das meine ich ja eben. Es sind keine Tasten in dem Sinne. Also es sind keine offiziellen Hotkeys die Windows kennt. Die G-Tasten kann man sich ungefähr so vorstellen: Du baust dir selbst z.B. eine Fernbedinung die du dann über USB anschließt und die dann mit spezieller Software funktioniert.
    Natürlich wird irgendwas über den USB Port abgegeben, aber es wird nicht von Windows (WinAPI) "gemerkt" bzw verarbeitet sondern von Logitech.
    Aber wie gesagt - warum das Rad neu erfinden? Der Logitech Key Profiler ist doch schon ziemlich Optimal.

    Mfg Spider

  • Du kannst doch lange Hotkeys setzen:

    [autoit]

    HotKeySet("#^!+a","test") ; oder #!^A (+a = SHIFT-a = großes A)
    Func test()
    ConsoleWrite(@HotKeyPressed & @CRLF)
    EndFunc
    While 1
    Sleep(10)
    WEnd

    [/autoit]


    SHIFT-CTRL-ALT-WIN-a verwendet doch niemand als normalen Hotkey ;)

  • Naja gut, dann werd ich wohl erstmal mit nem Haufen shortcuts arbeiten müssen.

    Naja, was heisst, das Rad neu erfinden?
    Wenn man nun zusätzlich 54 Tastenkürzel belegt läuft man der Gefahr nahe, dass man mindestens einen dabei erwischt hat, der Bereits in irgendeinem Programm, mit dem man arbeitet, vorhanden ist.
    Ausserdem ist wäre es ja nicht so, dass man die komplette Steuerung neu programmieren würde, sondern eher, dass man auch in anderen Sprachen direkt das Signal empfangen kann.

    Naja egal, ich geh dann erstmal auf tastenkürzeljagd :D


    edit: hm... das mit den langen HotKeys hat was ^^

  • einiges ^^
    meine scripts steuern mehrere Sachen gleichzeitig,
    deshalb unter anderem auch umständlich über die WinApi im Hintergrund ^^

    Zur Zeit werden 4 "clienten" angesteuert.
    Zwar werde ich das ganze noch in ein GUI setzen, wo man alles einstellen könnte,
    jedoch arbeite ich währenddessen noch gern am rechner und hab alles lieber komplett "auf unsichtbar geschaltet".
    Nun hat man allein 4x Pause/Resume und Stop, also für jeden einzelnen und dann für alle zusammen, das allein macht schon 10 Hotkeys.
    dann noch für jeden einzelnen Funktionen, um schleifen zu beenden etc., falls mal was schief gelaufen ist, getestet werden muss etc.

    Im übrigen, da mich das einfach nicht losgelassen hat bisher :D
    01ECFE58 < die Adresse scheint schonmal anzugeben, welchen Wert die M-Taste gerade hat ^^

  • Ansonsten setze "systematische" Hotkeys erst einen ganz langen Vorspann, dann F1 für die erste Taste, F2, für die zweite... Shift F1 für die Elfte... Da fällt dir sicher was ein! :P

  • naja, wie systematisch es im endeffekt ist, ist eigentlich egal, das profil könnte man glaube ich speichern/laden und wenn mans einmal in au3 eingebunden hat brauchts einen ja nicht mehr kümmern ^^
    Nur halt die Tatsache, dass ich die Tasten noch nicht direkt ansprechen kann, wurmt mich :D

  • Naja, ist doch nicht so schlimm.
    Ich hätte noch eine Idee: F-Tasten über F12 verwenden. Bei mir funktioniert zum Beispiel auch F234 in AutoIt. Kann das der KeyProfiler auch?

    [autoit]

    HotKeySet("{F234}","_test")
    Func _test()
    MsgBox(0, '', "")
    EndFunc
    Sleep(5000)
    Send("{F234}")

    [/autoit]
  • Ich muss gestehen, dass ich dir gerade nicht so ganz folgen kann ^^

    [autoit]


    HotKeySet("{F234}","_test")

    [/autoit]

    In welchem zusammenhang ist die Kombination von F234 mit F12 verbunden und vorallem, was macht F234 überhaupt?
    ich könnte mir höchstens vorstellen, dass das triggert, wenn F2, F3, F4 gleichzeitig gedrückt werden, wobei ich das auch nicht ganz glaube.

  • Das ist die Funktionstaste 234. Bei mir hat das funktioniert, aber warscheinlich kommt das auf den Treiber an oder so...
    Hab grad nochmal getestet. Das ließt das als F23 und lässt die 4 weg. Windows unterstützt die Funktionstasten F1 bis F24. Alle die auf der Tastatur nicht vorhanden sind, kannst du ohne Probleme für interne Kommunikation verwenden.
    (Meistens sind F13 - F24 nicht auf der Tastatur vorhanden.)

    //Edit: Und noch ein Problem hab ich gefunden. Die Kombinationen funktionierten zwar, aber es werden alle als der gleiche Key erkannt :(

    [autoit]

    Func _Func()
    MsgBox(0, '13', @HotKeyPressed)
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    For $i = 13 To 24
    HotKeySet("{F"&$i&"}","_Func")
    Next
    For $i = 13 To 24
    Send("{F"&$i&"}")
    Next

    [/autoit]

    Einmal editiert, zuletzt von progandy (30. April 2009 um 12:29)

  • ok, erstmal gucken, wie ich im Profiler F13-24 einstellen kann (drücken wird bissle schwer xD) und dann testen ^^

    ok, also der Tastendruck von F-Tasten ist aber irgendwie komisch... hab mir jetzt mal kurz folgendes gebaut...

    Sleep(5000)
    Send("{F13}")

    (habs auch einmal mit F12 und co probiert, jedoch der gleiche Effekt).

    Im Keyprofiler der G15 kann ich die jeweilige Taste angeben und nen Tastendruck anlegen.
    Danach wird man aufgefordert die Taste zu drücken. Jedoch egal welche F-Taste ich von AutoIT drücken lasse... kommt nichts an, obwohl ich im aktiven Fenster bin (dafür extra die Sleeptime) :(

    Einmal editiert, zuletzt von nofuture (30. April 2009 um 13:18)

  • Natürlich kannst du keine Nicht vorhandenen Tasten drücken oO
    Das wäre gegen jede Logik
    Aber eigentlich müsste es gehen
    Natürlich mit F1-F12

    Padmak

  • Theoretisch sollte es gehen, bei Windows kommen ja nur die "Kombintaionen" an, z.B. F3, was es damit macht, ist egal, das Problem ist nur, dass das Programm zum Zuordnen der Tastatur anscheinend kein _ISPressed o.ä. benutzt und sie auf anderem Wege bezieht...

  • Kommt drauf an, wie man "nicht vorhandene Tasten" definiert.
    Wie bereits erwähnt wurde, sind im Windows (ich glaube in der user32.dll, jedoch kenne ich mich damit nicht genau aus) F1 bis F24 definiert.
    Nun kann man natürlich z.B. F13 nicht drücken, jedoch kann man es nachstellen, wie man es mit Makros generell macht.
    Ob diese Taste nun auf der Tastatur vorhanden ist oder nicht spielt dabei nicht wirklich eine Rolle, man kann ja auch z.B. auf einem Laptop den numblock ansteuern lassen.

    Das Problem ist wohl ganz eindeutig, dass der KeyProfiler die gedrückte Taste, wie Matthias gerade erwähnt hat, die gedrückte Taste irgendwie anders ausliest.
    Zuerst dachte ich auch, dass eventuell die F13 nicht richtig angesteuert würde, deshalb hab ich F10-12 probiert, fehlanzeige.
    auch "normale" Tasten werden von dem Programm leider nicht angenommen.

    Also bleiben wohl nur 2 möglichkeiten,
    entweder man nutzt nur kombinationen, die man selber eintippen kann,
    oder man versucht das Profil irgendwie zu umgehen,
    indem man evtl die Profildatei selber versucht manuell abzuändern (wofür ich bisher vergeblich die Datei gesucht habe).

    Ich habe bereits mal einen post ins g15-applet-forum gesetzt, vielleicht weiß da jemand ein wenig mehr.
    Jedenfalls eins ist sicher, leicht wirds wohl leider nicht :(

  • hm... leider scheint es überhaupt nicht zu funktionieren,

    Ab F12 wird rein garnichts erkannt und auch wenn ich z.B. eine Taste als G5 konfiguriere, kriege ich es damit nicht durch HotKeys.
    Weder ein HotKeySet (Funktion unten) triggert, noch könnte ich mit der entsprechenden G-Taste z.B. FireFox aktualisieren.
    Also bleibt wohl scheinbar doch nur eine direkte Ansteuerung.