Shift key stuck when switching with the right shift key ; description + most probable solution.

Description:
1: When moving from a secondary to the primary using the right shift key (seamless+shift mode), when i release my shift , and type anywhere , it will be capitals..
(when you press your left shift once it's back to normal)

2 :Also , games and programs distinguishing between left and right shift on the secondary always trigger on a left shift keypress, iven if you press the right one.


Why:
The primary instance of multiplicity makes no difference between the 0xA0 or 0xA1 Virtual key value (probably reading shift from 0x10 but i have no idea) , i just know for a fact , whichever shift key i press , the primary instance of multiplicity sends :

4d 55 4c 7e 01 01 00 00 00 a0 00 2a 00 02 00 00 MUL~.... ...*....
00 00 00 00 00 00 00 00 00 d5 3f 11 00 dc 99 89 ........ ..?.....
00 a0 00 2a 00 02 00 00 00 00 00 00 00 34 12 00 ...*.... .....4..

A0 every time ..

The effect is , while moving from sec to pri holding rshift the vkey map gets syncronized , and the value (being keydown) for A0 gets passed to the primary , however , windows on the primary knows it's A1 thats pressed , so you end up with A1 and A0 being in a keydown position , if you then remove your finger from the right shift , the keydown value from the sync is still toggled on your left shift.


Solution:
When sending key data to the secondary from the primary :
Either reading 0xA0 & 0xA1 separately, not using 0x10 on virtual , (i don't know what kind of routine stardock uses to read keys )
Or , when multiplicity is reading Scan values , read 0x36 and 0x2A separately.

Whichever way it's read on the primary , A0 should be sent for left shift and A1 for the right one. That should fix it.

Kind regards
1,582 views 0 replies