mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-11-22 20:55:59 +01:00
plugins name lookup
This commit is contained in:
parent
8446e69a76
commit
5e20a32754
1 changed files with 6 additions and 17 deletions
|
@ -79,7 +79,8 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
For private functions or members, you will need to use the signature, for example for `CInputManager::processMouseDownNormal`:
|
For private functions or members, you can use the `findFunctionsByName` API entry to list all functions matching your query,
|
||||||
|
for example:
|
||||||
```cpp
|
```cpp
|
||||||
typedef void (*origMouseDownNormal)(void*, wlr_pointer_button_event*);
|
typedef void (*origMouseDownNormal)(void*, wlr_pointer_button_event*);
|
||||||
|
|
||||||
|
@ -93,8 +94,8 @@ void hkProcessMouseDownNormal(void* thisptr, wlr_pointer_button_event* e) {
|
||||||
APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
||||||
// stuff...
|
// stuff...
|
||||||
|
|
||||||
g_pMouseDownHook = HyprlandAPI::createFunctionHook(
|
static const auto METHODS = HyprlandAPI::findFunctionsByName(PHANDLE, "processMouseDownNormal");
|
||||||
PHANDLE, HyprlandAPI::getFunctionAddressFromSignature(PHANDLE, "_ZN13CInputManager22processMouseDownNormalEP24wlr_pointer_button_event"), (void*)&hkProcessMouseDownNormal);
|
g_pMouseDownHook = HyprlandAPI::createFunctionHook(PHANDLE, METHODS[0].address, (void*)&hkProcessMouseDownNormal);
|
||||||
|
|
||||||
g_pMouseDownHook->hook();
|
g_pMouseDownHook->hook();
|
||||||
|
|
||||||
|
@ -102,21 +103,9 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
To get the signature, compile Hyprland and run `objdump -D ./path/to/Hyprland | grep "functionName"`
|
|
||||||
|
|
||||||
When it finally spits out something, you can stop it with `ctrl+C`.
|
|
||||||
|
|
||||||
Example output:
|
|
||||||
```
|
|
||||||
9710b9: eb 01 jmp 9710bc <_ZN13CInputManager22processMouseDownNormalEP24wlr_pointer_button_event+0xed8>
|
|
||||||
9710c3: 74 37 je 9710fc <_ZN13CInputManager22processMouseDownNormalEP24wlr_pointer_button_event+0xf18>
|
|
||||||
9710fa: eb 1f jmp 97111b <_ZN13CInputManager22processMouseDownNormalEP24wlr_pointer_button_event+0xf37>
|
|
||||||
971128: 74 05 je 97112f <_ZN13CInputManager22processMouseDownNormalEP24wlr_pointer_button_event+0xf4b>
|
|
||||||
```
|
|
||||||
From this, we can see the signature is `_ZN13CInputManager22processMouseDownNormalEP24wlr_pointer_button_event`.
|
|
||||||
|
|
||||||
{{< hint type=warning >}}
|
{{< hint type=warning >}}
|
||||||
Please note signatures may and most likely will differ between compilers. (gcc/clang)
|
Please note method lookups are slow and should not be used often. The entries _will not_ change during runtime, so it's a good idea
|
||||||
|
to make the lookups `static`.
|
||||||
{{</ hint >}}
|
{{</ hint >}}
|
||||||
|
|
||||||
## Using the config
|
## Using the config
|
||||||
|
|
Loading…
Reference in a new issue