remote/PlatformUtils.cpp (29 lines of code) (raw):
#include "PlatformUtils.h"
#include "../native/keyboard_utils.h"
jobject Java_com_jetbrains_cef_remote_PlatformUtils_getCefKeyEventAttributes(
JNIEnv* env,
jclass,
jobject jKeyEvent) {
jcef_keyboard_utils::CefKeyEventAttributes attributes{};
if (!jcef_keyboard_utils::javaKeyEventToCef(env, jKeyEvent, &attributes)) {
return nullptr;
}
jclass jCefKeyEventClass =
env->FindClass("com/jetbrains/cef/remote/thrift_codegen/CefKeyEventAttributes");
if (!jCefKeyEventClass) {
return nullptr;
}
jmethodID jConstructorID =
env->GetMethodID(jCefKeyEventClass, "<init>", "(IIIISSZ)V");
if (!jConstructorID) {
env->DeleteLocalRef(jCefKeyEventClass);
return nullptr;
}
jobject jCefKeyEvent =
env->NewObject(jCefKeyEventClass, jConstructorID, attributes.type,
attributes.modifiers, attributes.windows_key_code,
attributes.native_key_code, attributes.character,
attributes.unmodified_character, attributes.is_system_key);
env->DeleteLocalRef(jCefKeyEventClass);
return jCefKeyEvent;
}