Please add more comments in jsdoc format. Please refer to keyboard/core.js for details.