146b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown/*
246b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * Copyright (C) 2010 The Android Open Source Project
346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown *
446b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * you may not use this file except in compliance with the License.
646b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * You may obtain a copy of the License at
746b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown *
846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown *
1046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * Unless required by applicable law or agreed to in writing, software
1146b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
1246b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * See the License for the specific language governing permissions and
1446b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * limitations under the License.
1546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown */
1646b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
1746b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown#ifndef _ANDROID_VIEW_KEYEVENT_H
1846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown#define _ANDROID_VIEW_KEYEVENT_H
1946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
2046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown#include "jni.h"
211f2451007c660091b7b090c1ea332f9044515d2dJeff Brown#include <utils/Errors.h>
221f2451007c660091b7b090c1ea332f9044515d2dJeff Brown#include <utils/threads.h>
2346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
2446b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brownnamespace android {
2546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
2646b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brownclass KeyEvent;
2746b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
281f2451007c660091b7b090c1ea332f9044515d2dJeff Brown/* Obtains an instance of a DVM KeyEvent object as a copy of a native KeyEvent instance.
291f2451007c660091b7b090c1ea332f9044515d2dJeff Brown * Returns NULL on error. */
3046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brownextern jobject android_view_KeyEvent_fromNative(JNIEnv* env, const KeyEvent* event);
3146b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
321f2451007c660091b7b090c1ea332f9044515d2dJeff Brown/* Copies the contents of a DVM KeyEvent object to a native KeyEvent instance.
331f2451007c660091b7b090c1ea332f9044515d2dJeff Brown * Returns non-zero on error. */
341f2451007c660091b7b090c1ea332f9044515d2dJeff Brownextern status_t android_view_KeyEvent_toNative(JNIEnv* env, jobject eventObj,
3546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown        KeyEvent* event);
3646b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
371f2451007c660091b7b090c1ea332f9044515d2dJeff Brown/* Recycles a DVM KeyEvent object.
381f2451007c660091b7b090c1ea332f9044515d2dJeff Brown * Key events should only be recycled if they are owned by the system since user
391f2451007c660091b7b090c1ea332f9044515d2dJeff Brown * code expects them to be essentially immutable, "tracking" notwithstanding.
401f2451007c660091b7b090c1ea332f9044515d2dJeff Brown * Returns non-zero on error. */
411f2451007c660091b7b090c1ea332f9044515d2dJeff Brownextern status_t android_view_KeyEvent_recycle(JNIEnv* env, jobject eventObj);
421f2451007c660091b7b090c1ea332f9044515d2dJeff Brown
4346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown} // namespace android
4446b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
4546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown#endif // _ANDROID_OS_KEYEVENT_H
46