Page 1 sur 1

Input

Publié : ven. 25/mars/2005 13:51
par Aranoth
Voila une fonction qui remplace KeyboardInkey()

Le gros défaut de KeyboardInkey() c'est qu'on avait pas la possibilitée d'utiliser les majuscules pour les caractères... vous aviez beau appuyer sur '£', ca vous donnait '$'

Eh bien c'est résolu.

Pour commencer voilà une liste et sa structure, indispensables:

Code : Tout sélectionner

Structure char
  l.s
  u.s
EndStructure
NewList char.char()

AddElement(char())
  char()\l = "&"
  char()\u = "1"
AddElement(char())
  char()\l = "é"
  char()\u = "2"
AddElement(char())
  char()\l = "''"
  char()\u = "3"
AddElement(char())
  char()\l = "'"
  char()\u = "4"
AddElement(char())
  char()\l = "("
  char()\u = "5"
AddElement(char())
  char()\l = "-"
  char()\u = "6"
AddElement(char())
  char()\l = "è"
  char()\u = "7"
AddElement(char())
  char()\l = "_"
  char()\u = "8"
AddElement(char())
  char()\l = "ç"
  char()\u = "9"
AddElement(char())
  char()\l = "à"
  char()\u = "0"
AddElement(char())
  char()\l = ")"
  char()\u = "°"
AddElement(char())
  char()\l = "="
  char()\u = "+"
AddElement(char())
  char()\l = "<"
  char()\u = ">"
AddElement(char())
  char()\l = ","
  char()\u = "?"
AddElement(char())
  char()\l = ";"
  char()\u = "."
AddElement(char())
  char()\l = ":"
  char()\u = "/"
AddElement(char())
  char()\l = "!"
  char()\u = "§"
AddElement(char())
  char()\l = "^"
  char()\u = "¨"
AddElement(char())
  char()\l = "$"
  char()\u = "£"
AddElement(char())
  char()\l = "*"
  char()\u = "µ"
AddElement(char())
  char()\l = "ù"
  char()\u = "%"

Et enfin la fonction elle même:

Code : Tout sélectionner

Procedure.s aInput(msg$)

  If KeyboardPushed(#PB_Key_Back)
    msg$ = Left(msg$ , Len(msg$)-1 )
    Delay(200)
  EndIf
  c$ = KeyboardInkey()
  If KeyboardPushed(#PB_Key_LeftShift)
    ResetList(char())
    While NextElement(char())
      If char()\l = c$ : c$ = char()\u : Break : EndIf
    Wend
  EndIf
  msg$ + c$
  
  ProcedureReturn msg$
EndProcedure
Et un exemple:

Code : Tout sélectionner

InitKeyboard()
InitSprite()

OpenScreen(320,240,16,"")

IncludeFile "input.pb"

Repeat
  ClearScreen(0,0,0)

  ExamineKeyboard()


  msg$ = aInput(msg$)


  StartDrawing(ScreenOutput())

  DrawingMode(1)
  FrontColor(0,255,0)
  Locate(0,0)
  DrawText(msg$+"_")

  StopDrawing()
  FlipBuffers()

Until KeyboardPushed(#PB_Key_Escape)


Si vous l'améliorez ou l'optimisez je vous demanderait juste de la reposter ici, afin d'en faire profiter tout le monde :wink: