Virtual keyboard and input method