keyboard parser client side done