Mostly this is a sanity check. The key code for both shift keys is 16. Does that mean it is actually impossible to distinguish a left and right shift events in a browser?
You can use event.code
(the physical keyboard string) instead of event.key
(the numeric ascii value).
event.code MDN docs
The KeyboardEvent.code property represents a physical key on the keyboard (as opposed to the character generated by pressing the key).
If you scroll down to "Code values" at the bottom, you can find the two distinct shift keys:
"ShiftLeft"
, "ShiftRight"