KEYBOARD HANDLING
[[[[
Unfinished business and uncertainty, January 2004:
(a) ALT key on Windows does not activate ALT effect. Need to make it
transmit ESC-x for ALT-x
(b) Cursor position gets lost on Windows after down-arrow key?
(c) ALT-n and ALT-p do not seem to enter search mode
(d) ^C, ^D, ^G, ^O, ^S, ^T, ^Z, ^\ and maybe ^L, ^R interact with
exceptions or the like so may not be cross-platform yet.
(e) The intent is clearly thet ^S, ^Q, ^O are recognised whether there
is an input request or not. I do not do that yet. Maybe Windows
will need a separate thread always checking the keyboard?
(f) ALT-e etc do not yet link to the CSL-specific menus
(g) this code needs to link into my Window system "fwin".
]]]]
Key-bindings that I hope to make work in both terminal and windowed mode,
on both Unix/Linux, Microsoft Windows and the Macintosh.
Note that ALT can be achieved either by holding the ALT key at the
same time as the listed key, or by pressing ESC before the key.
ALT takes priority over SHIFT, and Control takes priority over ALT so
that a character is only treated as having one attribute. If it has none
it just inserts itself.
Where I put a "-" in this table it means that I do not define the meaning
of the keystroke. In the short term at least that will either cause the
keystroke to be ignored, inserted, or treated the same way as the
corresponding character without Control or ALT. In the longer term I may
assign behaviours to some of those keys. I also want to reserve the
possibility of making keys with both Control and ALT have yet different
effects.
Key Control ALT
@ Set Mark - (also Home key)
A To beginning -
B Back char Back word (also left arrow key)
C ^C interrupt Capitalise word
D Delete forward Delete word (also the Delete key)
Also ^D before any other input on a line sends EOF
E To end [Edit menu] (also End key, ALT ignored)
F Forward char Foward word (also right arrow key)
G ^G interrupt -
H Delete back Del word back
I TAB [File menu] (also TAB key, ALT ignored)
J Newline -
K Kill line -
L Clear screen Lowercase word
M Newline [Module load menu]
N Next history Search history next (also down arrow key)
O Discard output [Font menu]
P Previous history Search history prev (also up arrow key)
Q Resume output -
R Redisplay [Break menu]
S Stop output [Switch menu]
T Transpose chars -
U Kill line Uppercase word
V Quoted insert -
W - Copy region
X eXtended command Obey command
Y Yank (=Paste) -
Z Pause execution -
[ =ESC -
\ Quit -
] - -
_ - -
^ - -
The items shown as menus behave as follows:
ALT-E C cut
O copy
P paste
R reinput
A select all
L clear
D redraw
H home
E end
ALT-I R read
S save
L save selected text
P print
N print selected text
X exit
ALT-M &Module menu shortcut - load a REDUCE module
ALT-O F select new font
R reset to default font
W reset font and window to default
Alt-R C as ^C, interrupt current computation
G as ^G, interrupt & backtrace current computation
X as ^Z, pause current computation
ALT-S &Switch menu shortcut - flip a REDUCE switch
=============================================================================