// Bind a delegate directly to a specific key, gamepad button, axis, or touch input.
        public void BindKey(InputChord inputChord, InputEventType inputEventType, KeyInputCallback callback)
        {
            if (IsDestroyedOrPendingKill)
            {
                throw new UnrealObjectDestroyedException("Trying to bind input key on destroyed input component");
            }
            if (null == callback)
            {
                throw new ArgumentNullException("callback");
            }
            UnrealObject targetObj = callback.Target as UnrealObject;

            unsafe
            {
                byte *nativeInputChordBuffer = stackalloc byte[InputChord.NativeDataSize];
                inputChord.ToNative(new IntPtr(nativeInputChordBuffer));
                RegisterKeyInputCallback(NativeObject, targetObj != null ? targetObj.NativeObject : IntPtr.Zero, nativeInputChordBuffer, inputEventType, callback);
            }
        }
 unsafe private extern static void RegisterKeyInputCallback(IntPtr nativeComponentPointer, IntPtr nativeTargetObjectPointer, void *nativeInputChord, InputEventType inputEventType, KeyInputCallback callback);