bug clavier ?
Re: bug clavier ?
Version 5.45LTS et nous sommes en 2017, le bug de la touche M en français existe toujours et je viens de me le prendre dans la tête.
C'est franchement décou-rageant.
Je vais pas vous mentir, ça me fout vraiment les boules.... Je dois tout refaire en Querty et émuler le Fr ? Pffff
Fred... Allez quoi...
edit: Une solution possible par Falsam
https://www.purebasic.fr/french/viewtop ... hilit=chat
C'est franchement décou-rageant.
Je vais pas vous mentir, ça me fout vraiment les boules.... Je dois tout refaire en Querty et émuler le Fr ? Pffff
Fred... Allez quoi...
edit: Une solution possible par Falsam
https://www.purebasic.fr/french/viewtop ... hilit=chat
Dernière modification par Fig le dim. 31/mars/2019 9:13, modifié 1 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
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: bug clavier ?
Il me semble qu'il a fait depuis ..... longtemps:Fig a écrit :Fred... Allez quoi...
KeyboardMode(#PB_Keyboard_International)
Code : Tout sélectionner
InitSprite()
InitKeyboard()
InitMouse()
OpenWindow(0, 0, 0, 0, 0, "FullScreen", #PB_Window_BorderLess | #PB_Window_Maximize)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0))
KeyboardMode(#PB_Keyboard_International)
Repeat
Repeat : Until WindowEvent() = 0
ClearScreen(RGB(75, 0, 130))
ExamineKeyboard()
If KeyboardReleased(#PB_Key_M)
Debug "Touche M"
EndIf
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)
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: bug clavier ?
Toujours buggé, désolé...
mM correspond à 2 codes... et ",?" aucun.
mM correspond à 2 codes... et ",?" aucun.
Code : Tout sélectionner
;- *** ENUMERATION ***
;- *** VARIABLES AND CONSTANTS ***
#MAIN_GAMEWINDOW_WIDTH=1024
#MAIN_GAMEWINDOW_HEIGHT=768
;- *** PROCEDURES ***
Procedure GetKeyboard()
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Escape)
End
EndIf
EndProcedure
Procedure GetKeyboardScanCode()
Protected i.l
For i=0 To 255
ExamineKeyboard()
If KeyboardPushed(i)
Debug i
EndIf
Next
EndProcedure
;- *** INIT PROCEDURE ***
InitSprite()
InitKeyboard()
InitMouse()
OpenWindow(0,0,0,#MAIN_GAMEWINDOW_WIDTH,#MAIN_GAMEWINDOW_HEIGHT,"test Keyboard",#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget)
OpenWindowedScreen(WindowID(0),0,0,#MAIN_GAMEWINDOW_WIDTH,#MAIN_GAMEWINDOW_HEIGHT,1,0,0)
KeyboardMode(#PB_Keyboard_International)
;- *** MAIN LOOP ***
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
GetKeyboardScanCode()
FlipBuffers()
ClearScreen($000000)
GetKeyboard()
ForEver
Dernière modification par Fig le sam. 19/août/2017 19:52, modifié 1 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
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: bug clavier ?
Avec KeyboardPushed() effectivement mais pas avec KeyboardReleased()Toujours buggé, désolé...
J'ai oublié de tester avec KeyboardPushed() !! C'est ballot ce bug !!
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: bug clavier ?
Essais de tester la touche ",?" Elle n'existe pas car elle a été mappé avec le M.
La touche M correspond au code de la touche M et de la touche ,?
Donc quand tu teste juste le M forcément ça marche...
La touche M correspond au code de la touche M et de la touche ,?
Donc quand tu teste juste le M forcément ça marche...
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
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: bug clavier ?
D’après ce que j'ai pu lire sur le forum anglophone, tu veux te lancer dans ton propre GUI 2D.
A mon avis les fonctions KeyboardPushed() et KeyboardReleased() ne sont l'idéales pour la saisie d'un string.
Ces deux fonctionnalités sont parfaites pour des actions. Exemple : Esc pour sortir d'un jeu.
Tu peux aussi te servir de KeyboardReleased(#PB_Key_Return) pour par exemple valider une zone de saisie.
La zone de saisie je préconiserais plutot le fonction KeyboardInkey().
A mon avis les fonctions KeyboardPushed() et KeyboardReleased() ne sont l'idéales pour la saisie d'un string.
Ces deux fonctionnalités sont parfaites pour des actions. Exemple : Esc pour sortir d'un jeu.
Tu peux aussi te servir de KeyboardReleased(#PB_Key_Return) pour par exemple valider une zone de saisie.
La zone de saisie je préconiserais plutot le fonction KeyboardInkey().
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: bug clavier ?
KeyboardInkey() ne permet pas d'obtenir le comportement qu'on a quand on tape naturellement sous windows. (il enregistre les released des touches, donc on ne peut l'utiliser pour obtenir les répétitions quand on laisse une touche appuyée par exemple. Ca se ressent aussi quand on utilise shift+un symbol. Exemple typique le '?' qui ne fonctionne pas à chaque fois)
Ce programme fonctionne par contre parfaitement (même si il manque encore les accents qui complètent les lettres... Je vais compléter) et permet d'émuler toute sorte de claviers.
Je vais m'en faire une petite Dll.
Après si tu as une proposition plus simple avec keyboarInkey() et équivalente en confort d'utilisation, je suis bien sûr, preneur.
Ce programme fonctionne par contre parfaitement (même si il manque encore les accents qui complètent les lettres... Je vais compléter) et permet d'émuler toute sorte de claviers.
Je vais m'en faire une petite Dll.
Après si tu as une proposition plus simple avec keyboarInkey() et équivalente en confort d'utilisation, je suis bien sûr, preneur.
Code : Tout sélectionner
Xres=1024:yRes=600
TimeRepeat.i=250
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0:MessageRequester("Error", "Can't open the sprite system", 0):End:EndIf
If OpenWindow(0, 0, 0,Xres, Yres, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)=0:MessageRequester("Error", "Can't open windowed screen!", 0):EndIf
If OpenWindowedScreen(WindowID(0), 0, 0, xres, yres, 0, 0, 0)=0:MessageRequester("Error", "Can't open windowed screen!", 0):EndIf
KeyboardMode(#PB_Keyboard_Qwerty)
Structure symbols
key.s[3] ;lowercase 0, uppercase 1 and Alt 2
prevCar.s
timer.d
flag.a
EndStructure
NewList key.i()
NewMap symbols.symbols()
Restore Keys
For i=1 To 65
AddElement(key())
Read.i key()
Next i
Restore Azerty
ForEach key()
Read.s symbols(Str(key()))\key[0];lowercase
Read.s symbols(Str(key()))\key[1];uppercase
Read.s symbols(Str(key()))\key[2];AltGr
Next
DataSection
Keys:
;10
Data.i #PB_Key_1,#PB_Key_2,#PB_Key_3,#PB_Key_4,#PB_Key_5,#PB_Key_6,#PB_Key_7,#PB_Key_8,#PB_Key_9,#PB_Key_0
;Pad 14
Data.i #PB_Key_Pad1,#PB_Key_Pad2,#PB_Key_Pad3,#PB_Key_Pad4,#PB_Key_Pad5,#PB_Key_Pad6,#PB_Key_Pad7,#PB_Key_Pad8,#PB_Key_Pad9,#PB_Key_Pad0
Data.i #PB_Key_Divide,#PB_Key_Multiply,#PB_Key_Subtract,#PB_Key_Add
;letters 26
Data.i #PB_Key_A,#PB_Key_B,#PB_Key_C,#PB_Key_D,#PB_Key_E,#PB_Key_F,#PB_Key_G,#PB_Key_H,#PB_Key_I,#PB_Key_J
Data.i #PB_Key_K,#PB_Key_L,#PB_Key_M,#PB_Key_N,#PB_Key_O,#PB_Key_P,#PB_Key_Q,#PB_Key_R,#PB_Key_S,#PB_Key_T
Data.i #PB_Key_U,#PB_Key_V,#PB_Key_W,#PB_Key_X,#PB_Key_Y,#PB_Key_Z
;space
Data.i #PB_Key_Space
;back
Data.i #PB_Key_Back
;48
;punctuation
Data.i #PB_Key_SemiColon,#PB_Key_Comma
Data.i #PB_Key_Period,#PB_Key_Slash
Data.i #PB_Key_Apostrophe,#PB_Key_BackSlash,#PB_Key_LeftBracket,#PB_Key_RightBracket
Data.i #PB_Key_Minus,#PB_Key_Equals
Data.i #PB_Key_Grave
Data.i #PB_Key_Decimal,86
;total 55
Azerty: ;French keyboard
Data.s "&","1","","é","2","~",Chr(34),"3","#","'","4","{","(","5","[","-","6","|","è","7","`","_","8","\","ç","9","^","à","0","@"
Data.s "1","1","","2","2","","3","3","","4","4","","5","5","","6","6","","7","7","","8","8","","9","9","","0","0",""
Data.s "/","/","","*","*","","-","-","","+","+",""
Data.s "q","Q","","b","B","","c","C","","d","D","","e","E","€","f","F","","g","G","","h","H","","i","I","","j","J",""
Data.s "k","K","","l","L","",",","?","","n","N","","o","O","","p","P","","a","A","","r","R","","s","S","","t","T",""
Data.s "u","U","","v","V","","z","Z","","x","X","","y","Y","","w","W",""
Data.s " "," ",""
Data.s Chr(1),Chr(1),""
Data.s "m","M","",";",".","",":","/","","!","§",""
Data.s "ù","%","","*","µ",""
Data.s "^","¨","","$","£","¤"
Data.s ")","°","]","=","+","}"
Data.s "²","",""
Data.s ".",".",""
Data.s "<",">",""
Qwerty: ;US keyboard
; Data.s "1","!","","2","@","","3","#","","4","$","","5","%","","6","^","","7","&","","8","*","","9","(","","0",")",""
; Data.s "1","1","","2","2","","3","3","","4","4","","5","5","","6","6","","7","7","","8","8","","9","9","","0","0",""
; Data.s "/","/","","*","*","","-","-","","+","+",""
; Data.s "a","A","","b","B","","c","C","","d","D","","e","E","","f","F","","g","G","","h","H","","i","I","","j","J",""
; Data.s "k","K","","l","L","","m","M","","n","N","","o","O","","p","P","","q","Q","","r","R","","s","S","","t","T",""
; Data.s "u","U","","v","V","","w","W","","x","X","","y","Y","","z","Z",""
; Data.s " "," ",""
; Data.s Chr(1),Chr(1),""
; Data.s ";",":","",",","<","",".",">","","/","?",""
; Data.s "'",chr(34),"","\","|",""
; Data.s"[","{","","]","}",""
; Data.s "-","_","","=","+",""
; Data.s "`","~",""
; Data.s ".",".",""
; Data.s "","",""
EndDataSection
Repeat
FlipBuffers()
ClearScreen(#Black)
Repeat:Event = WindowEvent():Until Event = 0
ExamineKeyboard()
shift.i=0
If KeyboardReleased(#PB_Key_Capital)
CapsLock.i=~CapsLock
EndIf
If KeyboardPushed(#PB_Key_PadEnter) Or KeyboardPushed(#PB_Key_Return)
text$+Chr(13)
EndIf
If KeyboardPushed(#PB_Key_LeftShift) Or KeyboardPushed(#PB_Key_RightShift) Or CapsLock
shift=1
EndIf
If KeyboardPushed(#PB_Key_RightAlt)
shift=2
EndIf
ForEach key()
If KeyboardPushed(key())
symbols.s=symbols(Str(key()))\key[shift]
;upcase
If symbols()\timer<ElapsedMilliseconds()
If symbols()\prevCar=symbols
If symbols()\flag=0
symbols()\flag=1
symbols()\timer=TimeRepeat+ElapsedMilliseconds()
Else
symbols()\timer=0
If symbols=Chr(1) ;back
text$ = Left(text$, Len(text$)-1)
Else
text$+symbols
EndIf
symbols()\prevCar=symbols
EndIf
Else
symbols()\flag=0
If symbols=Chr(1) ;back
text$ = Left(text$, Len(text$)-1)
Else
text$+symbols
EndIf
symbols()\prevCar=symbols
EndIf
EndIf
Else
symbols(Str(key()))\prevCar="":symbols()\timer=0
EndIf
Next
StartDrawing(ScreenOutput())
DrawText(0,0,"Type your text... [Escape] To quit")
DrawText(0,40,text$)
StopDrawing()
Until KeyboardPushed(#PB_Key_Escape)
Dernière modification par Fig le lun. 21/août/2017 16:36, modifié 3 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
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: bug clavier ?
Tu crois que cette répétition est utile pour un GUI ? Pour saisir un pseudo par exemple je n'ai pas besoin de répéter x fois un caractère. De plus si un utilisateur à le doigt un peu lourd et un pc très rapide ça peut devenir désagréable...... donc on ne peut l'utiliser pour obtenir les répétitions
Sinon ton code est pas mal
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: bug clavier ?
Pousse ta boucle jusqu'à 3727 (comme je l'avais déjà dit plus haut), la touche correspond au code 1216... En tous cas le bug (?) est présent et c'est bizarre qu'il ne soit pas corrigé ou expliqué/contourné.
Re: bug clavier ?
Falsam> Je n'en ai pas besoin pour saisir un pseudo mais pour un chat ingame.
Chatter avec la lourdeur de keyboardInkey, j'ai essayé, c'est hyper pénible. L'utilisateur a la sensation diffuse d'être entravé et mal à l'aise...
Chatter avec la lourdeur de keyboardInkey, j'ai essayé, c'est hyper pénible. L'utilisateur a la sensation diffuse d'être entravé et mal à l'aise...
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: bug clavier ?
J'imagine que Fred a moins de temps à consacrer pour la correction des bugs (il est papa non ?) et les bugs spécifiquement français... Vu qu'ils sont répertoriés sur le forum anglais...djes a écrit :Pousse ta boucle jusqu'à 3727 (comme je l'avais déjà dit plus haut), la touche correspond au code 1216... En tous cas le bug (?) est présent et c'est bizarre qu'il ne soit pas corrigé ou expliqué/contourné.
De toute manière maintenant que je me suis fait ch*er à émuler le clavier FR avec le clavier US. Ca restera comme ça. Ca me permettra de compléter avec un clavier Espagnol, Allemand ou Russe, pourquoi pas...
C'est utile pour quelqu'un qui fait un jeu à vocation internationale.
1216, je le note dans la carte du clavier. Merci beaucoup pour l'info, dans le fil je n'avais pas vu que c'était la réponse... (je crois toujours que c'est 42...)
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
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: bug clavier ?
Tu as raison. Il y a un temps de latence entre chaque caractère un peu pénible. D'ou cette sensation de mal à l'aise.Fig a écrit :Chatter avec la lourdeur de keyboardInkey, j'ai essayé, c'est hyper pénible. L'utilisateur a la sensation diffuse d'être entravé et mal à l'aise...
/me va penser à une autre solution (Voir même il a une idée)
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: bug clavier ?
Ce n'est pas un temps de latence : c'est programmé au front descendant.
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: bug clavier ?
Certes mais c'est comme ça que je le ressens. On a l'impression que le clavier est deux de tensionOllivier a écrit :Ce n'est pas un temps de latence : c'est programmé au front descendant.
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%