1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-25 01:02:24 +00:00
putty-source/unix
Simon Tatham 41e1a586fb Centralise key escape sequences into terminal.c.
A long time ago, in commit 4d77b6567, I moved the generation of the
arrow-key escape sequences into a function format_arrow_key(). Mostly
the reason for that was a special purpose I had in mind at the time
which involved auto-generating the same sequences in response to
things other than a keypress, but I always thought it would be nice to
centralise a lot more of PuTTY's complicated keyboard handling in the
same way - at least the handling of the function keys and their
numerous static and dynamic config options.

In this year's general spirit of tidying up and refactoring, I think
it's finally time. So here I introduce three more centralised
functions for dealing with the numbered function keys, the small
keypad (Ins, Home, PgUp etc) and the numeric keypad. Lots of horrible
and duplicated code from the key handling functions in window.c and
gtkwin.c is now more sensibly centralised: each platform keyboard
handler concerns itself with the local format of a keyboard event and
platform-specific enumeration of key codes, and once it's decided what
the logical key press actually _is_, it hands off to the new functions
in terminal.c to generate the appropriate escape code.

Mostly this is intended to be a refactoring without functional change,
leaving the keyboard handling how it's always been. But in cases where
the Windows and GTK handlers were accidentally inconsistent, I've
fixed the inconsistency rather than carefully keeping both sides how
they were. Known consistency fixes:

 - swapping the arrow keys between normal (ESC [ A) and application
   (ESC O A) is now done by pressing Ctrl with them, and _not_ by
   pressing Shift. That was how it was always supposed to work, and
   how it's worked on GTK all along, but on Windows it's been done by
   Shift as well since 2010, due to a bug at the call site of
   format_arrow_key() introduced when I originally wrote that function.

 - in Xterm function key mode plus application keypad mode, the /*-
   keys on the numeric keypad now send ESC O {o,j,m} in place of ESC O
   {Q,R,S}. That's how the Windows keyboard handler has worked all
   along (it was a deliberate behaviour tweak for the Xterm-like
   function key mode, because in that mode ESC O {Q,R,S} are generated
   by F2-F4). But the GTK keyboard handler omitted that particular
   special case and was still sending ESC O {Q,R,S} for those keys in
   all application keypad modes.

 - also in Xterm function key mode plus app keypad mode, we only
   generates the app-keypad escape sequences if Num Lock is on; with
   Num Lock off, the numeric keypad becomes arrow keys and
   Home/End/etc, just as it would in non-app-keypad mode. Windows has
   done this all along, but again, GTK lacked that special case.
2018-12-08 16:08:47 +00:00
..
configure Move the Unix configure script up to the top level. 2014-02-22 18:01:32 +00:00
gtkapp.c Move all extern declarations into header files. 2018-11-03 13:47:29 +00:00
gtkask.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkcfg.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkcols.c Add some more miscellaneous asserts. 2018-12-01 17:04:44 +00:00
gtkcols.h Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkcomm.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkcompat.h Adopt C99 <stdbool.h>'s true/false. 2018-11-03 13:45:00 +00:00
gtkdlg.c Add some more miscellaneous asserts. 2018-12-01 17:04:44 +00:00
gtkfont.c Add some more miscellaneous asserts. 2018-12-01 17:04:44 +00:00
gtkfont.h Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkmain.c Move all extern declarations into header files. 2018-11-03 13:47:29 +00:00
gtkmisc.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkmisc.h Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkwin.c Centralise key escape sequences into terminal.c. 2018-12-08 16:08:47 +00:00
osxlaunch.c osxlaunch: stop setting DYLD_LIBRARY_PATH. 2017-12-20 10:04:02 +00:00
pterm.bundle OS X makefile: stop depending on JHBUILD_PREFIX. 2017-11-26 11:45:48 +00:00
pterm.plist Create OS X application bundles for PuTTY and pterm. 2016-03-23 22:22:48 +00:00
putty.bundle OS X makefile: stop depending on JHBUILD_PREFIX. 2017-11-26 11:45:48 +00:00
putty.plist Create OS X application bundles for PuTTY and pterm. 2016-03-23 22:22:48 +00:00
unix.h Move all extern declarations into header files. 2018-11-03 13:47:29 +00:00
ux_x11.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxagentc.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxagentsock.c Close standard handles in watchdog subprocesses. 2018-10-21 10:16:16 +01:00
uxcfg.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxcons.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxfdsock.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxgen.c Unix PuTTYgen: switch to /dev/urandom by default. 2018-06-03 15:15:51 +01:00
uxgss.c Support GSS key exchange, for Kerberos 5 only. 2018-04-26 07:21:16 +01:00
uxmisc.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxnet.c Remove some redundant variables and assignments. 2018-12-01 17:00:01 +00:00
uxnogtk.c Include the compile-time GTK version in the build info. 2017-02-15 19:32:42 +00:00
uxnoise.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxpeer.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxpgnt.c Remove some redundant variables and assignments. 2018-12-01 17:00:01 +00:00
uxplink.c Remove some redundant variables and assignments. 2018-12-01 17:00:01 +00:00
uxprint.c Update to r8614: another -D_FORTIFY_SOURCE=2 fix. 2010-02-20 11:21:25 +00:00
uxproxy.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxpterm.c Move all extern declarations into header files. 2018-11-03 13:47:29 +00:00
uxpty.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxputty.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxsel.c unix: make select_result() return void. 2017-05-14 16:34:48 +01:00
uxser.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxserver.c Remove some redundant variables and assignments. 2018-12-01 17:00:01 +00:00
uxsftp.c Remove some redundant variables and assignments. 2018-12-01 17:00:01 +00:00
uxsftpserver.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxshare.c Move all extern declarations into header files. 2018-11-03 13:47:29 +00:00
uxsignal.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxstore.c Rework mungestr() and unmungestr(). 2018-11-03 13:45:00 +00:00
uxucs.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
x11misc.c Ignore X11 BadMatch errors during cut buffer setup. 2016-03-20 18:30:03 +00:00
x11misc.h Basic support for running under GDK Wayland back end. 2018-05-09 09:21:27 +01:00
xkeysym.c Support for non-ISO-8859-1 X keysyms. So in particular, pterm in a 2003-04-27 11:10:48 +00:00
xpmptcfg.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
xpmpterm.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
xpmpucfg.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
xpmputty.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00