Ну, у меня нет полного ответа для вас, но ...
Функция Win32 SetKeyboard State () изменяет состояние клавиатуры для потока, который ее вызвал.
Я знаю, что это не влияет на всю систему, но если вам нужно изменить состояние клавиатуры только для разрабатываемых вами приложений, то это может вызываться каждой программой, считывая массив, переданный ей из временного файла Жёсткий.
В противном случае ... ничего другого не знаю ...