{
    "additionalProperties": false,
    "properties": {
        "active": {
            "description": "e.g. mouse button is down",
            "type": "boolean"
        },
        "char": {
            "description": "keycode",
            "oneOf": [
                {
                    "type": "null"
                },
                {
                    "maxLength": 20,
                    "type": "string"
                }
            ]
        },
        "element": {
            "description": "id attribute",
            "pattern": "^[a-f][a-f0-9]{31}$",
            "type": "string"
        },
        "time": {
            "description": "millis per Date.getTime",
            "type": "integer"
        },
        "tool": {
            "enum": [
                "Pen",
                "Hand",
                "Eraser"
            ],
            "type": "string"
        },
        "x": {
            "description": "in SVG coordinates",
            "type": "number"
        },
        "y": {
            "description": "in SVG coordinates",
            "type": "number"
        }
    },
    "required": [
        "time",
        "tool",
        "active"
    ],
    "type": "object"
}