diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index 58fbf1583d6298785d04f8720fa4c231fc28d5f0..dd3d815999111529bc2bb45bbb0837768cbd4384 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -1293,6 +1293,12 @@ BOOL doterm(struct bbslist *bbs)
 				case CIO_KEY_DC:		/* "Delete" key, send ASCII 127 (DEL) */
 					conn_send("\x7f",1,0);
 					break;
+				case CIO_KEY_NPAGE:		/* Page down */
+					conn_send("\033[U",3,0);
+					break;
+				case CIO_KEY_PPAGE:	/* Page up */
+					conn_send("\033[V",3,0);
+					break;
 				case CIO_KEY_F(1):
 					conn_send("\033OP",3,0);
 					break;
@@ -1300,10 +1306,37 @@ BOOL doterm(struct bbslist *bbs)
 					conn_send("\033OQ",3,0);
 					break;
 				case CIO_KEY_F(3):
-					conn_send("\033Ow",3,0);
+					conn_send("\033OR",3,0);
 					break;
 				case CIO_KEY_F(4):
-					conn_send("\033Ox",3,0);
+					conn_send("\033OS",3,0);
+					break;
+				case CIO_KEY_F(5):
+					conn_send("\033Ot",3,0);
+					break;
+				case CIO_KEY_F(6):
+					conn_send("\033[17~",4,0);
+					break;
+				case CIO_KEY_F(7):
+					conn_send("\033[18~",4,0);
+					break;
+				case CIO_KEY_F(8):
+					conn_send("\033[19~",4,0);
+					break;
+				case CIO_KEY_F(9):
+					conn_send("\033[20~",4,0);
+					break;
+				case CIO_KEY_F(10):
+					conn_send("\033[21~",4,0);
+					break;
+				case CIO_KEY_F(11):
+					conn_send("\033[23~",4,0);
+					break;
+				case CIO_KEY_F(12):
+					conn_send("\033[24~",4,0);
+					break;
+				case CIO_KEY_IC:
+					conn_send("\033[@",3,0);
 					break;
 				case 0x3000:	/* ALT-B - Scrollback */
 					viewscroll();