From d0fe5e08b984db840545c1b341a1e56fad304593 Mon Sep 17 00:00:00 2001 From: torque Date: Wed, 10 Jun 2015 16:56:56 -0700 Subject: command: add keypress, keydown, and keyup commands. These commands are used to simulate keypresses using the key names from input.conf. --- player/command.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'player') diff --git a/player/command.c b/player/command.c index 7adb72902d..438879c228 100644 --- a/player/command.c +++ b/player/command.c @@ -4846,6 +4846,36 @@ int run_command(struct MPContext *mpctx, struct mp_cmd *cmd, struct mpv_node *re break; } + case MP_CMD_KEYPRESS: + case MP_CMD_KEYDOWN: { + const char *key_name = cmd->args[0].v.s; + int code = mp_input_get_key_from_name(key_name); + if (code < 0) { + MP_ERR(mpctx, "%s is not a valid input name.\n", key_name); + return -1; + } + if (cmd->id == MP_CMD_KEYDOWN) + code |= MP_KEY_STATE_DOWN; + + mp_input_put_key(mpctx->input, code); + break; + } + + case MP_CMD_KEYUP: { + const char *key_name = cmd->args[0].v.s; + if (key_name[0] == '\0') { + mp_input_put_key(mpctx->input, MP_INPUT_RELEASE_ALL); + } else { + int code = mp_input_get_key_from_name(key_name); + if (code < 0) { + MP_ERR(mpctx, "%s is not a valid input name.\n", key_name); + return -1; + } + mp_input_put_key(mpctx->input, code | MP_KEY_STATE_UP); + } + break; + } + default: MP_VERBOSE(mpctx, "Received unknown cmd %s\n", cmd->name); return -1; -- cgit v1.2.3