Index: uspace/app/edit/edit.c
===================================================================
--- uspace/app/edit/edit.c	(revision 448c4488f6297e742f234a4f376d1a4d2baa958e)
+++ uspace/app/edit/edit.c	(revision 86031458bce304574a7f1c131610ac0ca01e169e)
@@ -303,6 +303,4 @@
 	errno_t rc;
 
-	(void) pos_handle;
-
 	pane.sh_row = 1;
 	pane.sh_column = 1;
@@ -810,6 +808,6 @@
 
 	if (ev->type == POS_PRESS && ev->vpos < (unsigned)pane.rows) {
-		bc.row = pane.sh_row + ev->vpos;
-		bc.column = pane.sh_column + ev->hpos;
+		bc.row = pane.sh_row + ev->vpos - pane.rect.p0.y;
+		bc.column = pane.sh_column + ev->hpos - pane.rect.p0.x;
 		sheet_get_cell_pt(doc.sh, &bc, dir_before, &pt);
 
@@ -817,4 +815,5 @@
 
 		caret_move(pt, select, true);
+		pane_update(&pane);
 	}
 }
@@ -1521,5 +1520,15 @@
 static ui_evclaim_t pane_ctl_pos_event(void *arg, pos_event_t *event)
 {
-	return ui_unclaimed;
+	gfx_coord2_t pos;
+
+	pos.x = event->hpos;
+	pos.y = event->vpos;
+
+	if (!gfx_pix_inside_rect(&pos, &pane.rect))
+		return ui_unclaimed;
+
+	pos_handle(event);
+	(void) gfx_update(ui_window_get_gc(edit.window));
+	return ui_claimed;
 }
 
@@ -2219,4 +2228,6 @@
     kbd_event_t *event)
 {
+	pane.keymod = event->mods;
+
 	if (event->type == KEY_PRESS) {
 		key_handle_press(event);
