On Tue, 2009-09-22 at 09:13 +0100, Alaric Snell-Pym wrote: > On 22 Sep 2009, at 12:54 am, Thomas Lord wrote: > > [function keys] > > One could assign them -- not too implausibly -- > > to Unicode's circled numbers (U+2460 onward). > > Yeah, but then how does a user type those? Even if no human keyboard > has them, most Unicode keyboard drivers have some mechanism for > entering arbitrary codepoints.
As in Emacs, you normalize events. That is, the keyboard sends whatever special code it sends for a function key but before you look that code up in a keymap, translate it to whatever you like. > > > A very common situation is having a start-up file > > that sets key-bindings. Here are two of mine: > > > > (global-set-key "\M-&" 'interactive-background-command) > > > > (That's Emacs lisp, not Scheme.) > > > > That helps to illustrate how it is convenient to > > humans to write these things as strings. > > > > And, here's one I notice from a famous Emacs lisp > > extension package called "calc": > > > > (define-key calc-mode-map (format "r%c" x) 'calc-recall-quick) > > > > Notice that FORMAT - a procedure for formatting strings - > > is being used to generate a particular keybinding in a > > systematic way, automatically. > > None of this requires what you actually suggested, though, which is > storing modifiers in bucky bits. Instead you're storing them in > prefixes, like M- and S-. Nothing *requires* any particular thing in this space. For the record, so that you're clear how Emacs is working here, (length "\M-&") => 1 This simplifies things. The code that handles a key binding specification doesn't have to have special cases - it treats the character "\M-&" the same way it treats the character "x". -t > > > > > -t > > > > > ABS > > -- > Alaric Snell-Pym > Work: http://www.snell-systems.co.uk/ > Play: http://www.snell-pym.org.uk/alaric/ > Blog: http://www.snell-pym.org.uk/archives/author/alaric/ > > > _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
