42 lines
1.7 KiB
Markdown
Raw Permalink Normal View History

2025-03-07 08:03:18 +01:00
### Custom keyboard shortcut interface
Package `input_adapter` consists of `ActionManager` and `ComplexActionInterface` which together allow to recognise more keyboard events than usual krita action does.
While usual actions can only recognise key press, implementing `ComplexActionInterface` lets you override methods performed on:
- key press
- short key release
- long key release
- every key release
Each action needs to have public `name: str` attribute which is the same, as the one used in .action file, as well as `short_vs_long_press_time: float` which determines how many seconds need to elapse to consider that a key press was long.
Use `ActionManager` instance to bind objects of those custom actions to krita during `CreateActions` phase:
```python
"""
Print whether action key was released before of after
0.2 seconds from being pressed.
"""
from krita import Krita
from input_adapter import ActionManager, ComplexActionInterface
class CustomAction(ComplexActionInterface):
def __init__(self, name: str, press_time: float = 0.2):
self.name = name
self.short_vs_long_press_time = press_time
def on_key_press(self): print("key was pressed")
def on_short_key_release(self): print("key released before than 0.2s")
def on_long_key_release(self): print("key released later than after 0.2s")
def on_every_key_release(self): pass
class MyExtension(Extension):
def setup(self) -> None: pass
def createActions(self, window) -> None:
action = CustomAction(name="Custom action name")
self.manager = ActionManager(window)
self.manager.bind_action(action)
Krita.instance().addExtension(MyExtension(Krita.instance()))
```