Carte du clavier Azerty #PB_Key_XXXXX
Carte du clavier Azerty #PB_Key_XXXXX
J'ai toujours des problèmes pour trouver mes touches à cause de la référence au clavier Qwerty et à l'anglicisme.
Peut être que c'est la même chose pour vous donc cette petite carte du clavier pourrait vous être utile...
La touche <> peut être testé avec le code 86, je n'ai pas trouvé le #PB_key_ correspondant. Idem pour les touches windows et Menu (respectivement 219 et 221).
Les touches M et ,? sont buguées pour keyboardpushed() mais pas pour keyboardreleased().
Djes signale que ,? peut être testé avec la valeur 1216.
Peut être que c'est la même chose pour vous donc cette petite carte du clavier pourrait vous être utile...
La touche <> peut être testé avec le code 86, je n'ai pas trouvé le #PB_key_ correspondant. Idem pour les touches windows et Menu (respectivement 219 et 221).
Les touches M et ,? sont buguées pour keyboardpushed() mais pas pour keyboardreleased().
Djes signale que ,? peut être testé avec la valeur 1216.
Dernière modification par Fig le lun. 21/août/2017 16:05, modifié 5 fois.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: Carte du clavier Azerty KeyboardPushed()
Tu veux dire que ca t'arrive quand tu tapes du texte dans l'IDE ?
Moi, ca ne m'est jamais arrivé
Moi, ca ne m'est jamais arrivé
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Carte du clavier Azerty KeyboardPushed()
Fig est dans le contexte application 2DSPH a écrit :Tu veux dire que ca t'arrive quand tu tapes du texte dans l'IDE ?
Voir sujet http://www.purebasic.fr/french/viewtopi ... 29#p194629
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Carte du clavier Azerty KeyboardPushed()
Après une bonne dizaine de secondes à y réfléchir, j'ai préféré penser que SPH plaisantait...
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: Carte du clavier Azerty #PB_Key_XXXXX
Je ne plaisantais pas
Mais, apres reflexion, je me rappelle un probleme de qwerty dans mon jeu de scrabble...
Je ferais des tests et je posterais ici. Merci
Mais, apres reflexion, je me rappelle un probleme de qwerty dans mon jeu de scrabble...
Je ferais des tests et je posterais ici. Merci
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Carte du clavier Azerty #PB_Key_XXXXX
KeyboardInkey() est peut être la solution à ce souci.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Carte du clavier Azerty #PB_Key_XXXXX
Je n'arrive pas à retrouver le code ASCII de l'espèce de mine, symbole qu'on n'utilise jamais, qui se génère en tapant Alt+£ (ou Alt+$ c'est pareil).
Re: Carte du clavier Azerty #PB_Key_XXXXX
chr(164) ? ¤
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: Carte du clavier Azerty #PB_Key_XXXXX
Effectivement, après quelques réglages, je n'ai plus le 'ñ' de "El Niño". (C'est un ordinateur espagnol)
Normalement, c'est là qu'aurait dû atterrir le symbole de la monnaie européenne, mais le balayage clavier suit une histoire technique particulière.
Cette fameuse touche qui contient les monnaies anglaise et américaine suit une logique spécifique quand elle est alliée à une touche Alt. La même logique que la touche "2" (symbole "au carré"), la touche "BackSpace", la touche "Entrée" et les 3 touches "*", "-" et "+" du pavé numérique : son code clavier prend une valeur générique non nulle (240) et le code de touche n'est extractible qu'à partir du code géographique, tandis que la plupart des touches qui permettent de s'allier à une touche "Alt" renvoient une valeur nulle en tant que code clavier. Alors, pourquoi? J'en sais rien...
Tu n'as pas eu de soucis avec la touche "/" du pavé numérique qui prend le même code géographique que la touche PadEnter?
Je viens de bien me prendre le chou avec à passer en AZERTY...
Normalement, c'est là qu'aurait dû atterrir le symbole de la monnaie européenne, mais le balayage clavier suit une histoire technique particulière.
Cette fameuse touche qui contient les monnaies anglaise et américaine suit une logique spécifique quand elle est alliée à une touche Alt. La même logique que la touche "2" (symbole "au carré"), la touche "BackSpace", la touche "Entrée" et les 3 touches "*", "-" et "+" du pavé numérique : son code clavier prend une valeur générique non nulle (240) et le code de touche n'est extractible qu'à partir du code géographique, tandis que la plupart des touches qui permettent de s'allier à une touche "Alt" renvoient une valeur nulle en tant que code clavier. Alors, pourquoi? J'en sais rien...
Tu n'as pas eu de soucis avec la touche "/" du pavé numérique qui prend le même code géographique que la touche PadEnter?
Je viens de bien me prendre le chou avec à passer en AZERTY...
Re: Carte du clavier Azerty #PB_Key_XXXXX
On ne les génère pas avec ALT mais avec ALT-GR (à droite de la barre espace), ce qui équivaut à un CTRL+ALT. Pour le ñ, il suffit de faire ALT-GR+2, et d'appuyer ensuite sur le n.
Re: Carte du clavier Azerty #PB_Key_XXXXX
l'une des meilleurs façons de recuperer les touches de notre calvier
c'est d'utiliser les ScanCodes + l'etat des touches Speciales (Alt,Ctrl,Shift )
voici un code de BasicallyPure qui fonctionne bien :
c'est d'utiliser les ScanCodes + l'etat des touches Speciales (Alt,Ctrl,Shift )
voici un code de BasicallyPure qui fonctionne bien :
Code : Tout sélectionner
; Exemple hameçonnage clavier
; écran et ExamineKeyboard () n'est pas nécessaire
; un événement personnalisé est généré lorsqu'une touche est enfoncée
; code de touche virtuelle peut être obtenue avec états Maj, Ctrl et Alt
; par BasicallyPure
; date: 10/13/2014
; OS: windows
; compiler: PB 5.30
; forum topic: http://www.purebasic.fr/english/viewtopic.php?f=12&t=60775
EnableExplicit
Define vKeyCode, scanCode, shiftState, altKeyState, ctrlKeyState, Quit = #False
Define hHookProc ; <--- doit avoir cette procédure pour hameçonnage
#KeyBoard_Event = #PB_Event_FirstCustomValue ; l'hameçonnage génère cet événement sur toute touche pressée
#WinMain = 1
; voici la procédure de rappel de l'hameçonnage
Procedure MyKeyboardHook(nCode, wParam, lParam)
; détache un événement personnalisé (#KeyBoard_Event) quand une touche du clavier est pressée
; informations sur la touche pressée peut être obtenue avec ce qui suit:
; EventData() retourne WPARAM (le code de touche virtuelle).
; EventType() retourne #True si la touche Maj est en pressée lorsque la touche est enfoncée.
; EventGadget() retourne lParam (nombre de répétitions (bits 0-15), le code de balayage (bits 16-23),
; drapeau touche prolongé (24 bits), bits réservés (25-28), le code de contexte (bit 29),
; drapeau touche d'état précédent (bit 30), et le drapeau état-transition (bit 31).
; voir windows 'KeyboardProc callback function' pour plud de détails.
; http://msdn.microsoft.com/en-us/library/windows/desktop/ms644984(v=vs.85).aspx
Shared hHookProc
Static shift, ctrl, alt
Protected vShift, vlParam
If Not (nCode < 0)
If Not lParam & $80000000 ; key down
If wParam = #VK_CONTROL : ctrl + 1 : EndIf
If wParam = #VK_SHIFT : shift + 1 : EndIf
If wParam = #VK_MENU : alt + 1 : EndIf
Select wParam
Case #VK_A To #VK_Z
vShift = Bool(shift > 0) ! (GetKeyState_(#VK_CAPITAL) & 1)
Default
vShift = Bool(shift > 0)
EndSelect
; utilise le bit 25 de vlParam pour l'état touche "CTRL"
vlParam = (lParam & $FDFFFFFF) | (Bool(ctrl > 0) << 25)
Select wParam
Case #VK_SHIFT
If shift < 2 ; éviter la répétition automatique avec shift
PostEvent(#KeyBoard_Event, #WinMain, vlParam, vShift, wParam)
EndIf
Case #VK_CONTROL
If ctrl < 2 ; éviter la répétition automatique avec ctrl
PostEvent(#KeyBoard_Event, #WinMain, vlParam, vShift, wParam)
EndIf
Case #VK_MENU
If alt < 2 ; éviter la répétition automatique avec alt
PostEvent(#KeyBoard_Event, #WinMain, vlParam, vShift, wParam)
EndIf
Default
PostEvent(#KeyBoard_Event, #WinMain, vlParam, vShift, wParam)
EndSelect
Else ; touche Haut
Select wParam
Case #VK_SHIFT : shift = 0
Case #VK_CONTROL : ctrl = 0
Case #VK_MENU : alt = 0
EndSelect
EndIf
EndIf
ProcedureReturn CallNextHookEx_(hHookProc, nCode, wParam, lParam)
EndProcedure
If OpenWindow(#WinMain, 0, 0, 400, 200, "hameçonnage clavier", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
; créer l'hameçonnage
hHookProc = SetWindowsHookEx_(#WH_KEYBOARD, @MyKeyboardHook(), #Null, GetCurrentThreadId_())
StringGadget(0, 10, 10, 100, 25, "")
StringGadget(1, 10, 45, 100, 25, "")
SpinGadget(2, 10, 90, 100, 25, 0, 100, #PB_Spin_Numeric)
ButtonGadget(3, 150, 10, 50, 25, "vider")
EditorGadget(4, 210, 10, 150, 150)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = #True
Case #PB_Event_Gadget
Select EventGadget()
Case 0 :
Case 1 :
Case 2 :
Case 3 : SetGadgetText(4, "") : SetActiveGadget(4)
Case 4 :
EndSelect
Case #KeyBoard_Event ; à cet événement personnalisé
; EventData() donne le code de touche virtuelle
; EventGadget() Bits 16-23 donne le code de balayage
; EventType() donne l'état de la touche shift
; EventGadget() bit 29 donne l'état de la touche alt
; EventGadget() bit 25 donne l'état de la touche ctrl
vKeyCode = EventData() ; obtenir code vKey
scanCode = (EventGadget() & $FF0000) >> 16 ; obtenir code de balayage
shiftState = EventType() ; obtenir état shift
altKeyState = (EventGadget() & $20000000) >> 29 ; obtenir état alt
ctrlKeyState = (EventGadget() & $2000000) >> 25 ; obtenir état ctrl
Debug "virtual key code = " + vKeyCode +
" | scan code = " + scanCode +
" | shift = " + shiftState +
" | Alt = " + altKeyState +
" | ctrl = " + ctrlKeyState
; effectuer une action si touche "Entrée" a été enfoncée alors
; que le gadget de votre choix avait le focus
If vKeyCode = #VK_RETURN
Select GetActiveGadget()
Case 0 : SetActiveGadget(1)
Case 1 : SetActiveGadget(0)
Case 2 : SetGadgetText(2, Str(GetGadgetState(2))) ; spin gadget
EndSelect
EndIf
EndSelect
Until Quit = #True
; supprimer l'hameçonnage
UnhookWindowsHookEx_(hHookProc)
EndIf
; Epb
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: Carte du clavier Azerty #PB_Key_XXXXX
Très bon code, merci Zorro