X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/f43e4b678f0b7aa847a3eeb3fab536058710d69f..ce3262cf6ddf5908eced52424c07682795f9523b:/windows/window.c diff --git a/windows/window.c b/windows/window.c index 3ff018b1..96f64999 100644 --- a/windows/window.c +++ b/windows/window.c @@ -110,7 +110,6 @@ static LPARAM pend_netevent_lParam = 0; static void enact_pending_netevent(void); static void flash_window(int mode); static void sys_cursor_update(void); -static int is_shift_pressed(void); static int get_fullscreen_rect(RECT * ss); static int caret_x = -1, caret_y = -1; @@ -1909,17 +1908,6 @@ static int is_alt_pressed(void) return FALSE; } -static int is_shift_pressed(void) -{ - BYTE keystate[256]; - int r = GetKeyboardState(keystate); - if (!r) - return FALSE; - if (keystate[VK_SHIFT] & 0x80) - return TRUE; - return FALSE; -} - static int resizing; void notify_remote_exit(void *fe) @@ -3823,6 +3811,10 @@ static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam, SendMessage(hwnd, WM_VSCROLL, SB_LINEDOWN, 0); return 0; } + if ((wParam == VK_PRIOR || wParam == VK_NEXT) && shift_state == 3) { + term_scroll_to_selection(term, (wParam == VK_PRIOR ? 0 : 1)); + return 0; + } if (wParam == VK_INSERT && shift_state == 1) { request_paste(NULL); return 0; @@ -4226,37 +4218,7 @@ static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam, break; } if (xkey) { - if (term->vt52_mode) - p += sprintf((char *) p, "\x1B%c", xkey); - else { - int app_flg = (term->app_cursor_keys && !cfg.no_applic_c); -#if 0 - /* - * RDB: VT100 & VT102 manuals both state the - * app cursor keys only work if the app keypad - * is on. - * - * SGT: That may well be true, but xterm - * disagrees and so does at least one - * application, so I've #if'ed this out and the - * behaviour is back to PuTTY's original: app - * cursor and app keypad are independently - * switchable modes. If anyone complains about - * _this_ I'll have to put in a configurable - * option. - */ - if (!term->app_keypad_keys) - app_flg = 0; -#endif - /* Useful mapping of Ctrl-arrows */ - if (shift_state == 2) - app_flg = !app_flg; - - if (app_flg) - p += sprintf((char *) p, "\x1BO%c", xkey); - else - p += sprintf((char *) p, "\x1B[%c", xkey); - } + p += format_arrow_key(p, term, xkey, shift_state); return p - output; } } @@ -5053,16 +5015,12 @@ void modalfatalbox(char *fmt, ...) cleanup_exit(1); } -typedef BOOL (WINAPI *p_FlashWindowEx_t)(PFLASHWINFO); -static p_FlashWindowEx_t p_FlashWindowEx = NULL; +DECL_WINDOWS_FUNCTION(static, BOOL, FlashWindowEx, (PFLASHWINFO)); static void init_flashwindow(void) { HMODULE user32_module = LoadLibrary("USER32.DLL"); - if (user32_module) { - p_FlashWindowEx = (p_FlashWindowEx_t) - GetProcAddress(user32_module, "FlashWindowEx"); - } + GET_WINDOWS_FUNCTION(user32_module, FlashWindowEx); } static BOOL flash_window_ex(DWORD dwFlags, UINT uCount, DWORD dwTimeout)