evennements clavier en fullscreen

coder78coder78 Membre
23:58 modifié dans API AppKit #1
Bonjour tout le monde,

Alors voilà ...pour faire suite à  mon autre poste..maintenant que j'ai du fullscreen je suis content.
Donc j'attaque mon p'tit jeu tout balot et j'attaque les event clavier...
seulement je suis confronté au même problème qu'il y a 15ans....
A savoir le buffer clavier..
J'ai un latence  entre le 1er appuis sur une touche et les répétitions de cette touche.

A l'époque il fallait vider le buffer clavier en permanance et c'était réglé... mais en carbon...on fait comment ?

Merci d'avance.

Fred

Réponses

  • coder78coder78 Membre
    23:58 modifié #2
    haa juste pour info je gere mes events comme ceci :
    while ( ( event = [ NSApp nextEventMatchingMask: NSAnyEventMask untilDate: [ NSDate distantPast ]  inMode: NSDefaultRunLoopMode dequeue: YES ] ) )
    {
    ...
    }
    et donc je pensais que le 'dequeu: yes' flushait le buffer clavier mais visiblement...non...
    une idée ?

    Fred
  • psychoh13psychoh13 Mothership Developer Membre
    23:58 modifié #3
    C'est quoi le problème de base ?
  • coder78coder78 Membre
    23:58 modifié #4
    le problème de base c'est que j'ai une latence entre le 1appuis sur une touche et la répétition.
  • psychoh13psychoh13 Mothership Developer Membre
    23:58 modifié #5
    Et en quoi ça pose problème ?
  • coder78coder78 Membre
    23:58 modifié #6
    et bien...disons...as tu déj joué à  ..disons WARBLADE...
    ben c'est comment dire...injouable si il y a de la latence dans les touches.
    et les qqs jeux que j'ai testé sur mon mac...n'avaient pas de latence dans les touches....
    et je sais pas comment ils font :(

    si tu as une idée...je prends

    Fred
  • CéroceCéroce Membre, Modérateur
    23:58 modifié #7
    Il n'y a pas à  attendre de répétition, d'autant plus que seules certaines sont répétées.
    Il faut juste regarder si la touche est toujours appuyée  ???
  • psychoh13psychoh13 Mothership Developer Membre
    23:58 modifié #8
    Le principe est simple: tu as l'événement -keyDown: qui indique que la touche est enfoncée, et il suffit que tu considères que la touche se répète tant que -keyUp n'est pas reçu...
  • coder78coder78 Membre
    23:58 modifié #9
    ha tiens c'est pas idiot ça le coup du keyUp....
    Merci pour les infos messieurs.

    Fred
  • psychoh13psychoh13 Mothership Developer Membre
    23:58 modifié #10
    Il n'y a que comme ça que ça marche vraiment...
  • coder78coder78 Membre
    23:58 modifié #11
    Bon merci à  tous pour les pistes...
    j'ai enfin trouvé la solution à  mon problème....

    en fait ma "latence" venait du fait que je déclanchait un setNeedDisplay de ma NSView lors d'un event clavier.....et du coup ben ...ça sacadait.
    Alors j'ai plutot déclarer un nstimer dans l'init de ma View et j'ai déclaré un setNeedDisplay dans la fonction 'refresh' de ma NSView et voilà  tout est bon.

    Donc merci à  tous de m'avoir aiguillé :)

    Fred
Connectez-vous ou Inscrivez-vous pour répondre.