diff options
author | corvid <corvid@lavabit.com> | 2009-07-05 22:17:41 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2009-07-05 22:17:41 +0000 |
commit | 76c4bf8a1cc85d9cd15c0bb6817a7fe92c5e6eaa (patch) | |
tree | 7ba32724cbcb56f03ea82a904c9578f29f3774c7 /src | |
parent | 1cefd820489a50fd10220e05c05a7b102c6940b2 (diff) |
keybindings for scrolling
Diffstat (limited to 'src')
-rw-r--r-- | src/keys.cc | 12 | ||||
-rw-r--r-- | src/keys.hh | 10 | ||||
-rw-r--r-- | src/keysrc | 23 | ||||
-rw-r--r-- | src/ui.cc | 6 | ||||
-rw-r--r-- | src/uicmd.cc | 35 | ||||
-rw-r--r-- | src/uicmd.hh | 1 |
6 files changed, 85 insertions, 2 deletions
diff --git a/src/keys.cc b/src/keys.cc index 58335a13..44e2aeba 100644 --- a/src/keys.cc +++ b/src/keys.cc @@ -99,7 +99,17 @@ static const KeyBinding_t default_keys[] = { { "forward" , KEYS_FORWARD , fltk::SHIFT , fltk::BackSpaceKey }, { "forward" , KEYS_FORWARD , 0 , '.' }, { "goto" , KEYS_GOTO , fltk::CTRL , 'l' }, - { "home" , KEYS_HOME , fltk::CTRL , 'h' } + { "home" , KEYS_HOME , fltk::CTRL , 'h' }, + { "screen-up" , KEYS_SCREEN_UP , 0 , fltk::PageUpKey }, + { "screen-up" , KEYS_SCREEN_UP , 0 , 'b' }, + { "screen-down" , KEYS_SCREEN_DOWN , 0 , fltk::PageDownKey }, + { "screen-down" , KEYS_SCREEN_DOWN , 0 , fltk::SpaceKey }, + { "line-up" , KEYS_LINE_UP , 0 , fltk::UpKey }, + { "line-down" , KEYS_LINE_DOWN , 0 , fltk::DownKey }, + { "left" , KEYS_LEFT , 0 , fltk::LeftKey }, + { "right" , KEYS_RIGHT , 0 , fltk::RightKey }, + { "top" , KEYS_TOP , 0 , fltk::HomeKey }, + { "bottom" , KEYS_BOTTOM , 0 , fltk::EndKey }, }; static Dlist *bindings; diff --git a/src/keys.hh b/src/keys.hh index 18c82c9d..218f15e9 100644 --- a/src/keys.hh +++ b/src/keys.hh @@ -36,7 +36,15 @@ typedef enum { KEYS_BACK, KEYS_FORWARD, KEYS_GOTO, - KEYS_HOME + KEYS_HOME, + KEYS_SCREEN_UP, + KEYS_SCREEN_DOWN, + KEYS_LINE_UP, + KEYS_LINE_DOWN, + KEYS_LEFT, + KEYS_RIGHT, + KEYS_TOP, + KEYS_BOTTOM } KeysCommand_t; class Keys { @@ -69,3 +69,26 @@ # "stop" loading the page. #(stop has no default binding) + +#-------------------------------------------------------------------- +# MOTION COMMANDS +#-------------------------------------------------------------------- + +#pageup = screen-up +#b = screen-up + +#pagedown = screen-down +#space = screen-down + +#up = line-up + +#down = line-down + +#left = left + +#right = right + +#home = top + +#end = bottom + @@ -750,6 +750,12 @@ int UI::handle(int event) KeysCommand_t cmd = Keys::getKeyCmd(); if (cmd == KEYS_NOP) { // Do nothing + } else if (cmd == KEYS_SCREEN_UP || cmd == KEYS_SCREEN_DOWN || + cmd == KEYS_LINE_UP || cmd == KEYS_LINE_DOWN || + cmd == KEYS_LEFT || cmd == KEYS_RIGHT || + cmd == KEYS_TOP || cmd == KEYS_BOTTOM) { + a_UIcmd_scroll(a_UIcmd_get_bw_by_widget(this), cmd); + ret = 1; } else if (cmd == KEYS_BACK) { a_UIcmd_back(a_UIcmd_get_bw_by_widget(this)); ret = 1; diff --git a/src/uicmd.cc b/src/uicmd.cc index c832eb85..8e8a2834 100644 --- a/src/uicmd.cc +++ b/src/uicmd.cc @@ -23,6 +23,7 @@ #include <fltk/Tooltip.h> #include "paths.hh" +#include "keys.hh" #include "ui.hh" #include "uicmd.hh" #include "timeout.hh" @@ -1088,6 +1089,40 @@ void a_UIcmd_set_scroll_by_fragment(BrowserWindow *bw, const char *f) } /* + * Pass scrolling command to dw. + */ +void a_UIcmd_scroll(BrowserWindow *bw, int icmd) +{ + Layout *layout = (Layout*)bw->render_layout; + + if (layout) { + typedef struct { + KeysCommand_t keys_cmd; + ScrollCommand dw_cmd; + } mapping_t; + + const mapping_t map[] = { + {KEYS_SCREEN_UP, SCREEN_UP_CMD}, + {KEYS_SCREEN_DOWN, SCREEN_DOWN_CMD}, + {KEYS_LINE_UP, LINE_UP_CMD}, + {KEYS_LINE_DOWN, LINE_DOWN_CMD}, + {KEYS_LEFT, LEFT_CMD}, + {KEYS_RIGHT, RIGHT_CMD}, + {KEYS_TOP, TOP_CMD}, + {KEYS_BOTTOM, BOTTOM_CMD}, + }; + KeysCommand_t keycmd = (KeysCommand_t)icmd; + + for (uint_t i = 0; i < (sizeof(map)/sizeof(mapping_t)); i++) { + if (keycmd == map[i].keys_cmd) { + layout->scroll(map[i].dw_cmd); + break; + } + } + } +} + +/* * Get location's text */ char *a_UIcmd_get_location_text(BrowserWindow *bw) diff --git a/src/uicmd.hh b/src/uicmd.hh index 40779403..87d923d3 100644 --- a/src/uicmd.hh +++ b/src/uicmd.hh @@ -68,6 +68,7 @@ void a_UIcmd_get_wh(BrowserWindow *bw, int *w, int *h); void a_UIcmd_get_scroll_xy(BrowserWindow *bw, int *x, int *y); void a_UIcmd_set_scroll_xy(BrowserWindow *bw, int x, int y); void a_UIcmd_set_scroll_by_fragment(BrowserWindow *bw, const char *f); +void a_UIcmd_scroll(BrowserWindow *bw, int icmd); char *a_UIcmd_get_location_text(BrowserWindow *bw); void a_UIcmd_set_location_text(void *vbw, const char *text); void a_UIcmd_set_page_prog(BrowserWindow *bw, size_t nbytes, int cmd); |