Хм... Смотря подо-что пишешь. Если под Х-ы, то иксовыми средствами нужно пользоваться. Например, в Qt - в классе QWidget за это дело отвечает метод keyPressEvent(QKeyEvent*). Если приблуда - консольная, то нужно смотреть в сторону ncurses. Если нужно именно нажатия на кнопки отслеживать, то... Ну значит, работа с низкоуровневыми функциями, привелегии суперпользователя и т.д.
Если действительно консоль и отслеживать вплоть до какой-нить там
Scroll-Lock и различать Left-Alt и Alt-Gr, то это сложно,
можешь посмотреть и ужаснуться от такой кучи возни и тонкостей
на мой блокиратор консоли:
ftp://ftp.simtreas.ru/pub/my/vtlock.c.gz