Subversion Repositories HelenOS

Rev

Rev 2479 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2479 Rev 3905
Line 120... Line 120...
120
    // number of scan codes in #buf
120
    // number of scan codes in #buf
121
    static int count = 0;  
121
    static int count = 0;  
122
 
122
 
123
    /*
123
    /*
124
    // Preserve for detecting scan codes.
124
    // Preserve for detecting scan codes.
125
    keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf));
125
    keybuffer_push0(keybuffer, to_hex((scan_code>>4)&0xf));
126
    keybuffer_push(keybuffer, to_hex(scan_code&0xf));
126
    keybuffer_push0(keybuffer, to_hex(scan_code&0xf));
127
    keybuffer_push(keybuffer, 'X');
127
    keybuffer_push0(keybuffer, 'X');
128
    keybuffer_push(keybuffer, 'Y');
128
    keybuffer_push0(keybuffer, 'Y');
129
    return 1;
129
    return 1;
130
    */
130
    */
131
 
131
 
132
    if (scan_code == '\r') {
132
    if (scan_code == '\r') {
133
        scan_code = '\n';
133
        scan_code = '\n';
134
    }
134
    }
135
   
135
   
136
    if (scan_code == GXEMUL_KEY_F5_F12_START_CODE) {
136
    if (scan_code == GXEMUL_KEY_F5_F12_START_CODE) {
137
        switch (buf) {
137
        switch (buf) {
138
        case GXEMUL_KEY_F5:
138
        case GXEMUL_KEY_F5:
139
            keybuffer_push(keybuffer,FUNCTION_KEYS | 5);
139
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 5);
140
            buf = count = 0;
140
            buf = count = 0;
141
            return 1;
141
            return 1;
142
        case GXEMUL_KEY_F6:
142
        case GXEMUL_KEY_F6:
143
            keybuffer_push(keybuffer,FUNCTION_KEYS | 6);
143
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 6);
144
            buf = count = 0;
144
            buf = count = 0;
145
            return 1;
145
            return 1;
146
        case GXEMUL_KEY_F7:
146
        case GXEMUL_KEY_F7:
147
            keybuffer_push(keybuffer,FUNCTION_KEYS | 7);
147
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 7);
148
            buf = count = 0;
148
            buf = count = 0;
149
            return 1;
149
            return 1;
150
        case GXEMUL_KEY_F8:
150
        case GXEMUL_KEY_F8:
151
            keybuffer_push(keybuffer,FUNCTION_KEYS | 8);
151
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 8);
152
            buf = count = 0;
152
            buf = count = 0;
153
            return 1;
153
            return 1;
154
        case GXEMUL_KEY_F9:
154
        case GXEMUL_KEY_F9:
155
            keybuffer_push(keybuffer,FUNCTION_KEYS | 9);
155
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 9);
156
            buf = count = 0;
156
            buf = count = 0;
157
            return 1;
157
            return 1;
158
        case GXEMUL_KEY_F10:
158
        case GXEMUL_KEY_F10:
159
            keybuffer_push(keybuffer,FUNCTION_KEYS | 10);
159
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 10);
160
            buf = count = 0;
160
            buf = count = 0;
161
            return 1;
161
            return 1;
162
        case GXEMUL_KEY_F11:
162
        case GXEMUL_KEY_F11:
163
            keybuffer_push(keybuffer,FUNCTION_KEYS | 11);
163
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 11);
164
            buf = count = 0;
164
            buf = count = 0;
165
            return 1;
165
            return 1;
166
        case GXEMUL_KEY_F12:
166
        case GXEMUL_KEY_F12:
167
            keybuffer_push(keybuffer,FUNCTION_KEYS | 12);
167
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 12);
168
            buf = count = 0;
168
            buf = count = 0;
169
            return 1;
169
            return 1;
170
        default:
170
        default:
171
            keybuffer_push(keybuffer, buf & 0xff);
171
            keybuffer_push0(keybuffer, buf & 0xff);
172
            keybuffer_push(keybuffer, (buf >> 8)  & 0xff);
172
            keybuffer_push0(keybuffer, (buf >> 8)  & 0xff);
173
            keybuffer_push(keybuffer, (buf >> 16) & 0xff);
173
            keybuffer_push0(keybuffer, (buf >> 16) & 0xff);
174
            keybuffer_push(keybuffer, (buf >> 24) & 0xff);
174
            keybuffer_push0(keybuffer, (buf >> 24) & 0xff);
175
            keybuffer_push(keybuffer, scan_code);
175
            keybuffer_push0(keybuffer, scan_code);
176
            buf = count = 0;
176
            buf = count = 0;
177
            return 1;
177
            return 1;
178
        }
178
        }
179
    }
179
    }
180
 
180
 
181
    // add to buffer
181
    // add to buffer
182
    buf |= ((unsigned long) scan_code) << (8 * (count++));
182
    buf |= ((unsigned long) scan_code) << (8 * (count++));
183
   
183
   
184
    if ((buf & 0xff) != (GXEMUL_KEY_F1 & 0xff)) {
184
    if ((buf & 0xff) != (GXEMUL_KEY_F1 & 0xff)) {
185
        keybuffer_push(keybuffer, buf);
185
        keybuffer_push0(keybuffer, buf);
186
        buf = count = 0;
186
        buf = count = 0;
187
        return 1;
187
        return 1;
188
    }
188
    }
189
 
189
 
190
    if (count <= 1) {
190
    if (count <= 1) {
Line 192... Line 192...
192
    }
192
    }
193
 
193
 
194
    if ((buf & 0xffff) != (GXEMUL_KEY_F1 & 0xffff)
194
    if ((buf & 0xffff) != (GXEMUL_KEY_F1 & 0xffff)
195
        && (buf & 0xffff) != (GXEMUL_KEY_F5 & 0xffff) ) {
195
        && (buf & 0xffff) != (GXEMUL_KEY_F5 & 0xffff) ) {
196
 
196
 
197
        keybuffer_push(keybuffer, buf & 0xff);
197
        keybuffer_push0(keybuffer, buf & 0xff);
198
        keybuffer_push(keybuffer, (buf >> 8) &0xff);
198
        keybuffer_push0(keybuffer, (buf >> 8) &0xff);
199
        buf = count = 0;
199
        buf = count = 0;
200
        return 1;
200
        return 1;
201
    }
201
    }
202
 
202
 
203
    if (count <= 2) {
203
    if (count <= 2) {
204
        return 1;
204
        return 1;
205
    }
205
    }
206
 
206
 
207
    switch (buf) {
207
    switch (buf) {
208
    case GXEMUL_KEY_F1:
208
    case GXEMUL_KEY_F1:
209
        keybuffer_push(keybuffer,FUNCTION_KEYS | 1);
209
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 1);
210
        buf = count = 0;
210
        buf = count = 0;
211
        return 1;
211
        return 1;
212
    case GXEMUL_KEY_F2:
212
    case GXEMUL_KEY_F2:
213
        keybuffer_push(keybuffer,FUNCTION_KEYS | 2);
213
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 2);
214
        buf = count = 0;
214
        buf = count = 0;
215
        return 1;
215
        return 1;
216
    case GXEMUL_KEY_F3:
216
    case GXEMUL_KEY_F3:
217
        keybuffer_push(keybuffer,FUNCTION_KEYS | 3);
217
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 3);
218
        buf = count = 0;
218
        buf = count = 0;
219
        return 1;
219
        return 1;
220
    case GXEMUL_KEY_F4:
220
    case GXEMUL_KEY_F4:
221
        keybuffer_push(keybuffer,FUNCTION_KEYS | 4);
221
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 4);
222
        buf = count = 0;
222
        buf = count = 0;
223
        return 1;
223
        return 1;
224
    }
224
    }
225
 
225
 
226
 
226
 
227
    if ((buf & 0xffffff) != (GXEMUL_KEY_F5 & 0xffffff)
227
    if ((buf & 0xffffff) != (GXEMUL_KEY_F5 & 0xffffff)
228
        && (buf & 0xffffff) != (GXEMUL_KEY_F9 & 0xffffff)) {
228
        && (buf & 0xffffff) != (GXEMUL_KEY_F9 & 0xffffff)) {
229
 
229
 
230
        keybuffer_push(keybuffer, buf & 0xff);
230
        keybuffer_push0(keybuffer, buf & 0xff);
231
        keybuffer_push(keybuffer, (buf >> 8) & 0xff);
231
        keybuffer_push0(keybuffer, (buf >> 8) & 0xff);
232
        keybuffer_push(keybuffer, (buf >> 16) & 0xff);
232
        keybuffer_push0(keybuffer, (buf >> 16) & 0xff);
233
        buf = count = 0;
233
        buf = count = 0;
234
        return 1;
234
        return 1;
235
    }
235
    }
236
 
236
 
237
    if (count <= 3) {
237
    if (count <= 3) {
Line 247... Line 247...
247
    case GXEMUL_KEY_F10:
247
    case GXEMUL_KEY_F10:
248
    case GXEMUL_KEY_F11:
248
    case GXEMUL_KEY_F11:
249
    case GXEMUL_KEY_F12:
249
    case GXEMUL_KEY_F12:
250
        return 1;
250
        return 1;
251
    default:
251
    default:
252
        keybuffer_push(keybuffer, buf & 0xff);
252
        keybuffer_push0(keybuffer, buf & 0xff);
253
        keybuffer_push(keybuffer, (buf >> 8)  & 0xff);
253
        keybuffer_push0(keybuffer, (buf >> 8)  & 0xff);
254
        keybuffer_push(keybuffer, (buf >> 16) & 0xff);
254
        keybuffer_push0(keybuffer, (buf >> 16) & 0xff);
255
        keybuffer_push(keybuffer, (buf >> 24) & 0xff);
255
        keybuffer_push0(keybuffer, (buf >> 24) & 0xff);
256
        buf = count = 0;
256
        buf = count = 0;
257
        return 1;
257
        return 1;
258
    }
258
    }
259
 
259
 
260
    return 1;
260
    return 1;
Line 276... Line 276...
276
    // number of scan codes in #buf
276
    // number of scan codes in #buf
277
    static int count = 0;  
277
    static int count = 0;  
278
 
278
 
279
    /*
279
    /*
280
    // Please preserve this code (it can be used to determine scancodes)
280
    // Please preserve this code (it can be used to determine scancodes)
281
    keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf));
281
    keybuffer_push0(keybuffer, to_hex((scan_code>>4)&0xf));
282
    keybuffer_push(keybuffer, to_hex(scan_code&0xf));
282
    keybuffer_push0(keybuffer, to_hex(scan_code&0xf));
283
    keybuffer_push(keybuffer, ' ');
283
    keybuffer_push0(keybuffer, ' ');
284
    keybuffer_push(keybuffer, ' ');
284
    keybuffer_push0(keybuffer, ' ');
285
    return 1;
285
    return 1;
286
    */
286
    */
287
   
287
   
288
    if (scan_code == '\r') {
288
    if (scan_code == '\r') {
289
        scan_code = '\n';
289
        scan_code = '\n';
Line 292... Line 292...
292
    // add to buffer
292
    // add to buffer
293
    buf |= ((unsigned long) scan_code) << (8*(count++));
293
    buf |= ((unsigned long) scan_code) << (8*(count++));
294
   
294
   
295
   
295
   
296
    if ((buf & 0xff) != (GXEMUL_FB_KEY_F1 & 0xff)) {
296
    if ((buf & 0xff) != (GXEMUL_FB_KEY_F1 & 0xff)) {
297
        keybuffer_push(keybuffer, buf);
297
        keybuffer_push0(keybuffer, buf);
298
        buf = count = 0;
298
        buf = count = 0;
299
        return 1;
299
        return 1;
300
    }
300
    }
301
 
301
 
302
    if (count <= 1) {
302
    if (count <= 1) {
303
        return 1;
303
        return 1;
304
    }
304
    }
305
 
305
 
306
    if ((buf & 0xffff) != (GXEMUL_FB_KEY_F1 & 0xffff)) {
306
    if ((buf & 0xffff) != (GXEMUL_FB_KEY_F1 & 0xffff)) {
307
        keybuffer_push(keybuffer, buf & 0xff);
307
        keybuffer_push0(keybuffer, buf & 0xff);
308
        keybuffer_push(keybuffer, (buf >> 8) &0xff);
308
        keybuffer_push0(keybuffer, (buf >> 8) &0xff);
309
        buf = count = 0;
309
        buf = count = 0;
310
        return 1;
310
        return 1;
311
    }
311
    }
312
 
312
 
313
    if (count <= 2) {
313
    if (count <= 2) {
Line 316... Line 316...
316
 
316
 
317
    if ((buf & 0xffffff) != (GXEMUL_FB_KEY_F1 & 0xffffff)
317
    if ((buf & 0xffffff) != (GXEMUL_FB_KEY_F1 & 0xffffff)
318
        && (buf & 0xffffff) != (GXEMUL_FB_KEY_F5 & 0xffffff)
318
        && (buf & 0xffffff) != (GXEMUL_FB_KEY_F5 & 0xffffff)
319
        && (buf & 0xffffff) != (GXEMUL_FB_KEY_F9 & 0xffffff)) {
319
        && (buf & 0xffffff) != (GXEMUL_FB_KEY_F9 & 0xffffff)) {
320
 
320
 
321
        keybuffer_push(keybuffer, buf & 0xff);
321
        keybuffer_push0(keybuffer, buf & 0xff);
322
        keybuffer_push(keybuffer, (buf >> 8) & 0xff);
322
        keybuffer_push0(keybuffer, (buf >> 8) & 0xff);
323
        keybuffer_push(keybuffer, (buf >> 16) & 0xff);
323
        keybuffer_push0(keybuffer, (buf >> 16) & 0xff);
324
        buf = count = 0;
324
        buf = count = 0;
325
        return 1;
325
        return 1;
326
    }
326
    }
327
 
327
 
328
    if (count <= 3) {
328
    if (count <= 3) {
329
        return 1;
329
        return 1;
330
    }
330
    }
331
 
331
 
332
    switch (buf) {
332
    switch (buf) {
333
    case GXEMUL_FB_KEY_F1:
333
    case GXEMUL_FB_KEY_F1:
334
        keybuffer_push(keybuffer,FUNCTION_KEYS | 1 );
334
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 1 );
335
        buf = count = 0;
335
        buf = count = 0;
336
        return 1;
336
        return 1;
337
    case GXEMUL_FB_KEY_F2:
337
    case GXEMUL_FB_KEY_F2:
338
        keybuffer_push(keybuffer,FUNCTION_KEYS | 2 );
338
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 2 );
339
        buf = count = 0;
339
        buf = count = 0;
340
        return 1;
340
        return 1;
341
    case GXEMUL_FB_KEY_F3:
341
    case GXEMUL_FB_KEY_F3:
342
        keybuffer_push(keybuffer,FUNCTION_KEYS | 3 );
342
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 3 );
343
        buf = count = 0;
343
        buf = count = 0;
344
        return 1;
344
        return 1;
345
    case GXEMUL_FB_KEY_F4:
345
    case GXEMUL_FB_KEY_F4:
346
        keybuffer_push(keybuffer,FUNCTION_KEYS | 4 );
346
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 4 );
347
        buf = count = 0;
347
        buf = count = 0;
348
        return 1;
348
        return 1;
349
    case GXEMUL_FB_KEY_F5:
349
    case GXEMUL_FB_KEY_F5:
350
        keybuffer_push(keybuffer,FUNCTION_KEYS | 5 );
350
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 5 );
351
        buf = count = 0;
351
        buf = count = 0;
352
        return 1;
352
        return 1;
353
    case GXEMUL_FB_KEY_F6:
353
    case GXEMUL_FB_KEY_F6:
354
        keybuffer_push(keybuffer,FUNCTION_KEYS | 6 );
354
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 6 );
355
        buf = count = 0;
355
        buf = count = 0;
356
        return 1;
356
        return 1;
357
    case GXEMUL_FB_KEY_F7:
357
    case GXEMUL_FB_KEY_F7:
358
        keybuffer_push(keybuffer,FUNCTION_KEYS | 7 );
358
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 7 );
359
        buf = count = 0;
359
        buf = count = 0;
360
        return 1;
360
        return 1;
361
    case GXEMUL_FB_KEY_F8:
361
    case GXEMUL_FB_KEY_F8:
362
        keybuffer_push(keybuffer,FUNCTION_KEYS | 8 );
362
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 8 );
363
        buf = count = 0;
363
        buf = count = 0;
364
        return 1;
364
        return 1;
365
    case GXEMUL_FB_KEY_F9:
365
    case GXEMUL_FB_KEY_F9:
366
        keybuffer_push(keybuffer,FUNCTION_KEYS | 9 );
366
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 9 );
367
        buf = count = 0;
367
        buf = count = 0;
368
        return 1;
368
        return 1;
369
    case GXEMUL_FB_KEY_F10:
369
    case GXEMUL_FB_KEY_F10:
370
        keybuffer_push(keybuffer,FUNCTION_KEYS | 10 );
370
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 10 );
371
        buf = count = 0;
371
        buf = count = 0;
372
        return 1;
372
        return 1;
373
    case GXEMUL_FB_KEY_F11:
373
    case GXEMUL_FB_KEY_F11:
374
        keybuffer_push(keybuffer,FUNCTION_KEYS | 11 );
374
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 11 );
375
        buf = count = 0;
375
        buf = count = 0;
376
        return 1;
376
        return 1;
377
    case GXEMUL_FB_KEY_F12:
377
    case GXEMUL_FB_KEY_F12:
378
        keybuffer_push(keybuffer,FUNCTION_KEYS | 12 );
378
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 12 );
379
        buf = count = 0;
379
        buf = count = 0;
380
        return 1;
380
        return 1;
381
    default:
381
    default:
382
        keybuffer_push(keybuffer, buf & 0xff );
382
        keybuffer_push0(keybuffer, buf & 0xff );
383
        keybuffer_push(keybuffer, (buf >> 8)  & 0xff);
383
        keybuffer_push0(keybuffer, (buf >> 8)  & 0xff);
384
        keybuffer_push(keybuffer, (buf >> 16) & 0xff);
384
        keybuffer_push0(keybuffer, (buf >> 16) & 0xff);
385
        keybuffer_push(keybuffer, (buf >> 24) & 0xff);
385
        keybuffer_push0(keybuffer, (buf >> 24) & 0xff);
386
        buf = count = 0;
386
        buf = count = 0;
387
        return 1;
387
        return 1;
388
    }
388
    }
389
 
389
 
390
    return 1;
390
    return 1;