Changes in uspace/lib/c/generic/io/console.c [902f0906:7c014d1] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/io/console.c
r902f0906 r7c014d1 38 38 #include <async.h> 39 39 #include <errno.h> 40 #include <stdio.h> 40 41 #include <malloc.h> 41 42 #include <vfs/vfs_sess.h> … … 125 126 { 126 127 async_exch_t *exch = async_exchange_begin(ctrl->output_sess); 127 async_req_1_0(exch, CONSOLE_ SET_CURSOR_VISIBILITY, (show != false));128 async_req_1_0(exch, CONSOLE_CURSOR_VISIBILITY, (show != false)); 128 129 async_exchange_end(exch); 129 130 } … … 150 151 { 151 152 async_exch_t *exch = async_exchange_begin(ctrl->output_sess); 152 async_req_2_0(exch, CONSOLE_SET_POS, col, row); 153 async_exchange_end(exch); 154 } 155 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) 153 async_req_2_0(exch, CONSOLE_GOTO, col, row); 154 async_exchange_end(exch); 155 } 156 157 bool console_get_kbd_event(console_ctrl_t *ctrl, kbd_event_t *event) 182 158 { 183 159 if (ctrl->input_aid == 0) { 184 ipc_call_t result; 160 sysarg_t type; 161 sysarg_t key; 162 sysarg_t mods; 163 sysarg_t c; 185 164 186 165 async_exch_t *exch = async_exchange_begin(ctrl->input_sess); 187 aid_t aid = async_send_0(exch, CONSOLE_GET_EVENT, &result);166 int rc = async_req_0_4(exch, CONSOLE_GET_EVENT, &type, &key, &mods, &c); 188 167 async_exchange_end(exch); 189 190 sysarg_t rc;191 async_wait_for(aid, &rc);192 168 193 169 if (rc != EOK) { … … 196 172 } 197 173 198 rc = console_ev_decode(&result, event); 199 if (rc != EOK) { 200 errno = rc; 201 return false; 202 } 174 event->type = type; 175 event->key = key; 176 event->mods = mods; 177 event->c = c; 203 178 } else { 204 179 sysarg_t retval; … … 212 187 } 213 188 214 int rc = console_ev_decode(&ctrl->input_call, event); 215 if (rc != EOK) { 216 errno = rc; 217 return false; 218 } 189 event->type = IPC_GET_ARG1(ctrl->input_call); 190 event->key = IPC_GET_ARG2(ctrl->input_call); 191 event->mods = IPC_GET_ARG3(ctrl->input_call); 192 event->c = IPC_GET_ARG4(ctrl->input_call); 219 193 } 220 194 … … 222 196 } 223 197 224 bool console_get_ event_timeout(console_ctrl_t *ctrl, cons_event_t *event,198 bool console_get_kbd_event_timeout(console_ctrl_t *ctrl, kbd_event_t *event, 225 199 suseconds_t *timeout) 226 200 { … … 250 224 } 251 225 252 rc = console_ev_decode(&ctrl->input_call, event); 253 if (rc != EOK) { 254 errno = rc; 255 return false; 256 } 226 event->type = IPC_GET_ARG1(ctrl->input_call); 227 event->key = IPC_GET_ARG2(ctrl->input_call); 228 event->mods = IPC_GET_ARG3(ctrl->input_call); 229 event->c = IPC_GET_ARG4(ctrl->input_call); 257 230 258 231 /* Update timeout */
Note:
See TracChangeset
for help on using the changeset viewer.