From: Jelle Martijn Kok <jmkok@youcom.nl>
To: linux-input@vger.kernel.org
Subject: [PATCH 3/3] rotary_encoder: added key events to increase and decrease
Date: Wed, 12 May 2010 15:12:34 +0200 [thread overview]
Message-ID: <4BEAA942.1010108@youcom.nl> (raw)
You may now set key events for the increase and decrease events.
For example you could set this to "KEY_VOLUMEUP" and "KEY_VOLUMEDOWN"
for a volume encoder.
Signed-off-by: Jelle Martijn Kok <jmkok@youcom.nl>
---
drivers/input/misc/rotary_encoder.c | 19 +++++++++++++++++--
include/linux/rotary_encoder.h | 2 ++
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/input/misc/rotary_encoder.c
b/drivers/input/misc/rotary_encoder.c
index 1c9728f..9ada6fd 100644
--- a/drivers/input/misc/rotary_encoder.c
+++ b/drivers/input/misc/rotary_encoder.c
@@ -56,9 +56,17 @@ static irqreturn_t rotary_encoder_irq(int irq, void
*dev_id)
int dir = 0;
if (state_exor == 0x01) {
dir = +1;
+ if (pdata->event_up) {
+ input_report_key(encoder->input, pdata->event_up, 1);
+ input_report_key(encoder->input, pdata->event_up, 0);
+ }
}
else {
dir = -1;
+ if (pdata->event_down) {
+ input_report_key(encoder->input, pdata->event_down, 1);
+ input_report_key(encoder->input, pdata->event_down, 0);
+ }
}
if (dir) {
@@ -130,11 +138,18 @@ static int __devinit rotary_encoder_probe(struct
platform_device *pdev)
input->id.bustype = BUS_HOST;
input->dev.parent = &pdev->dev;
+ if (pdata->event_up || pdata->event_down) {
+ input->evbit[0] |= BIT(EV_KEY);
+ __set_bit(pdata->event_up, input->keybit);
+ __set_bit(pdata->event_down, input->keybit);
+ input_set_capability(input, EV_MSC, MSC_SCAN);
+ }
+
if (pdata->relative_axis) {
- input->evbit[0] = BIT_MASK(EV_REL);
+ input->evbit[0] |= BIT_MASK(EV_REL);
input->relbit[0] = BIT_MASK(pdata->axis);
} else {
- input->evbit[0] = BIT_MASK(EV_ABS);
+ input->evbit[0] |= BIT_MASK(EV_ABS);
input_set_abs_params(encoder->input,
pdata->axis, pdata->min_value, pdata->max_value,
0, 1);
}
diff --git a/include/linux/rotary_encoder.h b/include/linux/rotary_encoder.h
index a0d15d9..2350a48 100644
--- a/include/linux/rotary_encoder.h
+++ b/include/linux/rotary_encoder.h
@@ -7,6 +7,8 @@ struct rotary_encoder_platform_data {
unsigned int min_value;
unsigned int max_value;
unsigned int axis;
+ unsigned int event_up;
+ unsigned int event_down;
unsigned int gpio_a;
unsigned int gpio_b;
unsigned int inverted_a;
--
1.7.0.4
reply other threads:[~2010-05-12 13:12 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=4BEAA942.1010108@youcom.nl \
--to=jmkok@youcom.nl \
--cc=linux-input@vger.kernel.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.