Après une assez longue pause dû à la fin d’année de la Licence et du stage, je recom­mence à avoir du temps pour m’occuper du blog. Désolé encore de l’absence.

Et je vais reprendre assez bien qui plus est. Comme je vois de plus en plus de per­sonnes se pen­chant sur des fonc­tion­na­li­tés qui requiert la détec­tion de la frappe d’une touche sur un cla­vier pour affec­ter un bind par exemple, je vous pro­pose la manière de le faire en C# (je peux le mon­trer en Java si vous le deman­dez mais c’est plus simple). De plus il y a peu de tuto­riel sur ce sujet, donc je pense qu’il ne sera pas trop redon­dant avec ce qu’il se fait déjà.

Donc pour détec­ter la touche qui est frappé sur le cla­vier et le mettre dans un text­box, voici le code à uti­li­ser (ce code inclut les touches spé­ciales comme Ctrl, Alt, Enter, etc…) :

//Supposer que c'est le constructeur de la Windows Form
public MainFrame()
{
    InitializeComponent();

    //Pour faire en sorte que la touche soit affiché après tous les traitements (test ou autre)
    this.KeyPreview = true;

    clavier.MaxLength = 1;

    //On rajoute le handler pour tester les touches
    clavier.KeyDown += new KeyEventHandler(clavier_KeyDown);
 }

private void clavier_KeyDown(object sender, KeyEventArgs e)
 {
     clavier.Clear();

     //Test des touches "spéciales" et affectation de son nom dans la textbox
     switch (e.KeyCode)
     {
         case Keys.F1:
             clavier.Text = "F1";
             break;
         case Keys.F2:
             clavier.Text = "F2";
             break;
         case Keys.F3:
             clavier.Text = "F3";
             break;
         case Keys.F4:
             clavier.Text = "F4";
             break;
         case Keys.F5:
             clavier.Text = "F5";
             break;
         case Keys.F6:
             clavier.Text = "F6";
             break;
         case Keys.F7:
             clavier.Text = "F7";
             break;
         case Keys.F8:
             clavier.Text = "F8";
             break;
         case Keys.F9:
             clavier.Text = "F9";
             break;
         case Keys.F10:
             clavier.Text = "F10";
             break;
         case Keys.F11:
             clavier.Text = "F11";
             break;
         case Keys.F12:
             clavier.Text = "F12";
             break;
         case Keys.ControlKey:
             clavier.Text = "Control";
             break;
         case Keys.Alt:
             clavier.Text = "Alt";
             break;
         case Keys.Back:
             clavier.Text = "Backspace";
             break;
         case Keys.Enter:
             clavier.Text = "Enter";
             break;
         case Keys.ShiftKey:
             clavier.Text = "Shift";
             break;
         case Keys.Space:
             clavier.Text = "Space";
             break;
         default:
             break;
     }
     e.Handled = false;
 }

Bien sûr dans le cadre d’un bin­der, il fau­dra limi­ter le taille de la text­box à un carac­tère, cela n’empêchera d’affecter un texte plus grand depuis le code.

Voilà, vous savez désor­mais détec­ter et affi­cher une touche qui a été appuyé sur le clavier !

Par­ta­ger :
  • Twitter
  • StumbleUpon
  • Facebook
  • LinkedIn
  • del.icio.us
  • Google Bookmarks
  • Technorati
  • MySpace
  • Netvibes
  • Digg
  • RSS
  • email
  • Print