IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 1 fois
Vote des utilisateurs
0 
0 
Détails
Éditeur : L'équipe C
Licence : Non renseignée
Mise en ligne le 30 novembre 2010
Plate-formes : Linux, Mac, Windows
Langue : Français
Référencé dans
Navigation

[VT100] Positionnement curseur et code ANSI

[VT100] Positionnement curseur et code ANSI
Avatar de Elijha
Membre éclairé https://www.developpez.com
Le 05/04/2011 à 23:58
Bonjour,

Voici une version avec quelques nouvelles séquences (j'y ai ajouté les quelques touches aussi)
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
/*! 
 * \defgroup grpVT100 VT100 
 * @{ 
 */ 
// VT100 : ANSI escape code 
#define CSI             "\x1B["             /*!< Séquence escape ANSI */ 
#if defined(_MSDOS) || defined(_WIN32) || defined(__CYGWIN32__) || defined(__CYGWIN__) 
    #define CRLF        "\n\r"              /*!< Retour à la ligne (WINDOWS) */ 
#else 
    #define CRLF        "\n"                /*!< Retour à la ligne (LINUX) */ 
#endif 
 
/*! 
 * \defgroup actecrVT100 Actions sur l'écran d'un terminal 
 * @{ 
 */ 
// VT100 : Actions sur l'écran d'un terminal 
#define CLEAREOL        CSI "K"             /*!< Clear End Of Line */ 
#define CLEARLCR        CSI "0K"            /*!< Clear Line Cursor Right */ 
#define CLEARLCL        CSI "1K"            /*!< Clear Line Cursor Left */ 
#define CLEARELN        CSI "2K"            /*!< Clear Entire LiNe */ 
#define CLEAREOS        CSI "J"             /*!< Clear End Of Screen */ 
#define CLEARCDW        CSI "0J"            /*!< Clear Curseur DoWn */ 
#define CLEARCUP        CSI "1J"            /*!< Clear Curseur UP */ 
#define CLEARSCR        CSI "2J" CSI ";H"   /*!< Clear SCReen */ 
/*! 
 * @} 
 */ 
 
/*! 
 * \defgroup actcurVT100 Actions sur le curseur 
 * @{ 
 */ 
// VT100 : Actions sur le curseur 
#define HIDECURSOR      CSI "?25l"          /*!< Fait disparaitre le curseur */ 
#define SHOWCURSOR      CSI "?25h"          /*!< Affiche le curseur à l'écran */ 
#define GOTOYX          CSI "%.2d;%.2dH"    /*!< Positionne le curseur en (y,x) */ 
#define CURSORFORWARD   CSI "%dC"           /*!< Avance le curseur de %d caractères */ 
#define CURSORBACKWARD  CSI "%dD"           /*!< Recule le curseur de %d caractères */ 
#define SAVCURSORPOS    CSI "s"             /*!< Sauve la position du curseur */ 
#define RESCURSORPOS    CSI "u"             /*!< Restore la position du curseur */ 
#define INSERTMOD       CSI "4h"            /*!< Mode insertion */ 
#define OVERWRITEMOD    CSI "4l"            /*!< Mode de non insertion */ 
#define DECSTBM         CSI "%.2d;%.2dr"    /*!< Positionne la marge haute et basse */ 
/*! 
 * @} 
 */ 
 
/*! 
 * \defgroup actcarVT100 Actions sur les caractères affichables 
 * @{ 
 */ 
// VT100 : Actions sur les caractères affichables 
#define CA_RESET        CSI "00m"           /*!< Reset */ 
#define CA_BRIGHT       CSI "01m"           /*!< Gras */ 
#define CA_NOBRIGHT     CSI "22m"           /*!< Normal */ 
#define CA_UNDERLINE    CSI "04m"           /*!< Souligné */ 
#define CA_NOUNDERLINE  CSI "24m"           /*!< Non souligné */ 
#define CA_BLINKING     CSI "05m"           /*!< Clignotant */ 
#define CA_NOBLINKING   CSI "25m"           /*!< Non clignotant */ 
#define CA_REVERSE      CSI "07m"           /*!< Inverse vidéo */ 
#define CA_NOREVERSE    CSI "27m"           /*!< Vidéo non inversée */ 
#define CA_HIDDEN       CSI "08m"           /*!< Invisible */ 
#define CA_NOHIDDEN     CSI "28m"           /*!< Visible */ 
/*! 
 * @} 
 */ 
 
/*! 
 * \defgroup actcoulVT100 Couleurs du texte 
 * @{ 
 */ 
// VT100 : Couleurs du texte 
#define CL_BLACK        CSI "22;30m"        /*!< Noir */ 
#define CL_RED          CSI "22;31m"        /*!< Rouge */ 
#define CL_GREEN        CSI "22;32m"        /*!< Vert */ 
#define CL_BROWN        CSI "22;33m"        /*!< Brun */ 
#define CL_BLUE         CSI "22;34m"        /*!< Bleu */ 
#define CL_MAGENTA      CSI "22;35m"        /*!< Magenta */ 
#define CL_CYAN         CSI "22;36m"        /*!< Cyan */ 
#define CL_LIGHTGRAY    CSI "22;37m"        /*!< Gris */ 
#define CL_DARKGRAY     CSI "01;30m"        /*!< Gris foncé */ 
#define CL_LIGHTRED     CSI "01;31m"        /*!< Rouge clair */ 
#define CL_LIGHTGREEN   CSI "01;32m"        /*!< Vert clair */ 
#define CL_YELLOW       CSI "01;33m"        /*!< Jaune */ 
#define CL_LIGHTBLUE    CSI "01;34m"        /*!< Bleu clair */ 
#define CL_LIGHTMAGENTA CSI "01;35m"        /*!< Magenta clair */ 
#define CL_LIGHTCYAN    CSI "01;36m"        /*!< Cyan clair */ 
#define CL_WHITE        CSI "01;37m"        /*!< Blanc */ 
/*! 
 * @} 
 */ 
 
/*! 
 * \defgroup actcoulfondVT100 Couleurs du fond 
 * @{ 
 */ 
// VT100 : Couleurs de fond 
#define BK_BLACK        CSI "22;40m"        /*!< Noir */ 
#define BK_RED          CSI "22;41m"        /*!< Rouge */ 
#define BK_GREEN        CSI "22;42m"        /*!< Vert */ 
#define BK_YELLOW       CSI "22;43m"        /*!< Jaune */ 
#define BK_BLUE         CSI "22;44m"        /*!< Bleu */ 
#define BK_MAGENTA      CSI "22;45m"        /*!< Magenta */ 
#define BK_CYAN         CSI "22;46m"        /*!< Cyan */ 
#define BK_WHITE        CSI "22;47m"        /*!< Blanc */ 
/*! 
 * @} 
 */ 
 
/*! 
 * \defgroup deftouchVT100 Quelques touches mono-code 
 * @{ 
 */ 
// VT100 : Quelques touches mono-code 
#define V_DEL           0x08                /*!< Touche DEL */ 
#define V_TAB           0x09                /*!< Touche TABulation */ 
#define V_ENTER         0x0D                /*!< Touche ENTER */ 
#define V_ESC           0x1B                /*!< Touche ESCape */ 
 
#define V_CTRLA         0x01                /*!< Touche CTRL+A */ 
#define V_CTRLB         0x02                /*!< Touche CTRL+B */ 
#define V_CTRLC         0x03                /*!< Touche CTRL+C */ 
#define V_CTRLD         0x04                /*!< Touche CTRL+D */ 
#define V_CTRLE         0x05                /*!< Touche CTRL+E */ 
#define V_CTRLF         0x06                /*!< Touche CTRL+F */ 
#define V_CTRLG         0x07                /*!< Touche CTRL+G */ 
#define V_CTRLH         0x08                /*!< Touche CTRL+H */ 
#define V_CTRLI         0x09                /*!< Touche CTRL+I */ 
#define V_CTRLJ         0x0A                /*!< Touche CTRL+J */ 
#define V_CTRLK         0x0B                /*!< Touche CTRL+K */ 
#define V_CTRLL         0x0C                /*!< Touche CTRL+L */ 
#define V_CTRLM         0x0D                /*!< Touche CTRL+M - Attention: identique à V_ENTER */ 
#define V_CTRLN         0x0E                /*!< Touche CTRL+N */ 
#define V_CTRLO         0x0F                /*!< Touche CTRL+O */ 
#define V_CTRLP         0x10                /*!< Touche CTRL+P */ 
#define V_CTRLQ         0x11                /*!< Touche CTRL+Q */ 
#define V_CTRLR         0x12                /*!< Touche CTRL+R */ 
#define V_CTRLS         0x13                /*!< Touche CTRL+S */ 
#define V_CTRLT         0x14                /*!< Touche CTRL+T */ 
#define V_CTRLU         0x15                /*!< Touche CTRL+U */ 
#define V_CTRLV         0x16                /*!< Touche CTRL+V */ 
#define V_CTRLW         0x17                /*!< Touche CTRL+W */ 
#define V_CTRLX         0x18                /*!< Touche CTRL+X */ 
#define V_CTRLY         0x19                /*!< Touche CTRL+Y */ 
#define V_CTRLZ         0x1A                /*!< Touche CTRL+Z */ 
/*! 
 * @} 
 */ 
 
/*! 
 * \defgroup def3touchVT100 Quelques touches triple-code 
 * @{ 
 */ 
// VT100 : Quelques touches triple-code 
/* 
    Structure d'une touche : ESC<code1><code2> 
    Exp : Flêche Haute = ESC[A  ==> V_ESC + VCD1 + V_FLCH 
    Exp : Touche F1    = ESCOA  ==> V_ESC + VCD2 + V_F1 
*/ 
#define VCD1    '['             /*!< Code 1 */ 
  #define V_FLCH        'A'     /*!< Flêche haute */ 
  #define V_FLCB        'B'     /*!< Flêche basse */ 
  #define V_FLCD        'C'     /*!< Flêche droite */ 
  #define V_FLCG        'D'     /*!< Flêche gauche */ 
 
#define VCD2    'O'             /*!< Code 2 */ 
  #define V_F1          'P'     /*!< Touche F1 */ 
  #define V_F2          'Q'     /*!< Touche F2 */ 
  #define V_F3          'R'     /*!< Touche F3 */ 
  #define V_F4          'S'     /*!< Touche F4 */ 
  #define V_F5          'T'     /*!< Touche F5 */ 
  #define V_F6          'U'     /*!< Touche F6 */ 
  #define V_F7          'V'     /*!< Touche F7 */ 
  #define V_F8          'W'     /*!< Touche F8 */ 
  #define V_F9          'X'     /*!< Touche F9 */ 
  #define V_F10         'Y'     /*!< Touche F10 */ 
  #define V_F11         'Z'     /*!< Touche F11 */ 
  #define V_F12         'A'     /*!< Touche F12 */ 
/*! 
 * @} 
 * @} 
 */
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.