private String getSymbolicName(int keyCode) {
        if (keyCode == KeyEvent.VK_UNDEFINED)
            return null;
        /*
		 * else if(keyCode == KeyEvent.VK_OPEN_BRACKET) return "["; else
		 * if(keyCode == KeyEvent.VK_CLOSE_BRACKET) return "]";
		 */

        if (keyCode >= KeyEvent.VK_A && keyCode <= KeyEvent.VK_Z) {
            return String.valueOf(Character.toLowerCase((char) keyCode));
        }

        try {
            Field[] fields = KeyEvent.class.getFields();
            for (int i = 0; i < fields.length; i++) {
                Field field = fields[i];
                String name = field.getName();
                if (name.startsWith("VK_") && field.getInt(null) == keyCode) {
                    return name.substring(3);
                }
            }
        } catch (Exception e) {
            // Log.log(Log.ERROR,this,e);
        }

        return null;
    } // }}}