Merci 🙂
En effet c'est plus simple d'utiliser une image pré-existante que de générer à la volée un clavier miniature interactif.
Je n'ai pas pu faire tourner le code malheureusement...
Je vais devoir me pencher sur le sujet.
/////////////////////////
édit :
J'ai finalement codé quelque chose qui répond à mon besoin selon cette approche simplifiée (pas de clavier généré à la volée et pas de mise en couleur des touches lors de la saisie) :
installation sur le poste de travail :
- sous Win 10
- installer AutoHotKey version 2.0
- coller le code ci-dessous dans un fichier txt et renommer l'extension en .ahk
- déposer les images des couches sur votre disque dur (exemples fournis en bas du post)
- éditer le code (transparence, choix du moniteur en cas de multi-écran et emplacement et nom des images des couches)
- lancer le code en double-cliquant le fichier .ahk
(vous verrez une icône dans le Tray Menu)
- une seule touche pour afficher l'aide-mémoire et selon l'état des touches de changement de couche, l'image est contextuelle. C'est plus ergonomique et il suffit d'une seule touche "aide-mémoire".
Dans l'exemple du code ci-dessous c'est la touche F12
utilisation
un appui sur F12 et la disposition du clavier s'affiche
un nouvel appui sur F12 et elle disparaît
si une touche (Shift, Alt, Ctrl ou AltrGr) est appuyée au moment où l'on appuie sur la touche aide-mémoire, alors on verra l'image de la disposition de la couche selon le modifier
si l'image est à l'écran et que l'on appelle l'aide-mémoire mais avec une autre touche de modification, l'image est mise à jour : cela permet de circuler dans les couches.
Pour la faire disparaître (si c'est la couche Ctrl), il faut retaper la même combinaison Ctrl + aide-mémoire
Voilà
j'espère que cela vous aidera aussi 🙂
La partie de code complexe qui gère la transparence et l'affichage provient de l'exemple sur le site autoHoKey (dernier lien du post précédent).
Que c'est pénible de coder dans notepad sans mise en forme ni coloration syntaxique...
Voici le code après avoir passé un petit coup de mise en forme par ici
http://sl5.it/SL5_preg_contentFinder/examples/AutoHotKey/converts_your_autohotkey_code_into_pretty_indented_source_code.php
et en-dessous les images à déposer dans C: pour que l'exemple fonctionne directement sans adaptation de votre part
/*
aide-mémoire pop-up
choix du niveau de transparence
choix du moniteur d'affichage (si multi-écrans)
*/
; 0 makes the window invisible while 255 makes it opaque.
global niveauTransparence := 200
; Put "1" to set the keyboard on second monitor, "2" on third monitor, etc... (blank = primary monitor):
global k_Monitor = 1
; chemin des fichiers image des 5 couches
global CheminLayer := "C:\Optimot_Ergo_layer.jpg"
global CheminLayerShift := "C:\Optimot_Ergo_layerShift.jpg"
global CheminLayerAlt := "C:\Optimot_Ergo_layerAlt.jpg"
global CheminLayerCtrl := "C:\Optimot_Ergo_layerCtrl.jpg"
global CheminLayerAltGr := "C:\Optimot_Ergo_layerAltGr.jpg"
/*
fin des paramétrages
*/
#SingleInstance Force ; C'est pratique en phase de développement : en relançant le nouveau script, on écrase l'ancien qui tournait. Sinon on obtient une fenêtre qu'il faut acquitter.
aide :=0 ; touche aide-mémoire seule
aideShift :=0 ; touche aide-mémoire et Shift - symbole +
aideAlt :=0 ; touche aide-mémoire et Alt - symbole !
aideCtrl :=0 ; touche aide-mémoire et Ctrl - symbole ^
aideAltGr :=0 ; touche aide-mémoire et AltGr - symbole <^>!
; on combine la touche "aide-mémoire" avec les touches de couche (Alt, Shift, ...) pour sélectionner l'image de la couche correspondante
F12:: ; touche Aide-mémoire seule
{
if (aideShift+aideAlt+aideCtrl+aideAltGr > 0) ; on vérifie si une image est déjà affichée
{
; dans ce cas, on l'efface
Gui, Destroy
aideShift :=0
aideAlt :=0
aideCtrl :=0
aideAltGr :=0
}
if (aide=0) {
AffichageImage(CheminLayer)
aide :=1
}else {
Gui, Destroy
aide :=0
}
return
}
+F12:: ; touche Aide-mémoire avec Shift
{
if (aide+aideAlt+aideCtrl+aideAltGr > 0) ; on vérifie si une image est déjà affichée
{
; dans ce cas, on l'efface
Gui, Destroy
aide :=0
aideAlt :=0
aideCtrl :=0
aideAltGr :=0
}
if (aideShift=0) {
AffichageImage(CheminLayerShift)
aideShift :=1
}else {
Gui, Destroy
aideShift :=0
}
return
}
!F12:: ; touche Aide-mémoire avec Alt
{
if (aide+aideShift+aideCtrl+aideAltGr > 0) ; on vérifie si une image est déjà affichée
{
; dans ce cas, on l'efface
Gui, Destroy
aide :=0
aideShift :=0
aideCtrl :=0
aideAltGr :=0
}
if (aideAlt=0) {
AffichageImage(CheminLayerAlt)
aideAlt :=1
}else {
Gui, Destroy
aideAlt :=0
}
return
}
^F12:: ; touche Aide-mémoire avec Ctrl
{
if (aide+aideShift+aideAlt+aideAltGr > 0) ; on vérifie si une image est déjà affichée
{
; dans ce cas, on l'efface
Gui, Destroy
aide :=0
aideShift :=0
aideAlt :=0
aideAltGr :=0
}
if (aideCtrl=0) {
AffichageImage(CheminLayerCtrl)
aideCtrl :=1
}else {
Gui, Destroy
aideCtrl :=0
}
return
}
<^>!F12:: ; touche Aide-mémoire avec AltGr
{
if (aide+aideShift+aideAlt+aideCtrl > 0) ; on vérifie si une autre image est déjà affichée
{
; dans ce cas, on l'efface
Gui, Destroy
aide :=0
aideShift :=0
aideAlt :=0
aideCtrl :=0
}
if (aideAltGr=0) {
AffichageImage(CheminLayerAltGr)
aideAltGr:=1
}else {
Gui, Destroy
aideAltGr:=0
}
return
}
AffichageImage(CheminDuFichier)
{
Gui, Add, Picture,,%CheminDuFichier%
;---- Show the keyboard centered but not active (to maintain the current window's focus):
Gui, Show, xCenter NoActivate, Virtual Keyboard View
Gui.Opt(AlwaysOnTop)
; Get the window's Width and Height through the GUI's name.
WinGetPos,,, k_WindowWidth, k_WindowHeight, Virtual Keyboard View
;---- Position the keyboard at the bottom of the screen while avoiding the taskbar:
SysGet, k_WorkArea, MonitorWorkArea, %k_Monitor%
; Calculate window's X-position:
k_WindowX = %k_WorkAreaRight%
k_WindowX -= %k_WorkAreaLeft% ; Now k_WindowX contains the width of this monitor.
k_WindowX -= %k_WindowWidth%
k_WindowX /= 2 ; Calculate position to center it horizontally.
; The following is done in case the window will be on a non-primary monitor
; or if the taskbar is anchored on the left side of the screen:
k_WindowX += %k_WorkAreaLeft%
; Calculate window's Y-position:
k_WindowY = %k_WorkAreaBottom%
k_WindowY -= %k_WindowHeight%
; Move the window to the bottom-center position of the monitor.
WinMove, Virtual Keyboard View,, %k_WindowX%, %k_WindowY%
; Make the window transparent (the number regulates the transparency).
WinSet, Transparent, %niveauTransparence%, Virtual Keyboard View
Return
}
https://zupimages.net/up/23/02/lt75.jpg
https://zupimages.net/up/23/02/2m9o.jpg
https://zupimages.net/up/23/02/rf1h.jpg
https://zupimages.net/up/23/02/t2c8.jpg
https://zupimages.net/up/23/02/qj2h.jpg