Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/edit/edit.c

    rc80be58 r3e6a98c5  
    8080        tag_t sel_start;
    8181
    82         /** Active keyboard modifiers */
    83         keymod_t keymod;
    84 
    8582        /**
    8683         * Ideal column where the caret should try to get. This is used
     
    122119static void cursor_setvis(bool visible);
    123120
    124 static void key_handle_press(kbd_event_t *ev);
    125121static void key_handle_unmod(kbd_event_t const *ev);
    126122static void key_handle_ctrl(kbd_event_t const *ev);
     
    128124static void key_handle_shift_ctrl(kbd_event_t const *ev);
    129125static void key_handle_movement(unsigned int key, bool shift);
    130 
    131 static void pos_handle(pos_event_t *ev);
    132126
    133127static int file_save(char const *fname);
     
    188182int main(int argc, char *argv[])
    189183{
    190         cons_event_t ev;
     184        kbd_event_t ev;
    191185        bool new_file;
    192186        int rc;
     
    251245
    252246        while (!done) {
    253                 console_get_event(con, &ev);
     247                console_get_kbd_event(con, &ev);
    254248                pane.rflags = 0;
    255249
    256                 switch (ev.type) {
    257                 case CEV_KEY:
    258                         pane.keymod = ev.ev.key.mods;
    259                         if (ev.ev.key.type == KEY_PRESS)
    260                                 key_handle_press(&ev.ev.key);
    261                         break;
    262                 case CEV_POS:
    263                         pos_handle(&ev.ev.pos);
    264                         break;
     250                if (ev.type == KEY_PRESS) {
     251                        /* Handle key press. */
     252                        if (((ev.mods & KM_ALT) == 0) &&
     253                            ((ev.mods & KM_SHIFT) == 0) &&
     254                             (ev.mods & KM_CTRL) != 0) {
     255                                key_handle_ctrl(&ev);
     256                        } else if (((ev.mods & KM_ALT) == 0) &&
     257                            ((ev.mods & KM_CTRL) == 0) &&
     258                             (ev.mods & KM_SHIFT) != 0) {
     259                                key_handle_shift(&ev);
     260                        } else if (((ev.mods & KM_ALT) == 0) &&
     261                            ((ev.mods & KM_CTRL) != 0) &&
     262                             (ev.mods & KM_SHIFT) != 0) {
     263                                key_handle_shift_ctrl(&ev);
     264                        } else if ((ev.mods & (KM_CTRL | KM_ALT | KM_SHIFT)) == 0) {
     265                                key_handle_unmod(&ev);
     266                        }
    265267                }
    266268
     
    284286
    285287        return 0;
    286 }
    287 
    288 /* Handle key press. */
    289 static void key_handle_press(kbd_event_t *ev)
    290 {
    291         if (((ev->mods & KM_ALT) == 0) &&
    292             ((ev->mods & KM_SHIFT) == 0) &&
    293              (ev->mods & KM_CTRL) != 0) {
    294                 key_handle_ctrl(ev);
    295         } else if (((ev->mods & KM_ALT) == 0) &&
    296             ((ev->mods & KM_CTRL) == 0) &&
    297              (ev->mods & KM_SHIFT) != 0) {
    298                 key_handle_shift(ev);
    299         } else if (((ev->mods & KM_ALT) == 0) &&
    300             ((ev->mods & KM_CTRL) != 0) &&
    301              (ev->mods & KM_SHIFT) != 0) {
    302                 key_handle_shift_ctrl(ev);
    303         } else if ((ev->mods & (KM_CTRL | KM_ALT | KM_SHIFT)) == 0) {
    304                 key_handle_unmod(ev);
    305         }
    306288}
    307289
     
    480462}
    481463
    482 static void pos_handle(pos_event_t *ev)
    483 {
    484         coord_t bc;
    485         spt_t pt;
    486         bool select;
    487 
    488         if (ev->type == POS_PRESS && ev->vpos < (unsigned)pane.rows) {
    489                 bc.row = pane.sh_row + ev->vpos;
    490                 bc.column = pane.sh_column + ev->hpos;
    491                 sheet_get_cell_pt(doc.sh, &bc, dir_before, &pt);
    492 
    493                 select = (pane.keymod & KM_SHIFT) != 0;
    494 
    495                 caret_move(pt, select, true);
    496         }
    497 }
    498 
    499464/** Move caret while preserving or resetting selection. */
    500465static void caret_move(spt_t new_caret_pt, bool select, bool update_ideal_column)
     
    627592static char *prompt(char const *prompt, char const *init_value)
    628593{
    629         cons_event_t ev;
    630         kbd_event_t *kev;
     594        kbd_event_t ev;
    631595        char *str;
    632596        wchar_t buffer[INFNAME_MAX_LEN + 1];
     
    648612
    649613        while (!done) {
    650                 console_get_event(con, &ev);
    651 
    652                 if (ev.type == CEV_KEY && ev.ev.key.type == KEY_PRESS) {
    653                         kev = &ev.ev.key;
    654 
     614                console_get_kbd_event(con, &ev);
     615
     616                if (ev.type == KEY_PRESS) {
    655617                        /* Handle key press. */
    656                         if (((kev->mods & KM_ALT) == 0) &&
    657                              (kev->mods & KM_CTRL) != 0) {
     618                        if (((ev.mods & KM_ALT) == 0) &&
     619                             (ev.mods & KM_CTRL) != 0) {
    658620                                ;
    659                         } else if ((kev->mods & (KM_CTRL | KM_ALT)) == 0) {
    660                                 switch (kev->key) {
     621                        } else if ((ev.mods & (KM_CTRL | KM_ALT)) == 0) {
     622                                switch (ev.key) {
    661623                                case KC_ESCAPE:
    662624                                        return NULL;
     
    672634                                        break;
    673635                                default:
    674                                         if (kev->c >= 32 && nc < max_len) {
    675                                                 putchar(kev->c);
     636                                        if (ev.c >= 32 && nc < max_len) {
     637                                                putchar(ev.c);
    676638                                                console_flush(con);
    677                                                 buffer[nc++] = kev->c;
     639                                                buffer[nc++] = ev.c;
    678640                                        }
    679641                                        break;
Note: See TracChangeset for help on using the changeset viewer.