The existing apps/keyboard/js/layout.js file is not JSON.  It uses symbolic constants ike KeyEvent.DOM_VK_RETURN.  Perhaps we should change that, but it feels out of scope for this blocking bug.

Also, JSON is a data interchange format but is terrible as a configuration file format because it doesn't allow comments. I don't like using eval() here, but I also don't want our keyboard layout format to forbid comments.