1010#include " Common/Compiler.h"
1111#include " Common/Cpp/AbstractLogger.h"
1212#include " Common/Cpp/Time.h"
13+ #include " Controllers/KeyboardInput/KeyboardEventHandler.h"
1314#include " Common/Cpp/CancellableScope.h"
1415
1516class QKeyEvent ;
@@ -19,6 +20,7 @@ namespace PokemonAutomation{
1920class RecursiveThrottler ;
2021enum class ControllerType ;
2122enum class ControllerPerformanceClass ;
23+ enum class ControllerClass ;
2224
2325
2426
@@ -64,6 +66,7 @@ class AbstractController{
6466
6567 virtual const char * name () = 0;
6668 virtual ControllerType controller_type () const = 0;
69+ virtual ControllerClass controller_class () const = 0;
6770 virtual ControllerPerformanceClass performance_class () const = 0;
6871
6972 // If the controller is polled at a fixed interval, this is that interval.
@@ -203,6 +206,9 @@ class AbstractController{
203206 virtual void keyboard_release_all (){}
204207 virtual void keyboard_press (const QKeyEvent& event){}
205208 virtual void keyboard_release (const QKeyEvent& event){}
209+
210+ virtual void add_keyboard_listener (KeyboardEventHandler::KeyboardListener& keyboard_listener){};
211+ virtual void remove_keyboard_listener (KeyboardEventHandler::KeyboardListener& keyboard_listener){};
206212};
207213
208214
@@ -294,6 +300,7 @@ class ControllerContext final : public CancellableScope{
294300};
295301
296302
303+ using AbstractControllerContext = ControllerContext<AbstractController>;
297304
298305using AbstractControllerContext = ControllerContext<AbstractController>;
299306
0 commit comments