home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 18
/
CD_ASCQ_18_111294_W.iso
/
dos
/
prg
/
c
/
x_lib10
/
xk.doc
< prev
next >
Wrap
Text File
|
1994-10-20
|
7KB
|
228 lines
════════════════════════════════════════════════════════════════════════════
LE GESTIONNAIRE DE CLAVIER
────────────────────────────────────────────────────────────────────────────
présentation
────────────
Le gestionnaire de clavier offre un ensemble de services encapsulés dans
la classe XKeyMgr et accessibles via son instance globale xk.
La classe XKeyMgr n'est constituée que de membres statiques et n'est pas
dérivable.
construction du gestionnaire
────────────────────────────
Le gestionnaire est construit automatiquement avant la fonction main()
grâce à son instance globale xk.
Après sa construction, un appel à init() est nécessaire pour initialiser
le gestionnaire.
destruction du gestionnaire
───────────────────────────
Le gestionnaire est détruit automatiquement en fin d'exécution.
Avant sa destruction, un appel à init() est nécessaire pour quitter le
gestionnaire.
événements en provenance du clavier
───────────────────────────────────
Les événements sont conservés dans la structure XKey de format :
int val ; idenficateur de l'événement
int key ; caractère récupéré
Le gestionnaire reconnaît les événements suivants :
-- xk_IDLE
aucun caractère récupéré
key : indéfini
-- xk_CHAR
un caractère récupéré
Si un caractère normal est récupéré, sa partie haute est annulée et sa
valeur est donc inférieure à 256.
Si une touche étendue est récupérée, sa partie basse est toujours à zéro
et sa valeur supérieure à 255.
indicateur ctrl-break
─────────────────────
L'utilisation de la combinaison ctrl-break génére le caractère nul en
même temps qu'elle arme un indicateur du BIOS.
Le gestionnaire refusant de prendre en compte le caractère nul, le seul
moyen de tester ctrl-break est d'utiliser stop().
constantes utiles
─────────────────
Le fichier xk.h définit un certain nombre de constantes pour les touches
normales et étendues les plus usuelles :
╒══════════════════════════════╤════════════════════════════════════╕
│ constante utilisation │ constante utilisation │
├──────────────────────────────┼────────────────────────────────────┤
│ xk_cA..Z <ctrl-A..Z> │ │
│ xk_aA..Z <alt-A..Z> │ │
│ xk_a1..0 <alt-1..0> │ │
│ xk_F... <F1..10> │ xk_sF... <shift-F1..10> │
│ xk_aF... <alt-F1..10> │ xk_cF... <ctrl-F1..10> │
│ xk_BACK <back> │ xk_cBACK <ctrl-back> │
│ xk_RET <return> │ xk_cRET <ctrl-return> │
│ xk_SPC <space> │ │
│ xk_ESC <escape> │ │
│ xk_TAB <tab> │ xk_sTAB <shift-tab> │
│ xk_HOME <home> │ xk_cHOME <ctrl-home> │
│ xk_UP <up> │ │
│ xk_PGUP <pgup> │ xk_cPGUP <ctrl-pgup> │
│ xk_LEFT <left> │ xk_cLEFT <ctrl-left> │
│ xk_RIGHT <right> │ xk_cRIGHT <ctrl-right> │
│ xk_END <end> │ xk_cEND <ctrl-end> │
│ xk_DOWN <down> │ │
│ xk_PGDN <pgdn> │ xk_cPGDN <ctrl-pgdn> │
└──────────────────────────────┴────────────────────────────────────┘
index des fonctions
───────────────────
╒═══════════════════════════════════════════════════════════════════╕
│ fonction utilisation │
├───────────────────────────────────────────────────────────────────┤
│ init initialise ou quitte le gestionnaire │
│ next renvoie le prochain événement │
│ stat renvoie l'état du clavier │
│ stop renvoie l'état de l'indicateur ctrl-break │
└───────────────────────────────────────────────────────────────────┘
════════════════════════════════════════════════════════════════════════════
XKeyMgr::init public:static
initialise ou quitte le gestionnaire
────────────────────────────────────────────────────────────────────────────
utilisation
void init (int cmd)
paramètres
cmd commande d'initialisation
description
init() initialise ou quitte le gestionnaire.
Si cmd est non nul, init() initialise le gestionnaire par les étapes :
-- sauvegarde des vecteurs d'interruption 0x1B et 0x23 assurant
l'arrêt par ctrl-break,
-- effacement de l'indicateur ctrl-break par stop().
Si cmd est nul, init() quitte le gestionnaire par les étapes :
-- restauration des vecteurs d'interruption 0x1B et 0x23.
init() est sans effet si l'état demandé est déjà celui du gestionnaire.
voir aussi
XKeyMgr::stop()
════════════════════════════════════════════════════════════════════════════
XKeyMgr::next public:static
renvoie le prochain événement
────────────────────────────────────────────────────────────────────────────
utilisation
int next (XKey& key)
paramètres
key référence de XKey
assertions
key != 0
description
next() renvoie le prochain événement en provenance du clavier.
next() appelle simplement stat() pour déterminer si un événement est
disponible depuis le clavier.
voir aussi
XKeyMgr::stat()
════════════════════════════════════════════════════════════════════════════
XKeyMgr::stat public:static
renvoie l'état du clavier
────────────────────────────────────────────────────────────────────────────
utilisation
int stat (XKey& key)
paramètres
key référence de XKey
assertions
key != 0
description
stat() renvoie l'état du clavier dans la structure key.
Si un caractère est présent dans le tampon du clavier, stat() le retire
pour le conserver dans key.key et place xk_CHAR dans key.val.
Si aucun caractère n'est en attente, stat() place xk_IDLE dans key.val
sans affecter key.key.
stat() renvoie l'identificateur key.val.
voir aussi
XKeyMgr::next()
════════════════════════════════════════════════════════════════════════════
XKeyMgr::stop public:static
renvoie l'état de l'indicateur ctrl-break
────────────────────────────────────────────────────────────────────────────
utilisation
int stop (void)
description
stop() renvoie l'état de l'indicateur ctrl-break, soit une valeur non
nulle si la combinaison ctrl-break a été utilisée depuis le précédent
appel de la fonction, soit 0 si l'indicateur n'est pas armé.
Dans tous les cas, l'indicateur est effacé.