Opened 16 years ago

Closed 15 years ago

#4544 closed defect (fixed)

keybinding trouble on Mac

Reported by: bewihelm@… Owned by: lasgouttes
Priority: high Milestone: 1.6.2
Component: keyboard Version: 1.6.0svn
Severity: normal Keywords: regression
Cc: sts@…

Description

In 1.5.x, I have "<Cmd><Shift>I m" bound to marginalnote-insert with no
problems. On 1.6svn, this is not working: "Unknown function" shows up in the
status bar when "<Cmd><Shift>I" is pressed, even before getting to the "m". (See
below for -dbg key output.) Strangely, both "<Cmd><Shift>I" on its own --
without "m" -- and "<Opt><Shift>I m" work properly.

GuiWorkArea.cpp(719): count: 1 text: isAutoRepeat: 0 key: 16777248
GuiKeySymbol.cpp(78): Getting key 16777248, with text
GuiKeySymbol.cpp(84): Setting key to 16777248,
LyXFunc.cpp(288): KeySym is Shift_L
GuiKeySymbol.cpp(99): isOK is 1
GuiKeySymbol.cpp(107): isModifier is 1
LyXFunc.cpp(298): isModifier true
GuiWorkArea.cpp(719): count: 1 text: isAutoRepeat: 0 key: 16777249
GuiKeySymbol.cpp(78): Getting key 16777249, with text

GuiKeySymbol.cpp(84): Setting key to 16777249,
LyXFunc.cpp(288): KeySym is Control_L
GuiKeySymbol.cpp(99): isOK is 1
GuiKeySymbol.cpp(107): isModifier is 1
LyXFunc.cpp(298): isModifier true
GuiWorkArea.cpp(719): count: 1 text: isAutoRepeat: 0 key: 73
GuiKeySymbol.cpp(73): keyevent has isNull() text !
LyXFunc.cpp(288): KeySym is i
GuiKeySymbol.cpp(99): isOK is 1
GuiKeySymbol.cpp(107): isModifier is 0
LyXFunc.cpp(314): action first set to [-1]
LyXFunc.cpp(322): action now set to [-1]
LyXFunc.cpp(333): Key [action=-1][Ctrl+Shift+I]
GuiKeySymbol.cpp(165): text_ empty, isText() == false
LyXFunc.cpp(360): Unknown, !isText() - giving up

Attachments (2)

shortcut.diff (768 bytes ) - added by bewihelm@… 16 years ago.
Proposed patch
shortcut.2.diff (768 bytes ) - added by bewihelm@… 16 years ago.
Proposed patch

Download all attachments as: .zip

Change History (15)

comment:1 by bewihelm@…, 16 years ago

Keywords: regression added

comment:2 by bewihelm@…, 16 years ago

I think I've discovered the problem here. In mac.bind, we have:

\bind "C-S-i" "info-insert"

(I'm not sure what this is used for or why it should be added to mac.bind. Nevertheless....)

When editing shortcuts with the new preferences dialog, I removed this binding and then added "C-S-I m"
as a new binding for marginalnote-insert. What gets written to user.bind is a line for marginalnote-insert
*followed by* a line to unbind info-insert. When LyX reads user.bind in order, it ignores the new binding
for marginalnote-insert, because that's an existing binding, and only later reads the line unbinding info-
insert.

If I manually edit user.bind to move the \unbind "C-S-i" "info-insert" line to the top, everything works
fine.

Two conclusions:

  1. In 1.6, unlike 1.5, new keybindings do *not* overwrite old ones. This change certainly will surprise

users when their old .bind files don't do what they expect, and perhaps the change ought to be rethought.

  1. Assuming the change in (1) is kept in place, \unbind lines need to precede \bind lines when saving

shortcut preferences.

by bewihelm@…, 16 years ago

Attachment: shortcut.diff added

Proposed patch

by bewihelm@…, 16 years ago

Attachment: shortcut.2.diff added

Proposed patch

comment:3 by Juergen Spitzmueller, 16 years ago

Milestone: 1.6.0

since we have a patch, this could be considered for 1.6.0.

comment:4 by younes, 16 years ago

What about this bug?

comment:5 by bewihelm@…, 16 years ago

I have the patch applied and have been using it for months without problem.

Is this a Mac specific bug?

comment:6 by younes, 16 years ago

I don't know. Please send it to lyx-devel. Hopefully someone will take care of it.

comment:7 by Uwe Stöhr, 16 years ago

Cc: sts@… added

Stefan, while you are at fixing MAC-specific bugs, perhaps you also have one for
this.

comment:8 by Juergen Spitzmueller, 15 years ago

Milestone: 1.6.01.6.1

comment:9 by Juergen Spitzmueller, 15 years ago

Keywords: patch added

comment:10 by hofbauer@…, 15 years ago

IIRC previous discussion, isn't the reason why keybindings do NOT get
overwritten anymore that a single keybinding can now have multiple functions
(depending on context). I think this was introduced in the context of Tab-Key
issues, and that is also why there is an '\unbind' now.

This should be the same on all platforms, no?

comment:11 by Juergen Spitzmueller, 15 years ago

Milestone: 1.6.11.6.2

comment:12 by Juergen Spitzmueller, 15 years ago

Keywords: fixedinbranch fixedintrunk added; patch removed

The patch looks straightforward, and since Bennett has tested it for a long time
now, I committed to branch and trunk:
http://www.lyx.org/trac/changeset/27948
http://www.lyx.org/trac/changeset/27949

comment:13 by Juergen Spitzmueller, 15 years ago

Keywords: fixedinbranch fixedintrunk removed
Resolution: fixed
Status: newclosed

LyX 1.6.2 is released (announcement follows as soon as the binaries are built).

Note: See TracTickets for help on using tickets.