This source file includes following definitions.
- show_mouse_pointer
- init_mouse
- enable_mouse
- disable_mouse
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 #include <config.h>
33
34 #include <stdio.h>
35 #include <sys/types.h>
36 #include <unistd.h>
37
38 #include "lib/global.h"
39
40 #include "tty.h"
41 #include "tty-internal.h"
42 #include "mouse.h"
43 #include "key.h"
44
45
46
47 Mouse_Type use_mouse_p = MOUSE_NONE;
48 gboolean mouse_enabled = FALSE;
49 int mouse_fd =
50 -1;
51 const char *xmouse_seq;
52 const char *xmouse_extended_seq;
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 void
68 show_mouse_pointer (int x, int y)
69 {
70 #ifdef HAVE_LIBGPM
71 if (use_mouse_p == MOUSE_GPM)
72 Gpm_DrawPointer (x, y, gpm_consolefd);
73 #else
74 (void) x;
75 (void) y;
76 #endif
77 }
78
79
80
81 void
82 init_mouse (void)
83 {
84 switch (use_mouse_p)
85 {
86 #ifdef HAVE_LIBGPM
87 case MOUSE_NONE:
88 use_mouse_p = MOUSE_GPM;
89 break;
90 #endif
91
92 case MOUSE_XTERM_NORMAL_TRACKING:
93 case MOUSE_XTERM_BUTTON_EVENT_TRACKING:
94 if (xmouse_seq != NULL)
95 define_sequence (MCKEY_MOUSE, xmouse_seq, MCKEY_NOACTION);
96 if (xmouse_extended_seq != NULL)
97 define_sequence (MCKEY_EXTENDED_MOUSE, xmouse_extended_seq, MCKEY_NOACTION);
98 break;
99
100 default:
101 break;
102 }
103
104 enable_mouse ();
105 }
106
107
108
109 void
110 enable_mouse (void)
111 {
112 if (mouse_enabled)
113 return;
114
115 switch (use_mouse_p)
116 {
117 #ifdef HAVE_LIBGPM
118 case MOUSE_GPM:
119 {
120 Gpm_Connect conn;
121
122 conn.eventMask = ~GPM_MOVE;
123 conn.defaultMask = GPM_MOVE;
124 conn.minMod = 0;
125 conn.maxMod = 0;
126
127 mouse_fd = Gpm_Open (&conn, 0);
128 if (mouse_fd == -1)
129 {
130 use_mouse_p = MOUSE_NONE;
131 return;
132 }
133 mouse_enabled = TRUE;
134 }
135 break;
136 #endif
137
138 case MOUSE_XTERM_NORMAL_TRACKING:
139
140 printf (ESC_STR "[?1001s");
141
142
143 printf (ESC_STR "[?1000h");
144
145
146 printf (ESC_STR "[?1006h");
147
148 fflush (stdout);
149 mouse_enabled = TRUE;
150 break;
151
152 case MOUSE_XTERM_BUTTON_EVENT_TRACKING:
153
154 printf (ESC_STR "[?1001s");
155
156
157 printf (ESC_STR "[?1002h");
158
159
160 printf (ESC_STR "[?1006h");
161
162 fflush (stdout);
163 mouse_enabled = TRUE;
164 break;
165
166 default:
167 break;
168 }
169 }
170
171
172
173 void
174 disable_mouse (void)
175 {
176 if (!mouse_enabled)
177 return;
178
179 mouse_enabled = FALSE;
180
181 switch (use_mouse_p)
182 {
183 #ifdef HAVE_LIBGPM
184 case MOUSE_GPM:
185 Gpm_Close ();
186 break;
187 #endif
188 case MOUSE_XTERM_NORMAL_TRACKING:
189
190 printf (ESC_STR "[?1006l");
191
192
193 printf (ESC_STR "[?1000l");
194
195
196 printf (ESC_STR "[?1001r");
197
198 fflush (stdout);
199 break;
200 case MOUSE_XTERM_BUTTON_EVENT_TRACKING:
201
202 printf (ESC_STR "[?1006l");
203
204
205 printf (ESC_STR "[?1002l");
206
207
208 printf (ESC_STR "[?1001r");
209
210 fflush (stdout);
211 break;
212 default:
213 break;
214 }
215 }
216
217