Системы менюшек и контрольчиков проектируются давно и разнообразно, и идеал так и не найден, чтобы был прост и универсален. С этого Винды и начались ;) И её пишут не один день. В конце концов вроде бы все пришли, что кнопочки не "опрашиваются", а они генерируют события, которые помещаются в очередь. Но понятно что для нажимаемой человеком кнопочки и для прокручиваемого мотором энкодера требования несколько разные, и поэтому в Виндах существует система драйверов, которые разработчик новой кнопочки может поставить. А может не ставить, если у него HID кнопочка :p В общем, что именно достаточно для твоей задачи?