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] Touche ALT non détectée [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 731
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 731
    Points : 15 136
    Points
    15 136
    Par défaut [Linux] Touche ALT non détectée
    Bonjour,

    Je viens de découvrir un truc bizarre, et je ne sais pas du tout si c'est lié à Lazarus (1.0.8/32) ou à Linux (Debian 7/32), c'est pourquoi je m'adresse à vous :

    Soit la procédure suivante pour afficher l'état de la touche appuyée pendant qu'on clique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Caption := '';
      if ssShift in Shift then
        Caption := 'Shift'
      else if ssAlt in Shift then
        Caption := 'ALT'
      else if ssCtrl in Shift then
        Caption := 'Ctrl';
    end;
    Je constate que "ALT" n'est jamais affiché et pour cause, en mode pas-à-pas la procédure n'est pas appelée lorsque j'appuie sur ALT puis que je clique...
    Résultat identique en exécutant directement le binaire en dehors de l'IDE

    Comment savoir si c'est un problème d'exécutable mal créé par Lazarus, ou si c'est un problème lié à l'OS ?
    • Question OS, la détection de 'ALT' doit fonctionner puisque je peux fermer une fenêtre style Leafpad avec le bon vieux ALT-F4.
    • Question Lazarus (code mal généré ?), je ne vois pas comment tester une autre alternative, n'ayant pas d'autre outil de génération de prog,
      à part le créer from scratch en C (mais ça risque de me prendre des semaines d'étude... Quelqu'un aurait un code source ? Merci !)


    La seule chose que je peux dire, c'est que ce bout de code passé dans ma VM 2000 et compilé en D7 présente le même dysfonctionnement, mais que l'exe D7 généré et trimballé par une clé usb sur une machine seven fonctionne parfaitement.

    Une idée ?

    (Comment et pourquoi j'en suis arrivé là : hier soir je retouchais des tofs avec 'toshop dans ma VM, et j'ai constaté que la fonction de clonage de couleur m'envoie une erreur comme quoi je n'ai pas sélectionné par ALT-Clic de zone à cloner, et pourtant quand j'appuie sur ALT je vois bien l'icône du pointeur se modifier)

    Bon week-end,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Membre averti
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 156
    Points : 331
    Points
    331
    Par défaut
    Salut Jipité,
    moi j'avais le même problème que toi sous Ubuntu 12.04 64 bits et j'ai trouvé pourquoi. Je ne sais pas si tu as le même problème sous ta debian 7, mais je vais te dire quel était le problème chez moi.
    Ubuntu 12.04 utilise l'interface utilisateurUnity-2D.
    avec Unity-2D, le mouvement des fenêtres peut être contrôlé par un appui de ALT + click souris ( une petite main apparaît). Pour désactiver cela il faut taper la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gconftool-2 --set /apps/metacity/general/mouse_button_modifier --type string disabled
    pour le réactiver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gconftool-2 --set /apps/metacity/general/mouse_button_modifier --type string '<Alt>'
    D'autres combinaisons peuvent être utilisées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Alt+Click: Move windows
        Alt+Middle Click: Resize windows
        Alt+Right Click: Open a generic window menu
    J'ai essayé ton code. J'avais le même problème que toi. En désactivant le ALT+Click, j'ai bien la détection de la touche ALT.

    Amicalement J.P ( pas T)

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 731
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 731
    Points : 15 136
    Points
    15 136
    Par défaut
    Bonsoir à tous,

    et merci à Nullosse de m'avoir mis le pied à l'étrier, ie, m'avoir montré la direction.

    Mon desktop est piloté par LXDE, avec Openbox comme window-manager.

    J'ai un peu googlé, et pu découvrir un fichier de conf dans lequel je me suis empressé de commenter les 3 lignes ci-dessous :
    <mousebind button="A-Left" action="Click">
    <action name="Unshade"/>
    </mousebind>
    avec un résultat nul, même après reboot.

    J'ai rajouté une ligne à mon prog de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      Caption := '';
      if ssShift in Shift then
        Caption := 'Shift'
      else if ssAlt in Shift then
        Caption := 'ALT'
      else if ssAltGr in Shift then // nouveau
        Caption := 'AltGr'
      else if ssCtrl in Shift then
        Caption := 'Ctrl';
    Le fonctionnement est donc le suivant, maintenant :
    • ALT-click = aucune action, ie, le caption affiché n'est pas changé ;
    • AltGr-click = il doit se passer quelque chose car le caption change mais ne m'affiche pas "AltGr"...

    A ce propos, je voudrais bien savoir, question subsidiaire, pourquoi Lazarus (ou Openbox ? Ou LXDE ?) m'affiche "fenêtre sans nom" quand je demande un affichage vide !

    L'outil xev m'a montré que la touche AltGr s'appelle ISO_Level3_Shift, comment faire un lien entre ça et le TShiftState de Laz ?

    Mais ça n'est pas le plus important, ce que je trouve très inquiétant dans mon cas, c'est que dans la doc de configuration d'Openbox, je peux lire, à propos du MouseBind (c'est ce qui nous intéresse) :
    • Frame
      The entire window frame for any window (except the desktop). This includes both the window decorations (if any) and the application window itself.
      Note: When a button is bound in this context, the clicks will not be passed through to the application. Use with care.
    • Client
      The application window, inside the window decorations.
      Note: When a button is bound in this context, the clicks will be passed through to the application. However, because of this, only "Press" events can be used for this context.
    En plus, de toutes les actions possibles, il n'y en a aucune qui puisse me convenir ; "ils" auraient pu inventer une action "none".

    Bon, j'en suis là, et je le sens mal, ce problème, à moins qu'il n'y ait encore un autre fichier de conf planqué dans un coin : Nullosse, tu pourrais me dire quel fichier de conf est concerné par tes manips ?
    Parce que, oui, j'ai tapé man gconftool et une page de man est apparue : j'y comprends rien à leur architecture ! Que vient faire Gnome au mileu de LXDE/Openbox ? Ils n'ont pas fait clair, je trouve...
    Merci,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Membre averti
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 156
    Points : 331
    Points
    331
    Par défaut
    Bonjour,
    le fichier concerné chez moi c'est :
    .gconf/apps/metacity/general/%gconf.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0"?>
    <gconf>
    	<entry name="mouse_button_modifier" mtime="1370083329" type="string">
    		<stringvalue>&lt;Alt&gt;</stringvalue>
    	</entry>
    	<entry name="theme" mtime="1350270417" type="string">
    		<stringvalue>Ambiance</stringvalue>
    	</entry>
    	<entry name="visual_bell_type" mtime="1348764447" type="string">
    		<stringvalue>frame_flash</stringvalue>
    	</entry>
    	<entry name="auto_raise_delay" mtime="1348764447" type="int" value="1000"/>
    	<entry name="auto_raise" mtime="1348764447" type="bool" value="true"/>
    </gconf>
    Aucun rapport avec le tien.

    en ce qui concerne la gestion des états Shift voici la déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    { Types used by standard events }
      TShiftStateEnum = (ssShift, ssAlt, ssCtrl,
        ssLeft, ssRight, ssMiddle, ssDouble,
        // Extra additions
        ssMeta, ssSuper, ssHyper, ssAltGr, ssCaps, ssNum,
        ssScroll,ssTriple,ssQuad,ssExtra1,ssExtra2);
     
    {$packset 1}
      TShiftState = set of TShiftStateEnum;
    {$packset default}
    dans classeh.inc.
    Moi je n'ai pas non plus le ALT-gr qui fonctionne car l'état shift est à 0 pour cette touche
    pour visualiser l'état Shift :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
      begin
     Caption := inttostr(integer(Shift));
    end;
    Amicalement, J.P

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 731
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 731
    Points : 15 136
    Points
    15 136
    Par défaut
    Bonjour, Nullosse (bien matinal pour un dimanche, je trouve )

    Effectivement nos fichiers de conf n'ont pas grand chose en commun.
    Je me suis rabattu sur le mien, et ai commenté 3 entrées (au lieu d'une, hier) :
    <context name="Frame">
    <!-- mousebind button="A-Left" action="Press">
    <action name="Focus"/>
    <action name="Raise"/>
    </mousebind>
    <mousebind button="A-Left" action="Click">
    <action name="Unshade"/>
    </mousebind>
    <mousebind button="A-Left" action="Drag">
    <action name="Move"/>
    </mousebind -->
    ...
    histoire que le pingouin me "libère" cette foutue touche ALT (dont je me souviens qu'elle est utilisée par un autre logiciel dans la VM), un petit openbox --reconfigure et crois-le, mais maintenant mon petit prog de test fonctionne et m'affiche bien "ALT" dans le caption de la fenêtre ! Yes !
    Testé également à l'instant dans la VM avec mon vieux 'toshop, impec !
    (Espérons que ça va survivre à un reboot -- testerai plus tard...)

    Voilà, mille mercis, bon dimanche, bons codes, toussa toussa, et désolé d'avoir pollué le forum Laz avec un sujet plutôt Linux, mais je ne pouvais pas savoir.
    Si un modo veut déplacer cette discussion chez Linux, pas de souci.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 300
    Points
    11 300
    Billets dans le blog
    6
    Par défaut
    L'intérêt du CrossPlatform, c'est la simplicité de gérer le passage d'un OS à l'autre : ton post me semble bien à sa place...

    Salutations dominicales
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 731
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 731
    Points : 15 136
    Points
    15 136
    Par défaut
    Bonjour,

    Je "remonte" ce vieux sujet car je ne peux plus l'éditer (trop tard sans doute) : je viens de me rendre compte que j'avais oublié un détail important ()

    Citation Envoyé par Jipété Voir le message
    Effectivement nos fichiers de conf n'ont pas grand chose en commun.
    Je me suis rabattu sur le mien,
    Le mien c'est .config/openbox/lxde-rc.xml


    Un complément d'info :
    Citation Envoyé par Jipété Voir le message
    (Espérons que ça va survivre à un reboot -- testerai plus tard...)
    Et, oui, ça survit à un reboot
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

Discussions similaires

  1. touche espace et flèche non détectée par un keyPressEvent
    Par entuenedufard dans le forum Débuter
    Réponses: 3
    Dernier message: 21/10/2008, 16h04
  2. Java virtual machine non détectée sous linux
    Par Battant dans le forum Général Java
    Réponses: 3
    Dernier message: 31/07/2008, 20h16
  3. Fiche et Touche ALT
    Par kymine dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2005, 19h31
  4. [JMF] webcam non détectée
    Par Goldocrack dans le forum Multimédia
    Réponses: 3
    Dernier message: 17/07/2005, 00h31
  5. [MFC]Touche ALT
    Par Fred_442003 dans le forum MFC
    Réponses: 16
    Dernier message: 17/06/2004, 07h22

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