denemo-devel
[Top][All Lists]
Advanced

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

Re: Fixing keyboard bugs in a portable way


From: Richard Shann
Subject: Re: Fixing keyboard bugs in a portable way
Date: Fri, 03 Jul 2020 16:49:44 +0100

I've pushed all this to the Savannah git repository.
Windows requires you to set the NumLock to use the numeric keypad for
rhythm entry, but I don't think that's a regression. Also Windows
persists in ignoring the difference between the Enter key on the
numeric keypad and the Return key on the main keyboard.

Please report any problems with the new keyboard handling on Windows
Unix or Mac - check that the Denemo version you have is 2.4.2 first.

A big thanks to David for getting to the bottom of this messy business.

Richard

On Thu, 2020-07-02 at 20:29 +0100, Richard Shann wrote:
> On Wed, 2020-07-01 at 20:08 -0500, David Richmond wrote:
> > Oh, got it. It's nice that it's mirrored on Github because it's
> > easy
> > for me to fork and push changes to the forked repository.
> > 
> > I hope the attached patch is formatted correctly enough?
> 
> perfect
> 
> >  Here is what it does, touching several files:
> > 
> > - Remove unused dnm_sanitize_key_event () prototype
> > - Remove dnm_clean_event () altogether, and combine logic into 
> >   dnm_sanitize_key_state (), which just returned event->state
> >   if (!Denemo.prefs.strictshortcuts)
> > - Remove all calls to dnm_clean_event (); replace by
> >   dnm_sanitize_key_state ()
> > - Implement portable logic to always take as command input the
> > "level
> > 0"
> >   unmodified value of a key, passing event->hardware_keycode to
> >   gdk_keymap_get_entries_for_keycode() and grabbing the first
> > keyval
> > in
> >   the returned array regardless of modifier keys. See GDK docs
> > here:
> >   https://developer.gnome.org/gdk3/stable/gdk3-Keyboard-
> > Handling.html#gdk-keymap-get-entries-for-keycode
> 
> This is great - the numeric keypad handling code needed simplifying
> which I've done, just need to re-test on Windows, which I hope to do
> tomorrow.
> 
> Richard
> 
> > 
> > David
> > 
> > On Wed, Jul 1, 2020 at 11:56 AM Richard Shann <richard@rshann.plus.
> > co
> > m> wrote:
> > > On Wed, 2020-07-01 at 10:55 -0500, David Richmond wrote:
> > > > On a separate thread, Richard and I were discussing problems
> > > > with
> > > 
> > > the
> > > > keyboard shortcuts on MacOS.
> > > >  
> > > > I did a little digging, and it seems that this issue of
> > > > hardware
> > > > keycodes is not even platform-independent on Linux: https://www
> > > > .b
> > > 
> > > erra
> > > > nge.com/tags/key-codes/
> > > >  
> > > > So, I replaced the direct keycode logic in dnm_clean_event ()
> > > 
> > > with a
> > > > GDK call that pulls out what GDK calls the "first level" for a
> > > 
> > > given
> > > > hardware code. We can just pass the hardware code from the key
> > > 
> > > event
> > > > to get it. That gives us back, for example, lowercase letters
> > > 
> > > instead
> > > > of uppercase with shift, and numbers on the top-row number keys
> > > > instead of, e.g., the parentheses.
> > > >  
> > > > I opened a pull request on github with the relevant changes.
> > > 
> > > I didn't know of the existence of this github repository -
> > > Denemo's
> > > official repository is on Savannah(*) - this one seems to mirror
> > > it.
> > > Could you send a patch with the changes you have? I can then test
> > > it on
> > > GNU/Linux and Windows (an ancient Vista laptop someone gave me,
> > > but
> > > it
> > > seems to be ok as a proxy for modern windows machines).
> > > 
> > > Richard
> > > (*)
> > > http://git.savannah.gnu.org/gitweb/?p=denemo.git;a=summary
> > > 
> > > 
> 
> 



reply via email to

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