Index: uspace/app/edit/edit.c
===================================================================
--- uspace/app/edit/edit.c	(revision 603730895892e6461fb9d65caf1725ba2ca5628f)
+++ uspace/app/edit/edit.c	(revision 077bc9313c554bc43abfc9fc4e0b23e1c22e6759)
@@ -80,4 +80,7 @@
 	tag_t sel_start;
 
+	/** Active keyboard modifiers */
+	keymod_t keymod;
+
 	/** 
 	 * Ideal column where the caret should try to get. This is used
@@ -253,4 +256,5 @@
 		switch (ev.type) {
 		case CEV_KEY:
+			pane.keymod = ev.ev.key.mods;
 			if (ev.ev.key.type == KEY_PRESS)
 				key_handle_press(&ev.ev.key);
@@ -480,4 +484,5 @@
 	coord_t bc;
 	spt_t pt;
+	bool select;
 
 	if (ev->type == POS_PRESS && ev->vpos < (unsigned)pane.rows) {
@@ -486,5 +491,7 @@
 		sheet_get_cell_pt(doc.sh, &bc, dir_before, &pt);
 
-		caret_move(pt, false, true);
+		select = (pane.keymod & KM_SHIFT) != 0;
+
+		caret_move(pt, select, true);
 	}
 }
