This is a collection of modules (not easily seperable, perhaps) written in and for Gauche Scheme (though it shouldn't be too difficult to port it to any scheme that can implement %with-immediate-input) for the purpose of implementing a simple and flexible human-input mechanism. It's not quite finished: this release lacks documentation and the following planned features: 1. vertically-scrolling input 2. fixed-column input The default input mechanism is a side-scrolling entire-row-consuming 'GNU Readline'-like single-line text-reader. The default keymap provides most (or all?) of the expected control-bindings, as well as these two silly and irresponsible additions: 1. C-r (Control+R), which toggles reverse-input-mode. 2. M-r (Meta+r, Escape+r, or ALT+r), which toggles rot13-filtered input. The default 'history' keybindings (C-p and C-n) differ somewhat from the expected behaviors -- see BUGS. Also, this library doesn't attempt to limit the size of the history in any way -- it's simple enough for a user program to truncate the history, though: (hash-table-put! *readline-keymap* (char->control #\t) (lambda (state spec exit) (hash-table-put! state 'last-history (take-right (hash-table-get state 'last-history) *some-user-limit*)))) All of this library is reentrant; the only possble danger is from *readline-keymap*, which is the default keymap -- however, keymaps are also part of 'reentrant' state and there is nothing stopping multiple or recursive invocations of readline from using very different keymaps without interference. This library (under Gauche Scheme) is, to the best of my knowledge, fully aware and considerate of multibyte characters. This is hardly a difficult state for a program under Gauche to be in, but I thought I'd mention it. Please see COPYING for the (brief) licensing information, INSTALL for the (brief) installation instructions, and examples/*.scm for (brief?) examples of this program's functionality. Hopefully the effort I've directed at examples will make up, somewhat, for the effort I've failed to direct at documentation. 28 Aug 2002 Julian Fondren cleverjulian@hotmail.com