# EDT Bindings

Note: The EDT bindings are the work of Achim Bohnet `<ach@rosat.mpe-garching.mpg.de>`, and lightly modified by Jay Sekora `<js@aq.org>`. They really assume you have a DEC keyboard, with DEC keypad symbols. If you have a different kind of keyboard, and you want to use the EDT bindings, you can use the `xmodmap`(1) application to assign the appropriate keysyms to keys on your numeric keypad (or other keys you don't mind replacing).

If you've chosen `EDT Bindings' on the jstools Global Preferences panel, you can use the following keyboard commands to edit text (in large text windows, and also in oneline text fields, except as noted):

Note:

Only EDT keypad mode is (partially) implemented

* Keycodes used are the one of DECs lk20? or lk40? keyboards.

## Keypad bindings

Delete (`Delete`) - deletes the character before the insertion point

Backspace (`BackSpace`) - deletes the character before the insertion point

Control-h () - goto begin of current line or if already there to previous/next begin of line if already at begin of line

## Command bindings

* Commands marked with an '*' are currently not implemented
* Key with two commands: Upper for default state. Lower for gold state.

`+--------+--------+--------+--------+
| GOLD | |*FNDNXT | DEL L |
| | *HELP | | |
| NO DEF | |*FIND | UND L |
+--------+--------+--------+--------+
| *PAGE | *SECT |*APPEND | DEL W |
| | | | |
|*COMMAND| *FILL |*REPLACE|*UND W |
+--------+--------+--------+--------+
| ADVANCE| BACKUP |*CUT | DEL C |
| | | | |
| BOTTOM | TOP | PASTE | UND C |
+--------+--------+--------+--------+
| WORD | EOL | CHAR | |
| | | | |
*CHNGCASE| DEL EOL|*SPECINS| |
+--------+--------+--------+ |
| LINE |*SELECT | |
| | | *SUBS |
| *OPEN LINE |*RESET | |
+-----------------+--------+--------+
`
GOLD (`KP_F1`) - modify the binding of the next keystroke (see lower command on the keypad above)

DEL L (`KP_F4`) - delete from insertion point up to end of line (including newline)

UNDEL L (`KP_F4`) - insert the characters deleted with the last 'DEL L' or 'DEL EOL' command (7)

DEL W (`KP_Subtract`) - delete the next word to the right

ADVANCE (`KP_4`) - set the current direction of movements to forward

BOTTOM (`KP_4`) - goto the end of the file (2) (7)

BACKUP (`KP_5`) - set the direction of movements to backward

TOP (`KP_5`) - goto the beginning of the file (2) (7)

PASTE (`KP_6`) - insert contents of the EDTs multiline buffer at the insert point (3)

DEL C (`KP_Separator`) - delete character to the right

UNDEL C (`KP_Separator`) - insert the character deleted with the last 'DEL C' command (7)

WORD (`KP_1`) - move one word in current direction

EOL (`KP_2`) - goto end of current line or if already next end of line in the current direction (6)

DEL EOL (`KP_2`) - delete all characters up to the end of line (excluding the newline) (7)

CHAR (`KP_3`) - move one character in current direction

LINE (`KP_0`) - goto begin of current line or if already there to next begin of line in the current direction (4)

LEFT (`Left`) and RIGHT (`Right`) - move the insert point one character left or right

UP (`Up`) and DOWN (`Down`) - move the insert point one line up or down (1) (5)

## Footnotes

(1) Only available in multiline text windows, for obvious reasons

(2) In entry widget line changes in forward direcection translate to 'end of line' and in backward direction 'begin of line'.

(3) No command exists to fill the buffer! Therefore useless.

(4) in standard EDT LINE is almost the same as Control-h. In this emulation it is the same!

(5) Cursor does not try to preserve its initial x-offset

(6) not fully EDT compliant

(7) when preceded by GOLD key (`KP_F1`)

## See Also

Mouse Bindings
Emacs Bindings
vi Bindings
Basic Bindings
ComposeKey Combinations

## Known Bugs

command repetition - only a few commands respect the given repetition counter. The counter is NOT reset after each command and therefore use by a later command that check and use the repetition count
repetition number prompt - EDT should use: get a string of digists. On first non digit repeated the binding of the nondigit the given number of times in normal mode
UNDEL W - insert character of EDT word buffer not implemented
`self_insert` - modify to `edt-self-insert`: insert an additional `"\n"` if the insertion point is on end of file mark

## (Some) missing commands

SELECT - start an EDT selection: movements extent the EDT selection (displayed in reverse video

RESET - cancel the EDTs selection without deleting it
PASTE - insert the contents of EDTs selections buffer at the current insert point
REPLACE - exchange the EDTs selection with the contents of the EDTs selection buffer
APPEND - append EDTs selection to the contents of EDTs selection buffer
CUT - delete current EDT selection and save it in the EDTs selection buffer

FIND - ask user for a search to search in current direction. No wrap at end/begin of file. String input terminated by KP_Enter (optional (nonstandard) by Return?). Standard is an exact search (optional with regexp?)
FINDNXT - search next occurence of search string in forward/backward direction

CHNGCASE - change case of character at insert point or if EDTs current selection exists all chracter in it

HELP - Show keyboard layout with bindings and show help for the command that is bound to the key when the user presses the key. Exit help mode with 'space'

SECT - scroll up 2/3 of screen height in current direction (orig. EDT 16 line)
SECT UP - scroll up 2/3 of screen height in forward direction (orig. EDT 16 line)
SECT DWN - scroll down 2/3 of screen height in backward direction (orig. EDT 16 line)
PAGE - goto the next page delimiter (default: formfeed)

## Missing bindings

Control-a - Tab compute ??
Control-c - abort currently executing EDT command (how?)
Control-d - Tab decrease ??
Control-e - Tab increase ??
????????? - Start a learn sequence: remember keystrokes for later execution
Control-l - Insert formfeed
Control-r - Refresh screen (meaningless!?)
Control-t - Tab adjust
Control-u - Delete to begining of line
Control-w - Refresh screen, same as crtl-R (meaningless!?)
Control-z - goto line mode (like vis ex mode)
`
`