src/OnScreenKeyboard.js
function getKeys(keys) {

        var keyArrays = {};

        // Coerce all keys into individual key arrays
        for (var name in layout.keys) {
            keyArrays[name] = asKeyArray(name, keys[name]);
        }

        return keyArrays;

    }
function getKeys(keys) {

        var keyArrays = {};

        // Coerce all keys into individual key arrays
        for (var name in layout.keys) {
            keyArrays[name] = asKeyArray(name, keys[name]);
        }

        return keyArrays;

    }
function getKeys ( keys ) { var keyArrays = { } ; // Coerce all keys into individual key arrays for ( var name in layout . keys ) { keyArrays [ name ] = asKeyArray ( name , keys [ name ] ) ; } return keyArrays ; }
Converts the rather forgiving key mapping allowed by
Guacamole.OnScreenKeyboard.Layout into a rigorous mapping of key name
to key definition, where the key definition is always an array of Key
objects.

@private
@param {Object.<String, Number|String|Guacamole.OnScreenKeyboard.Key|Guacamole.OnScreenKeyboard.Key[]>} keys
A mapping of key name to key definition, where the key definition is
the title of the key (a string), the keysym (a number), a single
Key object, or an array of Key objects.

@returns {Object.<String, Guacamole.OnScreenKeyboard.Key[]>}
A more-predictable mapping of key name to key definition, where the
key definition is always simply an array of Key objects.
Converts the rather forgiving key mapping allowed by Guacamole . OnScreenKeyboard . Layout into a rigorous mapping of key name to key definition where the key definition is always an array of Key objects .