denemo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Denemo-devel] Keymap and Many small bugs, problems and ideas


From: Richard Shann
Subject: Re: [Denemo-devel] Keymap and Many small bugs, problems and ideas
Date: Fri, 10 Oct 2008 09:08:31 +0100

This is a very useful piece of work, thank you. One general point not
covered is that this is a keymap for users who want a modal program. We
should provide a keymap for non-modal use. And (as discussed below) we
absolutely require different keymaps for keyboard/language differences -
the NumericKeypad keymap that is in git at the moment is an example of
this sort of thing.

On Wed, 2008-10-08 at 02:19 +0200, Nils Gey wrote:
> Hi list,
> 
> 1) Introduction of the new keymap
> 2) Short docu of the keymap
> 3) List of changes and notable keys.
> 4) Many small bugs, problems and ideas I encountered while working with 
> Denemo and the keymap.
> 
> -----1------
> 
> Today I worked on a keymap to provide a better default one for Denemo. Since 
> there were nearly zero keys defined until now I got not in conflict to change 
> anything already standard. If I did so I will mention it if you read further. 
> I attached the file so you can see for yourself. If someone of the git-people 
> could review it and maybe upload it to git. If you think I am no harm for the 
> git repository maybe you could grand me write-access.
> 
> -----2------
> 
> Here is a short documentation.
> 
> The philosophy behind it is: Actions which are used quite often


>  got a shortcut (i.e. add note to chord, save, new tab), any other not (Add 
> Staff, Open Example/Template). It showed that this means that many objects to 
> acutally write to the staffs are shortcut-worthy while action above this are 
> not, which is no surprise. Additionally anything that has to do with 
> navigating through your score got a shortcut, too. Otherwise you are forced 
> to use the mouse, which is not efficient, as you surely know.
> 
> There are two concepts of assining shortcuts to actions: First is logic. It 
> is logical to have "Dynamics" on Crtl+D because it begins with D. 
> 
> Second are keyboard regions or the graphical layout of the keyboard. For 
> example F9 to F12 is for bookmarks, add, list, prev. next (and no key for 
> "delete all bookmarks"!)
> Since its better for ornaments to be grouped, and not to force some name/key 
> logic to them, they are avaible with shift+number. 
> ==IMPORTANT IMPORTANT==
> I think this cries for keymaps which depend on language/keyboard-layout or 
> better keymap overrides for different languages. Or maybe change the way 
> key-combos are saved (I wrote more about this at the end of this mail)
> Example:
> I used shift+1 to shift+7 for ornaments. But I use a Germany keyboard-layout, 
> off course, so the keys are:
> 1/!  2/"  3/§  4/$  5/%  6/&  7//  
> Denemo shows these characters and not the combination so I guess different 
> keyboard-language means different keys. Which is bad, off course.
> Other way around, too and it has already happened: Octave up/down is on comma 
> and apostrophe. I guess these keys are related in some way on an us-layout.
I think they were chosen to match LilyPond - in fact that was the rule
for the original Denemo keybindings (e.g. the parentheses for slurs
etc).
>  But for me they are relative far away from each other and the apostrophe is 
> with a shift-combination.
> More on this later...
> =================
> 
> Sometimes these concepts are mixed. Its logical to have the cursor left on 
> the left-arrow-key and its good to have right, up and down in the same 
> keyboard region. Fortunatly the keyboard is already designed in this "mixed" 
> way. Same goes for Home/End/PageUp and Down. Other example: Measure begins 
> with "m" so this key adds a blank measure. Any other command linked to 
> measures uses a combination with "m". Crtl-m, alt-m, Crtl+Shift+M and so on.
> 
> -----3------
> Now follows an overview over my keymap-idea. You can learn the other keys 
> easily if you open Denemo and have a look around. Once this has settled down 
> a bit I can make a nice graphical keychart/poster/cheat-sheet for Denemo. 
> Print it out and decorate your walls with it.
> 
> File and Denemo controls: I have set the standard keys for new file/tab/close 
> etc. like they are used in nearly any program (open office, firefox etc. )
> 
> Movement/Cursor: Arrow-Keys move the cursor. Crtl+Arrows for Staff Up/Down or 
> Measure Left/Right. PageUp/PageDown for Voices, F9 to F12 for 
> bookmark-control.
> 
> Notes: Chordnotes are added with Crtl+Return 
Until recently Denemo has used Return for entering a note in a chord -
you have not used Return as a shortcut for anything, perhaps we should
stick with Return for entering a note in a chord and whatever it was for
deleting one (was it Control+Return? as I never use chords, I never used
these). I say "recently" because they are missing at the moment
> and deleted with Crtl+Backspace or Crtl+Delete. Sharpen/Flatten with plus and 
> minus +/- .
> As written above, the most important Expression Marks are shift+number. 
> 
> Play and Stop is on F5 and F6. F7 and F8 are free for future things 
> (play-scripts i.e.)
> 
> A few special keys: d for dynamics, n for noteheads. ^ and °  are the 
> lilypond keys (for me this is the key left to "1" and its shifted version). 
> Alt+Return is for Staff-Properties, Crtl+l lyrics. F1 is the manual.
I can't find the lilypond ones... Shift with 6 on my keyboard is called 
asciicircum as a shortcut, 
I don't have the degree sign but shift three is "sterling" which I have never 
seen before (I have always had US
keyboards in the past).


> There is some work to do (Tuplets and Cresc/Decresc.) but luckily Denemo is 
> not Photoshop or X-Wing (remember the old game?) so there are still free keys 
> :).
> 
> -----4------
> I encountered bugs and a few issues with the keymap and using keys to steer 
> Denemo. Some of them are feature suggestions, I will add them to the list 
> later. I will use this list to try the scripting engine a bit. 
> And here they come:
> 
> 1) The "reminder accidental" is often used so maybe it deserves its own 
> menu-entry. Possibly a script?
It is an easy script.
> 2) There is a feature missing for "Play only current staff" or maybe "play 
> all selected staffs". 
This requires C programming
> 3) Play from start is missing. Maybe 2) and 3) could be scripted and combined 
> and used for crtl/shift F5
This is an easy script (you can create it by recording, see manual).
> 4) If you set a new shortcut which is already used there should be a warning 
> and the info where this shortcut is used and a Overwrite:Yes/No option. 
> Currently there is nothing so you have to search every time if a shortcut 
> already exist.
This requires C programming
> 5) If you just type in the shortcut-window it searches for the right command, 
> which is great. But it should not be case-sensitve. Maybe this is not Denemo 
> but my Gnome?
I'm not sure if this is easy.
> 6) The F10 key opens the file-menu for me. I think this is gnome-specific. 
> Can denemo override this?
I have this feature too, I have just experimented - what gnome is doing
is opening the first menu in denemoui.xml. I don't know if there is a
call to make to ask the window manager not to do this - perhaps not.
> 7) Denemo crashes if you close the first tab if there are more than one tab. 
> It crashes when you jump around in the tabs a bit and try to close and cancel 
> the "File is not saved"-dialog. I don't figured out the concrete behaviour to 
> reproduce the crash, but the "Close Score" is certainly buggy.
I cannot get this to happen. We need a definite sequence (or to find the
time to re-write all that convoluted code).
> 8) If you close a tab with "Close Score" (Crtl+w) and Denemo crasehs not the 
> first tab is selected after that. This is strange behaviour. The standard is 
> that the tab left to the closed one will be selected.
> 9) The normal "open" is destructive. It closes the current tab/score and I 
> think there is no need to have this if you have a "open in tab". I suggest to 
> remove the "open" command and make the "open in new tab" the only one.
Marking menuitems as "not wanted"/deleted is something I have in mind to
do.
> 10) Same for the Score Wizard. It tries to close the current tab. Why? Just 
> leave it open.
That could be a script (and mark the built-in as not wanted)
> 11) Tenuto is not visible in Denemo but in the Output.
?It is on mine
> 12) A "clean note/chord" command would be useful. It could remove all 
> ornaments and lilypond-postfixes, reset the stem... and other non-basic stuff 
> (so just leave the note and its accidental).
That could be a script (well, we still have issues around
creating/modifying chords)
> 13) The lilypond-postfix command is only succesfull if you click exactly on 
> the notehead. This is a bit confusing because you expect it to work if the 
> note is selected, which happens when you use the mouse to click on it. I 
> suggest to ignore the vertical position of the cursor. If its a chord I 
> suggest the same behaviour as in "Delete note from chord": Just take the 
> nearest one. Same for ornaments etc. It works for noteheads!
Yes, also it should do some display of some sort at least
> 14) Undo is really, totally broken. So this is not a small thing, I guess. I 
> just want to share my experience. Currently it seems that undo is only for 
> noteentry/deletion. If you delete a note with ornament or lilypond-postfix 
> and undo it everything is gone except the note itself. Adding measures is not 
> undoable, instead it justs delete the last note and so on and so on. I guess 
> there are more examples...
yes :-(
> 15) The big thing (as mentioned above): Keyboard-shortcuts. It seems that 
> Denemo saves not a key-combination (shift+a) but the result (captial A). This 
> leads to several issues.
JRR will want to comment on this, as he has already discussed it.
>  First and minor is that Denemo shows just the result for the key in its 
> shortcut windows if you use shift but it shows crtl/alt as a modificator. So 
> crtl/alt+m is what it says but crtl+shift+m is "crtl+M". 
>  If only the result is used then the keymab is very fragile to differnt 
> language/keyboard-layouts. 
Different keyboards must have different keymaps. Different language
users will want different keymaps as well - e.g. the English will not
use ctrl-m for inserting a measure because they do not call them
measures, they are bars in English, measures in American English.

So I don't think there is a problem, except that we do need different
keymaps, and really we should have code to detect the type of keyboard
and language, which won't be written soon unless more volunteers step up
to do it.

> Saving the shift key as a combination, too would make things easier, but 
> there are other keys which are simply on different positions (the old y/z 
> problem... ask any German about it... for some reason the keys are switched) 
> so I think language-dependent keymaps are needed anyway. Most of the 
> shortcuts will stay the same nevertheless but it would be nice to define a 
> few exceptions from the standard.
>  
> I hope you all like my ideas and the keymap.

I think we should make your keyboard the default German modal keymap. It
would a good basis for the overall default (i.e. US-keyboard layout)
(much better than the current one which has some bugs in it).
Some problems with it:
        1) A shortcut is given for Print, which is a command we do not really
have (it just gives a explanation of what to do and then runs print
preview). I think someone put this command in thinking they would soon
complete the task - always a mistake. We should remove it until it is
written (I notice gimp does not have Print). Also: we do not actually
have separate voice/staff up/down.
        2) It has several keybindings which I do not know how to generate from
my keyboard (mine is some sort of UK English keyboard with numeric
keypad). I noticed "degree" "dead-circumflex" "section" and "quotedbl"
        3) I wouldn't give a shortcut for the Add Grace command, its
implementation is problematic. I recommend using LilyPond commands
instead. Generally you have avoided defining too many keys, which is
good for a default keymap - the user gets confused if they mis-hit a key
and something happens which they don't understand. It is better for
users to define as many keys as they wish, then they are more likely to
understand what has happened. Ones which I might suggest leaving out for
this reason is the binding for lyrics, perhaps one or two others. But
mostly you have avoided binding to destructive commands which is good.

In conclusion, could someone with a standard US keyboard to hand make a
revision of this set of keybindings? And if someone knows how to do the
detecting locale stuff to choose the default keymap (or should we be
doing this at install time?) can they advise. Otherwise we could offer
on very first run (i.e. when .denemo does not exist) to let the user
choose their keymap from a list.

Sorry for the slow response - my email server was mostly not working
again yesterday.
Richard









reply via email to

[Prev in Thread] Current Thread [Next in Thread]