You haven’t “escaped” those plus signs.
Here is an excerpt from mine. I have used the + and - of the numerical block.
// zoom controls
"Ctrl\\+\\+" : "mpv:add video-zoom 0.05",
"Ctrl\\+\\-" : "mpv:add video-zoom -0.01",
"Ctrl\\+\\*" : "mpv:cycle-values video-zoom 0 0.0574502 0.4025857 0.4269356",
"Ctrl\\+0" : "mpv:set video-zoom 0",
You should definitely copy the keyboard.json from the default subfolder,
and only extend it instead of completely replacing its contents.
Here is a complete keyboard.json.
Some of its sections have been disabled with double backslashes (which turns them into comments).
If you want some of them, remove the two backslashes at the beginning of their lines.
{
"name": "Generic Keyboard",
"idmatcher": "Keyboard.*",
"mapping": {
"Left": "left",
"Right": "right",
"Up": "up",
"Down": "down",
"Return|Enter": "enter",
"Esc|Backspace": {
"short": "back",
"long": "home"
},
// Standard text entry. There's no distinction between upper and lower case
// letters. The optional Shift key is only a flexibility convenience.
"(?:Shift\\+)?([A-Z0-9.])": "%1",
// Use Shift+letter to jup to the associated letter in supporting lists.
"Shift\\+([A-Z])": "jump+%1",
// Application shortcuts.
"Space": ["space", "play_pause"],
"P": "play_pause",
"Ctrl\\+P": "pause",
"X": "stop",
"B": "back",
"H": "home",
"A": "cycle_audio",
"L": "cycle_subtitles",
"S": "toggle_subtitles",
"Alt\\+A": "increase_audio_delay",
"Alt\\+Shift\\+A": "decrease_audio_delay",
"Alt\\+S": "increase_subtitles_delay",
"Alt\\+Shift\\+S": "decrease_subtitles_delay",
"PgUp": "seek_backward",
"PgDown": "seek_forward",
"Home": "step_backward",
"End": "step_forward",
"Ctrl\\+F": "search",
"\\[": "previous_pivot_tab",
"\\]": "next_pivot_tab",
"=": "increase_volume",
"(Shift\\+)?\\+": "increase_volume",
"\\-": "decrease_volume",
"I": "info",
"W": "toggle_watched",
"Z": "cycle_aspect_ratio",
"Ctrl\\+Shift\\+D": "debug",
// "Ctrl\\+D": "host:player af toggle lavfi=[acompressor=ratio=2:makeup=1]",
// "Ctrl\\+D": "host:player af toggle lavfi=[dynaudnorm]",
"Ctrl\\+D": "mpv:af toggle lavfi=[acompressor=ratio=5:makeup=4]",
"D": "mpv:vf toggle d3d11vpp=[deint=yes:interlaced-only=yes]",
//Speed Controls
"N": { "short": "mpv:set speed 0.5", "long": "mpv:set speed 0.25" },
"M": { "short": "mpv:set speed 2", "long": "mpv:set speed 4" },
"Alt\\+1|Ctrl\\+1": "mpv:set speed 1",
"Alt\\+2": "mpv:set speed 0.5",
"Alt\\+3": "mpv:set speed 0.25",
"Alt\\+4": "mpv:set speed 0.125",
"Ctrl\\+2": "mpv:set speed 2",
"Ctrl\\+3": "mpv:set speed 4",
"Ctrl\\+4": "mpv:set speed 8",
// refine subtitle position
//"Shift\\+R" : "mpv:add sub-pos +1",
//"R" : "mpv:add sub-pos -1",
// frame back and forth
//"\\." : "mpv:frame-step",
//"," : "mpv:frame-back-step",
// zoom controls
//"Ctrl\\+\\+" : "mpv:add video-zoom 0.01",
//"Ctrl\\+\\-" : "mpv:add video-zoom -0.01",
//"Ctrl\\+\\*" : "mpv:cycle-values video-zoom 0 0.0574502 0.4025857 0.4269356",
//"Ctrl\\+0" : "mpv:set video-zoom 0",
//still snapshot
"Ctrl\\+S": "mpv:screenshot",
// Application window handling.
"Alt\\+(Return|Enter)": "toggle_fullscreen",
"F11": "toggle_fullscreen",
"\\\\": "toggle_fullscreen",
"E": "exit"
// The `|<< <<` and `>> >>|` button on a Harmony Hub remote sends different
// keys based on the Harmony device configuration. A long press action to
// send `skip_previous` or `skip_next` must be configured in the Harmony
// app. The default configuration sends no keyboard events to Plex.
//
// - "Media Rewind" and "Media Fast Forward" are sent when the device is
// configured as a Windows computer.
// - "R" and "F" are sent when the device is configured as a Microsoft Plex
// entertainment device..
//"(Media Fast Forward)|F": "seek_forward"
//"(Media Rewind)|R": "seek_backward"
}
}