diff --git a/src/g_editor.c b/src/g_editor.c
index 26f8f5619a59ed5745dadffbb195b9e733020166..d159bf1c499e44e210d604cb45be14e979a49cac 100644
--- a/src/g_editor.c
+++ b/src/g_editor.c
@@ -3532,11 +3532,11 @@ void canvas_key(t_canvas *x, t_symbol *s, int ac, t_atom *av)
 		        canvas_displaceselection(x, 0, shift ? 10 : 1);
 				sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x);
 			}
-		    else if (!strcmp(gotkeysym->s_name, "Left")) {
+		    else if (!strcmp(gotkeysym->s_name, "Left") || !strcmp(gotkeysym->s_name, "ShiftLeft")) {
 		        canvas_displaceselection(x, shift ? -10 : -1, 0);
 				sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x);
 			}
-		    else if (!strcmp(gotkeysym->s_name, "Right")) {
+		    else if (!strcmp(gotkeysym->s_name, "Right") || !strcmp(gotkeysym->s_name, "ShiftRight")) {
 		        canvas_displaceselection(x, shift ? 10 : 1, 0);
 				sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x);
 			}