[Openmcl-devel] support for International keyboards

Gail Zacharias gz at clozure.com
Tue Apr 7 06:21:48 PDT 2009


Thanks Rainer, that's very helpful.

Here's a proposal, mostly rephrasing what you said:

- Typing the normal keys (i.e. no modifiers) on a keyboard in any 
locale should enter those characters.  If it doesn't it's a bug and 
should be fixed.

- Similarly any issue with dead keys is a bug and should be 
fixed.  Specifically, in any context where option is acting as a meta 
key, option-e should execute meta-e and not modify the next 
character; and in any context where option is not acting as a meta 
key, it should do standard multi-character input.  This is 
independent of what decides whether option is or isn't a meta key in 
any given situation.

- c-q should always make the following character have its standard 
Mac meaning and not its emacs meaning, and any case where it doesn't 
do so is a bug and should be fixed.

- ESC should always work as a meta prefix.  I believe it already 
does, but I just mention it for completeness.

- We should offer users the choice of enabling or disabling 
option-as-meta.  I'm not convinced this should take up a menu item, 
but it should certainly be visible in the preferences dialog.

- If option-as-meta is disabled, you have to use ESC for meta.  My 
image of a user doing that is a Mac user who is fine just using the 
standard Mac editor commands and doesn't much care about emacs.  To 
help them out, we might want to look over the command bindings and 
make sure that the most useful Lisp-specific commands have non-meta 
equivalents.  We might also think about usurping some 
arrow-key-with-modifier bindings for moving around by s-exp's rather 
than lines or what not.

- If option-as-meta is enabled, you generally have to use c-q to 
enter option characters.  This is a problem on keyboards where 
standard (in the CL sense) characters are normally entered with 
option.  It is also a problem for users who like to use non-standard 
characters in their source code.  I think we should address the 
former but not the latter.  I would file the latter under "how to 
make it easier for people to customize their key bindings".  I.e. if 
you really like to use delta a lot in your code and don't want to 
type c-q option-d, then you can bind meta-d to insert-a-delta for 
yourself.  It's too much of a personal choice, on a 
character-by-character basis, for us to know which intepretation is better.

- For the standard character problem, we should do the Aquamacs thing 
of usurping those particular meta bindings to insert the character as 
if quoted (I understand there are implementation issues; we can 
figure them out).  We should do this unconditionally out of the box, 
without the user having to tell us what keyboard they're using or 
anything like that.  I think it's important for people to be able to 
just start up the IDE and type in examples from a book without having 
to first learn any special conventions for entering ordinary 
characters.  Again, if some people would rather have m-l do 
lowercase-region, and insert '@' by typing c-q option-l or some other 
key altogether, that's possible as a personal customization.

- I don't much care about offering command-as-meta on a Mac.  I think 
it's basically a unix weenie "real men don't use cmd-C" approach, and 
as such not particularly high priority for the IDE.  If somebody who 
cares about it takes the time to implement it, that would be great, 
but even then I would leave it as something that can be turned on by 
appropriate incantations in your init file;  I wouldn't put it on a 
menu or busy up the preferences dialog with it.


At 4/7/2009 03:18 AM, Rainer Joswig wrote:
>A while ago I wrote the following email about this topic (not to this
>list). Maybe it is worth to send it to this list also, since it
>describes the perspective of a German keyboard user:
>
>----
>
>I have keys for ü, ä, ö (and some others)
>on a German keyboard. I don't press these keys with option-something.
>My keyboard ALU keyboard looks like this:
>
>unshifted
>
>
>
>
>
>
>
>shifted
>
>
>
>
>
>
>
>option
>
>
>
>
>
>
>
>option-shifted
>
>
>
>
>
>
>
>there are basically three problems to address:
>
>1) normal keys like ä, ö, ü, ß, Ä, Ö, Ü should just work (shifted and
>unshifted)
>
>2) in many Lisp environments the OPTION key is used for META
>  (sometimes COMMAND is used as the META key)
>
>  This is for Lisp programming a problem, since many useful characters
>  can only be reached with the option key: @, [, ], {, }, |, ...
>
>  There are usually two solutions to this: a) use c-q as a prefix.
>  b) make some meta-key combinations available, so that they
>  input characters. For example Aquamacs does that.
>  Aquamacs has under the Options menu the entry 'Option key'
>  where I can select Meta & German - this then makes
>  for example option-x act like meta-x and option-l enters
>  the @ character.
>
>  Then there is the possibility to use esc as the meta key prefix
>  and use option key as the OPTION key. Probably something
>  that some users might like.
>
>3) dead keys. CCL should understand the dead key combinations.
>  The orange keys above are 'dead' keys. So 'option-u a'
>  should enter an ä.
>
>
>I don't have the newest version of CCL, but 'Clozure Common Lisp
>Version 1.1-r8157 (DarwinX8664)'
>makes quite a few problems:
>
>1) öäüßÄÖÜ don't work. If I press these keys nothing gets entered.
>
>2) control-q option-somekey  works. But the option key otherwise
>    is used as the meta key. So, I can't enter any character via
>    the option character and have to quote ALL characters with control- q.
>    For example to enter  {    I have to type  control-q option-8 .
>    Probably that is something to live with.
>
>3) dead keys don't work. Unfortunately some keys need to be typed
>    with them. the character ^  is the key ^ followed the space key.
>    As you see above the german keyboard does not even have an
>    'undead' ^ key.
>    The ^ is not recognized as a dead key. Same for the other dead keys:
>    ´`¨~  . Note that there are different dead keys for shift, option,
>and option-shift.
>
>   Note that I can enter dead-key combination using the prefix control- q.
>  So control-q option-shift-6 space  enters ^ . Unfortunately pressing
>  control-q option-shift-6 and then doing something else leaves
>  CCL in some state, where ^ is printed with a yellow background and
>  the editor basically stops working.
>
>----
>
>
>Rainer Joswig, Hamburg, Germany
>http://lispm.dyndns.org/
>mailto:joswig at lisp.de
>
>
>
>
>
>_______________________________________________
>Openmcl-devel mailing list
>Openmcl-devel at clozure.com
>http://clozure.com/mailman/listinfo/openmcl-devel




More information about the Openmcl-devel mailing list