On Thu, Aug 04, 2016 at 02:12:59PM -0700, Ping Cheng wrote:
> On Wed, Aug 3, 2016 at 10:52 PM, Peter Hutterer
> <peter.hutte...@who-t.net> wrote:
> > On Wed, Aug 03, 2016 at 10:13:48PM -0700, Ping Cheng wrote:
> >> xsetwacom accepts keys in X11 KeySyms format. To make the interface
> >> user friendly, we mapped a set of modifiers to aliases that can be
> >> recognized by most users. But, there are a few less recognizable or
> >> confusing keys/modifiers left. This patch tells users where to find
> >> the X11 KeySyms code they are looking for.
> >>
> >> Return key is added as a bonus (by-product ;).
> >
> > No, please don't add this in the same patch. it's completely unrelated and
> > for stable branch cherry-picking, etc. hiding these things in the same patch
> > is a bad idea.
> >
> > Golden rule: when you need to write "Also..." in a commit message you
> > probably need two patches :)
> >
> > Same goes for typo fixes (which IMO you can just push directly, they're
> > usually safe anyway).
> >
> >> Signed-off-by: Ping Cheng <pi...@wacom.com>
> >> Tested-by: Kelly Price <strredw...@gmail.com>
> >> ---
> >>  man/xsetwacom.man | 13 +++++++------
> >>  tools/xsetwacom.c |  4 ++++
> >>  2 files changed, 11 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/man/xsetwacom.man b/man/xsetwacom.man
> >> index 1930d67..8276e32 100644
> >> --- a/man/xsetwacom.man
> >> +++ b/man/xsetwacom.man
> >> @@ -109,17 +109,18 @@ button-number will produce a press of X11 button 3 
> >> (i.e. right click).
> >>  Action mappings allow button presses to perform many events. They take 
> >> the form
> >>  of a string of keywords and arguments.
> >>
> >> -The "key" keyword is following by a list of key names. These can 
> >> optionally
> >> +The "key" keyword is followed by a list of key names. These can optionally
> >>  be preceded by "+" for press and "-" for release. If +/- is not given,
> >>  press-and-release is assumed, except for modifier keys which are left 
> >> pressed.
> >> -Key names can be X11 KeySyms or some aliases such as 'shift' or 'f1' (the
> >> +Key names can be X11 KeySyms code or some aliases such as 'shift' or 'f1' 
> >> (the
> >
> > don't use keysyms code, that's confusing because key code is a specific term
> > in X.
> > "Key names can be an X11 KeySym or ...."
> 
> I guess key code is not the same as keysym code. What does "The new
> keysym code" mean in the following description (from keysymdef.h)?
> Does it mean the set of keysym + value?
> 
> "
> * For any future extension of the keysyms with characters already
>  * found in ISO 10646 / Unicode, the following algorithm shall be
>  * used. The new keysym code position will simply be the character's
>  * Unicode number plus 0x01000000. The keysym values in the range
>  * 0x01000100 to 0x0110ffff are reserved to represent Unicode
>  * characters in the range U+0100 to U+10FFFF.
> "
> 
> Then what term do I use for the value of a keysym? That value can be
> used directly without any confusion or extra work.

imo that's bad wording above. this isn't "keysym code" position, it's keysym
"code position", i.e. similar to a unicode code point. the keysym itself
*is* the value/code/code point.

- a physical keyboard generates a scancode
- the scancode is converted to a keycode
- the keycode is converted to a keysym (on the client side through XKB)
- the keysym is converted to a glyph (on the client side)

so just treat keysym as it's own word and entity without the need for a
"code" suffix. and note that a keysym is just a numeric value that clients
agree on how to convert into a glyph, similar to a unicode code point (which
some keysyms are anyway).

Cheers,
  Peter


> >>  full list can be seen with the
> >>  .B list modifiers
> >> -command).
> >> +command). To assign a key that is not in the modifiers list, look for its 
> >> KeySyms
> >> +code in keysymdef.h under /usr/include/X11 on your system.
> >
> > hmm, that makes me wonder why we have special treatment for modifiers. IIRC
> > they're just special so we can use "shift" instead of "Shift_L". but we
> > should parse the actual keysym as well. maybe a future patch.
> > either way:
> >
> > "To assign a key that is not in the modifiers list use the KeySym in
> > /usr/include/X11/keysymdef.h with the XK_ prefix removed.
> > For exampmle, XK_BackSpace should be specified as "BackSpace".
> >
> >
> >> -For example, "key +a +shift b -shift -a" converts the button into a 
> >> series of
> >> -keystrokes, in this example "press a, press shift, press and release b,
> >> -release shift, release a".
> >> +For example, "key +a +shift b -shift -a 0xff0d" converts the button into a
> >> +series of keystrokes, in this example "press a, press shift, press and 
> >> release b,
> >> +release shift, release a, then enter".
> >
> > whoah, does this actually work? I didn't know that we parsed hex codes
> > correctly.
> >
> >>  The "button" keyword is similar except that its arguments are X11 button
> >>  numbers.
> >> diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c
> >> index 2f75d78..aa5f7a1 100644
> >> --- a/tools/xsetwacom.c
> >> +++ b/tools/xsetwacom.c
> >> @@ -605,6 +605,8 @@ static struct modifier specialkeys[] = {
> >>
> >>       {"backspace", "BackSpace"}, {"Backspace", "BackSpace"},
> >>
> >> +     {"return", "Return"},
> >> +
> >
> > as said above, this needs to be a separate patch (feel free to push, no need
> > for re-review here if it's just that one line anyway). But do make a note
> > in the commmit message about the "Enter" vs "Return" controversy :)
> >
> >>       {"tab", "Tab"},
> >>
> >>       {"PgUp", "Prior"}, {"PgDn", "Next"},
> >> @@ -937,6 +939,8 @@ static void list_mod(Display *dpy)
> >>       m = specialkeys;
> >>       while(m->name)
> >>               printf("        %s\n", m++->name);
> >> +
> >> +     printf("If you don't see your special key listed above, please use 
> >> its keysyms code or refer to man page for details.\n");
> >
> > "Keys not listed above can be specified via their KeySym. See the man page
> > for details."
> >
> > Cheers,
> >    Peter
> >
> >>  }
> >>
> >>  static void list(Display *dpy, int argc, char **argv)
> >> --
> >> 1.9.1
> >>

------------------------------------------------------------------------------
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to