Skip to content

Keybindings

Tavis Ormandy edited this page Jun 3, 2022 · 7 revisions

XTerm

These are the default key bindings used by Lotus 1-2-3 in Xterm and Xterm-compatible terminals.

1-2-3 Function 1-2-3 Key Key Name Key Output
{HOME} Home Home \E[H
{END} End End \E[F
{UP} Up Arrow Up Arrow \E[A
{DOWN} Down Arrow Down Arrow \E[B
{LEFT} Left Arrow Left Arrow \E[D
{RIGHT} Right Arrow Right Arrow \E[C
{PG UP} Pg Up Pg Up \E[5~
{PG DN} Pg Dn Pg Dn \E[6~
{BIG LEFT} Ctrl-Left Ctrl Left Arrow \E[1;5D
{BIG RIGHT} Ctrl-Right Ctrl Right Arrow \E[1;5C
{NEXT SHEET} Ctrl-Pg Up Ctrl Pg Up \E[5;5~
{PREV SHEET} Ctrl-Pg Dn Ctrl Pg Dn \E[6;5~
{FIRST CELL} Ctrl-Home Ctrl Home \E[1;5H
{FILE} Ctrl-End Ctrl End \E[1;5F
{TAB} Tab Tab \t
{BACKSPACE} Backspace Backspace ^B
{DEL} Del Del \E[3~
{INS} Ins Ins \E[2~
{RETURN} Return Enter ^M
{ESC} Esc Esc \E
{ESC} Esc F11 \E[23~
{SCROLL LOCK} Scroll Lock F12 \E[24~
{HELP} F1 F1 \EOP
{EDIT} F2 F2 \EOQ
{NAME} F3 F3 \EOR
{ABS} F4 F4 \EOS
{GOTO} F5 F5 \E[15~
{WINDOW} F6 F6 \E[17~
{QUERY} F7 F7 \E[18~
{TABLE} F8 F8 \E[19~
{CALC} F9 F9 \E[20~
{GRAPH} F10 F10 \E[21~
{COMPOSE} Alt-F1 Alt-F1 \E[1;3P
{RECORD} Alt-F2 Alt-F2 \E[1;3Q
{RUN} Alt-F3 Alt-F3 \E[1;3R
{UNDO} Alt-F4 Alt-F4 \E[1;3S
{UNDO} Alt-F4 Alt-F5 \E[15;3~
{UNDO} Alt-F4 Ctrl-F4 \E[[1;5S
{ZOOM} Alt-F6 Alt-F6 \E[17;3~
{REFRESH} Undefined Ctrl-L ^L
{BELL} Undefined
{MAC-A} Alt-a Alt-a \Ea
{MAC-A} Alt-a Alt-A \EA
{MAC-B} Alt-b Alt-b \Eb
{MAC-B} Alt-b Alt-B \EB
{MAC-C} Alt-c Alt-c \Ec
{MAC-C} Alt-c Alt-C \EC
{MAC-D} Alt-d Alt-d \Ed
{MAC-D} Alt-d Alt-D \ED
{MAC-E} Alt-e Alt-e \Ee
{MAC-E} Alt-e Alt-E \EE
{MAC-F} Alt-f Alt-f \Ef
{MAC-F} Alt-f Alt-F \EF
{MAC-G} Alt-g Alt-g \Eg
{MAC-G} Alt-g Alt-G \EG
{MAC-H} Alt-h Alt-h \Eh
{MAC-H} Alt-h Alt-H \EH
{MAC-I} Alt-i Alt-i \Ei
{MAC-I} Alt-i Alt-I \EI
{MAC-J} Alt-j Alt-j \Ej
{MAC-J} Alt-j Alt-J \EJ
{MAC-K} Alt-k Alt-k \Ek
{MAC-K} Alt-k Alt-K \EK
{MAC-L} Alt-l Alt-l \El
{MAC-L} Alt-l Alt-L \EL
{MAC-M} Alt-m Alt-m \Em
{MAC-M} Alt-m Alt-M \EM
{MAC-N} Alt-n Alt-n \En
{MAC-N} Alt-n Alt-N \EN
{MAC-O} Alt-o Alt-o \Eo
{MAC-P} Alt-p Alt-p \Ep
{MAC-P} Alt-p Alt-P \EP
{MAC-Q} Alt-q Alt-q \Eq
{MAC-Q} Alt-q Alt-Q \EQ
{MAC-R} Alt-r Atl-r \Er
{MAC-R} Alt-r Alt-R \ER
{MAC-S} Alt-s Alt-s \Es
{MAC-S} Alt-s Alt-S \ES
{MAC-T} Alt-t Alt-t \Et
{MAC-T} Alt-t Alt-T \ET
{MAC-U} Alt-u Alt-u \Eu
{MAC-U} Alt-u Alt-U \EU
{MAC-V} Alt-v Alt-v \Ev
{MAC-V} Alt-v Alt-V \EV
{MAC-W} Alt-w Alt-w \Ew
{MAC-W} Alt-w Alt-W \EW
{MAC-X} Alt-x Alt-x \Ex

Troubleshooting

If you're using 1-2-3 over a very slow connection, you might need to adjust how long 1-2-3 waits to make sure it received the whole input.

To do this, set the $LOTUS_ESCAPE_TIMEOUT environment variable to the number of deciseconds to wait for more input. The default is 1 decisecond, a setting of 10 would wait a whole second.

Keymaps

1-2-3 uses keymap files to map the keys you press to functions, these need to be regenerated for different terminals or if you want to rebind your keys.

To generate a keymap for a new terminal, try this:

$ mkdir -p share/lotus/keymaps/${TERM:0:1}
$ ./keymap/keymap > share/lotus/keymaps/${TERM:0:1}/${TERM}

Note: You can also specify a terminal name as a parameter.

Troubleshooting

If you get warnings about missing keys, it might not be possible for some key bindings to be automatically assigned. At the moment, you have to fix this issue manually.

  1. First, figure out what key you want to use as a replacement. For example, if you don't have a PgUp key, perhaps you can use Alt+Up instead.
  2. Figure out what terminfo(5) capability refers to that key, it might tell you in the manpage. If not, you might have to figure it out from the output of infocmp -x. For example, Home is called khome.
  3. Modify the keydefs array at the top of keymap.c. Find the entry for your missing key, and replace the missing capability name with the new one.
  4. Recompile.
Clone this wiki locally