diff -ru ex-050325/ex_tty.c ex-050325-du/ex_tty.c
--- ex-050325/ex_tty.c	2005-03-04 13:42:58.000000000 +0100
+++ ex-050325-du/ex_tty.c	2009-06-25 20:06:57.000000000 +0200
@@ -132,7 +132,8 @@
 	&ED, &EI, &F0, &F1, &F2, &F3, &F4, &F5, &F6, &F7, &F8, &F9,
 	&HO, &IC, &IM, &IP, &KD, &KE, &KH, &KL, &KR, &KS, &KU, &LL, &ND, &xNL,
 	&xPC, &RC, &SC, &SE, &SF, &SO, &SR, &TA, &TE, &TI, &UP, &VB, &VS, &VE,
-	&AL_PARM, &DL_PARM, &UP_PARM, &DOWN_PARM, &LEFT_PARM, &RIGHT_PARM
+	&AL_PARM, &DL_PARM, &UP_PARM, &DOWN_PARM, &LEFT_PARM, &RIGHT_PARM,
+ 	&kI, &kD, &kh, &at7, &kP, &kN
 };
 bool *sflags[] = {
 	&AM, &BS, &DA, &DB, &EO, &HC,
@@ -170,7 +171,12 @@
 	addmac1(KD, "j", "down", arrows, 1);
 	addmac1(KL, "h", "left", arrows, 1);
 	addmac1(KR, "l", "right", arrows, 1);
-	addmac1(KH, "H", "home", arrows, 1);
+	addmac1(kI, "i", "insert", arrows, 1);
+	addmac1(kD, "x", "delete", arrows, 1);
+	addmac1(kh, "^", "home", arrows, 1);
+	addmac1(at7, "$", "end", arrows, 1);
+	addmac1(kP, "", "pgup", arrows, 1);
+	addmac1(kN, "", "pgdn", arrows, 1);
 
 	/*
 	 * Handle funny termcap capabilities
@@ -341,7 +347,7 @@
 		*(*fp++) = flag;
 		namp += 2;
 	} while (*namp);
-	namp = "albcbtcdceclcmcrcsdcdldmdoedeik0k1k2k3k4k5k6k7k8k9hoicimipkdkekhklkrkskullndnlpcrcscsesfsosrtatetiupvbvsveALDLUPDOLERI";
+	namp = "albcbtcdceclcmcrcsdcdldmdoedeik0k1k2k3k4k5k6k7k8k9hoicimipkdkekhklkrkskullndnlpcrcscsesfsosrtatetiupvbvsveALDLUPDOLERIkIkDkh@7kPkN";
 	sp = sstrs;
 	do {
 		string = tgetstr(namp, &aoftspace);
diff -ru ex-050325/ex_tty.h ex-050325-du/ex_tty.h
--- ex-050325/ex_tty.h	2004-12-01 19:21:06.000000000 +0100
+++ ex-050325-du/ex_tty.h	2009-06-25 20:06:05.000000000 +0200
@@ -183,6 +183,15 @@
 var	bool	XX;		/* Tektronix 4025 insert line */
 	/* X? is reserved for severely nauseous glitches */
 	/* If there are enough of these we may need bit masks! */
+/*
+ * Insert, Delete, Home, End, PgUp an PgDown keys
+ */
+var	char	*kI;
+var	char	*kD;
+var	char	*kh;
+var	char	*at7;
+var	char	*kP;
+var	char	*kN;
 
 /*
  * From the tty modes...