Seite 1 von 2

Logitech G15-Display

Verfasst: 07.01.2007 00:49
von HeX0R
Moin,

ich habe ein wenig mit meiner Logitech G15-Tastatur gespielt.
Dieses Teil hat ein LCD-Display, welches sich programmieren lässt.
Also habe ich mal die Header-Datei vom SDK für PB umgeschrieben und auch gleich ein kleines Beispiel gebastelt.

Ich brauche das für nen Messanger, also nicht die Grafiken klauen, nur inspirieren lassen (vorrausgesetzt irgendjemand hat diese Tastatur überhaupt, bzw. will seinen Applikationen den Zugriff darauf ermöglichen).

Dank geht an Freak, der mir durch seinen Tipp die letzten Haare gerettet hat (*Rauf* *Rauf*).

Unterstützt werden nur Bitmaps, und auch nur bis kleinstenfalls 8 Bit Farbtiefe.
Klar wären Monochrom-Pics (weil LCD-Display) perfekt gewesen, aber ich war zu faul die Bits in Bytes umzuwursten.
(Ausserdem macht PB eh meistens 24Bit-Bilder draus).

Hier die Inlcude:

Code: Alles auswählen

;/---------------------------------
;|
;| G15_Header.pbi
;|
;| Main Include for playing with
;| the Logitech G15 Keyboard-Display
;|
;| You need to copy the 'lgLcd.lib'
;| to the same dir as this Header.
;| The 'lgLcd.lib' should be on the
;| Driver CD shipping with your 
;| Keyboard.
;| (Or here: 
;| http://evemon.battleclinic.com/cgi-bin/trac.cgi/changeset/402 )
;|
;| lglcd.h (c)Logitech, 
;| G15_Header.pbi (PB-Version) (c)HeX0R
;|
;/---------------------------------


;Invalid handle definitions
#LGLCD_INVALID_CONNECTION    = -1
#LGLCD_INVALID_DEVICE        = -1

;Soft-Button masks
#LGLCDBUTTON_BUTTON0         = $00000001
#LGLCDBUTTON_BUTTON1         = $00000002
#LGLCDBUTTON_BUTTON2         = $00000004
#LGLCDBUTTON_BUTTON3         = $00000008

;lgLcdBitmap
#LGLCD_BMP_FORMAT_160x43x1   = $00000001
#LGLCD_BMP_WIDTH             = 160
#LGLCD_BMP_HEIGHT            = 43

;Priorities
#LGLCD_PRIORITY_IDLE_NO_SHOW = 0
#LGLCD_PRIORITY_BACKGROUND   = 64
#LGLCD_PRIORITY_NORMAL       = 128
#LGLCD_PRIORITY_ALERT        = 255


Macro LGLCD_SYNC_UPDATE(priority)
	($80000000 | priority)
EndMacro

Macro LGLCD_ASYNC_UPDATE(priority)
	priority
EndMacro

;Callback used To notify client of soft button change
;Declare.l lgLcdOnSoftButtonsCB(device.l, dwButtons, pContext.l)

;Callback used To allow client To pop up a "configuration panel"
;Declare.l lgLcdOnConfigureCB(connection.l, pContect.l)

Structure lgLcdDeviceDesc
	Width.l
	Height.l
	Bpp.l
	NumSoftButtons.l
EndStructure

Structure lgLcdBitmapHeader
	Format.l
EndStructure

Structure lgLcdBitmap160x43x1
	hdr.lgLcdBitmapHeader
	pixels.b[#LGLCD_BMP_WIDTH * #LGLCD_BMP_HEIGHT]
EndStructure

Structure lgLcdConfigureContext
	*configCallback
	*configContext
EndStructure

Structure lgLcdConnectContext
	*appFriendlyName
	isPersistent.l
	isAutostartable.l
	onConfigure.lgLcdConfigureContext
	connection.l
EndStructure

Structure lgLcdSoftbuttonsChangedContext
	*softbuttonsChangedCallback
	*softbuttonsChangedContext
EndStructure

Structure lgLcdOpenContext
	connection.l
	index.l
	onSoftbuttonsChanged.lgLcdSoftbuttonsChangedContext
	device.l
EndStructure

Import "lgLcd.lib"
	lgLcdInit()
	lgLcdDeInit()

	CompilerIf #PB_Compiler_Unicode
	lgLcdConnect.l(*ctx.lgLcdConnectContext) As "_lgLcdConnectW@4"
	CompilerElse
	lgLcdConnect.l(*ctx.lgLcdConnectContext) As "_lgLcdConnectA@4"
	CompilerEndIf

	lgLcdDisconnect.l(connection.l)
	lgLcdEnumerate.l(connection.l, index.l, *description.lgLcdDeviceDesc)
	lgLcdOpen.l(*ctx.lgLcdOpenContext)
	lgLcdClose.l(device.l)
	lgLcdReadSoftButtons.l(device.l, *buttons)
	lgLcdUpdateBitmap.l(device.l, *bitmap.lgLcdBitmapHeader, priority.l)
EndImport

Procedure.l Img2G15(Image.l, *bitmap.lgLcdBitmap160x43x1, Invers.l = 0)
	Protected A.l, B.l, x.l, y.l, w.l, h.l, d.l, Result.l, hDC.l, *bmi.BITMAPINFO, *Buffer, Add.l

	If IsImage(Image) = 0
		ProcedureReturn #False
	EndIf

	w = ImageWidth(Image)
	h = ImageHeight(Image)
	d = ImageDepth(Image)
	
	If w > #LGLCD_BMP_WIDTH
		w = #LGLCD_BMP_WIDTH
		h = h * #LGLCD_BMP_WIDTH / ImageWidth(Image)
		If h > #LGLCD_BMP_HEIGHT
			h = #LGLCD_BMP_HEIGHT
			w = w * #LGLCD_BMP_HEIGHT / ImageHeight(Image)
		EndIf
	ElseIf h > #LGLCD_BMP_HEIGHT
		h = #LGLCD_BMP_HEIGHT
		w = w * #LGLCD_BMP_HEIGHT / ImageHeight(Image)
		If w > #LGLCD_BMP_WIDTH
			w = #LGLCD_BMP_WIDTH
			h = h * #LGLCD_BMP_WIDTH / ImageWidth(Image)
		EndIf
	EndIf
	If w <> ImageWidth(Image) Or h <> ImageHeight(Image)
		ResizeImage(Image, w, h)
	EndIf

	*bitmap\hdr\Format = #LGLCD_BMP_FORMAT_160x43x1
	hDC  = StartDrawing(ImageOutput(Image))
	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\biBitCount    = d
			*bmi\bmiheader\biCompression = #BI_RGB
		
			*Buffer = AllocateMemory(w * h * (d / 8))
			If *Buffer = 0
				StopDrawing()
			Else
				Result = GetDIBits_(hDC, ImageID(Image), 0, h, *Buffer, *bmi, #DIB_RGB_COLORS)
				StopDrawing()
				If Result
					Add = 0
					Select d
						Case 8
							For y = 0 To #LGLCD_BMP_HEIGHT - 1
								For x = 0 To #LGLCD_BMP_WIDTH - 1
									If y >= h Or x >= w
										B = 255
									Else
										A = PeekB(*Buffer + Add) & $FF
										A = PeekL(*bmi\bmiColors + A * SizeOf(RGBQUAD))
										B = (A & $FF) + ((A >> 8) & $FF) + ((A >> 16) & $FF)
										Add + 1
									EndIf
									If Invers
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = B / 3
									Else
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = 255 - (B / 3)
									EndIf
								Next
							Next
						Case 16
							For y = 0 To #LGLCD_BMP_HEIGHT - 1
								For x = 0 To #LGLCD_BMP_WIDTH - 1
									If y >= h Or x >= w
										B = 510
									Else
										A = PeekW(*Buffer + Add)
										B = (A & $FF) + ((A >> 8) & $FF)
										Add + 2
									EndIf
									If Invers
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = B / 2
									Else
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = 255 - (B / 2)
									EndIf
								Next
							Next
						Case 24
							For y = 0 To #LGLCD_BMP_HEIGHT - 1
								For x = 0 To #LGLCD_BMP_WIDTH - 1
									If y >= h Or x >= w
										B = 765
									Else
										A = PeekL(*Buffer + Add)
										B = (A & $FF) + ((A >> 8) & $FF) + ((A >> 16) & $FF)
										Add + 3
									EndIf
									If Invers
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = B / 3
									Else
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = 255 - (B / 3)
									EndIf
								Next
							Next
						Case 32
							For y = 0 To #LGLCD_BMP_HEIGHT - 1
								For x = 0 To #LGLCD_BMP_WIDTH - 1
									If y >= h Or x >= w
										B = 765
									Else
										A = PeekL(*Buffer + Add)
										B = (A & $FF) + ((A >> 8) & $FF) + ((A >> 16) & $FF)
										Add + 4
									EndIf
									If Invers
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = B / 3
									Else
										*bitmap\pixels[y * #LGLCD_BMP_WIDTH + x] = 255 - (B / 3)
									EndIf
								Next
							Next
					EndSelect
					
				EndIf
				FreeMemory(*Buffer)
			EndIf
			FreeMemory(*bmi)
		EndIf
	EndIf

	ProcedureReturn Result
EndProcedure

und das Beispiel:

Code: Alles auswählen

;/----------------------------
;|
;| Example File for the G15_Header.pbi
;|
;| Not much commented
;| (As allways...i'm sooo lazy)
;| but should be selfexplaining.
;|
;| If not study the 'lglcd.pdf'
;| which came with your keyboard.
;|
;| Pics are (c)HeX0R and for my
;| Messanger-Project, so don't
;| use them on your own Project!
;| (Or i will HeX0R you 2 D347H! *g*)
;|
;| SoftButtons (the 4 Small Buttons
;| under the Display) will only be
;| catched, when you switch the
;| Display-Focus to this App
;| (Named 'My Test Application').
;| This is by Logitech-Design.
;|
;| Have Phun!
;| HeX
;| http://h3x0r.ath.cx
;|
;/----------------------------


XIncludeFile "G15_Header.pbi"

Procedure.l lgLcdOnSoftButtonsCB(device.l, dwButtons.l, pContext.l)
	;Callback which is being called, whenever a SoftButton is pressed
	;(AND YOUR APPLICATION HAS THE FOCUS ON THE DISPLAY!)

	If dwButtons & #LGLCDBUTTON_BUTTON0
		SetGadgetState(0, ImageID(16))
	Else
		SetGadgetState(0, 0)
	EndIf

	If dwButtons & #LGLCDBUTTON_BUTTON1
		SetGadgetState(1, ImageID(17))
	Else
		SetGadgetState(1, 0)
	EndIf

	If dwButtons & #LGLCDBUTTON_BUTTON2
		SetGadgetState(2, ImageID(18))
	Else
		SetGadgetState(2, 0)
	EndIf

	If dwButtons & #LGLCDBUTTON_BUTTON3
		SetGadgetState(3, ImageID(19))
	Else
		SetGadgetState(3, 0)
	EndIf

EndProcedure

Procedure Main()
	Protected ctx.lgLcdConnectContext, ctxo.lgLcdOpenContext, *bitmap
	Protected FID.l, A.l, R.l, *Image_Buffer, i.l


	*Image_Buffer = AllocateMemory(16384)
	Dim Pointer.l(15)
	CopyMemory(?MyPackPointers, @Pointer(), 64)
	For i = 0 To 15
		R = UnpackMemory(Pointer(i), *Image_Buffer + A)
		CatchImage(i, *Image_Buffer + A)
		A + R
	Next i

	If lgLcdInit() <> #ERROR_SUCCESS
		MessageRequester("Error!", "Can't initialize G15-Display!")
		End
	EndIf

	ctx\appFriendlyName = @"My Test Application"
	ctx\isPersistent    = 0
	ctx\isAutostartable = 0

	;Check for Callbacks
	CompilerIf Defined(lgLcdOnConfigureCB, #PB_Procedure)
	ctx\onConfigure\configCallback = @lgLcdOnConfigureCB()
	ctx\onConfigure\configContext  = 0
	CompilerEndIf

	CompilerIf Defined(lgLcdOnSoftButtonsCB, #PB_Procedure)
	ctxo\onSoftbuttonsChanged\softbuttonsChangedCallback = @lgLcdOnSoftButtonsCB()
	ctxo\onSoftbuttonsChanged\softbuttonsChangedContext  = 0
	CompilerEndIf

	If lgLcdConnect(@ctx) <> #ERROR_SUCCESS
		MessageRequester("Error!", "Can't Connect to G15-Display")
		lgLcdDeInit()
		End
	EndIf

	*bitmap = AllocateMemory(SizeOf(lgLcdBitmap160x43x1))
	;-Start here

	ctxo\connection = ctx\connection
	ctxo\index      = 0

	If lgLcdOpen(@ctxo) = #ERROR_SUCCESS
		If OpenWindow(0, 522, 122, 320, 90, "G15 Button-Status", #PB_Window_SystemMenu | #PB_Window_TitleBar) And CreateGadgetList(WindowID(0))
			FID = LoadFont(0, "Verdana", 10, #PB_Font_Bold)
			For i = 0 To 3
				If CreateImage(16 + i, 70, 70)
					StartDrawing(ImageOutput(16 + i))
						Box(0, 0, 70, 70, 0)
						Box(2, 2, 66, 66, RGB(255, 0, 0))
						DrawingFont(FID)
						DrawText(5, 25, "Button" + Str(i + 1), RGB(255, 255, 255), RGB(255, 0, 0))
					StopDrawing()
					ImageGadget(i, 5 + i*70 + i*10, 10, 70, 70, 0, #PB_Image_Border)
				EndIf
			Next i
			R = Img2G15(0, *bitmap)
			If R <> 0
				lgLcdUpdateBitmap(ctxo\device, *bitmap, LGLCD_ASYNC_UPDATE(#LGLCD_PRIORITY_NORMAL))
			EndIf
			A = 0
			Repeat
				Select WaitWindowEvent(100)
					Case #PB_Event_CloseWindow
						Break
					Case 0
						A = (A + 1) & $0F
						R = Img2G15(A, *bitmap)
						If R <> 0
							lgLcdUpdateBitmap(ctxo\device, *bitmap, LGLCD_ASYNC_UPDATE(#LGLCD_PRIORITY_NORMAL))
						EndIf
				EndSelect
			ForEver
			lgLcdClose(ctxo\device)
		EndIf
		lgLcdDisconnect(ctx\connection)
		lgLcdDeInit()
		FreeMemory(*bitmap)
		FreeMemory(*Image_Buffer)
	EndIf

EndProcedure
;
;-------------------------
;
Main()
End

DataSection
	MyPack1:
	Data.l $039A434A, $EBF30000, $A9B949E9, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EB9F74FF, $87B04C03, $614CE016, $4EE36DEF, $7F182B7F, $699FB166, $FCB02520
	Data.l $D17BD091, $31E3A261, $264FE28E, $E93A7C8F, $792ED853, $F5F35788, $4CFE015F, $548C9F98
	Data.l $E69A5BC0, $52780A03, $14CE4367, $99E621B6, $F59F041A, $94BD0989, $614598C2, $F4A42098
	Data.l $DBF8BF11, $4F3F1664, $64D28926, $E58AC9D8, $44FC7E87, $4C281E6B, $249A49AC, $F15CE36E
	Data.l $28F5850C, $C09F396C, $D07F4F01, $E5214223, $FC780267, $E5F390A3, $61451FC8, $AB3FBFFB
	Data.l $63952CE2, $BFA45191, $9AF9F052, $BE685517, $E9A79851, $97F3C4A1, $4D399F0C, $FA9EFD3F
	Data.l $9E02FE2B, $846C9B02, $CC8CE68B, $6FE068AD, $0AC341D3, $CDFAB4F8, $FACBD851, $D66C1F0B
	Data.l $94601F6F, $24485E9F, $00001DFC, $00000000, $00000000, $00000000, $00000000, $00000000
	MyPack2:
	Data.l $039A434A, $01430000, $A9B9A87C, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EB9F74FF, $0AC34C03, $F7B0EBF8, $0800D836, $2CCFA4C3, $A40DDC76, $123FE304
	Data.l $4C3A33F8, $34F89614, $78DF67F5, $3FB3A38C, $FA6E2659, $1E4BF614, $FD7C95E2, $133F8057
	Data.l $1523E7E6, $F9A696F0, $D49E0280, $614C90D9, $A99E099F, $9F59E041, $19D26098, $0986F98D
	Data.l $F11FF015, $664D145B, $92644A41, $9D86BF88, $E87EF3FC, $E6B44D27, $9AC458A1, $6FD04FC4
	Data.l $A850C28E, $C396FE49, $0285CF15, $C09FC50B, $D07F4F01, $E1214223, $FC780267, $E5F390A3
	Data.l $614A1FC8, $6761BFFB, $2AFAFE89, $8766D985, $0C2825FD, $CC28013E, $F9A3CD7C, $A69E53D0
	Data.l $5FCF1287, $B7C67C32, $1CFFF328, $4F4D8E02, $705115FD, $D170BE30, $3C93C05C, $8C418D8D
	Data.l $7A1EA1CC, $3D36D3C9, $F06609FC, $4D80FCA5, $45463701, $C2407461, $0000017F, $00000000
	MyPack3:
	Data.l $039A434A, $02E40000, $A9B9D1FC, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EB9F74FF, $0AC34C03, $F7B0EBF8, $0800D836, $073FA4C3, $18D5DC76, $2904A97F
	Data.l $8513206C, $DF148FE5, $1BE40E8B, $7EC2718F, $88797932, $5FF58BD7, $984C2E01, $F118F39F
	Data.l $CD34FE00, $A4F01407, $0A1686CE, $106A4CBB, $2627F4B8, $679D6798, $7A41D67E, $8B7E8509
	Data.l $482C30C2, $D67F23E9, $4C8FC9CC, $7BFD014A, $F2C59864, $8FE23F43, $4F371A02, $26A14D62
	Data.l $570EE023, $37E2433C, $53C05B0A, $D0887E89, $C09D7027, $2A3FF41F, $FC8EBF19, $FFB4C781
	Data.l $A0525F3B, $88C0CF81, $8E0AB3B1, $8AA33783, $51AA57F4, $F8009C04, $46259801, $86C7A3F3
	Data.l $051F0F45, $945BCF86, $3CFFE7F9, $4F4D000A, $005115FD, $D36CA03F, $1B1AC05C, $43990A21
	Data.l $A2B779F9, $0F4D1883, $D43E827F, $E12FB83F, $66C50CC6, $DBFE0FF5, $8489CF8A, $0000AC00
	Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
	MyPack4:
	Data.l $039A434A, $2EF00000, $A9B9523E, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EB9F74FF, $0AC34C03, $F7B0EBF8, $0800D836, $2CCFA4C3, $A40DDC76, $123FE304
	Data.l $4C3A33FA, $53989614, $95FD2F7C, $27E9F14F, $E4B8851F, $D7CE5E21, $33F9057F, $52307E61
	Data.l $9A692F01, $49E0280F, $142D0D9D, $20D49936, $4C4FE970, $CF1BCF30, $4C30ACFC, $4C8F0A60
	Data.l $B327A5E7, $24C8A520, $4D271B47, $58A3F986, $FC49E87E, $B7C34051, $1824AC49, $678A7E48
	Data.l $6146D428, $23E9E1CB, $F027F060, $F41C54CB, $D486D088, $F133F261, $5F3B428F, $C227FC8E
	Data.l $CE2AFFB4, $18D6814A, $014AB3F5, $545080F8, $D54CFE91, $C10FDA38, $287BC287, $90F99A31
	Data.l $A26F1E30, $38D4F0C0, $1CFFFC69, $4F3D0CEA, $FBCF15FD, $D608A060, $0A44C05C, $E134DA0E
	Data.l $82E96C69, $E0983991, $F0F6B29C, $46E47827, $D6581459, $4D80F85F, $2448F3EE, $0000555C
	Data.l $00009000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
	MyPack5:
	Data.l $039A434A, $EF8F0000, $A9B90F0D, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EFD074FF, $BDE94C03, $12BFF608, $C7479FE0, $D3A0B0A5, $9F963F84, $3A676C77
	Data.l $C29D094C, $FEDFF2FE, $BE47F14C, $72F1D8F3, $C02B9853, $73F30F25, $F015FEBE, $80F909D2
	Data.l $D9D42302, $93CFA690, $BC059E09, $6A678C9D, $27D67810, $8D9E9826, $4C307E67, $46FC1890
	Data.l $9059A5E7, $83A357D2, $524C939A, $7ED0E740, $6191C28B, $E23D87A3, $4628CFCF, $609C0701
	Data.l $693573F1, $52FC0281, $E49A8936, $F15C050F, $E601850C, $5F813968, $08C712A6, $08093E84
	Data.l $428F8185, $FC8EE406, $FFB6F131, $7E045F3B, $14CF1420, $50DC4B38, $0A57D40A, $A29F1FE0
	Data.l $3269F48A, $30A2C879, $3C9FCD54, $C9430126, $C230CC14, $9F0CD3BF, $C387DB87, $1AE70A3F
	Data.l $A9E61141, $C05CF88B, $C236ADCF, $E646D853, $ADE03456, $D15B20E8, $28C09FC3, $1224E17F
	Data.l $00002BAE, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
	MyPack6:
	Data.l $039A434A, $73150000, $A9B9D953, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EFD074FF, $BDEC4C03, $EBFBF608, $7614279F, $34E804DC, $F92FCFE1, $87451A67
	Data.l $38C7CA29, $6593EF8A, $85178DF2, $F25CF861, $EBE7AF10, $984802BF, $C0A03F30, $A4360788
	Data.l $82643E69, $9DFD7527, $C053F2E0, $A679BFCF, $7D678106, $FCE98262, $B1F2E678, $130C7FBF
	Data.l $D1BF4030, $7A122979, $734597E8, $BC0A0B32, $7CC3E7F2, $23083264, $A1E923C7, $0FC47E58
	Data.l $C28A8441, $44789AC4, $6A1434D8, $70E53F92, $601133C5, $3813B0A3, $7A0FAA66, $C0A4E844
	Data.l $7F8FE04C, $1CBE3214, $6C2803F9, $13F477FF, $21F870FC, $22DEACE0, $526B32A3, $9552FFEA
	Data.l $53FEF828, $4F9A93C0, $7A6947D3, $25FC3128, $D34EE7C3, $FEA7FF4F, $3F017F8A, $4F089AB7
	Data.l $5B997361, $A2B3D8D1, $F6141883, $7F285B90, $AE12DBE1, $0000C02B, $00002400, $00000000
	MyPack7:
	Data.l $039A434A, $CEFE0000, $A9B9050C, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EFD074FF, $BDEC4C03, $EBFBF608, $7614279F, $34E804DC, $F92FCFE1, $87451A67
	Data.l $38C7CA29, $6593EF8A, $614F8DF2, $C4AFF97E, $5C023797, $7CFC10F2, $FEFCBFE3, $6050C264
	Data.l $D21B0424, $C1321F34, $FA7D3A93, $1E046484, $E6093C05, $7E671A99, $291C8396, $130C8C90
	Data.l $C9228E24, $89482979, $CCD64F2B, $00A32CC9, $2311472B, $323D264F, $4EFC04CC, $DC008052
	Data.l $49ACB143, $812F51FC, $850C49B7, $3968E49A, $12A7F15C, $4FA1E405, $39E480E0, $BC0511E8
	Data.l $7F8FCF3C, $1CBE64D4, $6A3E03F9, $B38A77FF, $490F3D26, $F051ACFD, $DFC824D7, $F3462A8B
	Data.l $4D3CFA69, $BF9F250F, $69CFF864, $D4F3E9FA, $E02EF15F, $E11B56E7, $73236C29, $56F01A2B
	Data.l $E8AD1074, $94604FE1, $0912F0BF, $000015D7, $00000000, $00000000, $00000000, $00000000
	MyPack8:
	Data.l $039A434A, $24F10000, $A9B9DA96, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EFD074FF, $BDEC4C03, $EBFBF608, $7614279F, $34E804DC, $F92FCFE1, $874E1A67
	Data.l $DF14CA29, $1BE4FBA3, $9AE6718F, $612FCB27, $21E4C29E, $7FD7695E, $6132B805, $83E4CE7E
	Data.l $E69A0692, $52780A03, $967D4367, $652E264C, $99E62854, $F59F041A, $24750989, $261899E3
	Data.l $92448510, $529052F3, $99AC824E, $52935993, $9C0AC056, $191E30A3, $D0FC9A66, $C0A5F040
	Data.l $5891B143, $26A1F893, $570E5BF9, $F083433C, $F01C5A2D, $223CA254, $9D0F09F4, $3FC773C0
	Data.l $8E5F192A, $B51F81FC, $59C53BFF, $A4871E93, $F828567E, $EFE4926B, $F9A39545, $A69E7D34
	Data.l $5FCF1287, $34E77C32, $EA79F4FD, $F017F8AF, $F08DAB73, $B9913614, $2B788D15, $F456883A
	Data.l $CA3027F0, $8489F85F, $00000AEB, $00000000, $00000000, $00000000, $00000000, $00000000
	MyPack9:
	Data.l $039A434A, $E9DB0000, $A9B95F83, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EFD074FF, $BDEC4C03, $EBFBF608, $7614279F, $34E804DC, $F92FCFE1, $874E1A67
	Data.l $DF14CA29, $3D8FE7A3, $CB27CF06, $C29E3BE4, $2F10024E, $02BF6011, $3F30F25C, $B380EBE7
	Data.l $14079981, $86CEA918, $4C99CD34, $2944A4F0, $41A92CB8, $989FD2E0, $9E329E60, $3E6959F9
	Data.l $86145E70, $91A04409, $2CC9BCE4, $D470E948, $30A3CD19, $EC321593, $3F969F04, $147F681E
	Data.l $122B28D0, $D428126B, $E1CB7F24, $E895678A, $027D4721, $41FC3C07, $E8F8088F, $FE3C099F
	Data.l $72F9C951, $A8F80FE4, $CE2ADFFD, $243CF49A, $C144B3F5, $7F23935F, $CD18AA2F, $34F3E9A7
	Data.l $FE7F943D, $A73FE192, $53CDA7E9, $80B9C57F, $846C5B9F, $CC8CB0A7, $5BC168AD, $A2B741D1
	Data.l $51803F87, $2448C2FE, $0000575C, $00000000, $00000000, $00000000, $00000000, $00000000
	MyPack10:
	Data.l $039A434A, $498B0000, $A9B9FF96, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EFD074FF, $BDEC4C03, $EBFBF608, $7614279F, $34E804DC, $F92FCFE1, $874C1A67
	Data.l $D1EFCA29, $839EFD63, $F2658A67, $4F61C79D, $E95E9381, $8C954FAC, $39F921E4, $1A4AFF5F
	Data.l $280F84CE, $0D9D0F90, $99309A69, $DE0949E0, $83530403, $313EA0B6, $3C603CC1, $D070B3F3
	Data.l $86140807, $083C1509, $1590BCE0, $52685470, $29325998, $83A6CE05, $EFCB79F0, $F8936193
	Data.l $536F147D, $850C5898, $3968E49A, $1E89F15C, $7027B7EA, $F41F53C0, $4A7ED088, $7F8FC098
	Data.l $1CBE3254, $6A3E03F9, $B38A77FF, $490F3D26, $F051ACFD, $DFC824D7, $F3462A8B, $4D3CFA69
	Data.l $BF9F250F, $69CFF864, $D4F3E9FA, $E02EF15F, $E11B56E7, $73236C29, $56F01A2B, $E8AD1074
	Data.l $94604FE1, $0912F0BF, $000015D7, $00000000, $00000000, $00000000, $00000000, $00000000
	MyPack11:
	Data.l $039A434A, $99270000, $A9B9F8E6, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EFD074FF, $BDEC4C03, $EBFBF608, $7610279F, $F8C304DC, $614C8047, $9874A903
	Data.l $C11EFCA2, $6F2FCDF7, $3CCFF8A6, $93C617F6, $7E88932C, $4B8014FA, $7CE7561E, $AB0057FD
	Data.l $0501E613, $21B34246, $1326F34D, $F03CA93C, $01970099, $A6799EC6, $7D678106, $C0108262
	Data.l $002AE678, $297950AB, $8512130C, $4E66C011, $594A4166, $8E11B231, $61914CC2, $4D0F88A6
	Data.l $3D80EC04, $F893CB14, $516F81A1, $0FE45898, $0CF1041D, $68B79A85, $89535C39, $27D0FA1E
	Data.l $1FC0C070, $FE3288F4, $8F03984A, $BE77547F, $3E3DF91C, $8AACFF6A, $0F2426B3, $F82AFD49
	Data.l $7F23C16B, $CD18C29F, $34F3E9A7, $FE7F943D, $A73FE192, $53CDA7E9, $80B9C57F, $846C5B9F
	Data.l $CC8CB0A7, $5BC168AD, $A2B741D1, $51803F87, $2448C2FE, $0000575C, $00000000, $00000000
	MyPack12:
	Data.l $039A434A, $08BB0000, $A9B9496A, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EFD074FF, $BDEC4C03, $EBFBF608, $7610279F, $F8C304DC, $614C8047, $9874A903
	Data.l $A67FFCA2, $79DF5EF8, $3FAC2FEC, $6E182659, $85E229E0, $80578382, $E7E61E4B, $1FD9FD7C
	Data.l $918111BE, $D348F0DA, $4F04407C, $265C6CEA, $F91EC980, $041AFF83, $0989051E, $99E399E6
	Data.l $3828F59F, $A013004F, $79C09D87, $0E570C29, $482C1414, $57E023E8, $27E8C9C3, $51C9BD47
	Data.l $FE8D4998, $3E11E472, $48CC8647, $F88C08C3, $3F1250E7, $0A284C05, $07436B13, $A1434B05
	Data.l $0E5AF926, $7E893C57, $70272C4A, $F41F53C0, $43D2D088, $C781C0A3, $5F3B6A3F, $1452FC8E
	Data.l $B3F5FFB6, $935FCE2A, $AA2F243C, $E9A7C144, $943D7F23, $E192CD18, $A7E934F3, $C57FFE7F
	Data.l $5B9FA73F, $B0A753CD, $68AD80B9, $41D1846C, $3F87CC8C, $C2FE5BC1, $575CA2B7, $00005180
	Data.l $00002448, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
	MyPack13:
	Data.l $039A434A, $453C0000, $A9B93202, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EFD074FF, $BDE94C03, $12BFF608, $C7479FE0, $D3A0B0A5, $E5143F84, $7F2F68E7
	Data.l $C51CC3A6, $F932E8F7, $9F7F63C6, $10F2CCC2, $BFEB512F, $309D5C02, $5230E73F, $9A693F01
	Data.l $49E0280F, $05090D9D, $E0419930, $60981052, $F99EA99E, $66409F59, $30A53005, $5051904C
	Data.l $20B3E700, $FFDFAFA5, $C0802709, $8516F91F, $0146C499, $C723E021, $1F96C323, $01308A4A
	Data.l $91F82873, $98518C37, $0C689358, $28676834, $CB6164D4, $94448AE1, $E04F46DF, $E83FA999
	Data.l $7E03A111, $3FC4811B, $97CE726A, $47C76D23, $743FFFED, $243CA4D6, $C14413F5, $3550935F
	Data.l $7CC1AA2F, $3D34C26A, $92FE4C94, $E9A7F3E1, $7F537FA7, $9F803FC5, $A784CD5B, $ADCCB9B0
	Data.l $D15B6C68, $87A28C41, $FE51C13F, $5C24B7C2, $00008057, $00004800, $00000000, $00000000
	MyPack14:
	Data.l $039A434A, $C45D0000, $A9B9734E, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EFD074FF, $BDE94C03, $12BFF608, $C7479FE0, $D3A0B0A5, $E5143F84, $7F2F68E7
	Data.l $C533C3A6, $63CEE8F7, $CCC2FB7F, $1DE2F932, $80579F05, $E7E61E4B, $92F0FD7C, $0280133F
	Data.l $90D91523, $0993F9A6, $51B7D49E, $83530050, $313EA5C0, $3C603CC1, $0120B3F3, $4BCE0ACF
	Data.l $41579861, $416600AD, $0E8FC146, $99854E6A, $C9F780AC, $1CFC1730, $CFC0E58A, $6261128F
	Data.l $1038524D, $7F24453E, $678AC052, $6144D428, $C9C3E1CB, $E038F040, $447AD2A9, $30C813E8
	Data.l $8D1F0E75, $FE47540C, $FFDBE3C0, $31F32F9D, $38B40A01, $0A53051B, $1FD4CFD4, $F43FC005
	Data.l $518024D7, $DAA90558, $C6026C14, $5325801B, $F380DF30, $147F0F4E, $FA9ABE18, $FC579FE9
	Data.l $D5B95A73, $9B0AF53C, $C68AF80B, $C41D7846, $9487DCC8, $DF0B159A, $015DB0A6, $2000F946
	Data.l $00007091, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
	MyPack15:
	Data.l $039A434A, $4F850000, $A9B9BB0E, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EB9F74FF, $87B04C03, $614CE016, $4EE36DEF, $C2692B7F, $CFE0A39F, $5851D034
	Data.l $BDF148FE, $263C30E8, $E4594C13, $9FA56F91, $92E08536, $5F397887, $E93815FF, $8140F984
	Data.l $486C0A91, $13267CD3, $A36FE8E4, $06A600A0, $627D4B81, $78C07982, $209867E6, $CE001585
	Data.l $FA8F614B, $82CCA079, $1C0A828C, $7CC39CD4, $F43F5264, $F7E02693, $C9AC2C50, $C52F144A
	Data.l $850C49B7, $3968E49A, $9225F15C, $C09FB604, $D07F4F01, $FA034223, $2A3F0237, $FC8EC119
	Data.l $FFB6C781, $60E55F3B, $B2C86320, $0FE026B3, $F48ACC74, $750B0A57, $DAA9A2D0, $4B345014
	Data.l $9923814D, $7C9FF982, $97F388E7, $45039F0C, $E2BFFD3F, $A09D1B9F, $02E6A9E7, $6C6B0286
	Data.l $73238B84, $14DB0DAB, $87AC1076, $F0BFC13F, $15D790AD, $00009460, $00000912, $00000000
	MyPack16:
	Data.l $039A434A, $E3A40000, $A9B95170, $146920D0, $CA12A819, $2B4AF008, $200DD025, $09800201
	Data.l $A0025C62, $EB9F74FF, $0AC34C03, $F7B0EBF8, $0800D836, $2CCFA4C3, $A40DDC76, $123FE304
	Data.l $4C3A33F8, $533F9614, $3CEF2F7C, $4C66B7F6, $7E9591E6, $4B8014DA, $7CE7E21E, $A6E057FD
	Data.l $0501E613, $21B32A46, $1326F34D, $A36FA93C, $06A600A0, $627D4B81, $78C07982, $209867E6
	Data.l $CE001585, $2F4A614B, $4E6AA0A3, $80AC4166, $17300E8F, $FA7E9985, $8A1EC8F7, $C49A87E5
	Data.l $9B15052F, $A19EC4C7, $2D169350, $9D4F2B87, $9F42FC02, $7F0201C0, $64E823D0, $07F267C0
	Data.l $EFFEFF1E, $E7C1397C, $18B3D30E, $16C04ACE, $4AFEF519, $5B0363C1, $1AA99154, $02A5CF45
	Data.l $0532801E, $5BEE65F3, $0C9750F4, $3F45879F, $9FE2F3FD, $E9B486C7, $79F8BFA9, $0A781C04
	Data.l $9B630B9B, $462046C6, $E09FD2E6, $6EFAE8AD, $F946C3D3, $70915F0B, $0000015D, $00002000
	MyPackPointers:
	Data.l ?MyPack1, ?MyPack2, ?MyPack3, ?MyPack4, ?MyPack5, ?MyPack6, ?MyPack7, ?MyPack8
	Data.l ?MyPack9, ?MyPack10, ?MyPack11, ?MyPack12, ?MyPack13, ?MyPack14, ?MyPack15, ?MyPack16
EndDataSection

Verfasst: 07.01.2007 20:11
von Rubiko
Vielen Dank, werd mir das in den nächsten paar Tagen mal angucken... hab die Tastatur ;)

Nur ein etwas komisches verhalten von PB:
Ich kopier die lgLcd.lib in compilers\ , kompiliere und alles geht.. dann kompilier ich nochma und er findet die lib nochma und ich muss sie nochmal einfügen

Verfasst: 07.01.2007 20:17
von edel
Sicher das sie nach \compilers\ muss und nicht nach
\PureLibraries\Windows\Libraries (da wo alle anderen Bibliotheken sind) ?

Ich finde die Tastatur sehr huebsch, was mich jetzt noch interessiert ist
ob der Tastenanschlag eher hart oder weich ist.

Verfasst: 07.01.2007 20:26
von Rubiko
edel hat geschrieben:Sicher das sie nach \compilers\ muss und nicht nach
\PureLibraries\Windows\Libraries (da wo alle anderen Bibliotheken sind) ?
Hmm... danke
edel hat geschrieben:Ich finde die Tastatur sehr huebsch, was mich jetzt noch interessiert ist ob der Tastenanschlag eher hart oder weich ist.
So mittel... also man kann auch ziemlich schnell tippen ohne, dass man was hört, aber würde sagen "eher weich"

Verfasst: 08.01.2007 01:57
von HeX0R
Sie is den Preis eigentlich nicht ganz Wert!
Aber vom Tippgefühl her ist sie (komischerweise als Spieler-Tasta) ziemlich gut.

Ich hab vor allem eine Tasta gesucht, die mir Nachts die Tasten beleuchtet und auch noch nen paar Gimmicks hat...

Verfasst: 08.01.2007 19:20
von Marvin
> Sie is den Preis eigentlich nicht ganz Wert!

Aha, jetz wüsst' ich nur noch gern, was für'n Preis sie "eigentlich nicht ganz Wert" is... :twisted: :mrgreen:

Verfasst: 08.01.2007 19:35
von edel

Re: Logitech G15-Display

Verfasst: 21.01.2007 11:25
von SoS
HeX0R hat geschrieben: Klar wären Monochrom-Pics (weil LCD-Display) perfekt gewesen, aber ich war zu faul die Bits in Bytes umzuwursten.
So schwer ist das eigendlich nicht.
Man muss nur eine Zeile einfügen und schon wird das Bild,wie in folgendem Beispiel,in ein 8 Bit Bitmap umgewandelt. :D

in der G15_Header.pbi folgende Änderung vornehmen:

Code: Alles auswählen

  w = ImageWidth(Image) 
  h = ImageHeight(Image) 
  d = ImageDepth(Image) 
  ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  If d = 1: d=8 : EndIf
  ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Ist zwar nicht getestet aber 8Bit -> 1Bit klappt in meinem Imageconverter wunderbar.

http://freenet-homepage.de/n83u13/Image ... onvert.zip

Verfasst: 09.02.2007 04:21
von Hoto
Ich möchte mich direkt mal bedanken. Hab die Tastatur seit 2 Tagen und kam eben auf die Frage "müsste doch auch per PB programmierbar sein?" und direkt hier mal nach nem Tut gesucht, obwohl ich eher damit gerechnet hab nichts zu finden. Um so mehr freue ich mich jetzt doch ein Tut gefunden zu haben. 1000x thx, allein hätte ich die dll Einbindung nie hingekriegt. Jetzt muss mir nur noch ein Projekt einfallen. ;)

Kurze Frage: wird ein Prog auf die Art direkt in den Logitech LCD Manager eingetragen oder muss dafür noch mehr getan werden?

Verfasst: 09.02.2007 09:07
von HeX0R
Direkt eingetragen wird sie immer, man kann allerdings noch bestimmen, ob sie automatisch gestartet werden soll (ctx\isAutostartable).

Dann gibts auch noch ctx\isPersistent (=hartnäckig)... der Zweck dieses Flags ist mir gerade entfallen, sollte jedoch in der SDK-Pdf stehen.