Précédent   Forum des professionnels en informatique > Autres langages > Pascal > Lazarus
Lazarus Forum d'entraide sur Lazarus, l'EDI RAD multiplateforme basé sur Free Pascal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 27/02/2010, 22h06   #1
Membre expérimenté
 
Avatar de winow
 
Inscription : novembre 2004
Messages : 600
Détails du profil
Informations personnelles :
Âge : 46

Informations forums :
Inscription : novembre 2004
Messages : 600
Points : 516
Points : 516
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+
__________________
.
Why
.
//------------------

Dernière modification par Alcatîz ; 27/02/2010 à 22h34. Motif: balises code
winow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2010, 08h52   #2
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 335
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

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

Informations forums :
Inscription : janvier 2007
Messages : 3 335
Points : 4 005
Points : 4 005
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 :
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;
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2010, 10h10   #3
Membre expérimenté
 
Avatar de winow
 
Inscription : novembre 2004
Messages : 600
Détails du profil
Informations personnelles :
Âge : 46

Informations forums :
Inscription : novembre 2004
Messages : 600
Points : 516
Points : 516
Merci SergioMaster et merci pour l'aide.

Moi j'avais trouvé cela:
Code :
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
__________________
.
Why
.
//------------------
winow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2010, 12h21   #4
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 335
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

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

Informations forums :
Inscription : janvier 2007
Messages : 3 335
Points : 4 005
Points : 4 005
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
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2010, 15h50   #5
Membre expérimenté
 
Avatar de winow
 
Inscription : novembre 2004
Messages : 600
Détails du profil
Informations personnelles :
Âge : 46

Informations forums :
Inscription : novembre 2004
Messages : 600
Points : 516
Points : 516
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 :
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+
__________________
.
Why
.
//------------------
winow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2010, 16h18   #6
Membre expérimenté
 
Avatar de winow
 
Inscription : novembre 2004
Messages : 600
Détails du profil
Informations personnelles :
Âge : 46

Informations forums :
Inscription : novembre 2004
Messages : 600
Points : 516
Points : 516
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é
__________________
.
Why
.
//------------------
winow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2010, 20h08   #7
Membre expérimenté
 
Avatar de winow
 
Inscription : novembre 2004
Messages : 600
Détails du profil
Informations personnelles :
Âge : 46

Informations forums :
Inscription : novembre 2004
Messages : 600
Points : 516
Points : 516
En fait le titre du message ne correspond pas trop,
pas simuler mais pluto intercepter l'appuie sur une touche du clavier, je crois
__________________
.
Why
.
//------------------
winow est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 08h15.


 
 
 
 
Partenaires

Hébergement Web