feat: start and stop hook

develop
paring 2022-11-03 20:55:22 +09:00
parent 64baa0a3da
commit e23c07bf80
Signed by: pikokr
GPG Key ID: DB839724AD14EC9F
20 changed files with 423 additions and 0 deletions

8
Runtime.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: afa6abacc71057c9a9ac26998ea7001e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

18
Runtime/Event.cs Normal file
View File

@ -0,0 +1,18 @@
using System.Runtime.InteropServices;
namespace SkyHook
{
[StructLayout(LayoutKind.Sequential)]
public struct SkyHookEvent
{
public ulong Time;
public short Type;
public uint Key;
}
public enum EventType
{
KeyPressed,
KeyReleased
}
}

11
Runtime/Event.cs.meta Normal file
View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 71a9f666dcf69d17895d94f120487cf7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,21 @@
{
"name": "SkyHook.Unity",
"rootNamespace": "",
"references": [],
"includePlatforms": [
"Editor",
"LinuxStandalone64",
"CloudRendering",
"macOSStandalone",
"WindowsStandalone32",
"WindowsStandalone64"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5277a9c527b33a210bfa8bb54a667bf4
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
using System;
namespace SkyHook
{
public class SkyHookException : Exception
{
public SkyHookException(string message) : base(message) { }
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0bcd47f1c888fa9c685231dbe5ee5e09
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

86
Runtime/SkyHookManager.cs Normal file
View File

@ -0,0 +1,86 @@
using UnityEngine;
namespace SkyHook
{
public class SkyHookManager : MonoBehaviour
{
private static SkyHookManager _instance;
internal static bool IsFocused;
public bool requireFocus = true;
private bool _started;
public static SkyHookManager Instance
{
get
{
if (_instance) return _instance;
var obj = new GameObject("SkyHook Manager");
_instance = obj.AddComponent<SkyHookManager>();
DontDestroyOnLoad(_instance);
return _instance;
}
}
private void HookCallback(SkyHookEvent ev)
{
Debug.Log($"{ev.Type} {ev.Key} {ev.Time}");
}
private void StartHook()
{
var result = SkyHookNative.StartHook(HookCallback);
if (result != null)
{
throw new SkyHookException(result);
}
_started = true;
}
private void StopHook()
{
if (!_started) return;
var result = SkyHookNative.StopHook();
if (result != null)
{
throw new SkyHookException(result);
}
_started = false;
}
public static void Start()
{
Instance.StartHook();
}
public static void Stop()
{
Instance.StopHook();
}
private void OnDestroy()
{
Debug.Log("Destroy");
StopHook();
}
private void Run()
{
if (requireFocus)
{
IsFocused = Application.isFocused;
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3bbea13638e782043b24c6ca237e1145
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

17
Runtime/SkyHookNative.cs Normal file
View File

@ -0,0 +1,17 @@
using System.Runtime.InteropServices;
namespace SkyHook
{
internal class SkyHookNative
{
public delegate void Callback(SkyHookEvent ev);
private const string LIB = "skyhook";
[DllImport(LIB, EntryPoint = "start_hook", CallingConvention = CallingConvention.Cdecl)]
public static extern string StartHook(Callback callback);
[DllImport(LIB, EntryPoint = "stop_hook", CallingConvention = CallingConvention.Cdecl)]
public static extern string StopHook();
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 974a62ff1f0eca7fd9e983217ddad701
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

8
plugins.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4fea41e2cee5d4ff3832de5cd5c0f959
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
plugins/i686.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2a170cb9c843facdaae41a2ec128149c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
plugins/i686/skyhook.dll Executable file

Binary file not shown.

View File

@ -0,0 +1,63 @@
fileFormatVersion: 2
guid: a9d394d2428104e008ccad309aac73a6
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 1
Exclude Linux64: 0
Exclude OSXUniversal: 0
Exclude Win: 0
Exclude Win64: 1
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: Windows
- first:
Standalone: Linux64
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
Standalone: OSXUniversal
second:
enabled: 1
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 1
settings:
CPU: x86
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: None
userData:
assetBundleName:
assetBundleVariant:

8
plugins/x86_64.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 89f86fe0a57397009914615d01bb0a10
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
plugins/x86_64/libskyhook.so Executable file

Binary file not shown.

View File

@ -0,0 +1,63 @@
fileFormatVersion: 2
guid: 3fe709bbc3d4a927fb0d7e518e19b911
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 0
Exclude Linux64: 0
Exclude OSXUniversal: 1
Exclude Win: 0
Exclude Win64: 0
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
CPU: x86_64
DefaultValueInitialized: true
OS: Linux
- first:
Standalone: Linux64
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
Standalone: OSXUniversal
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 1
settings:
CPU: None
- first:
Standalone: Win64
second:
enabled: 1
settings:
CPU: x86_64
userData:
assetBundleName:
assetBundleVariant:

BIN
plugins/x86_64/skyhook.dll Executable file

Binary file not shown.

View File

@ -0,0 +1,63 @@
fileFormatVersion: 2
guid: ec214c927694799828418d2a065c10f6
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 0
Exclude Linux64: 0
Exclude OSXUniversal: 0
Exclude Win: 0
Exclude Win64: 0
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
CPU: x86_64
DefaultValueInitialized: true
OS: Windows
- first:
Standalone: Linux64
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
Standalone: OSXUniversal
second:
enabled: 1
settings:
CPU: x86_64
- first:
Standalone: Win
second:
enabled: 1
settings:
CPU: None
- first:
Standalone: Win64
second:
enabled: 1
settings:
CPU: x86_64
userData:
assetBundleName:
assetBundleVariant: