Add keyboard support and polyfill