В общем, должен быть диспетчер клавиатуры, который обрабатывает все дребезги, и должны быть потребители, который обрабатывают кнопки. Вопрос как регистрировать - на самом деле не очень прост. Бывают противоречивые требования. С одной стороны, группы кнопок должны обрабатываться совместно. С другой стороны, если несколько независимых обработчиков - нужно как-то разруливать конфликты между ними. От того, насколько сложны эти правила разруливания, на самом деле зависит и архитектура диспетчера. В Виндах это и прямая иерархия обработчиков, и всевозможные хуки. Тебе это надо?