Re: rotary encoder (hardware): user messages to step through the menu
On 8 Jul., 17:37, Joseph M. Newcomer <newco...@flounder.com> wrote:
A lot of this depends on how you encode the information from the "rotary =
encoder". For
example, if you encode it in a way that is consistent with WM_MOUSEWHEEL =
messages, then
the HID driver will do that translation. But you have not indicated wh=
at messages are
coming.
I didn`t find an usage or usage page (usb report descriptor) for an
rotary encoder, which can rotate in both direction without a limit. At
the moment I`m using an ordinary message form - 8bits which include
the whole information of the rotary encoder - back and forward
rotation.
There is no *message* to set the focus to a control, but SetFocus will do=
this. For menu
items, there is no concept of focus. You are typically manipulating th=
e menu with an API
(not sending it messages) which will indicate whether or not the menu ite=
m is selected
(not "has the focus").
Such an API would be the "SendInput API"?
Note that the tab key does NOT normally do this for menu items in
a popup menu (in fact, my machine just goes "boink" if I hit the tab key!=
) so there is no
reason to expect that this behavior will magically change for some reason=
.. My mousewheel
died last week, so I can't check to see what using the mousewheel will do=
in a menu (new
mouse is on the floor beside me, as soon as I feel like undergoing massiv=
e pain, I will
crawl under the desk and plug it in).
The up-arrow and down-arrow keys work for menus.
That means I can use the SendInput API -> generate some up-arrow and
down-arrow keys if the user use the rotary encoder wheel? Is there an
equal SendInput message for pressing an button (where the focus is)?
Maybe like a mouse-click?
Without knowing what your HID device encodes, there is no way to tell wha=
t messages it
will send you.
joe
The whole subject is quite new for me. At the moment I`m able to
receive messages from the usb-hid-device (with the encoder wheel); As
I pointed it out, I don`t use any specific message form at the moment;
but if you will give me some hints (generating a suitable message
format which easily transforms the messages without any user code) ->
I will test if I get it to work!
As well as I will also install an touchscreen sending the touch
message via usb to the host (mfc application). As a specific
touchscreen report message descriptor - I found this form:
const char hid_report_desc_table[]=
{
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x01, // COLLECTION (Application)
//rotary encoder wheel (two buttons one for backward one for forward
rotation + an additional push-button
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x95, 0x03, // REPORT_COUNT (3)
0x75, 0x01, // REPORT_SIZE (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
// touchscreen
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x09, 0x00, // USAGE (Undefined)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xFF,0x7F, // LOGICAL_MAXIMUM (32767)
0x35, 0x00, // PHYSICAL_MINIMUM(0)
0x47, 0xFF,0xFF,0x00,0x00, // PHYSICAL_MAXIMUM(65535)
0x75, 0x10, // REPORT_SIZE (16)
0x95, 0x03, // REPORT_COUNT (3)
0x81, 0x02, // INPUT (Data,Var,Abs)
//feature request
0x09, 0x01, // USAGE (Pointer)
0xb1, 0x03, // FEATURE (Cnst,Var,Abs)
0xc0, // END_COLLECTION
};
best regards
Hans