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)
29 #include <sys/types.h>
32 #include "talloc/talloc.h"
36 * pjs_process_event - Read joystick event and map to UI key code.
38 * Returns a map routine UI key code or zero.
41 int pjs_process_event(const struct pjs *pjs)
48 result = read(pjs->fd, &e, sizeof(e));
50 if (result != sizeof(e)) {
51 pb_log("%s: read failed: %s\n", __func__, strerror(errno));
59 * pjs_destructor - The talloc destructor for a joystick handler.
62 static int pjs_destructor(void *arg)
64 struct pjs *pjs = pjs_from_arg(arg);
73 * pjs_init - Initialize the joystick event handler.
76 struct pjs *pjs_init(void *ctx, int (*map)(const struct js_event *))
78 static const char dev_name[] = "/dev/input/js0";
81 pjs = talloc_zero(ctx, struct pjs);
87 pjs->fd = open(dev_name, O_RDONLY | O_NONBLOCK);
90 pb_log("%s: open %s failed: %s\n", __func__, dev_name,
95 talloc_set_destructor(pjs, pjs_destructor);
97 pb_log("%s: using %s\n", __func__, dev_name);