187250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner/* Copyright (C) 2009 The Android Open Source Project
287250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner**
387250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner** This software is licensed under the terms of the GNU General Public
487250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner** License version 2, as published by the Free Software Foundation, and
587250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner** may be copied, distributed, and modified under those terms.
687250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner**
787250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner** This program is distributed in the hope that it will be useful,
887250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner** but WITHOUT ANY WARRANTY; without even the implied warranty of
987250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1087250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner** GNU General Public License for more details.
1187250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner*/
1287250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner#include "android/keycode.h"
1387250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner
1487250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' TurnerAndroidKeyCode
1587250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turnerandroid_keycode_rotate( AndroidKeyCode  code, int  rotation )
1687250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner{
1787250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner    static const AndroidKeyCode  wheel[4] = { kKeyCodeDpadUp,
1887250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner                                              kKeyCodeDpadRight,
1987250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner                                              kKeyCodeDpadDown,
2087250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner                                              kKeyCodeDpadLeft };
2187250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner
2287250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner    int  index;
2387250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner
2487250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner    for (index = 0; index < 4; index++) {
2587250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner        if (code == wheel[index]) {
2687250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner            index = (index + rotation) & 3;
2787250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner            code  = wheel[index];
2887250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner            break;
2987250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner        }
3087250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner    }
3187250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner    return code;
3287250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner}
3387250c24aec9449eb615951cf537a2fcf709f1d8David 'Digit' Turner
34