Typing, but to the left
JavaScript (V8), 271 bytes

f=(s,k='~!@#$%^&amp;*()_+`1234567890-=\tQWERTYUIOP{}|\tqwertyuiop[]\\ASDFGHJKL:&quot;\n\\asdfghjkl;\'ZXCVBNM&lt;&gt;?zxcvbnm,./')=&gt;s.replace(/[^ ]/g,c=&gt;k[k.indexOf(c)-1]).replace(/\\([^\\]*)\\?/g,(m,c)=&gt;c.replace(/[a-zA-z]/g,l=&gt;l&gt;'Z'?l.toUpperCase():l.toLowerCase())).replace(/[?']/,&quot;&quot;)

Try it online!
My first JavaScript code golf.
It could definitely be shorter, but I think this is a good start.
It basically finds each character in the k string and replaces it with the previous one, then swaps the case of everything between the A or a, and removes all occurences of Z or z (as shift key does nothing on its own).
This should be a normal QWERTY keyboard layout, but let me know if not.