From: "George Spelvin" <linux@horizon.com>
To: linux-input@vger.kernel.org
Cc: linux@horizon.com
Subject: Hacking on ati_remote driver
Date: 22 Sep 2010 21:27:20 -0400 [thread overview]
Message-ID: <20100923012720.14819.qmail@science.horizon.com> (raw)
I dusted off my ATI all-in-wonder remote and was trying to get it to
work with VLC (so far unsuccessfully; I'm still untangling the
multiple mapping layers between hardware scancode and X event), and
I had a look at the ati_remote.c driver.
I started hacking on it. Mostly I thought the ati_remote_tbl[]
array was wastefully large. It gets a lot simpler when you
realize that, in the 4-byte report, data[1] is actually a checksum
and not part of the keycode. data[1] = data[2] + data[3] + 0xE5.
Having looked over the input layer documentation, I have decided that
the ati_remote driver could use some love. I'd like to convert it to
use the generic scancode to keycode mapping and autorepeat logic.
However, RTFMing and RTFSing left me with a few questions:
- Should the keybit[] bitmap be an exact map of possible buttons, or
is a superset okay? The driver handles several models of remote,
and the later ones added a few buttons. Can I use a single superset
scancode map, or is there some benefit to supplying an exact "which
keys exist" list? (EVIOCGBIT ioctl?)
- Is there some all-in-one function to report "scancode arrived" to the
input layer, or do I have to call input_get_keycode and input_report_key
separately?
- Is the input device required to ensure that the key-up keycode matches
the key-down, even if someone reprograms the scancode map in between?
- I read somewhere that the EV_KEY event's value should be 0 for up,
1 for down, and 2 for autorepeat. But the input_report_key function
canonicalizes values to 0/1. What's the right value to use for
autorepeat?
- The remote doesn't generate key-up events on most of its buttons.
It does, however, have hardware autorepeat, so the current code figures
it out with a timeout. Should I synthesize key-up events this way,
even though they're not very accurate? Or can I just use the timeout
to guess between key-down and autorepeat, and omit key-up events
entirely?
- The receiver supports up to 16 transmitters. Currently, they're all
funneled through a single input device with a mask available in the
device driver to suppress unwanted ones. Is it worth splitting this
into multiple input devices instead? Or is there some other way I
should pass the "channel number" into the input layer?
- Should the 0-9 buttons on the remote generate KEY_0 through KEY_9 or
KEY_NUMERIC_0 through KEY_NUMERIC_9?
- More generally, the current driver has a few dubious default key
code assignments. Should I fix these or carefully preserve them for
compatibility?
- Likewise, the ati_remote2 driver assigns remotes 1-16 (numbered 0-15
in the internal protocol) to mask bits 0-15. The ati_remote driver
uses mask bits 1-16, and ignores bit 0. The former convention
makes more sense to me. Convert ati_remote or preserve backward
compatibility?
(Note that in either case, I'll segregate the backward compatibility
breaks into their own patches.)
Thank you for any guidance.
P.S.
I can also have a look at the remote wonder plus patches some folks
developed at
http://www.mythtv.org/wiki/ATI_Remote_Wonder_Plus
next reply other threads:[~2010-09-23 1:34 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-23 1:27 George Spelvin [this message]
2010-09-26 19:22 ` Hacking on ati_remote driver Jarod Wilson
2010-09-27 14:42 ` George Spelvin
2010-09-27 16:07 ` Jarod Wilson
2010-09-27 16:33 ` Mauro Carvalho Chehab
2010-09-28 19:04 ` George Spelvin
2010-09-28 20:00 ` Mauro Carvalho Chehab
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=20100923012720.14819.qmail@science.horizon.com \
--to=linux@horizon.com \
--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.