Index: uspace/lib/clui/tinput.c
===================================================================
--- uspace/lib/clui/tinput.c	(revision 3f06dae84ce91fe16bc8e73eb9b8545daf76d452)
+++ uspace/lib/clui/tinput.c	(revision a2bdcf87c419ed5c6a6f8d1cadd477c53843262c)
@@ -808,4 +808,9 @@
 static void tinput_key_press(tinput_t *ti, kbd_event_t *kev)
 {
+	if (kev->key == KC_LSHIFT)
+		ti->lshift_held = true;
+	if (kev->key == KC_RSHIFT)
+		ti->rshift_held = true;
+
 	if (((kev->mods & KM_CTRL) != 0) &&
 	    ((kev->mods & (KM_ALT | KM_SHIFT)) == 0))
@@ -830,9 +835,19 @@
 }
 
+/** Handle key release event. */
+static void tinput_key_release(tinput_t *ti, kbd_event_t *kev)
+{
+	if (kev->key == KC_LSHIFT)
+		ti->lshift_held = false;
+	if (kev->key == KC_RSHIFT)
+		ti->rshift_held = false;
+}
+
 /** Position event */
 static void tinput_pos(tinput_t *ti, pos_event_t *ev)
 {
 	if (ev->type == POS_PRESS) {
-		tinput_seek_scrpos(ti, ev->hpos, ev->vpos, false);
+		tinput_seek_scrpos(ti, ev->hpos, ev->vpos,
+		    ti->lshift_held || ti->rshift_held);
 	}
 }
@@ -875,4 +890,6 @@
 			if (ev.ev.key.type == KEY_PRESS)
 				tinput_key_press(ti, &ev.ev.key);
+			else
+				tinput_key_release(ti, &ev.ev.key);
 			break;
 		case CEV_POS:
Index: uspace/lib/clui/tinput.h
===================================================================
--- uspace/lib/clui/tinput.h	(revision 3f06dae84ce91fe16bc8e73eb9b8545daf76d452)
+++ uspace/lib/clui/tinput.h	(revision a2bdcf87c419ed5c6a6f8d1cadd477c53843262c)
@@ -146,4 +146,10 @@
 	/** @c true if user requested to abort interactive loop */
 	bool exit_clui;
+
+	/** @c true if left shift key is currently held */
+	bool lshift_held;
+
+	/** @c true if right shift key is currently held */
+	bool rshift_held;
 } tinput_t;
 
