I'm trying to hold shift and enter at once but the enter key is never held down. Is there a way to fix this?
I tried with and without a small delay between holding the keys down.
I believe that depends on the specific way that application tries to read inputs. I'd try using the virtual methods instead. This jams the synthetic keypresses into the target application's input queue.
My best guess is it has something to do with how the game is reading the key input. I've seen a ton of games that use GetKeyState() or GetAsyncKeyState() for modifiers (Shift, Control, Alt) and Enter. It is poor form on their part, but it's functional. These functions are built into the win32 library and have been knowingly buggy (or otherwise have undocumented behavior) since their introduction. They are intended to poll the hardware state of the key with a given virtual key code, so that could explain the behavior you're experiencing.
Is there perhaps another way you could go about what you're trying to accomplish?
Well I do have approximate knowledge of many things!
For efficiency, what have you tried? Have you considered flipping some memory flags to try and indicate that a certain key is pressed (often there will be a variable for keydown states; might be useful to touch this). Or you could even NOP/JMP some of the assembly to force that code to trigger even if the corresponding key wasn't pressed.
Or, an easier solution: change your key bind, and press some other key.
When I search memory addresses things get really weird... I'll find a address for something like a coordinate but after about 5-10mins the address will change to something completely different. I'm really just trying to avoid memory stuff all together. The efficiency issue isn't a big one it's just a game mechanic that allows shift dragging many things at once instead of one at a time.