Utilisateur:LeBret/Remplacer AltGr par Kana
⚠ en construction ⚠
Bépo définit plusieurs caractères avec le modificateur clavier bépoAltGr. Or ce modificateur est tout simplement un clavier bépoCtrl+clavier bépoAlt. On peut s’en rendre compte en utilisant le clavier bépoAlt gauche : clavier bépoAltGr+clavier bépoe et clavier bépoCtrl+clavier bépoAlt+clavier bépoe donnent tout les deux €.
En générale ce n’est pas trop gênant, sauf pour les applications qui définissent ce type de raccourci clavier (p.ex. Eclipse).
Une solution est d’utiliser le modificateur clavier bépoKana à la place clavier bépoAltGr. Problème, celui-ci n’est pas proposé par l’interface de MSKLC, l’utilitaire qui génére les pilotes Windows.
Prérequis
- Installer MSKLC
- Récupérer le bepo.klc
Création des DLL
Génération des fichier sources .C et .H
kbdutool.exe -u -s bepo.klc
Cette commande crée les fichiers suivants : bepo.C, bepo.DEF, bepo.H, bepo.RC
Modification des sources. Les lignes en vert sont à ajouter. Les lignes en rouge sont à supprimer.
- bepo.H
- Ajoutez à la fin du fichier :
#undef X38
#define X38 _EQ( KANA )
X38 designe la touche Alt gauche.
- bepo.C
static ALLOC_SECTION_LDATA VK_TO_BIT aVkToBits[] = { { VK_SHIFT , KBDSHIFT }, { VK_CONTROL , KBDCTRL },{ VK_MENU , KBDALT },{ VK_KANA , KBDKANA }, { 0 , 0 } };
static ALLOC_SECTION_LDATA MODIFIERS CharModifiers = { &aVkToBits[0],7,9, { // Modification# // Keys Pressed // ============= // ============= 0, // 1, // Shift 2, // Control SHFT_INVALID, // Shift + ControlSHFT_INVALID, // MenuSHFT_INVALID, // Shift + Menu3, // Control + Menu4 // Shift + Control + Menu3, // kana 4 // kana + shift } };
Toute la table aVkToWch5
est à supprimer.
static ALLOC_SECTION_LDATA VK_TO_WCHARS5 aVkToWch5[] = {
// | | Shift | Ctrl | Ctl+Alt|S+Ctl+Alt|
// |=========|=========|=========|=========|=========|
{VK_OEM_7 ,0 ,'$' ,'#' ,WCH_NONE ,0x2013 ,0x00b6 },
{'1' ,CAPLOK ,'\"' ,'1' ,WCH_NONE ,0x2014 ,0x201e },
...
{VK_DECIMAL ,0 ,'.' ,'.' ,WCH_NONE ,WCH_NONE ,WCH_NONE },
{0 ,0 ,0 ,0 ,0 ,0 ,0 }
};
Il faut la remplacer par la table aVkToWch7
. Il s’agit en fait de la même table avec simplement deux colonnes en plus dont toutes les valeurs sont WCH_NONE
.
static ALLOC_SECTION_LDATA VK_TO_WCHARS7 aVkToWch7[] = {
// | | Shift | Ctrl | Ctl+Alt|S+Ctl+Alt| Kana | S+Kana |
// |=========|=========|=========|=========|=========|=========|=========|
{VK_OEM_7 ,0 ,'$' ,'#' ,WCH_NONE ,WCH_NONE ,WCH_NONE ,0x2013 ,0x00b6 },
{'1' ,CAPLOK ,'\"' ,'1' ,WCH_NONE ,WCH_NONE ,WCH_NONE ,0x2014 ,0x201e },
...
{VK_DECIMAL ,0 ,'.' ,'.' ,WCH_NONE ,WCH_NONE ,WCH_NONE ,WCH_NONE ,WCH_NONE },
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 }
};
Cas particulier : l’attribut CAPLOKALTGR
ne sert plus à rien, il peut donc être supprimer. Je n’ai pas trouvé l’équivalent pour clavier bépoKana (KANALOK
n’a pas le même comportement) si vous avez des infos, écrivez-moi. Heureusement cet attribut est peu utilisé. Ci-dessous un exemple sur la lettre O.
{'O' ,CAPLOK | CAPLOKALTGR,'o' ,'O' ,WCH_NONE ,0x0153 ,0x0152 },{'O' ,CAPLOK ,'o' ,'O' ,WCH_NONE ,WCH_NONE ,WCH_NONE ,0x0153 ,0x0152 },
Il faut ensuite déclarer cette nouvelle table à la place de l’ancienne :
static ALLOC_SECTION_LDATA VK_TO_WCHAR_TABLE aVkToWcharTable[] = { { (PVK_TO_WCHARS1)aVkToWch3, 3, sizeof(aVkToWch3[0]) },{ (PVK_TO_WCHARS1)aVkToWch5, 5, sizeof(aVkToWch5[0]) },{ (PVK_TO_WCHARS1)aVkToWch7, 7, sizeof(aVkToWch7[0]) }, { (PVK_TO_WCHARS1)aVkToWch2, 2, sizeof(aVkToWch2[0]) }, { (PVK_TO_WCHARS1)aVkToWch1, 1, sizeof(aVkToWch1[0]) }, { NULL, 0, 0 }, };
Enfin il n’est plus nécessaire de demander un traitement particulier pour le Alt gauche (AltGr).
/* * Locale-specific special processing */MAKELONG(KLLF_ALTGR, KBD_VERSION),MAKELONG(0, KBD_VERSION),
Création des programmes d’installation
Consultez la page des pilotes Windows.