- case L4RE_EV_KEY:
- {
- do_trigger = 1;
- switch (e->payload.code)
- {
- case L4RE_KEY_RIGHTSHIFT: // modifiers
- case L4RE_KEY_LEFTSHIFT:
- if (e->payload.value)
- term->__shift = 1;
- else
- term->__shift = 0;
- touch_repeat(term, e->payload.code, 0);
- break;
- case L4RE_KEY_LEFTCTRL:
- case L4RE_KEY_RIGHTCTRL:
- if (e->payload.value)
- term->__ctrl = 1;
- else
- term->__ctrl = 0;
- touch_repeat(term, e->payload.code, 0);
- break;
- case L4RE_KEY_LEFTALT:
- if (e->payload.value)
- term->__alt = 1;
- else
- term->__alt = 0;
- touch_repeat(term, e->payload.code, 0);
- break;
- case L4RE_KEY_RIGHTALT:
- if (e->payload.value)
- term->__altgr = 1;
- else
- term->__altgr = 0;
- touch_repeat(term, e->payload.code, 0);
- break;
- case L4RE_KEY_PAGEUP: // special terminal movement chars
- if (e->payload.value && term->__shift)
- {
- vt100_scroll_up(term, term->phys_h / 2); // scroll for half screen
- vt100_redraw(term);
- touch_repeat(term, e->payload.code, e->payload.value);
- }
- break;
- case L4RE_KEY_PAGEDOWN:
- if (e->payload.value && term->__shift)
- {
- vt100_scroll_down(term, term->phys_h / 2); // scroll for half screen
- vt100_redraw(term);
- touch_repeat(term, e->payload.code, e->payload.value);
- }
- break;
- }
- if (e->payload.value) // regular chars
- vt100_add_key(term, e->payload.code);