jahnf / Projecteur

Linux Desktop Application for the Logitech Spotlight device (and similar devices) - Digital Laser Pointer
MIT License
379 stars 33 forks source link

Logitech Spotlight do not send next and back hold events #71

Closed mayanksuman closed 3 years ago

mayanksuman commented 4 years ago

The device by default do not seem to send any event on either of Next or Back hold event.

I guess on windows official software do some kind of initialization of device and then the device starts to send such events.

However, I am not able to find the required usb packets.

jahnf commented 4 years ago

Hi Mayank, well the device does send key events. Like I mentioned before, if you use the USB Receiver on a Linux device level it is actually detected as 2 devices. One Mouse, one keyboard. And currently Projecteur just ignores devices without Relative Mouse events...

Refactoring device handling, will be part of 0.8 development, so proper key mapping can be done.

mayanksuman commented 4 years ago

Hi Jahn,

Just a clarification. Are you talking about 'hold' events? There are two events from each of Next and Back button. One for tap and other for hold.

I tried hidapi-testgui, but did not get any input from device for hold events.

jahnf commented 4 years ago

Ah yeah, sorry for that, misread your text. So I guess even on Windows there is no special "hold" event - but rather the software just detects if a button was pressed for a long enough time. So also Projecteur will need to implement it by itself. But as long as we can get a Button Press and Button Release it is possible.

mayanksuman commented 4 years ago

But as long as we can get a Button Press and Button Release it is possible.

We are not getting the same on Linux. That's why, I guess that official software sends some usb packets to device so that device starts to communicate those events.

jahnf commented 4 years ago

Ah alright, how did you check these events on Windows? Wireshark?

mayanksuman commented 4 years ago

Yes. By two different methods:

  1. Wireshark on Linux monitoring the communication between Windows (in VM) and device
  2. By using SnoopyPro in Windows: The log for communication when I select action ('Start Presentation') on Next hold setting in official software is attached.

I see a lot of repeated messages after 136 usb package (number of package sent before me making any selection). Most of these messages are 20 byte long. USBLog20.zip

jahnf commented 4 years ago

I guess the Logitech Software does a lot settings (like the vibration triggering and more) via USB, and also a lot of checking the device status regularly and whatnot... With that in mind, of course you will not get the same (USB traffic) on Linux since there it is only registered as a HID device, that uses the kernel hid drivers. I might be wrong but I don't think that the device will actually send a long press event on Windows either, but that is just realized with the Logitech Software/Driver on Windows. Or did you record a special long press event with Wireshark after executing a long press on the device?

mayanksuman commented 4 years ago

Or did you record a special long press event with Wireshark after executing a long press on the device?

It is not only a pair of Button Press and Button Release event. I have seen a lot of traffic emanating from device when keys (Next or Back) are long pressed, provided the device is already configured by the official software.

The device should send not only send Button Press and Button Release event but also other data like mouse movement etc., which might be useful for scroll operation (an option under long press button mapping in official software).

jahnf commented 4 years ago

Yes okay, then only (tedious) reverse engineering will help if the same features as in the Logitech Software are needed.

Before I found out the vibration message myself, I asked the Logitech support via email for help on it - Never got an answer - I guess they are not too eager to share that information :grinning: