Page 1 sur 1

gestion clavier azerty et chiffres sur pc portable

Publié : ven. 03/août/2018 14:28
par david
Bonjour à tous

J'ai un pc windows7 pro, sans clavier numérique, alors que j'ai besoin de taper des chiffres très régulièrement
J'aurais donc besoin que les touches correspondant aux chiffres (ligne en haut du clavier) soit toujours actives par défaut pour envoyer 12345... plutôt que &é"'(
(et pouvoir envoyer &é"'( si j'appuie en même temps sur shift)
et que je puisse toujours saisir les lettres en minuscule et majuscule comme à l'habitude en AZERTY

J'ai fait des recherches, le clavier QWERTY gère ça apparemment très bien mais pas AZERTY
ps: je ne peux pas utiliser la touche LN, qui gère d'autres choses encore moins pratiques sur ledit PC, et que j'ai du désactiver!

J'ai vu qu'il existe la notion de "clavier numérique" sur internet mais mon pc professionnel sans droits ADMIN ne semble pas pouvoir modifier cela, en tout cas je n'ai rien trouvé même s'il me semble possible de changer la langue du clavier.

Du coup je me demande s'il ne serait pas plus simple de faire un programme qui tourne en boucle qui dit
test si touche "&" appuyée envoyer "1" (sauf si appuie simultané sur SHIFT+ "&" met "&") et faire ça pour 1,2,3,4....

quelqu'un a t'il déjà rencontré ce problème et trouvé une autre parade (simple si possible)?
merci par avance pour votre aide

j'ai pensé faire:

If OpenWindow....
repeat
If KeyboardPushed...
forever

après, vu mon niveau de débutant c'est là que tout ce complique...

je ne comprends pas pourquoi sous QWERTY il propose par défaut 12345
et que sous AZERTY on se tape &é"'( par défaut et que ce soit compliqué pour utiliser des chiffres

Re: gestion clavier azerty et chiffres sur pc portable

Publié : ven. 03/août/2018 14:37
par Ar-S
Du coup je me demande s'il ne serait pas plus simple de faire un programme qui tourne en boucle qui dit
test si touche "&" appuyée envoyer "1" (sauf si appuie simultané sur SHIFT+ "&" met "&") et faire ça pour 1,2,3,4....
Clairement non, ce ne sera pas "plus simple" ^^
Ce que tu souhaites faire nécessite du callback, des hook de clavier à gogo, des Api etc...

Et activer "Verr maj" au démarrage du PC ?
Après tu prends l'habitude de laisser ton petit doit sur Shift(maj) pour écrire en min et les symboles.

Code : Tout sélectionner

; Activer maj (non stop)
keybd_event_ ( #VK_SHIFT ,0,0,0)

; Désactiver maj (non stop)
keybd_event_ ( #VK_SHIFT ,0,2,0)


Re: gestion clavier azerty et chiffres sur pc portable

Publié : ven. 03/août/2018 15:15
par Marc56
... ou acheter un pavé numérique USB ~10€, aucun driver à installer :P

Re: gestion clavier azerty et chiffres sur pc portable

Publié : ven. 03/août/2018 15:17
par poshu
Aloooooooooooors... T'as pas les droits d'admin? Donc installer un programme du type AutoHotKey c'est pas possible? Même chose, installer un profile de clavier personnalisé, pas possible non plus?

Sinon, oui, ton app est pas super compliquée en soit, mais va falloir passer par de l'API windows; ce qui n'est pas le plus accessible pour un débutant. En gros, il faut que tu fasses un Key logger. Si t'as un antivirus un brin nerveux, il va pas bien le prendre du tout :/

Re: gestion clavier azerty et chiffres sur pc portable

Publié : ven. 03/août/2018 15:27
par boby

Code : Tout sélectionner

Global hook
Procedure SendKey(Option.l)
  keybd_event_(#VK_SHIFT,0,0,0) 
  keybd_event_(Option,0,0,0) 
  keybd_event_(Option,0,#KEYEVENTF_KEYUP,0) 
  keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) 
  ;Delay(60)
EndProcedure

Procedure.l Hook(nCode, wParam, *p.KBDLLHOOKSTRUCT)
   If nCode = #HC_ACTION
     If wParam = #WM_KEYDOWN
       Select *p\vkCode
         Case Asc("1")
           SendKey(#VK_1)
           ProcedureReturn -1
         Default
           ProcedureReturn CallNextHookEx_(hook, nCode, wParam, lParam)
       EndSelect
     EndIf
   EndIf
EndProcedure


#WH_KEYBOARD_LL = 13
hook = SetWindowsHookEx_(#WH_KEYBOARD_LL,@Hook(),GetModuleHandle_(0),0)
OpenWindow(0,0,0,0,0,"",#PB_Window_Invisible)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Probablement pas le plus optimal, mais ça marche, je te laisse le compléter.

Re: gestion clavier azerty et chiffres sur pc portable

Publié : sam. 04/août/2018 8:51
par david
Bonjour à tous et merci pour vos réponses!
C'est déjà en voie d'être réglé sous peu, grâce à votre aide
Ar-S / Et activer "Verr maj" au démarrage du PC
Le problème serait de devoir repasser en minuscule pour écrire des mots
Marc56 / acheter un pavé numérique USB
Oui, c'est pour ne pas rajouter du bordel sur mon bureau (je n'ose même pas dire tout ce qui traîne...)
poshu / T'as pas les droits d'admin?
Et non, mes possibilités sont très limités (et celles du PC aussi)
boby / code
Ca marche super!!!, je vais maintenant essayer de l'adapter
Je voudrais qu'il affiche toujours les chiffres (qu'il soit en minuscules ou en majuscules)
comme ça je ne me prend plus la tête à regarder sur le voyant ou j'en suis, je sais qu'il tape des chiffres (c'est ce que je lui demande a 95%)
Après, comme on a besoin de temps en temps de: " ' é è
je vais essayer de voir si j'arrive à lui dire, toujours faire "SendKey(#VK_1)", sauf si appuie simultanée sur SHIFT ((que je sois en minuscule ou majuscule))

En bref, la touche MAJ permet de basucler de minuscule en majuscule et réciproquement
Ma ligne de touches serait toujours des chiffres, sauf si appuie simultanée sur SHIFT ferait des: &é"('

Je vais essayer de bidouiller ça, en tout cas la procédure n'est pas bloquée par le pc et l'antivirus c'est super cool!!!
Il faut que j'arrive a tester l'appuie simultanée de SHIFT (ou de trouver une autre touche qui aurait une fonction comme MAJ avec une position oui/non pour faire des chiffres ou non...

Re: gestion clavier azerty et chiffres sur pc portable

Publié : mer. 25/oct./2023 10:27
par xica
Bonjour,

Je suis intéressée par le hook de boby mais je ne sais pas comment faire, où le mettre, etc...
Pouvez-vous m'aider, merci

Re: gestion clavier azerty et chiffres sur pc portable

Publié : mer. 25/oct./2023 18:22
par boddhi
xica a écrit : Je suis intéressée par le hook de boby mais je ne sais pas comment faire, où le mettre, etc...
Bonjour,

C'est un peu délicat de répondre précisément à ta demande sans que tu fournisses un minimum d'infos sur ton propre code et son architecture.
C'est un peu comme si tu demandais où mettre un lave-linge chez toi sans fournir les plans de ton habitation avec les emplacements d'arrivées d'eau et d'électricité...

En l'espèce, le code est utilisable tel que fourni. En gros, le plus simple étant de placer les procédures SendKey() et Hook() avant l'appel à la commande SetWindowsHookEx_(), elle-même appelée (à la racine du prog ou à partir d'une procédure) impérativement avant la boucle d'évènements Repeat:WaitWindowEvent():Until, en t'assurant que la variable "hook" soit bien définie en Global pour qu'elle puisse être récupérée dans la procédure Hook().

Re: gestion clavier azerty et chiffres sur pc portable

Publié : mer. 25/oct./2023 20:51
par boddhi
Une approche très légèrement différente, avec activation ou arrêt de l'interception des touches 0 à 9 du clavier simple :

Code : Tout sélectionner

EnableExplicit

Global IDProcInterceptionClavier
#Fenetre=0
Enumeration
  #Gadget1
  #Gadget2
EndEnumeration

Procedure   Fc_InterceptionEvenementClavier(ArgCodeHook,ArgCodeTouche,ArgLParam)
  If ArgCodeHook>=0
    If Not ArgLParam & $80000000 ; Touche enfoncée
      If ArgCodeTouche>=#VK_0 And ArgCodeTouche<=#VK_9
        ArgCodeTouche+#VK_NUMPAD0-48
        keybd_event_(ArgCodeTouche,0,0,0)
        keybd_event_(ArgCodeTouche,0,#KEYEVENTF_KEYUP,0) 
        ProcedureReturn -1
      EndIf
    EndIf
  EndIf
  ProcedureReturn CallNextHookEx_(IDProcInterceptionClavier,ArgCodeHook,ArgCodeTouche,ArgLParam)
EndProcedure
;
Procedure   Pc_ActivationOuArretInterceptionClavier()
  Protected StatutGadget=GetGadgetData(#Gadget2)
  
  Select StatutGadget
    Case 0
      If Not IDProcInterceptionClavier
        Debug "Activation interception"
        IDProcInterceptionClavier=SetWindowsHookEx_(#WH_KEYBOARD,@Fc_InterceptionEvenementClavier(),#Null,GetCurrentThreadId_())
        SetGadgetText(#Gadget2,"Ne plus intercepter")
        SetGadgetData(#Gadget2,1)
      EndIf
    Case 1
      If IDProcInterceptionClavier
        Debug "Arrêt interception"
        UnhookWindowsHookEx_(IDProcInterceptionClavier)
        IDProcInterceptionClavier=0
        SetGadgetText(#Gadget2,"Intercepter")
        SetGadgetData(#Gadget2,0)
      EndIf
  EndSelect
  SetActiveGadget(#Gadget1)
EndProcedure
;
If OpenWindow(#Fenetre,0,0,400,80,"Test clavier 0 à 9",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  StringGadget(#Gadget1,10,10,380,25,"")
  ButtonGadget(#Gadget2,140,45,120,20,"")
  ; Activation interception clavier
  Pc_ActivationOuArretInterceptionClavier()
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Gadget2
            Pc_ActivationOuArretInterceptionClavier()
        EndSelect
      Case #PB_Event_CloseWindow
        Break
    EndSelect
  ForEver
  ; Arrêt interception clavier
  Pc_ActivationOuArretInterceptionClavier()
EndIf

Re: gestion clavier azerty et chiffres sur pc portable

Publié : lun. 30/oct./2023 14:29
par brossden

Re: gestion clavier azerty et chiffres sur pc portable

Publié : ven. 03/nov./2023 15:30
par cage
Bonjour a tous,

Lorsqu'on rencontre un problème avec le clavier de son PC, il existe la possibilité d'utiliser un clavier virtuel comme sur Android

Lancer le clavier virtuel : Win+R -> Ouvrir : osk.exe (On Screen Keyboard)

Autre possibilité, clic droit sur la barre des tâches et cocher Afficher le bouton clavier tactile (Win10 et Win11 ?)

cage