I don't know if this is the cause of your problem, but you are never calling CallNextHookEx in your LowLevelKeyboardProc function.
Hooking Chromium with this hook proc sounds like you're just asking for trouble. (Especially since you lock on Tab and Escape.)
The other thing that seems very odd is that you're installing a global hook for all running Windows applications in your Windows Desktop.
Unless you're a kiosk this seems wrong as well.
And of course the friendly reminder: Your thread that calls this MUST service these windows message queue delivered hook requests VERY quickly, (I think the default is something less than 5 seconds)
otherwise the OS will revoke your hook and it won't be called again. When I needed to install a global keyword accelerator for a external USB device that pretended to be a keyword, we called SetWindowHookEx from
a thread whose ONLY job was to service the hook requests. (Since for various reasons too much work got done on the main UI thread against best practice of UI applications.)
I hope this helps,
Bill