From 9e3db46b67f45b57a683fe1ff3350f89a6387354 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Tue, 31 Jul 2012 22:55:08 +0100 Subject: Handle CTRL modifier too. CTRL with cursor left/right is same as SHIFT. CTRL+U clears writable. --- framebuffer/fbtk/text.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/framebuffer/fbtk/text.c b/framebuffer/fbtk/text.c index e2f0fa389..15c3f7a4f 100644 --- a/framebuffer/fbtk/text.c +++ b/framebuffer/fbtk/text.c @@ -306,6 +306,14 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi) modifier &= ~(1<<1); break; + case NSFB_KEY_RCTRL: + modifier &= ~(1<<2); + break; + + case NSFB_KEY_LCTRL: + modifier &= ~(1<<3); + break; + default: break; } @@ -371,7 +379,28 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi) modifier |= 1<<1; break; + case NSFB_KEY_RCTRL: + modifier |= 1<<2; + break; + + case NSFB_KEY_LCTRL: + modifier |= 1<<3; + break; + default: + if (modifier & 1<<2 || modifier & 1<<3) { + /* CTRL pressed, don't enter any text */ + if (value == NSFB_KEY_u) { + /* CTRL+U: clear writable */ + widget->u.text.idx = 0; + widget->u.text.len = 0; + widget->u.text.text[widget->u.text.len] = '\0'; + widget->u.text.width = 0; + caret_moved = true; + } + break; + } + /* allow for new character and null */ temp = realloc(widget->u.text.text, widget->u.text.len + 2); if (temp == NULL) { -- cgit v1.2.3