« Utilisateur:LeBret/Remplacer AltGr par Kana » : différence entre les versions

De Disposition de clavier bépo
m (création)
 
(1ère version)
Ligne 1 : Ligne 1 :
<span style=" font-size: 1.4em; color: red;">⚠ en construction ⚠</span>
Bépo définit plusieurs caractères avec le modificateur {{t|AltGr}}. Or ce modificateur est tout simplement un {{tt|Ctrl|Alt}}. On peut s’en rendre compte en utilisant le {{t|Alt}} gauche : {{tt|AltGr|e}} et {{tt|Ctrl|Alt|e}} donnent tout les deux €.
Bépo définit plusieurs caractères avec le modificateur {{t|AltGr}}. Or ce modificateur est tout simplement un {{tt|Ctrl|Alt}}. On peut s’en rendre compte en utilisant le {{t|Alt}} gauche : {{tt|AltGr|e}} et {{tt|Ctrl|Alt|e}} donnent tout les deux €.


Ligne 4 : Ligne 6 :


Une solution est d’utiliser le modificateur {{t|Kana}} à la place {{t|AltGr}}. Problème, celui-ci n’est pas proposé par l’interface de MSKLC, l’utilitaire qui génére les [[Pilote Windows|pilotes Windows]].
Une solution est d’utiliser le modificateur {{t|Kana}} à la place {{t|AltGr}}. Problème, celui-ci n’est pas proposé par l’interface de MSKLC, l’utilitaire qui génére les [[Pilote Windows|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 {{V|lignes en vert}} sont à ajouter. Les {{R|<s>lignes en rouge</s>}} sont à supprimer.
; bepo.H : Ajoutez à la fin du fichier :
{{V|#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      },
    {{R|<s>{ VK_MENU    ,  KBDALT      },</s>}}
    {{V|{ VK_KANA    ,  KBDKANA      },}}
    { 0          ,  0          }
};
static ALLOC_SECTION_LDATA MODIFIERS CharModifiers = {
    &aVkToBits[0],
    {{R|<s>7,</s>}}
    {{V|9,}}
    {
    //  Modification# //  Keys Pressed
    //  ============= // =============
        0,            //
        1,            // Shift
        2,            // Control
        SHFT_INVALID, // Shift + Control
        {{R|<s>SHFT_INVALID, // Menu</s>}}
        {{R|<s>SHFT_INVALID, // Shift + Menu</s>}}
        {{R|<s>3,            // Control + Menu</s>}}
        {{R|<s>4            // Shift + Control + Menu</s>}}
        {{V|3,            // kana}}
        {{V|4            // kana + shift}}
      }
};
Toute la table <code>aVkToWch5</code> est à supprimer.
{{R|<s><nowiki>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  },</nowiki></s>
    ...
<s><nowiki>  {VK_DECIMAL  ,0      ,'.'      ,'.'      ,WCH_NONE ,WCH_NONE ,WCH_NONE },
  {0            ,0      ,0        ,0        ,0        ,0        ,0        }
};</nowiki></s>}}
Il faut la remplacer par la table <code>aVkToWch7</code>. Il s’agit en fait de la même table avec simplement deux colonnes en plus dont toutes les valeurs sont <code>WCH_NONE</code>.
{{V|<nowiki>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        }
};</nowiki>}}
Cas particulier : l’attribut <code>CAPLOKALTGR</code> ne sert plus à rien, il peut donc être supprimer. Je n’ai pas trouvé l’équivalent pour {{t|Kana}} (<code>KANALOK</code> 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.
{{R|<s>{'O'    ,CAPLOK {{!}} CAPLOKALTGR,'o'      ,'O'      ,WCH_NONE ,0x0153  ,0x0152  },</s>}}
{{V|{'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]) },
    {{R|<s>{  (PVK_TO_WCHARS1)aVkToWch5, 5, sizeof(aVkToWch5[0]) },</s>}}
    {{V|{  (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
    */
    {{R|<s>MAKELONG(KLLF_ALTGR, KBD_VERSION),</s>}}
    {{V|MAKELONG(0, KBD_VERSION),}}
== Création des programmes d’installation ==
Consultez la page des [[Pilote Windows|pilotes Windows]].

Version du 21 septembre 2011 à 21:40

⚠ 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

  1. Installer MSKLC
  2. 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 + Control 
        SHFT_INVALID, // Menu
        SHFT_INVALID, // Shift + Menu
        3,            // Control + Menu
        4             // Shift + Control + Menu
        3,            // 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.