This repository has been archived on 2023-05-28. You can view files and clone it, but cannot push or open issues/pull-requests.
SkyHook-Native/README.md

1.5 KiB

SkyHook-Native

Dynamic library of SkyHook for use with other languages.

Usage

The following examples are all in C#.

Functions

The extern functions that you should run are simple.

There are just two; start_hook and stop_hook.

start_hook

// Here, we assign a callback along with starting a hook.
// The NativeEvent type is declared below "Types" header.
public static delegate void HookCallback(NativeEvent ev);

// Here, we have an extern method to invoke.
[DllImport("skyhook", EntryPoint = "start_hook")]
public static extern void StartHook(HookCallback callback);

stop_hook

// No additional information required to provide when stopping the hook.
[DllImport("skyhook", EntryPoint = "stop_hook")]
public static extern void StopHook();

Types

NativeEventType

public enum NativeEventType {
    KeyPressed,
    KeyReleased
}

NativeEvent

[StructLayout(LayoutKind.Sequential)]
public struct NativeEvent
{
    public readonly ulong Time; // This is the key state update time.
    public readonly NativeEventType Type; // Whether the key is up or down.
    public readonly ushort Label; // Unified label for keys, such as ESC or F11.
    public readonly ushort Key; // Actual key code from native level.
}

Development

git clone https://git.pikokr.dev/SkyHook/SkyHook-Native #Clone

To build, just run build.sh on Linux of MacOS, build.ps1 on Windows.