Right, it shouldn’t produce a distinct scan code just from holding down shift. That’s lower level than I’m suggesting. X11 has tables that convert hardware scan codes into key symbols like xev reports. XKB and xmodmap both allow you to specify an array where the first entry is unmodified, the next entry is modified by shift, and so on (control, super, etc).
I looked at ‘xev’ output myself. First I noticed my desktop environment was grabbing the volume key, so I couldn’t see it until I switched to a bare minimum environment. Once I did that I saw key 122. I consider the bottom-left corner of the key to be the “normal” one and the upper right to be the shifted state. so it is a volume down key, the shift is to get a volume up key:
xmodmap -e "keycode 122 = XF86AudioLowerVolume XF86AudioRaiseVolume "
there is a more elegant way to do this using xkb and installing system-wide files in /usr/share/X11/xkb/, but the above in your Xsession file should be sufficient for a quick hack around the problem.