diff mbox

Input: cap1106 - allow changing key mapping from userspace

Message ID 20140721012045.GA4395@core.coreip.homeip.net (mailing list archive)
State New, archived
Headers show

Commit Message

Dmitry Torokhov July 21, 2014, 1:20 a.m. UTC
Wire up support for EVIOC{G|S}KEYCODE to allow users change key mappings
from userspace.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---

Just compiled, not tested.

 drivers/input/keyboard/cap1106.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Dmitry Torokhov Aug. 7, 2014, 6:20 a.m. UTC | #1
On Sun, Jul 20, 2014 at 06:20:49PM -0700, Dmitry Torokhov wrote:
> Wire up support for EVIOC{G|S}KEYCODE to allow users change key mappings
> from userspace.
> 
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
> 
> Just compiled, not tested.

*ping* Any chance you could give it a try? Thanks!

> 
>  drivers/input/keyboard/cap1106.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/input/keyboard/cap1106.c b/drivers/input/keyboard/cap1106.c
> index f7d7a0d..180b184 100644
> --- a/drivers/input/keyboard/cap1106.c
> +++ b/drivers/input/keyboard/cap1106.c
> @@ -64,7 +64,7 @@ struct cap1106_priv {
>  	struct input_dev *idev;
>  
>  	/* config */
> -	unsigned int keycodes[CAP1106_NUM_CHN];
> +	unsigned short keycodes[CAP1106_NUM_CHN];
>  };
>  
>  static const struct reg_default cap1106_reg_defaults[] = {
> @@ -272,6 +272,12 @@ static int cap1106_i2c_probe(struct i2c_client *i2c_client,
>  	for (i = 0; i < CAP1106_NUM_CHN; i++)
>  		__set_bit(priv->keycodes[i], priv->idev->keybit);
>  
> +	__clear_bit(KEY_RESERVED, priv->idev->keybit);
> +
> +	priv->idev->keycode = priv->keycodes;
> +	priv->idev->keycodesize = sizeof(priv->keycodes[0]);
> +	priv->idev->keycodemax = ARRAY_SIZE(priv->keycodes);
> +
>  	priv->idev->id.vendor = CAP1106_MANUFACTURER_ID;
>  	priv->idev->id.product = CAP1106_PRODUCT_ID;
>  	priv->idev->id.version = rev;
> -- 
> 2.0.0.526.g5318336
> 
> 
> -- 
> Dmitry
Daniel Mack Aug. 7, 2014, 6:50 a.m. UTC | #2
Hi Dmitry,

On 08/07/2014 08:20 AM, Dmitry Torokhov wrote:
> On Sun, Jul 20, 2014 at 06:20:49PM -0700, Dmitry Torokhov wrote:
>> Wire up support for EVIOC{G|S}KEYCODE to allow users change key mappings
>> from userspace.
>>
>> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>> ---
>>
>> Just compiled, not tested.
> 
> *ping* Any chance you could give it a try? Thanks!

Oh, sorry, I didn't realize you're waiting for me on this.

Unfortunately, I can't test it myself anymore, as I had to return the
board I found this chip on. But as the change looks very straight
forward, I'd suggest you just apply that patch and I ask the vendor to
give it a quick try. In case of any problems, I'll let you know. Does
that sound feasible?


Thanks,
Daniel


> 
>>
>>  drivers/input/keyboard/cap1106.c | 8 +++++++-
>>  1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/input/keyboard/cap1106.c b/drivers/input/keyboard/cap1106.c
>> index f7d7a0d..180b184 100644
>> --- a/drivers/input/keyboard/cap1106.c
>> +++ b/drivers/input/keyboard/cap1106.c
>> @@ -64,7 +64,7 @@ struct cap1106_priv {
>>  	struct input_dev *idev;
>>  
>>  	/* config */
>> -	unsigned int keycodes[CAP1106_NUM_CHN];
>> +	unsigned short keycodes[CAP1106_NUM_CHN];
>>  };
>>  
>>  static const struct reg_default cap1106_reg_defaults[] = {
>> @@ -272,6 +272,12 @@ static int cap1106_i2c_probe(struct i2c_client *i2c_client,
>>  	for (i = 0; i < CAP1106_NUM_CHN; i++)
>>  		__set_bit(priv->keycodes[i], priv->idev->keybit);
>>  
>> +	__clear_bit(KEY_RESERVED, priv->idev->keybit);
>> +
>> +	priv->idev->keycode = priv->keycodes;
>> +	priv->idev->keycodesize = sizeof(priv->keycodes[0]);
>> +	priv->idev->keycodemax = ARRAY_SIZE(priv->keycodes);
>> +
>>  	priv->idev->id.vendor = CAP1106_MANUFACTURER_ID;
>>  	priv->idev->id.product = CAP1106_PRODUCT_ID;
>>  	priv->idev->id.version = rev;
>> -- 
>> 2.0.0.526.g5318336
>>
>>
>> -- 
>> Dmitry
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dmitry Torokhov Aug. 8, 2014, 6:50 a.m. UTC | #3
On Thu, Aug 07, 2014 at 08:50:24AM +0200, Daniel Mack wrote:
> Hi Dmitry,
> 
> On 08/07/2014 08:20 AM, Dmitry Torokhov wrote:
> > On Sun, Jul 20, 2014 at 06:20:49PM -0700, Dmitry Torokhov wrote:
> >> Wire up support for EVIOC{G|S}KEYCODE to allow users change key mappings
> >> from userspace.
> >>
> >> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> >> ---
> >>
> >> Just compiled, not tested.
> > 
> > *ping* Any chance you could give it a try? Thanks!
> 
> Oh, sorry, I didn't realize you're waiting for me on this.
> 
> Unfortunately, I can't test it myself anymore, as I had to return the
> board I found this chip on. But as the change looks very straight
> forward, I'd suggest you just apply that patch and I ask the vendor to
> give it a quick try. In case of any problems, I'll let you know. Does
> that sound feasible?

OK, I'll put you down as reviewed-by then so we can share the glory (and the
blame ;))

Thanks.
Daniel Mack Aug. 8, 2014, 10:27 a.m. UTC | #4
On 08/08/2014 08:50 AM, Dmitry Torokhov wrote:
> On Thu, Aug 07, 2014 at 08:50:24AM +0200, Daniel Mack wrote:
>> Hi Dmitry,
>>
>> On 08/07/2014 08:20 AM, Dmitry Torokhov wrote:
>>> On Sun, Jul 20, 2014 at 06:20:49PM -0700, Dmitry Torokhov wrote:
>>>> Wire up support for EVIOC{G|S}KEYCODE to allow users change key mappings
>>>> from userspace.
>>>>
>>>> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>>>> ---
>>>>
>>>> Just compiled, not tested.
>>>
>>> *ping* Any chance you could give it a try? Thanks!
>>
>> Oh, sorry, I didn't realize you're waiting for me on this.
>>
>> Unfortunately, I can't test it myself anymore, as I had to return the
>> board I found this chip on. But as the change looks very straight
>> forward, I'd suggest you just apply that patch and I ask the vendor to
>> give it a quick try. In case of any problems, I'll let you know. Does
>> that sound feasible?
> 
> OK, I'll put you down as reviewed-by then so we can share the glory (and the
> blame ;))

Alright, thanks :)


Thanks,
Daniel

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/input/keyboard/cap1106.c b/drivers/input/keyboard/cap1106.c
index f7d7a0d..180b184 100644
--- a/drivers/input/keyboard/cap1106.c
+++ b/drivers/input/keyboard/cap1106.c
@@ -64,7 +64,7 @@  struct cap1106_priv {
 	struct input_dev *idev;
 
 	/* config */
-	unsigned int keycodes[CAP1106_NUM_CHN];
+	unsigned short keycodes[CAP1106_NUM_CHN];
 };
 
 static const struct reg_default cap1106_reg_defaults[] = {
@@ -272,6 +272,12 @@  static int cap1106_i2c_probe(struct i2c_client *i2c_client,
 	for (i = 0; i < CAP1106_NUM_CHN; i++)
 		__set_bit(priv->keycodes[i], priv->idev->keybit);
 
+	__clear_bit(KEY_RESERVED, priv->idev->keybit);
+
+	priv->idev->keycode = priv->keycodes;
+	priv->idev->keycodesize = sizeof(priv->keycodes[0]);
+	priv->idev->keycodemax = ARRAY_SIZE(priv->keycodes);
+
 	priv->idev->id.vendor = CAP1106_MANUFACTURER_ID;
 	priv->idev->id.product = CAP1106_PRODUCT_ID;
 	priv->idev->id.version = rev;