about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-12 01:00:39 -0500
committerJune McEnroe <june@causal.agency>2020-02-12 01:00:39 -0500
commitaab9f76fa0330ff68a4279db4a6de2fec5973d30 (patch)
tree1b8aaa5a9510e4e305924d7c44f89397e5669c64
parentAllow for arguments to open/copy utilities (diff)
downloadcatgirl-aab9f76fa0330ff68a4279db4a6de2fec5973d30.tar.gz
catgirl-aab9f76fa0330ff68a4279db4a6de2fec5973d30.zip
Add C-v and M-v
I figure there should be some way to scroll without keypad, and
apparently this is what emacs offers...
-rw-r--r--catgirl.14
-rw-r--r--ui.c6
2 files changed, 9 insertions, 1 deletions
diff --git a/catgirl.1 b/catgirl.1
index 7b0b308..ad62f83 100644
--- a/catgirl.1
+++ b/catgirl.1
@@ -291,6 +291,8 @@ Switch to next window.
 Switch to previously selected window.
 .It Ic C-p
 Switch to previous window.
+.It Ic C-v
+Scroll down a page.
 .It Ic M-/
 Switch to previously selected window.
 .It Ic M-a
@@ -308,6 +310,8 @@ Insert a blank line in the window.
 Switch to window by number 0\(en9.
 .It Ic M-u
 Scroll to first unread line.
+.It Ic M-v
+Scroll up a page.
 .El
 .
 .Ss IRC Formatting
diff --git a/ui.c b/ui.c
index 12936ae..328db1b 100644
--- a/ui.c
+++ b/ui.c
@@ -171,7 +171,7 @@ static const char *ExitFocusMode  = "\33[?1004l";
 static const char *EnterPasteMode = "\33[?2004h";
 static const char *ExitPasteMode  = "\33[?2004l";
 
-// Gain use of C-q, C-s, C-c, C-z, C-y, C-o.
+// Gain use of C-q, C-s, C-c, C-z, C-y, C-v, C-o.
 static void acquireKeys(void) {
 	struct termios term;
 	int error = tcgetattr(STDOUT_FILENO, &term);
@@ -182,6 +182,7 @@ static void acquireKeys(void) {
 #ifdef VDSUSP
 	term.c_cc[VDSUSP] = _POSIX_VDISABLE;
 #endif
+	term.c_cc[VLNEXT] = _POSIX_VDISABLE;
 	term.c_cc[VDISCARD] = _POSIX_VDISABLE;
 	error = tcsetattr(STDOUT_FILENO, TCSADRAIN, &term);
 	if (error) err(EX_OSERR, "tcsetattr");
@@ -211,6 +212,7 @@ static void errExit(void) {
 	X(KeyMetaL, "\33l") \
 	X(KeyMetaM, "\33m") \
 	X(KeyMetaU, "\33u") \
+	X(KeyMetaV, "\33v") \
 	X(KeyMetaSlash, "\33/") \
 	X(KeyFocusIn, "\33[I") \
 	X(KeyFocusOut, "\33[O") \
@@ -802,6 +804,7 @@ static void keyCode(int code) {
 		break; case KeyMetaL: bufferList(&window->buffer);
 		break; case KeyMetaM: waddch(window->pad, '\n');
 		break; case KeyMetaU: windowScrollUnread(window);
+		break; case KeyMetaV: windowScroll(window, +(PAGE_LINES - 2));
 
 		break; case KEY_BACKSPACE: edit(id, EditDeletePrev, 0);
 		break; case KEY_DC: edit(id, EditDeleteNext, 0);
@@ -843,6 +846,7 @@ static void keyCtrl(wchar_t ch) {
 		break; case L'P': windowShow(windows.active->prev);
 		break; case L'U': edit(id, EditDeleteHead, 0);
 		break; case L'W': edit(id, EditDeletePrevWord, 0);
+		break; case L'V': windowScroll(windows.active, -(PAGE_LINES - 2));
 		break; case L'Y': edit(id, EditPaste, 0);
 	}
 }