Два способа.
1) Через fsm. И через хэндлеры ловим нужное состояние. Можно прикрутить генератор кнопок и контекст передавать колбэки которые будут висеть на кнопках ну и стэйдж.
2) Ну если клавиатуры уже созданы то каждой клавиатуре дать уникальный идентификатор и опять же в колбэке передавать этот идентификатор. Написать функцию которая через хэндлер ловит все колбэки, смотрит идентификатор внутри и вызывает нужную функцию по идентификатору.