IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

[Linux] Intercepter l'appui sur une touche du clavier [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut [Linux] Intercepter l'appui sur une touche du clavier
    Bonjour

    Comment simuler l'appui sur une touche du clavier sous Linux,
    sous bcb6 il y avait GetKeyState mais ce n'est que sous Windows apparemment.

    il y avait aussi sous BCB6

    il y avait aussi
    Je n'ai pas pu les faire marcher sous Linux car le suis sous Ubuntu uniquement.

    Où pourrais-je avoir les codes touches pour clavier sous Linux ?

    Merci A+

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 130
    Points : 41 289
    Points
    41 289
    Billets dans le blog
    63
    Par défaut
    fonctionne très bien, cependant tu parles de "simuler" une touche donc je présume que ta question est plus complexe que cela ..

    donc : un autre exemple tiré des sources dispo , sur un évènement onKeydown

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TCustomCheckListBox.KeyDown(var Key: Word; Shift: TShiftState);
    var
      Index: Integer;
    begin
      if (Key = VK_SPACE) and (Shift=[]) then
      begin
        Index := ItemIndex;
        Checked[Index] := not Checked[Index];
        ItemClick(Index);
        Key := VK_UNKNOWN;
      end else
        inherited KeyDown(Key,Shift);
    end;

  3. #3
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Merci SergioMaster et merci pour l'aide.

    Moi j'avais trouvé cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
      );
    begin
        if Key=Word('C') then
      begin
        ShowMessage('touche C');
      end;
    end;
    Les erreurs:
    1 Si on pose un Button ou autres sur la form, ca marche plus ?
    2 Ca ne différencie pas les majuscule et les minuscules.
    3 Linux ne comprend pas VK_xxx ou alors il faut rajouter un uses ?

    Je vais essayer de comprendre le code que tu ma passé et voir ce que je peut faire ?

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 130
    Points : 41 289
    Points
    41 289
    Billets dans le blog
    63
    Par défaut
    oui , il y a un uses , LCLTypes si mes souvenirs sont bons
    [edit] et ils sont bons je ne suis pas encore touché par Alzheimer

  5. #5
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Impect Merci SergioMaster

    Il reste plus que un seul problème c'est que si je met un composant dans la form le code ne marche plus ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    implementation
     
    { TForm1 }
     
     uses LCLtype;
     
    procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
      var vkKey:Word;
    begin
      if(Key='C') then
        begin
          ShowMessage('Touche C');
        end;
     
        vkKey:=Word(Key);
      if(vkKey=VK_SPACE) then
        begin
          ShowMessage('Touche espace');
        end;
    end;
    Merci A+

  6. #6
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    c'est bon, j'ai trouvé,
    il fallait simplement mettre (KeyPreview) de Form1 a (true)

    A+ et Merci SergioMaster pour l'aide que tu ma apporté

  7. #7
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    En fait le titre du message ne correspond pas trop,
    pas simuler mais pluto intercepter l'appuie sur une touche du clavier, je crois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment détecter l'appui sur une touche du clavier?
    Par Cygnus Saint dans le forum C++
    Réponses: 2
    Dernier message: 17/09/2009, 20h31
  2. Réponses: 7
    Dernier message: 08/07/2009, 18h22
  3. Détection de l'appui sur une touche du clavier
    Par Oh!Tofocus dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/12/2008, 02h08
  4. appel d'une fonction à chaque appui sur une touche du clavier
    Par jonnyboy dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/09/2007, 16h32
  5. Récupération d'un appui sur une touche du clavier
    Par eddie5150 dans le forum MFC
    Réponses: 2
    Dernier message: 09/05/2007, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo