Re: Assistance in remapping keys with no scancode in kernel module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Nov 12, 2015 at 07:59:21PM -0600, Marty Plummer wrote:
> Greetings
> 
> Having recently purchased a Logitech G105 Gaming Keyboard(046d:c248) I've began
> the process of reverse engineering the effects of the proprietery Logitech
> Gaming Software (hereafter LGS) on the device to enable its full potential in
> linux, using a number of tools (usbmon, hid-debug, virtual machines) to follow
> the actions and logic used.
> 
> As of right now, I've discovered the following:
> 1. That the macro key remapping (either as standard keyboard keys or full macros)
>    occurs in software and is not stored on the device itself (as opposed to
>    other Logitech GSeries devices).
> 
> 2. That keys G1-6 keys (hereafter GKeys) default to functioning as F1-6 until a
>    certain set of packets are sent to it from LGS or otherwise, after which the
>    F1-6 functionality ends.
> 
> 3. Before the F# keys are disabled, the GKeys sends hid reports on interface 0
>    identical to 'normal' F# keys and special reports on interface 1, with no
>    scancode, of three bytes in size, on one hid usage, ff00.0003 (vendor defined)
>    after the F# keys are disabled only the reports on interface 1 remain.
> 
> 4. The M1-3 and MR keys (hereafter MKeys) send no reports on interface 0 at all,
>    and reports on the same usage (ff00.0003) as the GKeys.
> 
> 5. One can easily determine which GKeys and MKeys are being pressed via bitwise
>    logic, as the three bytes follow a consistant pattern of:
> 
>    >03 gg mm
>    where 03 is constant, gg is a value indicating the depressed GKeys (0x01 << n-1)
>    AND'd together and mm is a value indicating the depressed MKeys (0x01 << n-1),
>    also AND'd together, where MR is treated as M4.
> 
> 6. Absolutely no standard scancode/keycode/etc is reported for these keys (as
>    detectable by evtest, xev, showkeys, etc).
> 
> 
> My current dilemma is how one is to transform this data into something usable,
> as the fact they all report on the same usage there is no simple way I can find
> to remap these keys.

You will have to parse these reports yourself by implementing the raw_event op and generate the appropriate input events. I think you also need to declare the keys you will be using in the input_configured op. You should be able to find a lot of examples for that in the existing HID drivers.

> 
> If anyone has any insight on this matter, please assist.
> 
> Information on these reports and raw usbmon logs can be found at
> https://github.com/GSeriesDev/gseries-tools/g105
> 
> 	Regards,
> 		Marty Plummer
> 

> pub  4096R/C030918D 2015-10-13 keybase.io/the_netz <the_netz@xxxxxxxxxx>
> sub  4096R/9FB3AD35 2015-10-13 [expire : 2025-10-10]
> 

> pub  4096R/C030918D 2015-10-13 keybase.io/the_netz <the_netz@xxxxxxxxxx>
> sub  4096R/9FB3AD35 2015-10-13 [expire : 2025-10-10]



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



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux