1 /*
   2  * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #ifndef DALVIKUTILS_H
  27 #define DALVIKUTILS_H
  28 
  29 #include "dalvikConst.h"
  30 #include <linux/input.h>
  31 #include <android/keycodes.h>
  32 
  33 #ifdef  __cplusplus
  34 extern "C" {
  35 #endif
  36 
  37 #define CHECK_EXCEPTION(env) \
  38     if ((*env)->ExceptionCheck(env) == JNI_TRUE) {                                 \
  39         LOGE("Detected outstanding Java exception at %s:%s:%d\n", \
  40                 __FUNCTION__, __FILE__, __LINE__);                                 \
  41         (*env)->ExceptionDescribe(env);                                            \
  42         (*env)->ExceptionClear(env);                                               \
  43     };
  44 
  45 int to_jfx_key_action(int action);
  46 int to_jfx_touch_action(int state);
  47 int to_linux_keycode(int androidKeyCode);
  48 char *describe_surface_format(int format);
  49 char *describe_touch_action(int state);
  50 char *describe_key_action(int action);
  51 
  52 typedef struct {
  53     int32_t androidKC;
  54     int32_t linuxKC;
  55 } AndroidLinuxKC;
  56 
  57 static AndroidLinuxKC keyMap[] = {
  58     {AKEYCODE_UNKNOWN, KEY_RESERVED},
  59     {AKEYCODE_0, KEY_0},
  60     {AKEYCODE_1, KEY_1},
  61     {AKEYCODE_2, KEY_2},
  62     {AKEYCODE_3, KEY_3},
  63     {AKEYCODE_4, KEY_4},
  64     {AKEYCODE_5, KEY_5},
  65     {AKEYCODE_6, KEY_6},
  66     {AKEYCODE_7, KEY_7},
  67     {AKEYCODE_8, KEY_8},
  68     {AKEYCODE_9, KEY_9},
  69     {AKEYCODE_MINUS, KEY_MINUS},
  70     {AKEYCODE_EQUALS, KEY_EQUAL},
  71     {AKEYCODE_TAB, KEY_TAB},
  72     {AKEYCODE_Q, KEY_Q},
  73     {AKEYCODE_W, KEY_W},
  74     {AKEYCODE_E, KEY_E},
  75     {AKEYCODE_R, KEY_R},
  76     {AKEYCODE_T, KEY_T},
  77     {AKEYCODE_Y, KEY_Y},
  78     {AKEYCODE_U, KEY_U},
  79     {AKEYCODE_I, KEY_I},
  80     {AKEYCODE_O, KEY_O},
  81     {AKEYCODE_P, KEY_P},
  82     {AKEYCODE_LEFT_BRACKET, KEY_LEFTBRACE},
  83     {AKEYCODE_RIGHT_BRACKET, KEY_RIGHTBRACE},
  84     {AKEYCODE_ENTER, KEY_ENTER},
  85     //{AKEYCODE_CTRL_LEFT, KEY_LEFTCTRL},
  86     //{AKEYCODE_CTRL_RIGHT, KEY_RIGHTCTRL},
  87     {AKEYCODE_A, KEY_A},
  88     {AKEYCODE_S, KEY_S},
  89     {AKEYCODE_D, KEY_D},
  90     {AKEYCODE_F, KEY_F},
  91     {AKEYCODE_G, KEY_G},
  92     {AKEYCODE_H, KEY_H},
  93     {AKEYCODE_J, KEY_J},
  94     {AKEYCODE_K, KEY_K},
  95     {AKEYCODE_L, KEY_L},
  96     {AKEYCODE_SEMICOLON, KEY_SEMICOLON},
  97     {AKEYCODE_GRAVE, KEY_GRAVE},
  98     {AKEYCODE_SHIFT_LEFT, KEY_LEFTSHIFT},
  99     {AKEYCODE_BACKSLASH, KEY_BACKSLASH},
 100     {AKEYCODE_Z, KEY_Z},
 101     {AKEYCODE_X, KEY_X},
 102     {AKEYCODE_C, KEY_C},
 103     {AKEYCODE_V, KEY_V},
 104     {AKEYCODE_B, KEY_B},
 105     {AKEYCODE_N, KEY_N},
 106     {AKEYCODE_M, KEY_M},
 107     {AKEYCODE_APOSTROPHE, KEY_APOSTROPHE},
 108     {AKEYCODE_COMMA, KEY_COMMA},
 109     {AKEYCODE_PERIOD, KEY_DOT},
 110     {AKEYCODE_SLASH, KEY_SLASH},
 111     {AKEYCODE_SHIFT_RIGHT, KEY_RIGHTSHIFT},
 112     {AKEYCODE_STAR, KEY_KPASTERISK},
 113     {AKEYCODE_ALT_LEFT, KEY_LEFTALT},
 114     {AKEYCODE_SPACE, KEY_SPACE},
 115     //{AKEYCODE_CAPSLOCK, KEY_CAPSLOCK},
 116     //{AKEYCODE_CTRL_RIGHT, KEY_RIGHTCTRL},
 117     {AKEYCODE_ALT_RIGHT, KEY_RIGHTALT},
 118     {AKEYCODE_HOME, KEY_HOME},
 119     {AKEYCODE_BACK, KEY_ESC},           //special back key mapped to ESC
 120     {AKEYCODE_DPAD_UP, KEY_UP},
 121     {AKEYCODE_PAGE_UP, KEY_PAGEUP},
 122     {AKEYCODE_DPAD_LEFT, KEY_LEFT},
 123     {AKEYCODE_DPAD_RIGHT, KEY_RIGHT},
 124     //{AKEYCODE_END, KEY_END},
 125     {AKEYCODE_DPAD_DOWN, KEY_DOWN},
 126     {AKEYCODE_PAGE_DOWN, KEY_PAGEDOWN},
 127     //{AKEYCODE_INSERT, KEY_INSERT},
 128     {AKEYCODE_DEL, KEY_BACKSPACE},
 129     {AKEYCODE_FORWARD_DEL, KEY_DELETE},
 130     {AKEYCODE_MENU, KEY_MENU },
 131 };
 132 
 133 
 134 #ifdef  __cplusplus
 135 }
 136 #endif
 137 
 138 #endif  /* DALVIKUTILS_H */