Это смотря для какой операционной системы программировать.
Если для многооконной типа Windows, то там обычными функциями языков программирования, выделенными на обработку нажатий клавиатуры не обойтись потому что при потере фокуса программой, то есть когда вы свернули окно программы либо переключились на окно другой программы, обычные клавиатурные функции уже не будут получать информации о клавишах, а эту информацию будет получать то окно, на которое пользователь переключился.
Поэтому если вы хотите получать информацию даже и о нажатиях клавиатуры когда окно вашей программы не в фокусе, то лучше читать информацию из портов ввода-вывода, и там искать информацию о том, какую кнопку нажал пользователь в данный момент.
Вообщем если вы хотите такую программу чтобы в Windows при нажатии на кнопку производилось какое-то действие, но самого окна как бы не было, то можно сделать так.
Подойдёт язык программирования Visual Basic, или C++ под Windows.
Вообщем нужно создать программу со стилем главной формы BorderStyle=None и Visible=False, тогда ни на экране, ни в панели Пуск вашей программы не будет видно.
А в самом коде программы нужно использовать API Windows по работе с клавиатурой или с портами ввода-вывода. Вообщем проверять, и если нажата нужная клавиша, то делать закреплённое за ней действие.