All of lore.kernel.org
 help / color / mirror / Atom feed
From: Seth Forshee <seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
To: Corentin Chary <corentin.chary-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Dmitry Torokhov
	<dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	acpi4asus-user-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	Chris Bagwell <chris-ZCD0YumhXB+iMFqZbmIluw@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	platform-driver-x86-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Matthew Garrett <mjg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 2/2] eeepc-wmi: Add support for T101MT Home/Express Gate key
Date: Fri, 25 Mar 2011 08:53:11 -0500	[thread overview]
Message-ID: <20110325135311.GA14328@thinkpad-t410> (raw)
In-Reply-To: <AANLkTimF2UR8BVQW-3YJaGFEz39q8ydESAiMOjmdM1X7-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Fri, Mar 25, 2011 at 01:28:30PM +0000, Corentin Chary wrote:
> > +static void eeepc_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code,
> > +                                int *value, int *autorelease)
> > +{
> > +       struct eeepc_wmi_driver *eeepc = to_eeepc_wmi_driver(asus_wmi);
> > +       int is_press;
> > +
> > +       /*
> > +        * The following behavior is used for T101MT "Home" key:
> > +        *
> > +        *   On press:   No event set
> > +        *   On hold:    KEY_PROG2 press sent once w/o autorelease
> > +        *   On release: If key was held, KEY_PROG2 release sent.
> > +        *               Otherwise KEY_HOME press sent w/ autorelease.
> > +        *
> > +        * The simple state machine below implements this behavior.
> > +        */
> > +       switch (*code) {
> > +       case HOME_PRESS:
> > +               eeepc->home_key_state = HOME_PRESS;
> > +               *code = ASUS_WMI_KEY_IGNORE;
> > +               break;
> > +       case HOME_HOLD:
> > +               if (eeepc->home_key_state == HOME_HOLD) {
> > +                       *code = ASUS_WMI_KEY_IGNORE;
> > +               } else {
> > +                       eeepc->home_key_state = HOME_HOLD;
> > +                       *value = 1;
> > +                       *autorelease = 0;
> > +               }
> > +               break;
> > +       case HOME_RELEASE:
> > +               if (eeepc->home_key_state == HOME_RELEASE) {
> > +                       dev_warn(&asus_wmi->platform_device->dev,
> > +                                "Unexpected home key release event\n");
> > +                       *code = ASUS_WMI_KEY_IGNORE;
> > +               } else {
> > +                       *code = eeepc->home_key_state;
> > +                       eeepc->home_key_state = HOME_RELEASE;
> > +                       is_press = (*code == HOME_PRESS);
> > +                       *value = is_press;
> > +                       *autorelease = is_press;
> > +               }
> > +               break;
> > +       }
> > +}
> > +
> 
> Why not something simpler like this ?
> 
> static void eeepc_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int code,
>                                                  int *value, int *autorelease)
> {
>         if (code == 0xe4) {
>                 *value = 1;
>                 *autorelease = 0;
>         } else if (code == 0xe5) {
>                 *value = 0;
>                 *autorelease = 0;
>        }
> }
> 
> with this keymap :
> 
>        { KE_KEY, 0xe4, { KEY_HOME } }, /* Home Key Down */
>        { KE_KEY, 0xe5, { KEY_HOME } }, /* Home Key Up */
>        { KE_KEY, 0xea, { KEY_PROG2 } }, /* Home Key hold more than one second */
> 
> 
> This sounds simpler and we don't loose information (key down and key
> up both event reported at the right time).
> 0xe5 is *always* sent after 0xe4 right ?

I guess it depends on what key events we want on a press-and-hold.
Remember that you're going to get a scan code sequence like "0xe4 0xea
0xea ... 0xea 0xe5", so with my implementation you get

  KEY_PROG2 press
  KEY_PROG2 release

With yours

  KEY_HOME press
  KEY_PROG2 press
  KEY_PROG2 release
  // KEY_PROG2 press/release repeats every 0.5 secs while button held
  KEY_HOME release

At minimum I'd think we'd want to only send a single PROG2 press/release
for button hold. My thought was that you'd only want to get the code for
0xe4 or 0xea, not both, but I suppose that's debatable.

And back to the question of KEY_HOME -- that's not really what you want,
is it? As in "move cursor to start of line"?

> Also, for the callback, "value" should be an unsigned int, and
> "autorelease" a bool.

Right, silly mistake. Thanks for catching it.


------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software 
be a part of the solution? Download the Intel(R) Manageability Checker 
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
Acpi4asus-user mailing list
Acpi4asus-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/acpi4asus-user

WARNING: multiple messages have this Message-ID (diff)
From: Seth Forshee <seth.forshee@canonical.com>
To: Corentin Chary <corentin.chary@gmail.com>
Cc: Chris Bagwell <chris@cnpbagwell.com>,
	Matthew Garrett <mjg@redhat.com>,
	acpi4asus-user@lists.sourceforge.net,
	platform-driver-x86@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Subject: Re: [PATCH 2/2] eeepc-wmi: Add support for T101MT Home/Express Gate key
Date: Fri, 25 Mar 2011 08:53:11 -0500	[thread overview]
Message-ID: <20110325135311.GA14328@thinkpad-t410> (raw)
In-Reply-To: <AANLkTimF2UR8BVQW-3YJaGFEz39q8ydESAiMOjmdM1X7@mail.gmail.com>

On Fri, Mar 25, 2011 at 01:28:30PM +0000, Corentin Chary wrote:
> > +static void eeepc_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code,
> > +                                int *value, int *autorelease)
> > +{
> > +       struct eeepc_wmi_driver *eeepc = to_eeepc_wmi_driver(asus_wmi);
> > +       int is_press;
> > +
> > +       /*
> > +        * The following behavior is used for T101MT "Home" key:
> > +        *
> > +        *   On press:   No event set
> > +        *   On hold:    KEY_PROG2 press sent once w/o autorelease
> > +        *   On release: If key was held, KEY_PROG2 release sent.
> > +        *               Otherwise KEY_HOME press sent w/ autorelease.
> > +        *
> > +        * The simple state machine below implements this behavior.
> > +        */
> > +       switch (*code) {
> > +       case HOME_PRESS:
> > +               eeepc->home_key_state = HOME_PRESS;
> > +               *code = ASUS_WMI_KEY_IGNORE;
> > +               break;
> > +       case HOME_HOLD:
> > +               if (eeepc->home_key_state == HOME_HOLD) {
> > +                       *code = ASUS_WMI_KEY_IGNORE;
> > +               } else {
> > +                       eeepc->home_key_state = HOME_HOLD;
> > +                       *value = 1;
> > +                       *autorelease = 0;
> > +               }
> > +               break;
> > +       case HOME_RELEASE:
> > +               if (eeepc->home_key_state == HOME_RELEASE) {
> > +                       dev_warn(&asus_wmi->platform_device->dev,
> > +                                "Unexpected home key release event\n");
> > +                       *code = ASUS_WMI_KEY_IGNORE;
> > +               } else {
> > +                       *code = eeepc->home_key_state;
> > +                       eeepc->home_key_state = HOME_RELEASE;
> > +                       is_press = (*code == HOME_PRESS);
> > +                       *value = is_press;
> > +                       *autorelease = is_press;
> > +               }
> > +               break;
> > +       }
> > +}
> > +
> 
> Why not something simpler like this ?
> 
> static void eeepc_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int code,
>                                                  int *value, int *autorelease)
> {
>         if (code == 0xe4) {
>                 *value = 1;
>                 *autorelease = 0;
>         } else if (code == 0xe5) {
>                 *value = 0;
>                 *autorelease = 0;
>        }
> }
> 
> with this keymap :
> 
>        { KE_KEY, 0xe4, { KEY_HOME } }, /* Home Key Down */
>        { KE_KEY, 0xe5, { KEY_HOME } }, /* Home Key Up */
>        { KE_KEY, 0xea, { KEY_PROG2 } }, /* Home Key hold more than one second */
> 
> 
> This sounds simpler and we don't loose information (key down and key
> up both event reported at the right time).
> 0xe5 is *always* sent after 0xe4 right ?

I guess it depends on what key events we want on a press-and-hold.
Remember that you're going to get a scan code sequence like "0xe4 0xea
0xea ... 0xea 0xe5", so with my implementation you get

  KEY_PROG2 press
  KEY_PROG2 release

With yours

  KEY_HOME press
  KEY_PROG2 press
  KEY_PROG2 release
  // KEY_PROG2 press/release repeats every 0.5 secs while button held
  KEY_HOME release

At minimum I'd think we'd want to only send a single PROG2 press/release
for button hold. My thought was that you'd only want to get the code for
0xe4 or 0xea, not both, but I suppose that's debatable.

And back to the question of KEY_HOME -- that's not really what you want,
is it? As in "move cursor to start of line"?

> Also, for the callback, "value" should be an unsigned int, and
> "autorelease" a bool.

Right, silly mistake. Thanks for catching it.


  parent reply	other threads:[~2011-03-25 13:53 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-23 19:39 [PATCH] eeepc-wmi: Add support for T101MT "Express Gate" key Seth Forshee
2011-03-24  7:33 ` Corentin Chary
     [not found]   ` <AANLkTinZpt8qmHzhe4WyteMt-C-nkVNwEGQVvq3Nk9Lx-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-03-24 13:14     ` Seth Forshee
2011-03-24 13:14       ` Seth Forshee
2011-03-24 13:26       ` Corentin Chary
2011-03-24 13:27       ` Chris Bagwell
2011-03-24 13:32         ` Chris Bagwell
     [not found]         ` <AANLkTikrX_wypmrd-PbST603jsHqkuwtA6t5X65Lg1+O-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-03-24 13:37           ` Seth Forshee
2011-03-24 13:37             ` Seth Forshee
2011-03-24 13:40         ` Corentin Chary
2011-03-24 14:00           ` Chris Bagwell
2011-03-24 14:00             ` Chris Bagwell
2011-03-24 19:57             ` Seth Forshee
2011-03-24 20:03               ` [PATCH 1/2] asus-wmi: Add callback for hotkey filtering Seth Forshee
2011-03-24 20:03               ` [PATCH 2/2] eeepc-wmi: Add support for T101MT Home/Express Gate key Seth Forshee
2011-03-24 20:03                 ` Seth Forshee
2011-03-24 20:09                 ` Seth Forshee
2011-03-25 13:28                 ` Corentin Chary
2011-03-25 13:28                   ` Corentin Chary
     [not found]                   ` <AANLkTimF2UR8BVQW-3YJaGFEz39q8ydESAiMOjmdM1X7-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-03-25 13:53                     ` Seth Forshee [this message]
2011-03-25 13:53                       ` Seth Forshee
2011-03-25 14:05                       ` Corentin Chary
2011-03-25 14:05                       ` Corentin Chary
2011-03-25 14:53                         ` Chris Bagwell
2011-03-25 15:13                           ` Seth Forshee
2011-03-25 15:43                           ` Corentin Chary
     [not found]                             ` <AANLkTinr2FJA2H3CJWx-wZ_g-hCZ3DT7PR6QsXqi5Rkw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-03-25 16:17                               ` Seth Forshee
2011-03-25 16:17                                 ` Seth Forshee
2011-03-25 16:14                         ` Dmitry Torokhov
     [not found]                           ` <20110325161405.GC5099-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2011-03-25 16:28                             ` Seth Forshee
2011-03-25 16:28                               ` Seth Forshee
2011-03-25 17:03                               ` Dmitry Torokhov
2011-03-25 17:03                                 ` Dmitry Torokhov
     [not found]                                 ` <20110325170333.GD5099-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2011-03-25 18:58                                   ` Seth Forshee
2011-03-25 18:58                                     ` Seth Forshee
2011-03-27 17:13                                     ` Dmitry Torokhov
2011-03-27 17:13                                       ` Dmitry Torokhov
     [not found]                                       ` <20110327171304.GD30244-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2011-03-27 18:32                                         ` Chris Bagwell
2011-03-27 18:32                                           ` Chris Bagwell
2011-03-27 19:11                                           ` Dmitry Torokhov
     [not found]                                             ` <20110327191116.GB31692-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2011-03-28 13:46                                               ` Seth Forshee
2011-03-28 13:46                                                 ` Seth Forshee
2011-03-28 14:14                                                 ` Corentin Chary
2011-03-28 14:14                                                 ` Corentin Chary
2011-03-28 18:33                                                   ` Seth Forshee
     [not found]                                                     ` <1301337224-3293-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
2011-03-28 18:33                                                       ` [PATCH v3 1/3] asus-wmi: Add callback for hotkey filtering Seth Forshee
2011-03-28 18:33                                                         ` Seth Forshee
2011-03-28 18:33                                                       ` [PATCH v3 2/3] eeepc-wmi: Add support for T101MT Home/Express Gate key Seth Forshee
2011-03-28 18:33                                                         ` Seth Forshee
2011-03-29 12:29                                                         ` Corentin Chary
2011-03-29 13:42                                                           ` Seth Forshee
2011-03-29 13:47                                                           ` Matthew Garrett
2011-03-30  7:46                                                             ` Corentin Chary
2011-03-28 18:33                                                       ` [PATCH v3 3/3] asus-wmi: Enable autorepeat for hotkey input device Seth Forshee
2011-03-28 18:33                                                         ` Seth Forshee
2011-03-29  6:33                                                       ` [PATCH 2/2] eeepc-wmi: Add support for T101MT Home/Express Gate key Dmitry Torokhov
2011-03-29  6:33                                                         ` Dmitry Torokhov
2011-03-25 16:07             ` [PATCH] eeepc-wmi: Add support for T101MT "Express Gate" key Dmitry Torokhov
     [not found]               ` <20110325160702.GB5099-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2011-03-25 16:08                 ` Corentin Chary
2011-03-25 16:08                   ` Corentin Chary
2011-03-25 16:05         ` Dmitry Torokhov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110325135311.GA14328@thinkpad-t410 \
    --to=seth.forshee-z7wlfzj8ewms+fvcfc7uqw@public.gmane.org \
    --cc=acpi4asus-user-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=chris-ZCD0YumhXB+iMFqZbmIluw@public.gmane.org \
    --cc=corentin.chary-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mjg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=platform-driver-x86-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.