171bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine/* Copyright (C) 2010 The Android Open Source Project
271bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine**
371bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine** This software is licensed under the terms of the GNU General Public
471bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine** License version 2, as published by the Free Software Foundation, and
571bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine** may be copied, distributed, and modified under those terms.
671bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine**
771bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine** This program is distributed in the hope that it will be useful,
871bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine** but WITHOUT ANY WARRANTY; without even the implied warranty of
971bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1071bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine** GNU General Public License for more details.
1171bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine*/
1271bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine#ifndef QEMU_ANDROID_KEYCODE_ARRAY_H
1371bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine#define QEMU_ANDROID_KEYCODE_ARRAY_H
1471bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine
1571bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine/* Contains declarations for routines that manage keycode sequence that needs
1671bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine * to be transferred to the emulator core for further processing.
1771bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine */
1871bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine
1971bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine/* Maximum number of keycodes kept in the array. */
2071bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine#define  MAX_KEYCODES   256*2
2171bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine
2271bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine/* Describes array of keycodes collected for transferring to the core. */
2371bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkinetypedef struct AKeycodeBuffer {
2471bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine    /* Number of keycodes collected in the array. */
2571bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine    int                 keycode_count;
2671bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine
2771bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine    /* Array of collected keycodes. */
2871bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine    int                 keycodes[ MAX_KEYCODES ];
2971bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine} AKeycodeBuffer;
3071bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine
3171bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine/* Adds a key event to the array of keycodes. */
3271bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkinevoid
3371bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkineandroid_keycodes_add_key_event( AKeycodeBuffer* keycodes,
3471bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine                                unsigned       code,
3571bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine                                unsigned       down );
3671bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine
3771bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine/* Flushes (transfers) collected keycodes to the core. */
3871bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkinevoid
3971bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkineandroid_keycodes_flush(AKeycodeBuffer* keycodes);
4071bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine
4171bb14f826775867d16e7d382cfdc48e6ca46ccbVladimir Chtchetkine#endif /* QEMU_ANDROID_KEYCODE_ARRAY_H */
42