Changeset de09ac9 in mainline for kbd/arch/ia64/src/kbd.c


Ignore:
Timestamp:
2006-06-04T16:59:49Z (19 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
74ebc64
Parents:
6118e5f6
Message:

Ia64 function keys support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kbd/arch/ia64/src/kbd.c

    r6118e5f6 rde09ac9  
    3131#include <sysinfo.h>
    3232
     33#define KEY_F1 0x504f1b
     34#define KEY_F2 0x514f1b
     35#define KEY_F3 0x524f1b
     36#define KEY_F4 0x534f1b
     37#define KEY_F5 0x7e35315b1b
     38#define KEY_F6 0x7e37315b1b
     39#define KEY_F7 0x7e38315b1b
     40#define KEY_F8 0x7e39315b1b
     41#define KEY_F9 0x7e30325b1b
     42#define KEY_F10 0x7e31325b1b
     43#define KEY_F11 0x7e33325b1b
     44#define KEY_F12 0x7e34325b1b
     45
     46
     47#define FUNCTION_KEYS 0x100
     48
    3349irq_cmd_t ski_cmds[1] = {
    3450        { CMD_IA64_GETCHAR, 0, 0 }
     
    4258int kbd_arch_init(void)
    4359{
    44         if(sysinfo_value("kbd"))
    45         {
     60        if(sysinfo_value("kbd")) {
    4661                ipc_register_irq(sysinfo_value("kbd.irq"), &ski_kbd);
    4762                return 1;
     
    5065}
    5166
    52 int kbd_arch_process(keybuffer_t *keybuffer, int scan_code)
     67/*
     68* Please preserve this code (it can be used to determine scancodes)
     69*
     70int to_hex(int v)
    5371{
    54         keybuffer_push(keybuffer, scan_code);
     72    return "0123456789ABCDEF"[v];
     73}
     74*/
     75
     76int kbd_arch_process(keybuffer_t *keybuffer, int scan_code)
     77{
     78        static unsigned long long buf=0;
     79        static int count=0;     
     80
     81
     82        /*
     83        * Please preserve this code (it can be used to determine scancodes)
     84        *
     85        keybuffer_push(keybuffer, to_hex((scan_code>>4)&0xf));
     86        keybuffer_push(keybuffer, to_hex(scan_code&0xf));
     87        keybuffer_push(keybuffer, ' ');
     88        keybuffer_push(keybuffer, ' ');
     89        */
    5590       
    56 /*      __SYSCALL3(SYS_IO,1,&scan_code,1);
    57         __SYSCALL3(SYS_IO,1,&scan_code,1);
    58 */     
     91       
     92        if (scan_code){
     93                buf|=(unsigned long long) scan_code<<(8*(count++));
     94        }       else {
     95                       
     96                if ( ! ( buf & 0xff00 ))
     97                        keybuffer_push(keybuffer, buf);
     98                else {
     99                        switch (buf){
     100                                case KEY_F1:
     101                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 1 );
     102                                        break;
     103                                case KEY_F2:
     104                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 2 );
     105                                        break;
     106                                case KEY_F3:
     107                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 3 );
     108                                        break;
     109                                case KEY_F4:
     110                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 4 );
     111                                        break;
     112                                case KEY_F5:
     113                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 5 );
     114                                        break;
     115                                case KEY_F6:
     116                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 6 );
     117                                        break;
     118                                case KEY_F7:
     119                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 7 );
     120                                        break;
     121                                case KEY_F8:
     122                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 8 );
     123                                        break;
     124
     125                                case KEY_F9:
     126                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 9 );
     127                                        break;
     128                                case KEY_F10:
     129                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 10 );
     130                                        break;
     131
     132                                case KEY_F11:
     133                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 11 );
     134                                        break;
     135                                case KEY_F12:
     136                                        keybuffer_push(keybuffer,FUNCTION_KEYS | 12 );
     137                                        break;
     138
     139
     140                        }
     141                }
     142                buf=count=0;
     143        }
     144
    59145        return  1;
    60146}
Note: See TracChangeset for help on using the changeset viewer.