X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Flirc.c;h=86447408276a9f68be6f3145d3f6dfc3912a3ad3;hb=c68131c93b7682e1162b9391e120dbce23bfe554;hp=0ad34ca2f476402f9c80327432e0bd957bcb0db5;hpb=d88a1718bbca660e13ad60f8f1aec6084fcf7788;p=ncmpc.git diff --git a/src/lirc.c b/src/lirc.c index 0ad34ca..8644740 100644 --- a/src/lirc.c +++ b/src/lirc.c @@ -1,12 +1,36 @@ -#include +/* ncmpc (Ncurses MPD Client) + * (c) 2004-2017 The Music Player Daemon Project + * Project homepage: http://musicpd.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + #include "lirc.h" +#include "ncmpc.h" +#include "Compiler.h" + +#include static struct lirc_config *lc = NULL; -static int lirc_socket = 0; int ncmpc_lirc_open() { - if ((lirc_socket = lirc_init("ncmpc", 0)) == -1) + char prog[] = "ncmpc"; + int lirc_socket = 0; + + if ((lirc_socket = lirc_init(prog, 0)) == -1) return -1; if (lirc_readconfig(NULL, &lc, NULL)) { @@ -24,18 +48,23 @@ void ncmpc_lirc_close() lirc_deinit(); } -command_t ncmpc_lirc_get_command() +gboolean +lirc_event(gcc_unused GIOChannel *source, + gcc_unused GIOCondition condition, gcc_unused gpointer data) { - char *code = NULL, *cmd = NULL; - - if (lirc_nextcode(&code) != 0) - return CMD_NONE; + char *code, *txt; + command_t cmd; - if (lirc_code2char(lc, code, &cmd) != 0) - return CMD_NONE; + begin_input_event(); - if (!cmd) - return CMD_NONE; + if (lirc_nextcode(&code) == 0) { + while (lirc_code2char(lc, code, &txt) == 0 && txt != NULL) { + cmd = get_key_command_from_name(txt); + if (do_input_event(cmd) != 0) + return FALSE; + } + } - return get_key_command_from_name(cmd); + end_input_event(); + return TRUE; }