diff options
author | David 'Digit' Turner <digit@google.com> | 2009-09-17 16:45:03 -0700 |
---|---|---|
committer | David 'Digit' Turner <digit@google.com> | 2009-09-19 00:00:43 -0700 |
commit | 87250c24aec9449eb615951cf537a2fcf709f1d8 (patch) | |
tree | 2e53186714fd76b2733feee63e8b2451179b64be /android/keycode.c | |
parent | b489a9b96d5a024e1514258807f5d65ba1c3fb49 (diff) | |
download | external_qemu-87250c24aec9449eb615951cf537a2fcf709f1d8.zip external_qemu-87250c24aec9449eb615951cf537a2fcf709f1d8.tar.gz external_qemu-87250c24aec9449eb615951cf537a2fcf709f1d8.tar.bz2 |
Allow skins to provide a "dpad-rotation" field for each layout.
This is used to deal with the fact that the framework *always* assumes that
the physical DPad is rotated in landscaped mode, while the default skin no
longer does that.
NOTE: tested on old skin files for backwards compatibility.
(Upcoming skin fixes coming in another patch)
Diffstat (limited to 'android/keycode.c')
-rw-r--r-- | android/keycode.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/android/keycode.c b/android/keycode.c new file mode 100644 index 0000000..7364427 --- /dev/null +++ b/android/keycode.c @@ -0,0 +1,33 @@ +/* Copyright (C) 2009 The Android Open Source Project +** +** 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. +*/ +#include "android/keycode.h" + +AndroidKeyCode +android_keycode_rotate( AndroidKeyCode code, int rotation ) +{ + static const AndroidKeyCode wheel[4] = { kKeyCodeDpadUp, + kKeyCodeDpadRight, + kKeyCodeDpadDown, + kKeyCodeDpadLeft }; + + int index; + + for (index = 0; index < 4; index++) { + if (code == wheel[index]) { + index = (index + rotation) & 3; + code = wheel[index]; + break; + } + } + return code; +} + |