Ну, я думаю, что вам нужно создать что-то вроде Input Method (IME), есть хороший учебник, с которого можно начать на Android Docs , еще одна вещь, которую вы можете сделать, это создать действие который содержит ваш виртуальный контроллер, распространяет его как библиотеку, а затем, если кому-то это нужно, он может загрузить и зарегистрировать ваш компонент в своем проекте, что-то вроде того, что делает AdMobs .