Virtual Keyboard Component For Vue.js

Virtual Keyboard Component For Vue.js

A touch-friendly virtual keyboard component for Vue.js 1.x and 2.x.

vue-touch-keyboard NPM version VueJS v2.x compatible

Virtual keyboard component for Vue.js v2.x. Designed to Raspberry Pi Touch Display

Codacy Badge Build Status Coverage Status score

Dependency Status devDependency Status Downloads

If you like my work, please donate. Thank you!


JSFiddle demo Codepen demo



  • 3 built-in layouts, but you can create custom layouts
  • no external dependencies
  • full responsive
  • customizable styles
  • ...etc



You can install it via NPM.

$ npm install vue-touch-keyboard


Download zip package and unpack and add the vue-touch-keyboard.css and vue-touch-keyboard.js file to your project from dist folder.


    <input type="text" placeholder="Text input" @focus="show" data-layout="normal" />
    <vue-touch-keyboard :options="options" v-if="visible" :layout="layout" :cancel="hide" :accept="accept" :input="input" />

  import VueTouchKeyboard from "vue-touch-keyboard";
  import style from "vue-touch-keyboard/dist/vue-touch-keyboard.css"; // load default style


  export default {
    data: {
      visible: false,
      layout: "normal",
      input: null,
      options: {
        useKbEvents: false,
        preventClickEvent: false

    methods: {
        accept(text) {
          alert("Input text: " + text);

        show(e) {
          this.input =;
          this.layout =;

          if (!this.visible)
            this.visible = true

        hide() {
          this.visible = false;


Property Default Accepted values Description
input required HTMLInputElement The target input HTML element
layout required String or Object Layout of keys. If you are using the built-in layouts, you can set as the name of the layout. If you want to use custom layout, you need to set a layout Object.
accept null Function Event handler. Fired when the "Accept/Close" button pressed.
cancel null Function Event handler. Fired when the "Cancel" button pressed.
change null Function Event handler. Fired when the input value changed.
next null Function Event handler. Fired when the "Next" button pressed or the length of the value of the input reached the maxLength of the input
options {} Object Functional options.
defaultKeySet default String Default key set. You can choose a desired key set of your layout to be used when a keyboard is initialized.


Option Default Accepted values Description
useKbEvents false boolean If true, the component will generate a keydown event and trigger it. If it returns with false, it won't insert the new character.
preventClickEvent false boolean If true, the component will preventDefault the click event.

Built-in layouts

  • normal - Normal full layout. Similar as real keyboard layouts
  • numeric - Only for numbers
  • compact - Compact layout. Similar as mobile phone keyboard layouts


This command will start a webpack-dev-server with content of dev folder.

npm run dev


This command will build a distributable version in the dist directory.

npm run build


npm test


Please send pull requests improving the usage and fixing bugs, improving documentation and providing better examples, or providing some testing, because these things are important.


vue-touch-keyboard is available under the MIT license.


Copyright (C) 2016 Icebob

@icebob @icebob

Github Repository

Tags: #VueJs