/*
 *  Key chord input driver
 *
 * Copyright (C) 2008 Google, Inc.
 * Author: Mike Lockwood <lockwood@android.com>
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
 * may be copied, distributed, and modified under those terms.
 *
 * 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.
 *
*/

#ifndef __LINUX_KEYCHORD_H_
#define __LINUX_KEYCHORD_H_

#include <linux/input.h>

#define KEYCHORD_VERSION		1

/*
 * One or more input_keychord structs are written to /dev/keychord
 * at once to specify the list of keychords to monitor.
 * Reading /dev/keychord returns the id of a keychord when the
 * keychord combination is pressed.  A keychord is signalled when
 * all of the keys in the keycode list are in the pressed state.
 * The order in which the keys are pressed does not matter.
 * The keychord will not be signalled if keys not in the keycode
 * list are pressed.
 * Keychords will not be signalled on key release events.
 */
struct input_keychord {
	/* should be KEYCHORD_VERSION */
	__u16 version;
	/*
	 * client specified ID, returned from read()
	 * when this keychord is pressed.
	 */
	__u16 id;

	/* number of keycodes in this keychord */
	__u16 count;

	/* variable length array of keycodes */
	__u16 keycodes[];
};

#endif	/* __LINUX_KEYCHORD_H_ */
