22
22
23
23
#include "qemu/osdep.h"
24
24
#include "../utility/p404scriptable.h"
25
+ #include "../utility/p404_keyclient.h"
25
26
#include "../utility/macros.h"
26
27
#include "../utility/ScriptHost_C.h"
27
28
#include "../utility/ArgHelper.h"
@@ -45,11 +46,11 @@ struct IRState {
45
46
};
46
47
47
48
enum {
48
- ACT_SET ,
49
+ ACT_SET ,
49
50
ACT_TOGGLE ,
50
51
};
51
52
52
- OBJECT_DEFINE_TYPE_SIMPLE_WITH_INTERFACES (IRState , irsensor , IRSENSOR , SYS_BUS_DEVICE , {TYPE_P404_SCRIPTABLE }, {NULL })
53
+ OBJECT_DEFINE_TYPE_SIMPLE_WITH_INTERFACES (IRState , irsensor , IRSENSOR , SYS_BUS_DEVICE , {TYPE_P404_SCRIPTABLE }, {TYPE_P404_KEYCLIENT }, { NULL })
53
54
54
55
55
56
static void irsensor_finalize (Object * obj )
@@ -86,6 +87,17 @@ static int irsensor_process_action(P404ScriptIF *obj, unsigned int action, scrip
86
87
return ScriptLS_Finished ;
87
88
}
88
89
90
+ static void irsensor_input_handle_key (P404KeyIF * opaque , Key keycode )
91
+ {
92
+ IRState * s = IRSENSOR (opaque );
93
+ if (keycode == 'f' )
94
+ {
95
+ s -> state ^=1 ;
96
+ printf ("IR sensor toggled - new level: %u\n" ,s -> state );
97
+ irsensor_update (s );
98
+ }
99
+ }
100
+
89
101
static void irsensor_init (Object * obj )
90
102
{
91
103
IRState * s = IRSENSOR (obj );
@@ -98,6 +110,10 @@ static void irsensor_init(Object *obj)
98
110
script_register_action (s -> handle , "Toggle" , "Toggles IR sensor state" , ACT_TOGGLE );
99
111
100
112
scripthost_register_scriptable (s -> handle );
113
+
114
+ p404_key_handle pKey = p404_new_keyhandler (P404_KEYCLIENT (obj ));
115
+ p404_register_keyhandler (pKey , 'f' ,"Toggles IR sensor state" );
116
+
101
117
}
102
118
103
119
static const VMStateDescription vmstate_irsensor = {
@@ -117,4 +133,7 @@ static void irsensor_class_init(ObjectClass *oc, void *data)
117
133
dc -> vmsd = & vmstate_irsensor ;
118
134
P404ScriptIFClass * sc = P404_SCRIPTABLE_CLASS (oc );
119
135
sc -> ScriptHandler = irsensor_process_action ;
136
+
137
+ P404KeyIFClass * kc = P404_KEYCLIENT_CLASS (oc );
138
+ kc -> KeyHandler = irsensor_input_handle_key ;
120
139
}
0 commit comments