PureBasic

Forums PureBasic
Nous sommes le Dim 25/Oct/2020 15:32

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 29 messages ]  Aller à la page Précédente  1, 2
Auteur Message
 Sujet du message: Re: bug clavier ?
MessagePosté: Sam 19/Aoû/2017 18:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 1138
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
viewtopic.php?f=2&t=16894&hilit=chat

_________________
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 : 5.45LTS - 32 bits


Dernière édition par Fig le Dim 31/Mar/2019 9:13, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Sam 19/Aoû/2017 19:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6872
Localisation: IDF (Yvelines)
Fig a écrit:
Fred... Allez quoi...
Il me semble qu'il a fait depuis ..... longtemps:

:wink: KeyboardMode(#PB_Keyboard_International)
Code:
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)
Si je presse la touche M j'ai bien un ... M :wink:

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Sam 19/Aoû/2017 19:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 1138
Toujours buggé, désolé...
mM correspond à 2 codes... et ",?" aucun.

Code:
;- *** 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

_________________
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 : 5.45LTS - 32 bits


Dernière édition par Fig le Sam 19/Aoû/2017 19:52, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Sam 19/Aoû/2017 19:39 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6872
Localisation: IDF (Yvelines)
Citation:
Toujours buggé, désolé...
Avec KeyboardPushed() effectivement mais pas avec KeyboardReleased()

J'ai oublié de tester avec KeyboardPushed() !! C'est ballot ce bug !!

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Sam 19/Aoû/2017 19:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 1138
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...

_________________
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 : 5.45LTS - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Lun 21/Aoû/2017 14:57 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6872
Localisation: IDF (Yvelines)
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().

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Lun 21/Aoû/2017 15:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 1138
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. :wink:

Code:
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)

_________________
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 : 5.45LTS - 32 bits


Dernière édition par Fig le Lun 21/Aoû/2017 16:36, édité 3 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Lun 21/Aoû/2017 15:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6872
Localisation: IDF (Yvelines)
Citation:
..... donc on ne peut l'utiliser pour obtenir les répétitions
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.

Sinon ton code est pas mal :wink:

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Lun 21/Aoû/2017 15:36 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4233
Localisation: Arras, France
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é.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Lun 21/Aoû/2017 15:39 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 1138
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...

_________________
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 : 5.45LTS - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Lun 21/Aoû/2017 15:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 1138
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é.

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...
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. :lol: :roll:

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 : 5.45LTS - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Lun 21/Aoû/2017 16:20 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6872
Localisation: IDF (Yvelines)
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...
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.

/me va penser à une autre solution (Voir même il a une idée)

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Lun 21/Aoû/2017 17:49 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3673
Localisation: Encore ?
Ce n'est pas un temps de latence : c'est programmé au front descendant.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: bug clavier ?
MessagePosté: Lun 21/Aoû/2017 17:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6872
Localisation: IDF (Yvelines)
Ollivier a écrit:
Ce n'est pas un temps de latence : c'est programmé au front descendant.
Certes mais c'est comme ça que je le ressens. On a l'impression que le clavier est deux de tension :mrgreen:

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 29 messages ]  Aller à la page Précédente  1, 2

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 16 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye