Это, по сути, зависит от платформы.
Я бы обязательно изолировал все, что вы делаете, и отделил механизм захвата события и записи нажатий клавиш от потребления этих нажатий клавиш. Таким образом, вам нужно всего лишь реализовать механизм захвата / записи на каждой платформе, а весь другой код должен быть довольно переносимым.
Возможно, вы захотите взглянуть на то, что SDL сделал здесь. http://www.libsdl.org/
Им удалось абстрагироваться от всего этого, не только от клавиатуры.