Subversion Repositories HelenOS

Rev

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

Rev 3882 Rev 3905
Line 176... Line 176...
176
        scan_code='\b';  /* Convert backspace */
176
        scan_code='\b';  /* Convert backspace */
177
   
177
   
178
    if(scan_code == 0x7e) {
178
    if(scan_code == 0x7e) {
179
        switch (buf) {
179
        switch (buf) {
180
        case NSKEY_F6:
180
        case NSKEY_F6:
181
            keybuffer_push(keybuffer,FUNCTION_KEYS | 6);
181
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 6);
182
            buf = count = 0;
182
            buf = count = 0;
183
            return 1;
183
            return 1;
184
        case NSKEY_F7:
184
        case NSKEY_F7:
185
            keybuffer_push(keybuffer,FUNCTION_KEYS | 7);
185
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 7);
186
            buf = count = 0;
186
            buf = count = 0;
187
            return 1;
187
            return 1;
188
        case NSKEY_F8:
188
        case NSKEY_F8:
189
            keybuffer_push(keybuffer,FUNCTION_KEYS | 8);
189
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 8);
190
            buf = count = 0;
190
            buf = count = 0;
191
            return 1;
191
            return 1;
192
        case NSKEY_F9:
192
        case NSKEY_F9:
193
            keybuffer_push(keybuffer,FUNCTION_KEYS | 9);
193
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 9);
194
            buf = count = 0;
194
            buf = count = 0;
195
            return 1;
195
            return 1;
196
        case NSKEY_F10:
196
        case NSKEY_F10:
197
            keybuffer_push(keybuffer,FUNCTION_KEYS | 10);
197
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 10);
198
            buf = count = 0;
198
            buf = count = 0;
199
            return 1;
199
            return 1;
200
        case NSKEY_F11:
200
        case NSKEY_F11:
201
            keybuffer_push(keybuffer,FUNCTION_KEYS | 11);
201
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 11);
202
            buf = count = 0;
202
            buf = count = 0;
203
            return 1;
203
            return 1;
204
        case NSKEY_F12:
204
        case NSKEY_F12:
205
            keybuffer_push(keybuffer,FUNCTION_KEYS | 12);
205
            keybuffer_push0(keybuffer,FUNCTION_KEYS | 12);
206
            buf = count = 0;
206
            buf = count = 0;
207
            return 1;
207
            return 1;
208
        default:
208
        default:
209
            keybuffer_push(keybuffer, buf & 0xff);
209
            keybuffer_push0(keybuffer, buf & 0xff);
210
            keybuffer_push(keybuffer, (buf >> 8) &0xff);
210
            keybuffer_push0(keybuffer, (buf >> 8) &0xff);
211
            keybuffer_push(keybuffer, (buf >> 16) &0xff);
211
            keybuffer_push0(keybuffer, (buf >> 16) &0xff);
212
            keybuffer_push(keybuffer, (buf >> 24) &0xff);
212
            keybuffer_push0(keybuffer, (buf >> 24) &0xff);
213
            keybuffer_push(keybuffer, scan_code);
213
            keybuffer_push0(keybuffer, scan_code);
214
            buf = count = 0;
214
            buf = count = 0;
215
            return 1;
215
            return 1;
216
        }
216
        }
217
    }
217
    }
218
 
218
 
219
    buf |= ((unsigned long) scan_code)<<(8*(count++));
219
    buf |= ((unsigned long) scan_code)<<(8*(count++));
220
   
220
   
221
    if((buf & 0xff) != (NSKEY_F1 & 0xff)) {
221
    if((buf & 0xff) != (NSKEY_F1 & 0xff)) {
222
        keybuffer_push(keybuffer, buf);
222
        keybuffer_push0(keybuffer, buf);
223
        buf = count = 0;
223
        buf = count = 0;
224
        return 1;
224
        return 1;
225
    }
225
    }
226
 
226
 
227
    if (count <= 1)
227
    if (count <= 1)
228
        return 1;
228
        return 1;
229
 
229
 
230
    if ((buf & 0xffff) != (NSKEY_F1 & 0xffff))  {
230
    if ((buf & 0xffff) != (NSKEY_F1 & 0xffff))  {
231
 
231
 
232
        keybuffer_push(keybuffer, buf & 0xff);
232
        keybuffer_push0(keybuffer, buf & 0xff);
233
        keybuffer_push(keybuffer, (buf >> 8) &0xff);
233
        keybuffer_push0(keybuffer, (buf >> 8) &0xff);
234
        buf = count = 0;
234
        buf = count = 0;
235
        return 1;
235
        return 1;
236
    }
236
    }
237
 
237
 
238
    if (count <= 2)
238
    if (count <= 2)
Line 241... Line 241...
241
 
241
 
242
    if ((buf & 0xffffff) != (NSKEY_F1 & 0xffffff)
242
    if ((buf & 0xffffff) != (NSKEY_F1 & 0xffffff)
243
        && (buf & 0xffffff) != (NSKEY_F6 & 0xffffff)
243
        && (buf & 0xffffff) != (NSKEY_F6 & 0xffffff)
244
        && (buf & 0xffffff) != (NSKEY_F9 & 0xffffff) ) {
244
        && (buf & 0xffffff) != (NSKEY_F9 & 0xffffff) ) {
245
 
245
 
246
        keybuffer_push(keybuffer, buf & 0xff);
246
        keybuffer_push0(keybuffer, buf & 0xff);
247
        keybuffer_push(keybuffer, (buf >> 8) &0xff);
247
        keybuffer_push0(keybuffer, (buf >> 8) &0xff);
248
        keybuffer_push(keybuffer, (buf >> 16) &0xff);
248
        keybuffer_push0(keybuffer, (buf >> 16) &0xff);
249
        buf = count = 0;
249
        buf = count = 0;
250
        return 1;
250
        return 1;
251
    }
251
    }
252
 
252
 
253
    if (count <= 3)
253
    if (count <= 3)
254
        return 1;
254
        return 1;
255
 
255
 
256
    switch (buf) {
256
    switch (buf) {
257
    case NSKEY_F1:
257
    case NSKEY_F1:
258
        keybuffer_push(keybuffer,FUNCTION_KEYS | 1);
258
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 1);
259
        buf = count = 0;
259
        buf = count = 0;
260
        return 1;
260
        return 1;
261
    case NSKEY_F2:
261
    case NSKEY_F2:
262
        keybuffer_push(keybuffer,FUNCTION_KEYS | 2);
262
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 2);
263
        buf = count = 0;
263
        buf = count = 0;
264
        return 1;
264
        return 1;
265
    case NSKEY_F3:
265
    case NSKEY_F3:
266
        keybuffer_push(keybuffer,FUNCTION_KEYS | 3);
266
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 3);
267
        buf = count = 0;
267
        buf = count = 0;
268
        return 1;
268
        return 1;
269
    case NSKEY_F4:
269
    case NSKEY_F4:
270
        keybuffer_push(keybuffer,FUNCTION_KEYS | 4);
270
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 4);
271
        buf = count = 0;
271
        buf = count = 0;
272
        return 1;
272
        return 1;
273
    case NSKEY_F5:
273
    case NSKEY_F5:
274
        keybuffer_push(keybuffer,FUNCTION_KEYS | 5);
274
        keybuffer_push0(keybuffer,FUNCTION_KEYS | 5);
275
        buf = count = 0;
275
        buf = count = 0;
276
        return 1;
276
        return 1;
277
    }
277
    }
278
 
278
 
279
 
279
 
Line 286... Line 286...
286
    case NSKEY_F10:
286
    case NSKEY_F10:
287
    case NSKEY_F11:
287
    case NSKEY_F11:
288
    case NSKEY_F12:
288
    case NSKEY_F12:
289
        return 1;
289
        return 1;
290
    default:
290
    default:
291
        keybuffer_push(keybuffer, buf & 0xff);
291
        keybuffer_push0(keybuffer, buf & 0xff);
292
        keybuffer_push(keybuffer, (buf >> 8) &0xff);
292
        keybuffer_push0(keybuffer, (buf >> 8) &0xff);
293
        keybuffer_push(keybuffer, (buf >> 16) &0xff);
293
        keybuffer_push0(keybuffer, (buf >> 16) &0xff);
294
        keybuffer_push(keybuffer, (buf >> 24) &0xff);
294
        keybuffer_push0(keybuffer, (buf >> 24) &0xff);
295
        buf = count = 0;
295
        buf = count = 0;
296
        return 1;
296
        return 1;
297
    }
297
    }
298
    return 1;
298
    return 1;
299
}
299
}
Line 306... Line 306...
306
    int scan_code = IPC_GET_ARG2(*call);
306
    int scan_code = IPC_GET_ARG2(*call);
307
   
307
   
308
    /*
308
    /*
309
     * Please preserve this code (it can be used to determine scancodes)
309
     * Please preserve this code (it can be used to determine scancodes)
310
     */
310
     */
311
    //keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf));
311
    //keybuffer_push0(keybuffer, to_hex((scan_code>>4)&0xf));
312
    //keybuffer_push(keybuffer, to_hex(scan_code&0xf));
312
    //keybuffer_push0(keybuffer, to_hex(scan_code&0xf));
313
    //keybuffer_push(keybuffer, ' ');
313
    //keybuffer_push0(keybuffer, ' ');
314
    //keybuffer_push(keybuffer, ' ');
314
    //keybuffer_push0(keybuffer, ' ');
315
    //*/
315
    //*/
316
   
316
   
317
    if (scan_code) {
317
    if (scan_code) {
318
        buf |= (unsigned long long) scan_code<<(8*(count++));
318
        buf |= (unsigned long long) scan_code<<(8*(count++));
319
    } else {
319
    } else {
Line 326... Line 326...
326
        } else {
326
        } else {
327
            esc_count = 0;
327
            esc_count = 0;
328
        }
328
        }
329
   
329
   
330
        if (!(buf & 0xff00)) {
330
        if (!(buf & 0xff00)) {
331
            keybuffer_push(keybuffer, buf);
331
            keybuffer_push0(keybuffer, buf);
332
        } else {
332
        } else {
333
            switch (buf) {
333
            switch (buf) {
334
            case KEY_F1:
334
            case KEY_F1:
335
                keybuffer_push(keybuffer, FUNCTION_KEYS | 1);
335
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 1);
336
                break;
336
                break;
337
            case KEY_F2:
337
            case KEY_F2:
338
                keybuffer_push(keybuffer, FUNCTION_KEYS | 2);
338
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 2);
339
                break;
339
                break;
340
            case KEY_F3:
340
            case KEY_F3:
341
                keybuffer_push(keybuffer, FUNCTION_KEYS | 3);
341
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 3);
342
                break;
342
                break;
343
            case KEY_F4:
343
            case KEY_F4:
344
                keybuffer_push(keybuffer, FUNCTION_KEYS | 4);
344
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 4);
345
                break;
345
                break;
346
            case KEY_F5:
346
            case KEY_F5:
347
                keybuffer_push(keybuffer, FUNCTION_KEYS | 5);
347
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 5);
348
                break;
348
                break;
349
            case KEY_F6:
349
            case KEY_F6:
350
                keybuffer_push(keybuffer, FUNCTION_KEYS | 6);
350
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 6);
351
                break;
351
                break;
352
            case KEY_F7:
352
            case KEY_F7:
353
                keybuffer_push(keybuffer, FUNCTION_KEYS | 7);
353
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 7);
354
                break;
354
                break;
355
            case KEY_F8:
355
            case KEY_F8:
356
                keybuffer_push(keybuffer, FUNCTION_KEYS | 8);
356
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 8);
357
                break;
357
                break;
358
            case KEY_F9:
358
            case KEY_F9:
359
                keybuffer_push(keybuffer, FUNCTION_KEYS | 9);
359
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 9);
360
                break;
360
                break;
361
            case KEY_F10:
361
            case KEY_F10:
362
                keybuffer_push(keybuffer, FUNCTION_KEYS | 10);
362
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 10);
363
                break;
363
                break;
364
            case KEY_F11:
364
            case KEY_F11:
365
                keybuffer_push(keybuffer, FUNCTION_KEYS | 11);
365
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 11);
366
                break;
366
                break;
367
            case KEY_F12:
367
            case KEY_F12:
368
                keybuffer_push(keybuffer, FUNCTION_KEYS | 12);
368
                keybuffer_push0(keybuffer, FUNCTION_KEYS | 12);
369
                break;
369
                break;
370
            }
370
            }
371
        }
371
        }
372
        buf = count = 0;
372
        buf = count = 0;
373
    }
373
    }