diff --git a/src/definitions.h b/src/definitions.h index 5d6cb47b..3f9f5773 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -195,6 +195,8 @@ #define ALT_RIGHT 0x422 #define ALT_UP 0x423 #define ALT_DOWN 0x424 +#define ALT_HOME 0x425 +#define ALT_END 0x426 #define ALT_PAGEUP 0x427 #define ALT_PAGEDOWN 0x428 #define ALT_INSERT 0x42C diff --git a/src/global.c b/src/global.c index 87beeacc..62337df4 100644 --- a/src/global.c +++ b/src/global.c @@ -104,7 +104,7 @@ int shiftleft, shiftright, shiftup, shiftdown; int shiftcontrolleft, shiftcontrolright, shiftcontrolup, shiftcontroldown; int shiftcontrolhome, shiftcontrolend; int altleft, altright, altup, altdown; -int altpageup, altpagedown; +int althome, altend, altpageup, altpagedown; int altinsert, altdelete; int shiftaltleft, shiftaltright, shiftaltup, shiftaltdown; #endif @@ -1314,6 +1314,8 @@ void shortcut_init(void) add_to_sclist(MMAIN, "^Del", CONTROL_DELETE, chop_next_word, 0); add_to_sclist(MMAIN, "M-Del", ALT_DELETE, zap_text, 0); add_to_sclist(MMAIN, "M-Ins", ALT_INSERT, put_or_lift_anchor, 0); + add_to_sclist(MMAIN, "M-Home", ALT_HOME, to_top_row, 0); + add_to_sclist(MMAIN, "M-End", ALT_END, to_bottom_row, 0); add_to_sclist(MMAIN, "M-PgUp", ALT_PAGEUP, to_prev_anchor, 0); add_to_sclist(MMAIN, "M-PgDn", ALT_PAGEDOWN, to_next_anchor, 0); add_to_sclist(MMAIN, "M-\"", 0, put_or_lift_anchor, 0); diff --git a/src/nano.c b/src/nano.c index 4c0c19be..65fc096e 100644 --- a/src/nano.c +++ b/src/nano.c @@ -2434,6 +2434,8 @@ int main(int argc, char **argv) altup = get_keycode("kUP3", ALT_UP); altdown = get_keycode("kDN3", ALT_DOWN); + althome = get_keycode("kHOM3", ALT_HOME); + altend = get_keycode("kEND3", ALT_END); altpageup = get_keycode("kPRV3", ALT_PAGEUP); altpagedown = get_keycode("kNXT3", ALT_PAGEDOWN); altinsert = get_keycode("kIC3", ALT_INSERT); diff --git a/src/prototypes.h b/src/prototypes.h index 0afdadad..2ef73c0a 100644 --- a/src/prototypes.h +++ b/src/prototypes.h @@ -75,6 +75,7 @@ extern int shiftcontrolup, shiftcontroldown; extern int shiftcontrolhome, shiftcontrolend; extern int altleft, altright; extern int altup, altdown; +extern int althome, altend; extern int altpageup, altpagedown; extern int altinsert, altdelete; extern int shiftaltleft, shiftaltright; diff --git a/src/winio.c b/src/winio.c index 5f013bf9..3d89dc58 100644 --- a/src/winio.c +++ b/src/winio.c @@ -1173,6 +1173,10 @@ int parse_kbinput(WINDOW *frame) return ALT_UP; else if (keycode == altdown) return ALT_DOWN; + else if (keycode == althome) + return ALT_HOME; + else if (keycode == altend) + return ALT_END; else if (keycode == altpageup) return ALT_PAGEUP; else if (keycode == altpagedown) @@ -1216,11 +1220,13 @@ int parse_kbinput(WINDOW *frame) if (!meta_key) shift_held = TRUE; } - /* Is Alt being held? */ + /* Is only Alt being held? */ if (modifiers == 0x08) { switch (keycode) { case KEY_UP: return ALT_UP; case KEY_DOWN: return ALT_DOWN; + case KEY_HOME: return ALT_HOME; + case KEY_END: return ALT_END; case KEY_PPAGE: return ALT_PAGEUP; case KEY_NPAGE: return ALT_PAGEDOWN; case KEY_DC: return ALT_DELETE;