On  5.02.08, rgheck wrote:
> G. Milde wrote:

> Nothing's being done immediately. Actually, it would help a lot if you 
> could play around with the changes that have been suggested, namely:

My experiences with Debian Gnu/Linux and German keyboard: 

> \bind "M-apostrophe" "quote-insert single"
> \bind "C-apostrophe" "accent-acute"

Works with acute-accent (which is unshifted [´`] key) but not with the 
apostrophe (shifted [#'] key), as on my system, pressing either
acute-accent or apostrophe actually sends the apostrophe (') char.

> \bind "S-M-quotedbl" "self-insert \""
> \bind "S-C-quotedbl" "accent-umlaut"

Works here as expected (however it will fail on keyboards that have " in
an unshifted position!).

> As you may also have seen, we think there may be a bug here somewhere, too.


I suppose I found the bug:

>From http://wiki.lyx.org/Tips/KeyboardShortcuts

   Precedence of keyboard bindings
   -------------------------------
   
   Note that the latest key binding takes precedence, ...
   
   An exception are bindings using the modifier "~S", which doesnot overide
   other bindings. ... 

However, bindings containing "~S" do also not overwrite earlier bindings
with the same specifier, i.e.

  \bind "S-M-quotedbl"   "self-insert"
  \bind "S-M-quotedbl"   "accent-umlaut"
  
will bind quotedbl to self-insert (regardless of the Shift state).

As cua.sl contains a "~S"-binding for quotedbl:
  
  \bind "~S-M-quotedbl"  "quote-insert single"

the proposed bindings will not override this and hence not work.


The fix would (IMO) be

* let "~S"-bindings overrule earlier "~S"-bindings similar to "normal"
  bindings. (But keep the precedence of more specific bindings.)

* official documentation of the keybindings syntax


This would result in clear and flexible rules for precedence:

1. Bindings overwrite earlier bindings with equal specifier, e.g.

     \bind "~S-a" "foo"
     \bind "~S-a" "bar"
     
   will bind [A] and [a] to function "bar".

2. Specific bindings have higher precedence than more generic ones
   regardless of position, e.g.

     \bind "S-a"  "foo"
     \bind "~S-a" "bar"
     
   will bind [A] to "foo" (but [a] to "bar").


It would also allow keyboard-layout-ignorant binding definitions of the
accent-* functions.

OTOH, you can of course use the "~S" form already now if you uncomment or
remove conflicting earlier definitions...


BTW, my private gm.bind contains:

# accents (dead keys)
\bind "M-~S-asciicircum"   "accent-circumflex"   # also "M-m h"
\bind "M-~S-asciitilde"    "accent-tilde"        # also "M-m asciitilde"
\bind "M-~S-degree"        "accent-circle"       # °
\bind "M-~S-plus"          "accent-tilde"        # ~ (AltGr-+ on German keyb.)
\bind "M-~S-quoteleft"     "accent-grave"        # `
\bind "M-~S-apostrophe"    "accent-acute"             # '
\bind "M-v"                "accent-caron"        # v = hacheck




Günter

Reply via email to