This seems unnecessary, do we really need this? `keyboard_visible` sounds like a read and write property that should always reflect the keyboard state besides allowing showing and hiding keyboard. The way it is implemented it's value could be different from the current state of the keyboard.