Hey RedFantom,
it appears that we are working towards the same goal. I have mapped out and implemented large parts of the protocol used not only by the official SDK but also the control software itself.
I found your repository while trying to locate all MasterKeys models with their respective USB product IDs so that I may implement automatic layout detection, but this might be a dead end now, as both your ANSI Pro L and my ISO Pro L have the same USB product ID, 003b.
So what I am thinking now is that the layout information is encoded somewhere in the init exchange of the protocol that I have largely been unable to decipher. I know that the very first 01 02 ... exchange returns the firmware version in ASCII, but there's also some 40 20 ... package that I can't make sense of. This is the exchange I recorded during initialization:
>> 40 20 00 00 00 00 00 00 00 00 00 00 00 00 [00...]
<< 40 20 00 00 05 14 04 0c 12 01 20 00 00 00 [00...]
Since you are the only other person I know who has an ANSI Pro L, maybe we could compare these and find out which field, if any, is responsible for carrying the layout information?
Hey RedFantom,
it appears that we are working towards the same goal. I have mapped out and implemented large parts of the protocol used not only by the official SDK but also the control software itself.
I found your repository while trying to locate all MasterKeys models with their respective USB product IDs so that I may implement automatic layout detection, but this might be a dead end now, as both your ANSI Pro L and my ISO Pro L have the same USB product ID, 003b.
So what I am thinking now is that the layout information is encoded somewhere in the init exchange of the protocol that I have largely been unable to decipher. I know that the very first
01 02 ...exchange returns the firmware version in ASCII, but there's also some40 20 ...package that I can't make sense of. This is the exchange I recorded during initialization:Since you are the only other person I know who has an ANSI Pro L, maybe we could compare these and find out which field, if any, is responsible for carrying the layout information?