Changeset 25eec4e in mainline for uspace/lib/clui/tinput.c
- Timestamp:
- 2013-04-19T18:38:18Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6d717a4
- Parents:
- a1e2df13 (diff), 289cb7dd (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/clui/tinput.c
ra1e2df13 r25eec4e 40 40 #include <errno.h> 41 41 #include <assert.h> 42 #include < bool.h>42 #include <stdbool.h> 43 43 #include <tinput.h> 44 44 45 45 #define LIN_TO_COL(ti, lpos) ((lpos) % ((ti)->con_cols)) 46 46 #define LIN_TO_ROW(ti, lpos) ((lpos) / ((ti)->con_cols)) 47 #define LIN_POS(ti, col, row) ((col) + (row) * (ti)->con_cols) 47 48 48 49 /** Seek direction */ … … 383 384 } 384 385 386 static void tinput_seek_scrpos(tinput_t *ti, int col, int line, bool shift_held) 387 { 388 unsigned lpos; 389 tinput_pre_seek(ti, shift_held); 390 391 lpos = LIN_POS(ti, col, line); 392 393 if (lpos > ti->text_coord) 394 ti->pos = lpos - ti->text_coord; 395 else 396 ti->pos = 0; 397 if (ti->pos > ti->nc) 398 ti->pos = ti->nc; 399 400 tinput_post_seek(ti, shift_held); 401 } 402 385 403 static void tinput_seek_max(tinput_t *ti, seek_dir_t dir, bool shift_held) 386 404 { … … 787 805 } 788 806 807 /** Handle key press event. */ 808 static void tinput_key_press(tinput_t *ti, kbd_event_t *kev) 809 { 810 if (kev->key == KC_LSHIFT) 811 ti->lshift_held = true; 812 if (kev->key == KC_RSHIFT) 813 ti->rshift_held = true; 814 815 if (((kev->mods & KM_CTRL) != 0) && 816 ((kev->mods & (KM_ALT | KM_SHIFT)) == 0)) 817 tinput_key_ctrl(ti, kev); 818 819 if (((kev->mods & KM_SHIFT) != 0) && 820 ((kev->mods & (KM_CTRL | KM_ALT)) == 0)) 821 tinput_key_shift(ti, kev); 822 823 if (((kev->mods & KM_CTRL) != 0) && 824 ((kev->mods & KM_SHIFT) != 0) && 825 ((kev->mods & KM_ALT) == 0)) 826 tinput_key_ctrl_shift(ti, kev); 827 828 if ((kev->mods & (KM_CTRL | KM_ALT | KM_SHIFT)) == 0) 829 tinput_key_unmod(ti, kev); 830 831 if (kev->c >= ' ') { 832 tinput_sel_delete(ti); 833 tinput_insert_char(ti, kev->c); 834 } 835 } 836 837 /** Handle key release event. */ 838 static void tinput_key_release(tinput_t *ti, kbd_event_t *kev) 839 { 840 if (kev->key == KC_LSHIFT) 841 ti->lshift_held = false; 842 if (kev->key == KC_RSHIFT) 843 ti->rshift_held = false; 844 } 845 846 /** Position event */ 847 static void tinput_pos(tinput_t *ti, pos_event_t *ev) 848 { 849 if (ev->type == POS_PRESS) { 850 tinput_seek_scrpos(ti, ev->hpos, ev->vpos, 851 ti->lshift_held || ti->rshift_held); 852 } 853 } 854 789 855 /** Read in one line of input. 790 856 * … … 816 882 console_flush(ti->console); 817 883 818 kbd_event_t ev;819 if (!console_get_ kbd_event(ti->console, &ev))884 cons_event_t ev; 885 if (!console_get_event(ti->console, &ev)) 820 886 return EIO; 821 887 822 if (ev.type != KEY_PRESS) 823 continue; 824 825 if (((ev.mods & KM_CTRL) != 0) && 826 ((ev.mods & (KM_ALT | KM_SHIFT)) == 0)) 827 tinput_key_ctrl(ti, &ev); 828 829 if (((ev.mods & KM_SHIFT) != 0) && 830 ((ev.mods & (KM_CTRL | KM_ALT)) == 0)) 831 tinput_key_shift(ti, &ev); 832 833 if (((ev.mods & KM_CTRL) != 0) && 834 ((ev.mods & KM_SHIFT) != 0) && 835 ((ev.mods & KM_ALT) == 0)) 836 tinput_key_ctrl_shift(ti, &ev); 837 838 if ((ev.mods & (KM_CTRL | KM_ALT | KM_SHIFT)) == 0) 839 tinput_key_unmod(ti, &ev); 840 841 if (ev.c >= ' ') { 842 tinput_sel_delete(ti); 843 tinput_insert_char(ti, ev.c); 888 switch (ev.type) { 889 case CEV_KEY: 890 if (ev.ev.key.type == KEY_PRESS) 891 tinput_key_press(ti, &ev.ev.key); 892 else 893 tinput_key_release(ti, &ev.ev.key); 894 break; 895 case CEV_POS: 896 tinput_pos(ti, &ev.ev.pos); 897 break; 844 898 } 845 899 }
Note:
See TracChangeset
for help on using the changeset viewer.