Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/io/console.c

    r902f0906 r5d94b16c  
    154154}
    155155
    156 static int console_ev_decode(ipc_call_t *call, cons_event_t *event)
    157 {
    158         event->type = IPC_GET_ARG1(*call);
    159 
    160         switch (event->type) {
    161         case CEV_KEY:
    162                 event->ev.key.type = IPC_GET_ARG2(*call);
    163                 event->ev.key.key = IPC_GET_ARG3(*call);
    164                 event->ev.key.mods = IPC_GET_ARG4(*call);
    165                 event->ev.key.c = IPC_GET_ARG5(*call);
    166                 break;
    167         case CEV_POS:
    168                 event->ev.pos.pos_id = IPC_GET_ARG2(*call) >> 16;
    169                 event->ev.pos.type = IPC_GET_ARG2(*call) & 0xffff;
    170                 event->ev.pos.btn_num = IPC_GET_ARG3(*call);
    171                 event->ev.pos.hpos = IPC_GET_ARG4(*call);
    172                 event->ev.pos.vpos = IPC_GET_ARG5(*call);
    173                 break;
    174         default:
    175                 return EIO;
    176         }
    177 
    178         return EOK;
    179 }
    180 
    181 bool console_get_event(console_ctrl_t *ctrl, cons_event_t *event)
     156bool console_get_kbd_event(console_ctrl_t *ctrl, kbd_event_t *event)
    182157{
    183158        if (ctrl->input_aid == 0) {
    184                 ipc_call_t result;
     159                sysarg_t type;
     160                sysarg_t key;
     161                sysarg_t mods;
     162                sysarg_t c;
    185163               
    186164                async_exch_t *exch = async_exchange_begin(ctrl->input_sess);
    187                 aid_t aid = async_send_0(exch, CONSOLE_GET_EVENT, &result);
     165                int rc = async_req_0_4(exch, CONSOLE_GET_EVENT, &type, &key, &mods, &c);
    188166                async_exchange_end(exch);
    189                
    190                 sysarg_t rc;
    191                 async_wait_for(aid, &rc);
    192167               
    193168                if (rc != EOK) {
     
    196171                }
    197172               
    198                 rc = console_ev_decode(&result, event);
    199                 if (rc != EOK) {
    200                         errno = rc;
    201                         return false;
    202                 }
     173                event->type = type;
     174                event->key = key;
     175                event->mods = mods;
     176                event->c = c;
    203177        } else {
    204178                sysarg_t retval;
     
    212186                }
    213187               
    214                 int rc = console_ev_decode(&ctrl->input_call, event);
    215                 if (rc != EOK) {
    216                         errno = rc;
    217                         return false;
    218                 }
     188                event->type = IPC_GET_ARG1(ctrl->input_call);
     189                event->key = IPC_GET_ARG2(ctrl->input_call);
     190                event->mods = IPC_GET_ARG3(ctrl->input_call);
     191                event->c = IPC_GET_ARG4(ctrl->input_call);
    219192        }
    220193       
     
    222195}
    223196
    224 bool console_get_event_timeout(console_ctrl_t *ctrl, cons_event_t *event,
     197bool console_get_kbd_event_timeout(console_ctrl_t *ctrl, kbd_event_t *event,
    225198    suseconds_t *timeout)
    226199{
     
    250223        }
    251224       
    252         rc = console_ev_decode(&ctrl->input_call, event);
    253         if (rc != EOK) {
    254                 errno = rc;
    255                 return false;
    256         }
     225        event->type = IPC_GET_ARG1(ctrl->input_call);
     226        event->key = IPC_GET_ARG2(ctrl->input_call);
     227        event->mods = IPC_GET_ARG3(ctrl->input_call);
     228        event->c = IPC_GET_ARG4(ctrl->input_call);
    257229       
    258230        /* Update timeout */
Note: See TracChangeset for help on using the changeset viewer.