[Résolu] Clavier sans fil

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

[Résolu] Clavier sans fil

Message par Micoute »

Bonjour et bonsoir à tous, comme écrit dans le titre, je possède un clavier sans fil, ce qui veut dire qu'il ne possède pas de led pour indiquer si les majuscules ou le pavé numérique sont verrouillés et je souhaiterais créer un petit logiciel qui fonctionnerait dans le systray pour afficher les touches verrouillées, mais je vois pas comment je pourrais m'y prendre tellement je suis un éternel débutant !

S'il y a des volontaires, je les remercie énormément par anticipation.
Dernière modification par Micoute le mar. 28/janv./2014 8:59, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Clavier sans fil

Message par Ar-S »

Salut,

Surement plusieurs façons de faire, j'opte pour la facilité avec l'API GetKeyState_
ce code change le titre de la fenêtre...
A toi de faire un affichage visible (tes leds)..
Perso j'opterai pour changer une icone dans le systray(), ce serait plus propre et n'encombrerai pas le bureau. (et ça demande que 2 icones (une verte une grise par exemple) que tu peux créer avant même en PB (2 cercles !).

Code : Tout sélectionner

;Ar-S - PB 5.21 LTS x86 
Enumeration 
#Win
#Tim
EndEnumeration
Global.b Quite
Quite = 0
Global State

Procedure.s isMAJ()
	If GetKeyState_(#VK_CAPITAL) = 0
	  State$ = "Verr Majuscule OFF!"
	Else
	  State$ = "Verr Majuscule ON!"
	EndIf	
	SetWindowTitle(#Win, State$) 
	ProcedureReturn State$
EndProcedure

OpenWindow(0,#PB_Ignore, #PB_Ignore,350,0,"Verr Maj "+ State$,#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
AddWindowTimer(#Win, #Tim, 500)

Repeat
 Event = WaitWindowEvent()
EvT = EventTimer()

Select Evt
	Case #Tim
		Debug IsMaj()
		
EndSelect		

Select Event
	Case #PB_Event_CloseWindow
        Select EventWindow()
          Case #Win
            Quite = 1
            Break
        EndSelect
    EndSelect
		
Until Quite = 1 Or WaitWindowEvent() = #PB_Event_CloseWindow



~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Clavier sans fil

Message par Backup »

Voici la version en Systray icone :)

Merci a Ar-s j'ai toujours eu besoin de ça, mais j'avais la bulle de le faire :mrgreen:
j'ai donc ajouté 2 icones en Systray

l'un avec la lettre [8] ... pour le Num-lock (que j'ai ajouté ) Rouge désactivée /// Vert Activé
l'autre avec la lettre [C] ... pour le Capslock Rouge désactivée /// Vert Activé

Code : Tout sélectionner

;Ar-S - PB 5.21 LTS x86
; Version modifié par dobro 
;-enumeration
Enumeration
	#Win
	#Tim
EndEnumeration
Enumeration
	#im_capslock_on
	#im_capslock_off
	#im_num_on
	#im_num_off
Endenumeration
Enumeration
	#SysTrayIcone_capslock
	#SysTrayIcone_numlock
EndEnumeration
#Fonte=1
;----------------------------------------------------------------------------------------------
;-init
LoadFont(#fonte,"Arial",20,#PB_Font_Bold)
Global.b Quite
Quite = 0
Global State$,State2$
;----------------------------------------------------------------------------------------------
;-declaration
Declare  Boucle()
Declare  Create_icone()
Declare  Openwin()
Declare  test_key()
;----------------------------------------------------------------------------------------------
;- Prg 
openwin()
Boucle()
End
;----------------------------------------------------------------------------------------------

;-boucle
Procedure Boucle()
	Repeat
		Event = WaitWindowEvent(2)
		EvT = EventTimer()
		Select Evt
			Case #Tim
			test_key()
		EndSelect      
		Select Event
			Case #WM_KEYDOWN
			test_key()
			Case #Win
			test_key()
			Case #PB_Event_CloseWindow
			Select EventWindow()
				Case #Win
				Quite = 1
				Break
			EndSelect
		EndSelect
	Until Quite = 1 Or WaitWindowEvent() = #PB_Event_CloseWindow
	ProcedureReturn dummy
Endprocedure
;----------------------------------------------------------------------------------------------
;- create_icone
Procedure Create_icone()
	CreateImage(#im_capslock_on,32,32)
	StartDrawing(ImageOutput(#im_capslock_on))
		DrawingMode(#PB_2DDrawing_Transparent)
		Box(0,0,32,32,RGB(0,255,0))
		DrawingFont(FontID(#fonte))
		DrawText(10,4,"C",$0)
		DrawText(8,2,"C",$FFFFFF)
	StopDrawing()
	CreateImage(#im_capslock_off,32,32)
	StartDrawing(ImageOutput(#im_capslock_off))
		DrawingMode(#PB_2DDrawing_Transparent)
		Box(0,0,32,32,RGB(255,0,0))
		DrawingFont(FontID(#fonte))
		DrawText(10,2,"c",$0)
		DrawText(8,0,"c",$FFFFFF)
	StopDrawing()
	CreateImage(#im_num_on,32,32)
	StartDrawing(ImageOutput(#im_num_on))
		DrawingMode(#PB_2DDrawing_Transparent)
		Box(0,0,32,32,RGB(0,255,0))
		DrawingFont(FontID(#fonte))
		DrawText(10,4,"8",$0)
		DrawText(8,2,"8",$FFFFFF)
	StopDrawing()
	CreateImage(#im_num_off,32,32)
	StartDrawing(ImageOutput(#im_num_off))
		DrawingMode(#PB_2DDrawing_Transparent)
		Box(0,0,32,32,RGB(255,0,0))
		DrawingFont(FontID(#fonte))
		DrawText(10,4,"8",$0)
		DrawText(8,2,"8",$FFFFFF)
	StopDrawing()
EndProcedure
;----------------------------------------------------------------------------------------------
;-openwin
Procedure Openwin()
	if OpenWindow(#win,#PB_Ignore, #PB_Ignore,350,0,"Verr Maj "+ State$,#PB_Window_Invisible)
		AddWindowTimer(#Win, #Tim, 500)
		AddSysTrayIcon(#SysTrayIcone_capslock, windowID(#win), ImageID(#im_capslock_off))
		AddSysTrayIcon(#SysTrayIcone_numlock, windowID(#win), ImageID(#im_num_off))
	Endif
EndProcedure
;----------------------------------------------------------------------------------------------
;-test_key
Procedure test_key()
	If GetKeyState_(#VK_CAPITAL) = 0
		ChangeSysTrayIcon(#SysTrayIcone_capslock, ImageID(#im_capslock_off))
		Else
		ChangeSysTrayIcon(#SysTrayIcone_capslock,ImageID(#im_capslock_on))
	EndIf   
	If GetKeyState_(#VK_NUMLOCK) = 0
		ChangeSysTrayIcon(#SysTrayIcone_numlock,  ImageID(#im_num_off))
		Else
		ChangeSysTrayIcon(#SysTrayIcone_numlock,  ImageID(#im_num_on))
	EndIf   
Endprocedure
;----------------------------------------------------------------------------------------------
; EPB
Dernière modification par Backup le mer. 29/janv./2014 15:12, modifié 2 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Clavier sans fil

Message par Ar-S »

Ce sont les icones que j'avais la flemme de faire mais comme tu as mâché le travail ^^
Voilà une petite retouche des icones :

Code : Tout sélectionner


CreateImage(#im_capslock_on,32,32)
StartDrawing(ImageOutput(#im_capslock_on))
		DrawingMode(#PB_2DDrawing_Transparent)
		Box(0,0,32,32,RGB(0,255,0))
		DrawingFont(FontID(#fonte))
		DrawText(10,4,"C",$0)
		DrawText(8,2,"C",$FFFFFF)
StopDrawing()

CreateImage(#im_capslock_off,32,32)
StartDrawing(ImageOutput(#im_capslock_off))
		DrawingMode(#PB_2DDrawing_Transparent)
		Box(0,0,32,32,RGB(255,0,0))
		DrawingFont(FontID(#fonte))
		DrawText(10,2,"c",$0)
		DrawText(8,0,"c",$FFFFFF)
		
StopDrawing()

CreateImage(#im_num_on,32,32)
StartDrawing(ImageOutput(#im_num_on))
		DrawingMode(#PB_2DDrawing_Transparent)
		Box(0,0,32,32,RGB(0,255,0))
		DrawingFont(FontID(#fonte))
		DrawText(10,4,"8",$0)
		DrawText(8,2,"8",$FFFFFF)
StopDrawing()

CreateImage(#im_num_off,32,32)
StartDrawing(ImageOutput(#im_num_off))
		DrawingMode(#PB_2DDrawing_Transparent)
		Box(0,0,32,32,RGB(255,0,0))
		DrawingFont(FontID(#fonte))
		DrawText(10,4,"8",$0)
		DrawText(8,2,"8",$FFFFFF)
StopDrawing()
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: [Résolu] Clavier sans fil

Message par Micoute »

Merci énormément à vous deux et c'est bien mérité, car c'est du bon travail et ça fonctionne extraordinairement bien, c'est surtout très utile, j'ai donc fait un petit mélange de votre travail respectif, la partie systray de Dobro et la partie icônes de Ar-s.

J'adore tous les membres de ce forum et je voudrais en profiter pour le dire pour que chacun le sache.

Je vous remercie encore et encore avec sincérité pour ce partage gracieux.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [Résolu] Clavier sans fil

Message par Backup »

Ar-s et moi, on a l'habitude de faire des prg ensemble , notre collaboration a souvent donné des petit prg
bien cool .. hein Ar-s ? :)

ps: j'ai inclue tes icones dans mon listing ...
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [Résolu] Clavier sans fil

Message par Ar-S »

Oui coté code on a souvent les neurones compatibles :mrgreen: et coté syntaxe, j'ai tout de même appris à coder en PB grâces aux gens et codes de ce forum, et comme Dobro en a proposé une chier, forcement ça m'a orienté.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: [Résolu] Clavier sans fil

Message par Micoute »

Nous avons donc le même mentor car j'ai appris à programmer en PureBasic grâce aux codes que Dobro étalait généreusement sur le forum et je sais que je lui doit beaucoup ainsi qu'à bien d'autres qui sont hélas partis et d'autres qui sont restés et je remercie la collégialité de ce forum, même si de temps en temps il y a des petites divergences d'opinion et c'est normal, car on est tous différents, mais c'est surtout l'entraide et l’intérêt commun qui domine sur ce forum.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre