Aktuelle Zeit: 23.10.2018 09:27

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 34 Beiträge ]  Gehe zu Seite 1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags: Logitech G15 u. G19 EasyAccess
BeitragVerfasst: 07.11.2010 22:52 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Ich habe mal mein altes Include an das aktuelle SDK angepasst.
Es sollte theoretisch sogar möglich sein eine G15 UND eine G19 gleichzeitig anzusprechen (wer immer sowas braucht...)


Code:
;/---------------------------------
;|
;| G15_G19.pbi V2.00
;|
;| Main Include for playing with
;| the Logitech G15/G19 Keyboard-Display
;|
;|
;| lglcd.h (c)Logitech,
;| G15_G19.pbi (PB-Version) (c)HeX0R 2010-2016
;|                             SoS   2010
;|
;| You can support both Keyboard-Displays with this one.
;/---------------------------------

#LOGI_LCD_TYPE_MONO           = $00000001
#LOGI_LCD_TYPE_COLOR          = $00000002


#LOGI_LCD_MONO_BUTTON_0       = $00000001
#LOGI_LCD_MONO_BUTTON_1       = $00000002
#LOGI_LCD_MONO_BUTTON_2       = $00000004
#LOGI_LCD_MONO_BUTTON_3       = $00000008

#LOGI_LCD_COLOR_BUTTON_LEFT   = $00000100
#LOGI_LCD_COLOR_BUTTON_RIGHT  = $00000200
#LOGI_LCD_COLOR_BUTTON_OK     = $00000400
#LOGI_LCD_COLOR_BUTTON_CANCEL = $00000800
#LOGI_LCD_COLOR_BUTTON_UP     = $00001000
#LOGI_LCD_COLOR_BUTTON_DOWN   = $00002000
#LOGI_LCD_COLOR_BUTTON_MENU   = $00004000

#LOGI_LCD_MONO_WIDTH          = 160
#LOGI_LCD_MONO_HEIGHT         = 43

#LOGI_LCD_COLOR_WIDTH         = 320
#LOGI_LCD_COLOR_HEIGHT        = 240

DeclareModule LOGILCD

   #LOGI_LCD_TYPE_MONO           = $00000001
   #LOGI_LCD_TYPE_COLOR          = $00000002


   #LOGI_LCD_MONO_BUTTON_0       = $00000001
   #LOGI_LCD_MONO_BUTTON_1       = $00000002
   #LOGI_LCD_MONO_BUTTON_2       = $00000004
   #LOGI_LCD_MONO_BUTTON_3       = $00000008

   #LOGI_LCD_COLOR_BUTTON_LEFT   = $00000100
   #LOGI_LCD_COLOR_BUTTON_RIGHT  = $00000200
   #LOGI_LCD_COLOR_BUTTON_OK     = $00000400
   #LOGI_LCD_COLOR_BUTTON_CANCEL = $00000800
   #LOGI_LCD_COLOR_BUTTON_UP     = $00001000
   #LOGI_LCD_COLOR_BUTTON_DOWN   = $00002000
   #LOGI_LCD_COLOR_BUTTON_MENU   = $00004000

   #LOGI_LCD_MONO_WIDTH          = 160
   #LOGI_LCD_MONO_HEIGHT         = 43

   #LOGI_LCD_COLOR_WIDTH         = 320
   #LOGI_LCD_COLOR_HEIGHT        = 240

   Declare Init(AppName.s, lcdType = #LOGI_LCD_TYPE_COLOR)
   Declare IsConnected(lcdType     = #LOGI_LCD_TYPE_COLOR)
   Declare IsButtonPressed(button)
   Declare Update()
   Declare Shutdown()
   Declare SetText(Text.s, Line, Color = #White, Type = #LOGI_LCD_TYPE_COLOR)
   Declare SetTitle(Text.s, Color)
   Declare SetBackgroundImage(Image, Type = #LOGI_LCD_TYPE_COLOR, AutoUpdate = #False)
   Declare AddKeyboardWatcher(Window, WindowEvent)


EndDeclareModule

Module LOGILCD

   Structure lgLcdBitmap
      bmp_color.l[#LOGI_LCD_COLOR_WIDTH * #LOGI_LCD_COLOR_HEIGHT]
   EndStructure

   Structure WATCHERDATA
      Window.i
      WindowEvent.i
   EndStructure
   
   PrototypeC.i LogiLcdInit(friendlyName.p-unicode, lcdType)
   PrototypeC.i LogiLcdIsConnected(lcdType)
   PrototypeC.i LogiLcdIsButtonPressed(button)
   PrototypeC LogiLcdUpdate()
   PrototypeC LogiLcdShutdown()
   PrototypeC.i LogiLcdMonoSetBackground(*monoBitmap)
   PrototypeC.i LogiLcdMonoSetText(lineNumber, text.p-unicode)
   PrototypeC.i LogiLcdColorSetBackground(*colorBitmap)
   PrototypeC.i LogiLcdColorSetTitle(text.p-unicode, red, green, blue)
   PrototypeC.i LogiLcdColorSetText(lineNumber, text.p-unicode, red, green, blue)

   Global LogiLcdInit.LogiLcdInit
   Global LogiLcdIsConnected.LogiLcdIsConnected
   Global LogiLcdIsButtonPressed.LogiLcdIsButtonPressed
   Global LogiLcdUpdate.LogiLcdUpdate
   Global LogiLcdShutdown.LogiLcdShutdown
   Global LogiLcdMonoSetBackground.LogiLcdMonoSetBackground
   Global LogiLcdMonoSetText.LogiLcdMonoSetText
   Global LogiLcdColorSetBackground.LogiLcdColorSetBackground
   Global LogiLcdColorSetTitle.LogiLcdColorSetTitle
   Global LogiLcdColorSetText.LogiLcdColorSetText
   

   Global IsInitialized, ThreadID, EndThread, MyWindow, MyWindowEvent, LastButtons, DLL

   Macro IsDLLLoaded
      If DLL = 0
         ProcedureReturn #False
      EndIf
   EndMacro
   
   Procedure.s GetDLLPath()
      Protected Result.s, PATH.s, hKey, lpcbData, *lpData, lpType
   
      CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
         PATH = "SOFTWARE\Classes\WOW6432Node\CLSID\{d0e790a5-01a7-49ae-ae0b-e986bdd0c21b}\ServerBinary"
      CompilerElse
         PATH = "SOFTWARE\Classes\CLSID\{d0e790a5-01a7-49ae-ae0b-e986bdd0c21b}\ServerBinary"
      CompilerEndIf
   
      If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\CLSID\{d0e790a5-01a7-49ae-ae0b-e986bdd0c21b}\ServerBinary", 0, #KEY_READ, @hKey) = #ERROR_SUCCESS
         If RegQueryValueEx_(hKey, "", 0, 0, 0, @lpcbData) = #ERROR_SUCCESS
            *lpData = AllocateMemory(lpcbData)
            If *lpData
               If RegQueryValueEx_(hKey, "", 0, @lpType, *lpData, @lpcbData) = #ERROR_SUCCESS
                  Result = PeekS(*lpData)
               EndIf
               FreeMemory(*lpData)
            EndIf
         EndIf
         RegCloseKey_(hKey)
      EndIf
   
      ProcedureReturn Result
   EndProcedure
   
   Procedure Init(AppName.s, lcdType = #LOGI_LCD_TYPE_COLOR)
      Protected PATH2DLL.s
      
      If DLL
         CloseLibrary(DLL)
      EndIf
      
      PATH2DLL = GetDLLPath()
      If PATH2DLL = ""
         ProcedureReturn #False
      EndIf
      
      DLL = OpenLibrary(#PB_Any, PATH2DLL)
      If DLL = 0
         ProcedureReturn #False
      EndIf
      
      LogiLcdInit               = GetFunction(DLL, "LogiLcdInit")
      LogiLcdIsConnected        = GetFunction(DLL, "LogiLcdIsConnected")
      LogiLcdIsButtonPressed    = GetFunction(DLL, "LogiLcdIsButtonPressed")
      LogiLcdUpdate             = GetFunction(DLL, "LogiLcdUpdate")
      LogiLcdShutdown           = GetFunction(DLL, "LogiLcdShutdown")
      LogiLcdMonoSetBackground  = GetFunction(DLL, "LogiLcdMonoSetBackground")
      LogiLcdMonoSetText        = GetFunction(DLL, "LogiLcdMonoSetText")
      LogiLcdColorSetBackground = GetFunction(DLL, "LogiLcdColorSetBackground")
      LogiLcdColorSetTitle      = GetFunction(DLL, "LogiLcdColorSetTitle")
      LogiLcdColorSetText       = GetFunction(DLL, "LogiLcdColorSetText")
      
      If LogiLcdInit = 0 Or LogiLcdIsConnected = 0 Or LogiLcdIsButtonPressed = 0 Or LogiLcdUpdate = 0 Or LogiLcdShutdown = 0
         CloseLibrary(DLL)
         DLL = #False
         ProcedureReturn #False
      ElseIf LogiLcdMonoSetBackground = 0 Or LogiLcdMonoSetText = 0 Or LogiLcdColorSetBackground = 0 Or LogiLcdColorSetTitle = 0 Or LogiLcdColorSetText = 0
         CloseLibrary(DLL)
         DLL = #False
         ProcedureReturn #False
      EndIf
      
      If LogiLcdInit(AppName, lcdType)
         IsInitialized = lcdType
         ProcedureReturn #True
      EndIf
      ProcedureReturn #False
   EndProcedure

   Procedure IsConnected(lcdType = #LOGI_LCD_TYPE_COLOR)
      
      IsDLLLoaded
      ProcedureReturn LogiLcdIsConnected(lcdType)
   EndProcedure

   Procedure IsButtonPressed(button)
      
      IsDLLLoaded
      ProcedureReturn LogiLcdIsButtonPressed(button)
   EndProcedure

   Procedure KeyboardWatcher(Dummy)
      Protected PressedButtons, i, j

      While EndThread = #False
         PressedButtons = 0
         j              = 1
         For i = 1 To 4
            If LogiLcdIsButtonPressed(j)
               PressedButtons | j
               If LastButtons & j = 0
                  ;this one is new so send a message
                  PostEvent(MyWindowEvent, MyWindow, #False, #False, j)
               EndIf
            EndIf
            j << 1
         Next i
         j = $100
         For i = 1 To 7
            If LogiLcdIsButtonPressed(j)
               PressedButtons | j
               If LastButtons & j = 0
                  ;this one is new so send a message
                  PostEvent(MyWindowEvent, MyWindow, #False, #False, j)
               EndIf
            EndIf
            j << 1
         Next i

         LastButtons = PressedButtons
         Delay(5)
      Wend
   EndProcedure

   Procedure AddKeyboardWatcher(Window, WindowEvent)
      
      IsDLLLoaded
      If ThreadID And IsThread(ThreadID)
         EndThread = #True
         WaitThread(ThreadID)
      EndIf
      
      LastButtons   = 0
      EndThread     = #False
      MyWindow      = Window
      MyWindowEvent = WindowEvent
      ThreadID      = CreateThread(@KeyboardWatcher(), 0)
      ProcedureReturn ThreadId
   EndProcedure

   Procedure Update()
      IsDLLLoaded
      LogiLcdUpdate()
   EndProcedure

   Procedure Shutdown()
      If ThreadId And IsThread(ThreadID)
         EndThread = #True
         WaitThread(ThreadID)
      EndIf
      ThreadID = 0
      If DLL
         LogiLcdShutdown()
         CloseLibrary(DLL)
         DLL = #False
      EndIf
      IsInitialized = #Null
      
   EndProcedure

   Procedure SetText(Text.s, Line, Color = #White, Type = #LOGI_LCD_TYPE_COLOR)
      Protected Result = 0
      
      IsDLLLoaded
      If Type & #LOGI_LCD_TYPE_COLOR And IsConnected(#LOGI_LCD_TYPE_COLOR)
         Result + LogiLcdColorSetText(Line, Text, Red(Color), Green(Color), Blue(Color))
      EndIf
      If Type & #LOGI_LCD_TYPE_MONO And IsConnected(#LOGI_LCD_TYPE_MONO)
         Result + LogiLcdMonoSetText(Line, Text)
      EndIf

      ProcedureReturn Result
   EndProcedure

   Procedure SetTitle(Text.s, Color)
      Protected Result

      IsDLLLoaded
      If IsInitialized
         If IsConnected(#LOGI_LCD_TYPE_COLOR)
            Result = LogiLcdColorSetTitle(Text, Red(Color), Green(Color), Blue(Color))
         EndIf
      EndIf

      ProcedureReturn Result
   EndProcedure

   Procedure SetBackgroundImage(Image.i, Type = #LOGI_LCD_TYPE_COLOR, AutoUpdate = #False)

      IsDLLLoaded
      Protected w, h, i, k, Result, hDC, *bmi.BITMAPINFO, *bitmap.lgLcdBitmap, *L.LONG, IsColor, Img, DoLoops
      ;/--------------
      ;| This Procedure will check if the ImageSize is o.k.,
      ;| otherwise will resize it to fit the display.
      ;| Then the image will be sent to the G15 or G19 display
      ;| (with the given Priority)
      ;| Easiest is to use only 32 Bit Images.
      ;|
      ;/--------------

      If IsImage(Image) = 0 Or IsInitialized = #Null
         ProcedureReturn #False
      EndIf

      *bitmap = AllocateMemory(SizeOf(lgLcdBitmap))
      If *bitmap = #Null
         ProcedureReturn #ERROR_NOT_ENOUGH_MEMORY
      EndIf

      w = ImageWidth(Image)
      h = ImageHeight(Image)
      
      DoLoops = 1
      If Type = #LOGI_LCD_TYPE_COLOR | #LOGI_LCD_TYPE_MONO And IsConnected(#LOGI_LCD_TYPE_COLOR | #LOGI_LCD_TYPE_MONO) = #LOGI_LCD_TYPE_COLOR | #LOGI_LCD_TYPE_MONO
         ;picture should be send to both and both are really connected!
         DoLoops = 2
      EndIf
      
      Repeat
         If Type & #LOGI_LCD_TYPE_COLOR And IsConnected(#LOGI_LCD_TYPE_COLOR)
            IsColor = #True
            If w > #LOGI_LCD_COLOR_WIDTH
               w = #LOGI_LCD_COLOR_WIDTH
               h = h * #LOGI_LCD_COLOR_WIDTH / ImageWidth(Image)
               If h > #LOGI_LCD_COLOR_HEIGHT
                  h = #LOGI_LCD_COLOR_HEIGHT
                  w = w * #LOGI_LCD_COLOR_HEIGHT / ImageHeight(Image)
               EndIf
            ElseIf h > #LOGI_LCD_COLOR_HEIGHT
               h = #LOGI_LCD_COLOR_HEIGHT
               w = w * #LOGI_LCD_COLOR_HEIGHT / ImageHeight(Image)
               If w > #LOGI_LCD_COLOR_WIDTH
                  w = #LOGI_LCD_COLOR_WIDTH
                  h = h * #LOGI_LCD_COLOR_WIDTH / ImageWidth(Image)
               EndIf
            EndIf
         ElseIf Type & #LOGI_LCD_TYPE_MONO And IsConnected(#LOGI_LCD_TYPE_MONO)
            If w > #LOGI_LCD_MONO_WIDTH
               w = #LOGI_LCD_MONO_WIDTH
               h = h * #LOGI_LCD_MONO_WIDTH / ImageWidth(Image)
               If h > #LOGI_LCD_MONO_HEIGHT
                  h = #LOGI_LCD_MONO_HEIGHT
                  w = w * #LOGI_LCD_MONO_HEIGHT / ImageHeight(Image)
               EndIf
            ElseIf h > #LOGI_LCD_MONO_HEIGHT
               h = #LOGI_LCD_MONO_HEIGHT
               w = w * #LOGI_LCD_MONO_HEIGHT / ImageHeight(Image)
               If w > #LOGI_LCD_MONO_WIDTH
                  w = #LOGI_LCD_MONO_WIDTH
                  h = h * #LOGI_LCD_MONO_WIDTH / ImageWidth(Image)
               EndIf
            EndIf
         Else
            Break
         EndIf
         If w <> ImageWidth(Image) Or h <> ImageHeight(Image)
            Img = CopyImage(Image, #PB_Any)
            ResizeImage(Img, w, h)
         Else
            Img = Image
         EndIf

         hDC = StartDrawing(ImageOutput(Img))

         If hDC
            *bmi = AllocateMemory(SizeOf(BITMAPINFO) + 255 * SizeOf(RGBQUAD))
            If *bmi
               *bmi\bmiHeader\biSize        = SizeOf(BITMAPINFOHEADER)
               *bmi\bmiheader\biWidth       =  w
               *bmi\bmiheader\biHeight      = - h
               *bmi\bmiheader\biPlanes      = 1
               *bmi\bmiheader\biCompression = #BI_RGB
               If IsColor
                  *bmi\bmiheader\biBitCount = 32
                  Result                    = GetDIBits_(hDC, ImageID(Img), 0, h, *bitmap, *bmi, #DIB_RGB_COLORS)
               Else
                  *bmi\bmiheader\biBitCount = 8
                  Result                    = GetDIBits_(hDC, ImageID(Img), 0, h, *bitmap, *bmi, #DIB_RGB_COLORS)
                  ;Swap Colors for G15
                  ;(G15 shows black, when color = white and vice versa)
                  *L = *bitmap
                  For i = 0 To (#LOGI_LCD_MONO_WIDTH * #LOGI_LCD_MONO_HEIGHT) / 4
                     *L\l = *L\l ! $FFFFFFFF
                     *L + 4
                  Next i
               EndIf
               If Result
                  If IsColor
                     Result = LogiLcdColorSetBackground(*bitmap)
                  Else
                     Result = LogiLcdMonoSetBackground(*bitmap)
                  EndIf
               EndIf
               FreeMemory(*bmi)
            EndIf
            StopDrawing()
         EndIf
         FreeMemory(*bitmap)
         If Img <> Image
            FreeImage(Img)
         EndIf
         DoLoops - 1
         Type & #LOGI_LCD_TYPE_MONO
      Until DoLoops = 0
         
      If AutoUpdate
         Update()
      EndIf

      ProcedureReturn Result
   EndProcedure

EndModule


CompilerIf #PB_Compiler_IsMainFile
   
   #MY_EVENT = #PB_Event_FirstCustomValue
   Procedure main()
      Protected Text$
      
      OpenWindow(0, 0, 0, 300, 200, "Logitech Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
      EditorGadget(0, 5, 5, 290, 180, #PB_Editor_ReadOnly)
      AddGadgetItem(0, -1, "Press a Button")
      
      If LOGILCD::Init("MYTEST", #LOGI_LCD_TYPE_COLOR | #LOGI_LCD_TYPE_MONO)
         LOGILCD::SetTitle("Hello World", #Green)
         LOGILCD::SetText("Button Test", 0, #Blue, #LOGI_LCD_TYPE_COLOR | #LOGI_LCD_TYPE_MONO)
         LOGILCD::Update()
         LOGILCD::AddKeyboardWatcher(0, #MY_EVENT)
         
         Repeat
            Select WaitWindowEvent()
               Case #PB_Event_CloseWindow
                  Break
               Case #MY_EVENT
                  Select EventData()
                     Case #LOGI_LCD_COLOR_BUTTON_LEFT
                        Text$ = "LEFT Button pressed!"
                     Case #LOGI_LCD_COLOR_BUTTON_DOWN
                        Text$ = "DOWN Button pressed!"
                     Case #LOGI_LCD_COLOR_BUTTON_RIGHT
                        Text$ = "RIGHT Button pressed!"
                     Case #LOGI_LCD_COLOR_BUTTON_UP
                        Text$ = "UP Button pressed!"
                     Case #LOGI_LCD_COLOR_BUTTON_OK
                        Text$ = "OK Button pressed!"
                     Case #LOGI_LCD_COLOR_BUTTON_CANCEL
                        Text$ = "CANCEL Button pressed!"
                     Case #LOGI_LCD_COLOR_BUTTON_MENU
                        Text$ = "MENU Button pressed!"
                     Case #LOGI_LCD_MONO_BUTTON_0
                        Text$ = "Button 0 pressed!"
                     Case #LOGI_LCD_MONO_BUTTON_1
                        Text$ = "Button 1 pressed!"
                     Case #LOGI_LCD_MONO_BUTTON_2
                        Text$ = "Button 2 pressed!"
                     Case #LOGI_LCD_MONO_BUTTON_3
                        Text$ = "Button 3 pressed!"
                  EndSelect
                  If Text$
                     AddGadgetItem(0, -1, Text$)
                     LOGILCD::SetText(Text$, 1, $0000FF)
                  EndIf
                  LOGILCD::Update()
            EndSelect
         ForEver
   
         LOGILCD::Shutdown()
      EndIf
   EndProcedure

   main()
   
CompilerEndIf


[Edit 11.11.2010]
SoS's Verbesserung eingefügt.
Kommentare eingepflegt.

[Edit 12.11.2010]
2. Verbesserung von SoS eingepflegt, Beispiel ein wenig geändert.

[Edit 12.12.2010]
Beispiel leicht verändert, auch um die G15_G19_Devel.pbi zu unterstützen.
Haupt-Include unverändert.

[Edit 11.02.2011]
Import für x64 geändert, Libs müssen nun in Unterordnern x86, bzw. x64 sein.
Ausserdem noch einen kleinen Bug behoben.

[Edit 28.05.2016]
Auf Module umgebastelt.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Zuletzt geändert von HeX0R am 28.05.2016 21:53, insgesamt 6-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Logitech G15 u. G19 EasyAccess
BeitragVerfasst: 11.11.2010 17:07 
Offline
Benutzeravatar

Registriert: 29.08.2004 09:31
Hab mal Dein include verarbeitet und läuft prima. :D
Der Imageconverter läuft zwar mit der G15 und G19,ist aber nur für die G15 gedacht (bzw für andere 1Bit LCD's).

Habe nur eine Kleinigkeit geändert.
Code:
   If hDC
      *bmi = AllocateMemory(SizeOf(BITMAPINFO) + 255 * SizeOf(RGBQUAD))
      If *bmi
         *bmi\bmiHeader\biSize        = SizeOf(BITMAPINFOHEADER)
         *bmi\bmiheader\biWidth       =  w
         *bmi\bmiheader\biHeight      = - h
         *bmi\bmiheader\biPlanes      = 1
         *bmi\bmiheader\biCompression = #BI_RGB
         
        If *G15\ctxo\deviceType = #LGLCD_DEVICE_QVGA
         *bmi\bmiheader\biBitCount    = 32 ; muss 32 bit sein bei der G19
         
            Result = GetDIBits_(hDC, ImageID(Image), 0, h, *bitmap + OffsetOf(lgLcdBitmap\bmp_qvga32), *bmi, #DIB_RGB_COLORS)
          Else
         *bmi\bmiheader\biBitCount    = d
         *Buffer = AllocateMemory(w * h * (d / 8))


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Logitech G15 u. G19 EasyAccess
BeitragVerfasst: 11.11.2010 21:15 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Danke, habe ich gleich mal oben übernommen (Wobei ich eh schrieb: am besten immer 32Bit nehmen).
Bei der Gelegenheit noch jede Menge Kommentare eingepflanzt, die das ganze etwas transparenter machen sollte.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Logitech G15 u. G19 EasyAccess
BeitragVerfasst: 12.11.2010 15:22 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Habe von SoS eine ziemliche Vereinfachung der Bildumwandlung bekommen und natürlich auch eingebaut.
Hätte ich auch selbst drauf kommen können *gegenstirnklatsch*.

Vielen Dank!

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Logitech G15 u. G19 EasyAccess
BeitragVerfasst: 12.11.2010 18:43 
Offline
Benutzeravatar

Registriert: 29.08.2004 09:31
HeX0R hat geschrieben:
Hätte ich auch selbst drauf kommen können *gegenstirnklatsch*.

Ich bin auch nur über das Bytearray gestolpert und dachte nur "das muss auch anders gehen" . :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Logitech G15 u. G19 EasyAccess
BeitragVerfasst: 12.12.2010 18:03 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Ich habe mich noch aufgerafft eine G15_G19_Devel.pbi zu machen.
Es war einfach irgendwie unpraktisch, dass man nicht gesehen hat, wie denn die eigene Applikation
auf einer G19 (oder umgekehrt) aussehen würde.

Also kann man nun einfach diese Include anstatt der anderen aufrufen (sie benutzt allerdings die andere,
also müssen beide im selben Verzeichnis sein) und sieht dann ein entsprechendes simuliertes Fensterchen.

Das ist also nur ein Helferchen bei der Entwicklung, später sollte man nur noch die Original-Include einbinden.

Das Beispiel oben habe ich auch leicht verändert.

G15_G19_Devel.pbi
Code:
;/---------------------------------
;|
;| G15_G19_Devel.pbi V1.01 [16.12.2010]
;|
;| With this include you should be able to simulate logitechs lcd.
;|
;| If you want to know, how your multi-lcd-support-app
;| looks like on another lcd, use this include.
;|
;| !!G15_G19.pbi REQUIRED!!
;|
;| Usage:
;| For simulating a G15 use:
;|
;| #LGLCD_SIMULATE_KEYBOARD = 1
;| XIncludeFile "G15_G19_Devel.pbi"
;|
;| instead of
;| XIncludeFile "G15_G19.pbi"
;|
;|
;| For simulating a G19 use:
;| #LGLCD_SIMULATE_KEYBOARD = 2
;|
;|
;| This include is just meant to help you developing your apps.
;| When finished, you should change the XIncludeFile-Line above back
;| to the normal include.
;|
;| Or use it this way:
;|
;| CompilerIf #PB_Compiler_Debugger
;| #LGLCD_SIMULATE_KEYBOARD = 1
;| XIncludeFile "G15_G19_Devel.pbi"
;| CompilerElse
;| XIncludeFile "G15_G19.pbi"
;| CompilerEndif
;|
;| Then you only will use this include only when the debugger is enabled.
;|
;| (c)HeX0R 2010
;|
;/---------------------------------

#LGLCD_LCD_CONNECTED = $80000000

CompilerIf Defined(LGLCD_SIMULATE_KEYBOARD, #PB_Constant) = 0
;If nothing has been defined, use G19 Simulation
#LGLCD_SIMULATE_KEYBOARD = 2
CompilerEndIf

CompilerIf #PB_Compiler_Thread = 0
CompilerError "Please enable Threadsave in compileroptions!"
CompilerEndIf

Declare lgLCDCreateExInterface(SimulatedLCD)

;-FIRST overwriting the original CreateInterface Procedure
Procedure lgLCDCreateInterface()
   ProcedureReturn lgLCDCreateExInterface(#LGLCD_SIMULATE_KEYBOARD)
EndProcedure

;-THEN Including original Include
;--------------------
XIncludeFile "G15_G19.pbi"
;--------------------

;-Extending original Structure, then those values will be added
; to the end of the structure and don't interfere with original interface-methods.
; (This means, we still can use any of the original procedures)
Structure _LGLCD_INTERFACE_EX_VALUES_ Extends _LGLCD_INTERFACE_VALUES_
   SimulateMode.i
   WindowID.i
   Buttons.i[8]
   Signals.i[8]
   *OriginalCallback
   *OriginalContext
   ImageGadget.i
   ImageID.i
   ThreadID.i
   PrevButtons.i
EndStructure

;-----Internal Procedures------
;{
Procedure _lgLcdOnSoftButtonsCB_internal(device.l, dwButtons.l, *G15._LGLCD_INTERFACE_EX_VALUES_)
   Protected CB.lgLcdOnSoftButtonsCB

   If *G15\WindowID

      ;-G15 Buttons
      If dwButtons & #LGLCDBUTTON_BUTTON0
         SetGadgetText(*G15\Buttons[0], "< 1 >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_BUTTON0
         SetGadgetText(*G15\Buttons[0], "1")
      EndIf

      If dwButtons & #LGLCDBUTTON_BUTTON1
         SetGadgetText(*G15\Buttons[1], "< 2 >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_BUTTON1
         SetGadgetText(*G15\Buttons[1], "2")
      EndIf

      If dwButtons & #LGLCDBUTTON_BUTTON2
         SetGadgetText(*G15\Buttons[2], "< 3 >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_BUTTON2
         SetGadgetText(*G15\Buttons[2], "3")
      EndIf

      If dwButtons & #LGLCDBUTTON_BUTTON3
         SetGadgetText(*G15\Buttons[3], "< 4 >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_BUTTON3
         SetGadgetText(*G15\Buttons[3], "4")
      EndIf

      ;-G19 Buttons
      If dwButtons & #LGLCDBUTTON_LEFT
         SetGadgetText(*G15\Buttons[0], "< « >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_LEFT
         SetGadgetText(*G15\Buttons[0], "«")
      EndIf

      If dwButtons & #LGLCDBUTTON_RIGHT
         SetGadgetText(*G15\Buttons[1], "< » >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_RIGHT
         SetGadgetText(*G15\Buttons[1], "»")
      EndIf

      If dwButtons & #LGLCDBUTTON_OK
         SetGadgetText(*G15\Buttons[2], "< OK >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_OK
         SetGadgetText(*G15\Buttons[2], "OK")
      EndIf

      If dwButtons & #LGLCDBUTTON_CANCEL
         SetGadgetText(*G15\Buttons[3], "< C >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_CANCEL
         SetGadgetText(*G15\Buttons[3], "C")
      EndIf

      If dwButtons & #LGLCDBUTTON_UP
         SetGadgetText(*G15\Buttons[4], "< /\ >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_UP
         SetGadgetText(*G15\Buttons[4], "/\")
      EndIf

      If dwButtons & #LGLCDBUTTON_DOWN
         SetGadgetText(*G15\Buttons[5], "< \/ >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_DOWN
         SetGadgetText(*G15\Buttons[5], "\/")
      EndIf

      If dwButtons & #LGLCDBUTTON_MENU
         SetGadgetText(*G15\Buttons[6], "< Menu >")
      ElseIf *G15\PrevButtons & #LGLCDBUTTON_MENU
         SetGadgetText(*G15\Buttons[6], "Menu")
      EndIf

   EndIf
   *G15\PrevButtons = dwButtons

   If *G15\OriginalCallback
      CB = *G15\OriginalCallback
      CB(*G15\ctxo\device, dwButtons, *G15\OriginalContext)
   EndIf
EndProcedure

Procedure _lgLcdOpenWindowLCD_internal(*G15._LGLCD_INTERFACE_EX_VALUES_)
   Protected i, CB.lgLcdOnSoftButtonsCB, EventG, IconID

   If *G15\SimulateMode & #LGLCD_DEVICE_BW
      *G15\WindowID = OpenWindow(#PB_Any, 434, 217, 330, 140, "LCD-Display Simulation",  #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_Invisible)

      If *G15\WindowID
         SmartWindowRefresh(*G15\WindowID, 1)
         *G15\ImageGadget = ImageGadget(#PB_Any, 5, 5, 320, 86, 0, #PB_Image_Border)
         *G15\Buttons[0]  = ButtonGadget(#PB_Any, 25, 110, 40, 20, "1")
         *G15\Signals[0]  = #LGLCDBUTTON_BUTTON0
         *G15\Buttons[1]  = ButtonGadget(#PB_Any, 80, 110, 40, 20, "2")
         *G15\Signals[1]  = #LGLCDBUTTON_BUTTON1
         *G15\Buttons[2]  = ButtonGadget(#PB_Any, 215, 110, 40, 20, "3")
         *G15\Signals[2]  = #LGLCDBUTTON_BUTTON2
         *G15\Buttons[3]  = ButtonGadget(#PB_Any, 270, 110, 40, 20, "4")
         *G15\Signals[3]  = #LGLCDBUTTON_BUTTON3
         *G15\Buttons[4]  = 0
         *G15\Buttons[5]  = 0
         *G15\Buttons[6]  = 0
      EndIf

   Else
      *G15\WindowID = OpenWindow(#PB_Any, 434, 217, 480, 247, "LCD-Display Simulation",  #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_Invisible)

      If *G15\WindowID
         SmartWindowRefresh(*G15\WindowID, 1)
         *G15\ImageGadget = ImageGadget(#PB_Any, 155, 2, 320, 240, 0, #PB_Image_Border)
         Frame3DGadget(#PB_Any, 4, 40, 142, 120, "LCD-Buttons")
         *G15\Buttons[0]  = ButtonGadget(#PB_Any, 55, 55, 40, 20, "/\")
         *G15\Signals[0]  = #LGLCDBUTTON_UP
         *G15\Buttons[1]  = ButtonGadget(#PB_Any, 10, 80, 40, 20, "«")
         *G15\Signals[1]  = #LGLCDBUTTON_LEFT
         *G15\Buttons[2]  = ButtonGadget(#PB_Any, 55, 80, 40, 20, "OK")
         *G15\Signals[2]  = #LGLCDBUTTON_OK
         *G15\Buttons[3]  = ButtonGadget(#PB_Any, 100, 80, 40, 20, "»")
         *G15\Signals[3]  = #LGLCDBUTTON_RIGHT
         *G15\Buttons[4]  = ButtonGadget(#PB_Any, 55, 105, 40, 20, "\/")
         *G15\Signals[4]  = #LGLCDBUTTON_DOWN
         *G15\Buttons[5]  = ButtonGadget(#PB_Any, 10, 130, 55, 20, "Menu")
         *G15\Signals[5]  = #LGLCDBUTTON_MENU
         *G15\Buttons[6]  = ButtonGadget(#PB_Any, 85, 130, 55, 20, "C")
         *G15\Signals[6]  = #LGLCDBUTTON_CANCEL

      EndIf

   EndIf

   If *G15\WindowID
      IconID = CatchImage(#PB_Any, ?LogitechIcon)
      If IconID
         SendMessage_(WindowID(*G15\WindowID), #WM_SETICON, #False, ImageID(IconID))
      EndIf

      If *G15\OriginalCallback
         CB = *G15\OriginalCallback
      EndIf

      HideWindow(*G15\WindowID, 0)

      Repeat
         Select WaitWindowEvent()
            Case #PB_Event_CloseWindow
               HideWindow(*G15\WindowID, 1)
            Case #WM_APP
               Break
            Case #PB_Event_Gadget
               If CB
                  EventG = EventGadget()
                  For i = 0 To 6
                     If *G15\Buttons[i] And EventG = *G15\Buttons[i]
                        CB(1, *G15\Signals[i], *G15)
                        Break
                     EndIf
                  Next i
               EndIf
         EndSelect
      ForEver

   EndIf

   CloseWindow(*G15\WindowID)
   *G15\WindowID                                             = #Null
   *G15\ThreadID                                             = #Null
   *G15\ctxo\onSoftbuttonsChanged\softbuttonsChangedCallback = *G15\OriginalCallback
   *G15\OriginalCallback                                     = #Null
   If IsImage(IconID)
      FreeImage(IconID)
   EndIf

EndProcedure

Procedure _lglcdCreateBWImage_internal(Image)
   ;/-------------
   ;| Convert into black and white image
   ;/-------------
   Protected *Buffer, A, x, y, w, h, C, P, *P.LONG

   If IsImage(Image)
      w = ImageWidth(Image)
      h = ImageHeight(Image)
      If ImageDepth(Image) = 32
         A  = 4
      Else
         A  = 3
      EndIf

      If StartDrawing(ImageOutput(Image))
         *Buffer = DrawingBuffer()
         P       = DrawingBufferPitch()
         For y = 0 To h - 1
            *P = *Buffer + (P * y)
            For x = 0 To w - 1
               C = *P\l >> 24 + (*P\l >> 16) & $FF + (*P\l >> 8) & $FF
               C = C / 3
               If C > 127
                  *P\l = $FFFFFFFF
               Else
                  *P\l = $FF000000
               EndIf
               *P + A
            Next x
         Next y
         StopDrawing()
      EndIf
   EndIf

EndProcedure
;}

;-------Interface-Procedures-------
;{
Procedure _lgLcdExSetImage(*G15._LGLCD_INTERFACE_EX_VALUES_, Image, Priority)
   Protected Result, w, h, wmax, hmax

   If *G15\SimulateMode & #LGLCD_LCD_CONNECTED
      Result = _lgLcdSetImage(*G15, Image, Priority)
   EndIf
   ;Set Image to Window...
   If IsImage(Image)
      w = ImageWidth(Image)
      h = ImageHeight(Image)
      If *G15\ImageID <> -1
         FreeImage(*G15\ImageID)
      EndIf
      *G15\ImageID = CopyImage(Image, #PB_Any)

      If *G15\SimulateMode & #LGLCD_DEVICE_BW
         wmax = #LGLCD_BW_BMP_WIDTH
         hmax = #LGLCD_BW_BMP_HEIGHT
         _lglcdCreateBWImage_internal(*G15\ImageID)
      Else
         wmax = #LGLCD_QVGA_BMP_WIDTH
         hmax = #LGLCD_QVGA_BMP_HEIGHT
      EndIf
      If w > wmax
         w = wmax
         h = h * wmax / ImageWidth(*G15\ImageID)
         If h > hmax
            h = hmax
            w = w * hmax / ImageHeight(*G15\ImageID)
         EndIf
      ElseIf h > hmax
         h = hmax
         w = w * hmax / ImageHeight(*G15\ImageID)
         If w > wmax
            w = wmax
            h = h * wmax / ImageWidth(*G15\ImageID)
         EndIf
      EndIf
      If *G15\SimulateMode & #LGLCD_DEVICE_BW
         ResizeImage(*G15\ImageID, w * 2, h * 2)
      ElseIf w <> ImageWidth(Image) Or h <> ImageHeight(Image)
         ResizeImage(*G15\ImageID, w, h)
      EndIf
      SetGadgetState(*G15\ImageGadget, ImageID(*G15\ImageID))
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure _lgLcdExConnect(*G15._LGLCD_INTERFACE_EX_VALUES_, AppName.s, isPersistent, isAutostartable, *softbuttonCallBack = #Null, *softbuttonContext = #Null, *notifyCallBack = #Null, *notifyContext = #Null, *configCallBack = #Null, *configContext = #Null, CapabilitiesToCheck = #LGLCD_APPLET_CAP_BW | #LGLCD_APPLET_CAP_QVGA)
   Protected Result

   *G15\OriginalCallback = *softbuttonCallBack
   *G15\OriginalContext  = *softbuttonContext
   *softbuttonCallBack   = @_lgLcdOnSoftButtonsCB_internal()
   *softbuttonContext    = *G15
   CapabilitiesToCheck   = *G15\SimulateMode & $FF
   Result                = _lgLcdConnect(*G15, AppName, isPersistent, isAutostartable, *softbuttonCallBack, *softbuttonContext, *notifyCallBack, *notifyContext, *configCallBack, *configContext, CapabilitiesToCheck)

   If Result = #ERROR_SUCCESS
      *G15\SimulateMode | #LGLCD_LCD_CONNECTED
   Else
      Result = #ERROR_SUCCESS
      *G15\SimulateMode & $7FFFFFFF
      *G15\ctx\Connection  = 1
      *G15\ctxo\connection = 1
      *G15\ctxo\device     = 1
   EndIf
   *G15\ThreadID = CreateThread(@_lgLcdOpenWindowLCD_internal(), *G15)

   ProcedureReturn Result
EndProcedure

Procedure _lgLcdExDisconnect(*G15._LGLCD_INTERFACE_EX_VALUES_)

   If *G15\SimulateMode & #LGLCD_LCD_CONNECTED
      _lgLcdDisconnect(*G15)
   EndIf
   If *G15\WindowID
      PostMessage_(WindowID(*G15\WindowID), #WM_APP, #Null, #Null)
      If *G15\ThreadID And IsThread(*G15\ThreadID) And WaitThread(*G15\ThreadID, 200) = 0
         KillThread(*G15\ThreadID)
      EndIf
      *G15\ThreadID = 0
   EndIf
   *G15\ctxo\device      = 0
   *G15\ctxo\connection  = 0
   *G15\ctx\Connection   = 0
   *G15\OriginalCallback = 0
   *G15\OriginalContext  = 0

EndProcedure

Procedure _lgLcdExGetKindOf(*G15._LGLCD_INTERFACE_EX_VALUES_)
   Protected Result

   If *G15\SimulateMode & #LGLCD_LCD_CONNECTED
      Result = _lgLcdGetKindOf(*G15)
   ElseIf *G15\SimulateMode & #LGLCD_DEVICE_BW
      Result = #LGLCD_DEVICE_BW
   Else
      Result = #LGLCD_QVGA_BMP_BPP
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure _lgLcdExGetLCDSize(*G15._LGLCD_INTERFACE_EX_VALUES_, *Size.POINT)
   Protected Result

   If *G15\SimulateMode & #LGLCD_LCD_CONNECTED
      Result = _lgLcdGetLCDSize(*G15, *Size)
   ElseIf *G15\SimulateMode & #LGLCD_DEVICE_BW
      *Size\x = #LGLCD_BW_BMP_WIDTH
      *Size\y = #LGLCD_BW_BMP_HEIGHT
      Result  = #ERROR_SUCCESS
   Else
      *Size\x = #LGLCD_QVGA_BMP_WIDTH
      *Size\y = #LGLCD_QVGA_BMP_HEIGHT
      Result  = #ERROR_SUCCESS
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure _lgLcdExSetForeGround(*G15._LGLCD_INTERFACE_EX_VALUES_, Mode)
   Protected Result

   If *G15\WindowID
      StickyWindow(*G15\WindowID, Mode)
      Result = #ERROR_SUCCESS
   EndIf
   If *G15\SimulateMode & #LGLCD_LCD_CONNECTED
      Result = _lgLcdSetForeGround(*G15, Mode)
   EndIf

   ProcedureReturn Result
EndProcedure

Procedure _lgLcdExIsConnected(*G15._LGLCD_INTERFACE_EX_VALUES_)
   ProcedureReturn *G15\ctxo\device
EndProcedure
;}

Procedure lgLCDCreateExInterface(SimulatedLCD)
   Protected *G15._LGLCD_INTERFACE_EX_VALUES_

   ;/--------------
   ;| Main Procedure, will create the needed interface
   ;|
   ;/--------------

   *G15 = AllocateMemory(SizeOf(_LGLCD_INTERFACE_EX_VALUES_))
   If *G15 = 0
      ProcedureReturn #ERROR_NOT_ENOUGH_MEMORY
   EndIf
   *G15\VTable       = ?_VT_LGLCD_EX_DATA_
   *G15\SimulateMode = SimulatedLCD
   *G15\ImageID      = -1

   ProcedureReturn *G15
EndProcedure


DataSection
   _VT_LGLCD_EX_DATA_:
   Data.i @_lgLcdExConnect()
   Data.i @_lgLcdExSetImage()
   Data.i @_lgLcdExDisconnect()
   Data.i @_lgLcdExGetKindOf()
   Data.i @_lgLcdExGetLCDSize()
   Data.i @_lgLcdExSetForeGround()
   Data.i @_lgLcdExIsConnected()
   LogitechIcon:
   ;   IncludeBinary "logitech.ico" ;nocrunsh
   ;<<Changed through BinaryIncluder (c)HeX0R>>
   Data.l $00010000, $20200001, $00000000, $10A80020, $00160000, $00280000, $00200000, $00400000
   Data.l $00010000, $00000020, $20000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $FFFF0000, $CCCC02FF, $FFFF05CC, $FFFF06FF, $FFFF06FF, $FFFF06FF, $DFFF06FF, $EBEB08FF
   Data.l $E3F10DEB, $E5F212F1, $E7E714F2, $E7E715F3, $E7E715F3, $E7E715F3, $E7E715F3, $E7E715F3
   Data.l $E7E715F3, $E7E715F3, $E7E715F3, $F2F215F3, $E4F214F2, $EDED13F2, $E3E30EED, $CCCC09E3
   Data.l $FFFF05CC, $FFFF03FF, $FFFF02FF, $000001FF, $00000000, $00000000, $00000000, $AAAA0000
   Data.l $EBEB03AA, $EFEF0DEB, $EFFA20F7, $EDF631FA, $EEF638FA, $EEF73BF6, $ECF33DF7, $F2F843F7
   Data.l $EFF94FFC, $F0F75EF9, $F0F567FA, $F0F56AFA, $F0F56AFA, $F0F56AFA, $F0F56AFA, $F0F56AFA
   Data.l $F0F56AFA, $F0F56AFA, $F0F56AFA, $F0F76AFA, $F2F769FA, $F3F663FC, $F0F755FC, $F0F542FB
   Data.l $ECF933FA, $F0F029F9, $F5F523F8, $DBED19F5, $BFBF0EED, $000004BF, $00000000, $DBDB0000
   Data.l $EDF607DB, $E8F21DF6, $EEF74FF5, $EFF786F9, $EDF6A5F8, $EAF4AEF8, $DFE6B0F4, $BDC2B9E7
   Data.l $9DA1CAC4, $9DA1DAA1, $9EA2DDA2, $9EA2DDA2, $9DA1DDA2, $9A9FDDA1, $9A9DDD9F, $9C9EDD9F
   Data.l $9C9EDDA0, $9C9EDDA0, $9C9EDDA0, $9D9FDDA1, $9EA1DDA2, $B0B3DBA4, $E1E8D0B6, $EFF7B6EB
   Data.l $F1F8A1FA, $EFF793FA, $F0F782F9, $F2F666FA, $E7F33CFB, $FFFF15F3, $000002FF, $D4D40000
   Data.l $E9F006D4, $EFF623F8, $909570FA, $2425D995, $1B1CFA23, $1515FC1A, $0E0FFE14, $0C0DFF0D
   Data.l $0F0FFF0B, $1011FF0C, $1213FF0F, $1314FF10, $1415FF11, $1516FF12, $1617FF13, $1717FF14
   Data.l $1718FF15, $1718FF15, $1819FF15, $1819FF16, $1718FF16, $1617FF15, $1919FF14, $2628FF17
   Data.l $3839FB25, $4B4DF738, $5051F14B, $BFC4E650, $F0F594C6, $E3E335FA, $000009E3, $CCCC0000
   Data.l $E9F005CC, $F1F723F8, $565A80FB, $0000F159, $0000FF00, $0000FF00, $0000FF00, $0000FF00
   Data.l $0000FF00, $0000FF00, $0000FF00, $0000FF00, $0001FF00, $0001FF00, $0103FF00, $0102FF02
   Data.l $0002FF01, $0102FF01, $0102FF01, $0102FF01, $0103FF02, $0103FF02, $0103FF02, $0305FF02
   Data.l $0406FF03, $080AFF04, $1011FF06, $9499FF0E, $F0F9D299, $EFEF54F9, $000010EF, $BFBF0000
   Data.l $EAF104BF, $F0F724F8, $393C88FB, $0F11FB39, $0F10FF0D, $0E0FFF0D, $0C0EFF0C, $0C0DFF0A
   Data.l $0B0CFF0A, $0A0CFF0A, $090AFF08, $090AFF08, $080AFF07, $1F24FF07, $6B81FF1D, $677BFF6B
   Data.l $0C0EFF66, $090AFF0B, $090AFF07, $080AFF07, $080AFF07, $090BFF07, $090BFF08, $090BFF07
   Data.l $090BFF07, $090BFF07, $0C0DFF07, $797BFF0A, $F0FAE87A, $E7F367FA, $000015F3, $CCCC0000
   Data.l $F2F805CC, $F0F627F8, $44458FF9, $3336FC43, $3335FF31, $3134FF31, $2A2BFF30, $2629FF28
   Data.l $2022FF24, $2323FF1F, $1E1FFF20, $1E1EFF1C, $1D1EFF1C, $2C31FF1B, $515EFF2A, $5563FF50
   Data.l $292DFF54, $2527FF27, $282AFF23, $2B2CFF26, $2D2EFF29, $2F32FF2B, $2F31FF2D, $2D2FFF2D
   Data.l $292CFF2B, $2526FF27, $2224FF22, $6F73FF20, $F1F8EB72, $EAF46DFA, $000018F4, $FFFF0000
   Data.l $F2F905FF, $F1F828F9, $3E4390FA, $2533FD3D, $2227FF24, $2B34FF20, $1E23FF2A, $1F27FF1D
   Data.l $1C22FF1F, $1B1EFF1B, $1719FF19, $1B1FFF16, $191DFF19, $1518FF18, $141AFF13, $1820FF14
   Data.l $1B22FF18, $1E23FF1A, $2128FF1D, $2729FF21, $292DFF25, $2831FF28, $2F32FF26, $272EFF2D
   Data.l $222CFF26, $1720FF21, $222BFF17, $7174FF21, $F1F8EA73, $EAEA6DFA, $000018F4, $CCCC0000
   Data.l $F2F805CC, $EFF827F8, $4F508FF9, $3438FA4D, $2B2DFF32, $2F38FF2A, $2326FF2E, $1B1FFF22
   Data.l $2125FF1A, $181BFF20, $191CFF17, $171BFF18, $1B1FFF16, $171BFF1A, $1518FF17, $1A20FF14
   Data.l $171CFF1A, $2122FF17, $282DFF1F, $2C2CFF27, $3639FF2A, $343EFF35, $3939FF34, $272EFF37
   Data.l $1E26FF26, $1319FF1E, $1C20FF13, $787BFF1B, $F0F5E87A, $E8E869FA, $000016F3, $FFFF0000
   Data.l $EAF104FF, $F0F624F8, $50538AFB, $313FF850, $282DFF2F, $485EFF26, $2225FF47, $242DFF21
   Data.l $171CFF24, $1B21FF17, $262DFF1B, $1D24FF25, $171CFF1C, $1C23FF16, $1E26FF1C, $1A20FF1E
   Data.l $1E27FF19, $2126FF1D, $2D39FF20, $2426FF2D, $2E38FF23, $4560FF2F, $2126FF49, $2C36FF21
   Data.l $242EFF2B, $1D26FF23, $2328FF1C, $8084FF21, $EFF7E483, $E5F264FA, $000014F2, $BFBF0000
   Data.l $F0F704BF, $F1F722F7, $5B5F85FB, $3139F75C, $2E31FF31, $4355FF2C, $2B33FF42, $2A34FF2A
   Data.l $2730FF29, $2630FF25, $262FFF25, $2B34FF25, $2730FF2A, $242DFF26, $2830FF23, $252EFF27
   Data.l $2630FF24, $252FFF24, $363FFF24, $2E33FF35, $262CFF2D, $3746FF25, $3644FF36, $2F3DFF36
   Data.l $2530FF2E, $1B25FF24, $2328FF1B, $888CFF22, $EFF7DF8C, $E4E460FA, $000013F2, $FFFF0000
   Data.l $EFF703FF, $F1F920F7, $646880FD, $3742F565, $383CFF36, $393CFF37, $393DFF38, $2C2FFF38
   Data.l $2D30FF2B, $3338FF2D, $2F32FF32, $292CFF2E, $2C31FF27, $2A2FFF2B, $2D31FF28, $2A2EFF2C
   Data.l $3035FF29, $2C2DFF2F, $383CFF2B, $3E3FFF37, $3538FF3D, $3C46FF34, $3B42FF3B, $3C43FF3A
   Data.l $3337FF3B, $2B2DFF32, $3233FF2A, $9397FF30, $EEF6DA97, $EFEF5BF9, $000010EF, $FFFF0000
   Data.l $EDED02FF, $F0F61DF6, $6E7379FB, $4551F26F, $3A3FFF44, $3945FF39, $3A3FFF38, $323EFF3A
   Data.l $2D38FF32, $262CFF2C, $3037FF26, $2128FF30, $2833FF20, $2934FF28, $353AFF29, $2A34FF35
   Data.l $212AFF2A, $2734FF21, $2D3BFF27, $4248FF2D, $2B3BFF42, $344AFF2B, $3D4DFF34, $3841FF3D
   Data.l $3C3EFF38, $636AFF3A, $5A60FF62, $A4A9FF59, $F0F6D3A8, $EDED54F9, $00000EED, $FFFF0000
   Data.l $E9E902FF, $EFF517F4, $808563FA, $5152E684, $5152FF54, $5255FF53, $5255FF52, $4A50FF55
   Data.l $4849FF4B, $3836FF47, $2E2CFF3A, $3A38FF2F, $5051FF3B, $5050F950, $5654FA46, $5655F945
   Data.l $4F50F945, $5254F94A, $3C40FB52, $4347FF3C, $5253FF42, $585BFF51, $5758FF58, $545CFF57
   Data.l $4E56FF55, $4C56FF4E, $484CFF4D, $A6AAFF47, $F0F8BEAB, $E8E845F8, $00000BE8, $00000000
   Data.l $EAEA0100, $F2F60CEA, $C1C73BFB, $B1BA93C7, $AEB5C7B6, $A8AFD6B3, $A1A9DEAC, $8F95E5A5
   Data.l $6E70EF91, $4848F76E, $4747FD48, $4849FA48, $1A1BF948, $2927FC1A, $5B50FF0D, $5149FF10
   Data.l $2525FF10, $2629FE14, $7179FD26, $4444F572, $4F4FFF44, $696BFE4F, $8285FA6A, $8F93F384
   Data.l $9194EC92, $8F94E693, $898DE093, $CBD2CE8D, $EDF37CD4, $FFFF2BF9, $000006FF, $00000000
   Data.l $FFFF0000, $E5F203FF, $EFF514F2, $EEF531FA, $EEF64CF8, $EFF75BF9, $EFF664FA, $F1F96FFA
   Data.l $F1F87FFB, $EEF694FA, $DFE7AAF7, $2021C7E8, $1213F921, $1616FF10, $555DFF0E, $3638FF4A
   Data.l $1717FF2A, $0F10FF12, $7F84FF0E, $C3CDE682, $D3DDDCC9, $EFF6D3DA, $EFF6B6FA, $F0F991FA
   Data.l $F1F87AFB, $F0F76EFA, $EFF865FA, $EFF451FC, $DFEF2FF9, $FFFF10EF, $000001FF, $00000000
   Data.l $00000000, $AAAA0000, $DFDF03AA, $EBEB08DF, $E3F10DEB, $F3F312F1, $EBF515F3, $F0F01AF5
   Data.l $EDF321F7, $EEF72BF9, $EFF73DF7, $C1C762FA, $71749CC7, $7579C474, $767ACC79, $787ACE7A
   Data.l $7678D07B, $868ACD78, $E4EBBE8A, $E9F299EC, $E5F28AF0, $EFF979F0, $EEF450FC, $EEF62EF9
   Data.l $EBF51EF6, $E8F31AF5, $E1F016F3, $DFDF11F0, $AAAA08DF, $000003AA, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $FFFF0000, $7F7F01FF
   Data.l $BFBF027F, $E3E304BF, $EAF409E3, $EFFA18F4, $F0F830FA, $EFF646FB, $F3F952F9, $F0F654FC
   Data.l $EFF656F9, $ECF452F9, $F0FA44F7, $EEF932FA, $F2F82CF9, $E9E927F8, $DFDF17F4, $FFFF08DF
   Data.l $FFFF01FF, $000001FF, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $BFBF0100, $DBDB04BF, $E3E307DB, $E3E309E3, $E3E309E3
   Data.l $E3E309E3, $DBDB09E3, $BFBF07DB, $CCCC04BF, $D4D405CC, $BFBF06D4, $000004BF, $00000100
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
   Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $FFFF0000
   Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
   Data.l $00E0FFFF, $00E01F00, $00C00700, $00C00700, $00C00700, $00C00700, $00C00700, $00C00700
   Data.l $00C00700, $00C00700, $00E00700, $00E00700, $00E00700, $80FF0F00, $F0FFFF00, $FFFFFF07
   Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
   Data.b $FF, $FF
EndDataSection

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Logitech G15 u. G19 EasyAccess
BeitragVerfasst: 07.02.2011 01:29 
Offline
Benutzeravatar

Registriert: 10.09.2004 20:51
Wohnort: Ansbach
Hm, vll bin ich irgendwie blind, aber ich kann nirgends einen Link zur "lgLcd.lib" finden.
Wär cool wenn du den noch oben in deinem Beitrag einfügen könntest!

LG KeyKon

_________________
(\/) (°,,,°) (\/)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Logitech G15 u. G19 EasyAccess
BeitragVerfasst: 07.02.2011 03:17 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
KeyKon hat geschrieben:
Hm, vll bin ich irgendwie blind, aber ich kann nirgends einen Link zur "lgLcd.lib" finden.
Wär cool wenn du den noch oben in deinem Beitrag einfügen könntest!

LG KeyKon


Ist urheberrechtlich geschützt ...

Muss auf deiner TreiberCD mit drauf sein. SDK als Stichwort....

_________________
PureBasic 5.46 LTS / 5.62 (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 32GB RAM | iChill GeForce GTX 980 X4 Ultra | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Logitech G15 u. G19 EasyAccess
BeitragVerfasst: 07.02.2011 13:11 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Hast du das hier übersehen?
Zitat:
;| You need to copy the 'lgLcd.lib'
;| to the same dir as this Header.
;| The SDK with the 'lgLcd.lib' should be here:
;| C:\Program Files\Common Files\Logitech\LCD Manager\SDK


Oder hast du am Ende gar keine G15/G19?

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Logitech G15 u. G19 EasyAccess
BeitragVerfasst: 07.02.2011 14:49 
Offline
Benutzeravatar

Registriert: 10.09.2004 20:51
Wohnort: Ansbach
Ne habs gesehen, war wohl etwas neben der Kappe^^
Hab das falschrum interpretiert so im Sinne von das man das da hinkopieren muss, reden wir nich weiter darüber :freak:
Und ja ich hab eine G15, wenn ich keine hätte wär ich auch zu faul ein Tool dafür zu schreiben ^^

Aber danke nochmal, mal sehen wie gut ich damit zurecht komme!
LG KeyKon

_________________
(\/) (°,,,°) (\/)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 34 Beiträge ]  Gehe zu Seite 1, 2, 3, 4  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye