From 87250c24aec9449eb615951cf537a2fcf709f1d8 Mon Sep 17 00:00:00 2001 From: David 'Digit' Turner Date: Thu, 17 Sep 2009 16:45:03 -0700 Subject: 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) --- android/keycode.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 android/keycode.c (limited to 'android/keycode.c') 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; +} + -- cgit v1.1