diff --git a/ChangeLog b/ChangeLog
index d35246d5d74a0d1d38a6d4bd6f5b9f4d0aa1aa29..c11354868323d455109aa63123c5836a261e1866 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -115,6 +115,7 @@ Cvs code -
 	- Add Alt-whatever-[a-d] support as well as Alt-whatever-[A-D].
   main()
 	- Code to silently process "-g" and "-j" (Rocco)
+	- Added Alt-[-[-7,8 support for home/end keys (Jeff Teunissen).
   signal_init()
 	- Reorder sigaction calls, use sigfillset() to stop SIGTSTP and
 	  SIGCONT from being interrupted, allows suspending nano
diff --git a/nano.c b/nano.c
index 2f945686f60e2987e36a6093ad41a0e27bdea55f..ab4578317850505f300d2429c5bcff4761990223 100644
--- a/nano.c
+++ b/nano.c
@@ -2613,8 +2613,27 @@ int main(int argc, char *argv[])
 		    break;
 		case '[':	/* Alt-[-[-[A-E], F1-F5 in linux console */
 		    kbinput = wgetch(edit);
-		    if (kbinput >= 'A' && kbinput <= 'E')
+		    switch(kbinput) {
+		    case 'A':
+		    case 'B':
+		    case 'C':
+		    case 'D':
+		    case 'E':
 			kbinput = KEY_F(kbinput - 64);
+		 	break;
+		    case 7:
+			kbinput = KEY_HOME;
+			break;
+		    case 8:
+			kbinput = KEY_END;
+			break;
+#ifdef DEBUG
+		    default:
+			fprintf(stderr, _("I got Alt-[-[-%c! (%d)\n"),
+				kbinput, kbinput);
+			break;
+#endif
+		    }
 		    break;
 		case 'A':
 		case 'B':