Home | History | Annotate | Download | only in linux
      1 /*
      2  *  Key chord input driver
      3  *
      4  * Copyright (C) 2008 Google, Inc.
      5  * Author: Mike Lockwood <lockwood (at) android.com>
      6  *
      7  * This software is licensed under the terms of the GNU General Public
      8  * License version 2, as published by the Free Software Foundation, and
      9  * may be copied, distributed, and modified under those terms.
     10  *
     11  * This program is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14  * GNU General Public License for more details.
     15  *
     16 */
     17 
     18 #ifndef __LINUX_KEYCHORD_H_
     19 #define __LINUX_KEYCHORD_H_
     20 
     21 #include <linux/input.h>
     22 
     23 #define KEYCHORD_VERSION		1
     24 
     25 /*
     26  * One or more input_keychord structs are written to /dev/keychord
     27  * at once to specify the list of keychords to monitor.
     28  * Reading /dev/keychord returns the id of a keychord when the
     29  * keychord combination is pressed.  A keychord is signalled when
     30  * all of the keys in the keycode list are in the pressed state.
     31  * The order in which the keys are pressed does not matter.
     32  * The keychord will not be signalled if keys not in the keycode
     33  * list are pressed.
     34  * Keychords will not be signalled on key release events.
     35  */
     36 struct input_keychord {
     37 	/* should be KEYCHORD_VERSION */
     38 	__u16 version;
     39 	/*
     40 	 * client specified ID, returned from read()
     41 	 * when this keychord is pressed.
     42 	 */
     43 	__u16 id;
     44 
     45 	/* number of keycodes in this keychord */
     46 	__u16 count;
     47 
     48 	/* variable length array of keycodes */
     49 	__u16 keycodes[];
     50 };
     51 
     52 #endif	/* __LINUX_KEYCHORD_H_ */
     53