2 * Copyright (C) 2009 Sony Computer Entertainment Inc.
3 * Copyright 2009 Sony Corp.
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; version 2 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #if defined(HAVE_CONFIG_H)
28 #include <sys/types.h>
31 #include "talloc/talloc.h"
35 * pjs_process_event - Read joystick event and map to UI key code.
37 * Returns a map routine UI key code or zero.
40 int pjs_process_event(const struct pjs *pjs)
47 result = read(pjs->fd, &e, sizeof(e));
49 if (result != sizeof(e)) {
50 pb_log("%s: read failed: %s\n", __func__, strerror(errno));
58 * pjs_destructor - The talloc destructor for a joystick handler.
61 static int pjs_destructor(void *arg)
63 struct pjs *pjs = pjs_from_arg(arg);
72 * pjs_init - Initialize the joystick event handler.
75 struct pjs *pjs_init(void *ctx, int (*map)(const struct js_event *))
77 static const char dev_name[] = "/dev/input/js0";
80 pjs = talloc_zero(ctx, struct pjs);
86 pjs->fd = open(dev_name, O_RDONLY | O_NONBLOCK);
89 pb_log("%s: open %s failed: %s\n", __func__, dev_name,
94 talloc_set_destructor(pjs, pjs_destructor);
96 pb_debug("%s: using %s\n", __func__, dev_name);