~robertcarr/mir/more-event-pretty-printing

« back to all changes in this revision

Viewing changes to src/client/logging/input_receiver_report.cpp

  • Committer: Robert Carr
  • Date: 2013-11-12 19:37:38 UTC
  • Revision ID: robert.carr@canonical.com-20131112193738-wzrmtgwxiydldh2v
Restore closing } to serialized event

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
namespace
42
42
{
43
43
 
44
 
static std::string format_key_action(MirKeyAction action)
 
44
std::string format_key_action(MirKeyAction action)
45
45
{
46
 
    std::stringstream ss;
47
 
 
48
46
    static std::string key_action_strings[] = { "mir_key_action_down", "mir_key_action_up",
49
47
                                                "mir_key_action_multiple" };
50
 
    ss << key_action_strings[action];
51
 
    
52
 
    return ss.str();
53
 
}
54
 
 
55
 
static std::string format_key_flags(MirKeyFlag flags)
56
 
{
57
 
    std::stringstream ss;
58
 
 
59
 
    static std::tuple<MirKeyFlag, char const*> key_flag_strings[] = {
60
 
        std::make_tuple(mir_key_flag_woke_here, "mir_key_flag_woke_here"),
61
 
        std::make_tuple(mir_key_flag_soft_keyboard, "mir_key_flag_soft_keyboard"),
62
 
        std::make_tuple(mir_key_flag_keep_touch_mode, "mir_key_flag_keep_touch_mode"),
63
 
        std::make_tuple(mir_key_flag_from_system, "mir_key_flag_from_system"),
64
 
        std::make_tuple(mir_key_flag_editor_action, "mir_key_flag_editor_action"),
65
 
        std::make_tuple(mir_key_flag_canceled, "mir_key_flag_canceled"),
66
 
        std::make_tuple(mir_key_flag_virtual_hard_key, "mir_key_flag_virtual_hard_key"),
67
 
        std::make_tuple(mir_key_flag_long_press, "mir_key_flag_long_press"),
68
 
        std::make_tuple(mir_key_flag_canceled_long_press, "mir_key_flag_canceled_long_press"),
69
 
        std::make_tuple(mir_key_flag_tracking, "mir_key_flag_tracking"),
70
 
        std::make_tuple(mir_key_flag_fallback, "mir_key_flag_fallback")
71
 
    };
72
 
    for (unsigned int i = 0; i < sizeof(key_flag_strings)/sizeof(*key_flag_strings); i++) {
73
 
        auto flag = std::get<0>(key_flag_strings[i]);
74
 
        auto const& str = std::get<1>(key_flag_strings[i]);
75
 
        if (flags & flag)
76
 
            ss << str << " ";
77
 
    }
78
 
    return ss.str();
79
 
}
80
 
 
81
 
static std::string format_modifiers (unsigned int modifiers)
82
 
{
83
 
    std::stringstream ss;
84
 
 
85
 
    static std::tuple<MirKeyModifier, char const*> key_modifier_strings[] = {
86
 
        std::make_tuple(mir_key_modifier_none, "mir_key_modifier_none"),
87
 
        std::make_tuple(mir_key_modifier_alt, "mir_key_modifier_alt"),
88
 
        std::make_tuple(mir_key_modifier_alt_left, "mir_key_modifier_alt_left"),
89
 
        std::make_tuple(mir_key_modifier_alt_right, "mir_key_modifier_alt_right"),
90
 
        std::make_tuple(mir_key_modifier_shift, "mir_key_modifier_shift"),
91
 
        std::make_tuple(mir_key_modifier_shift_left, "mir_key_modifier_shift_left"),
92
 
        std::make_tuple(mir_key_modifier_shift_right, "mir_key_modifier_shift_right"),
93
 
        std::make_tuple(mir_key_modifier_sym, "mir_key_modifier_sym"),
94
 
        std::make_tuple(mir_key_modifier_function, "mir_key_modifier_function"),
95
 
        std::make_tuple(mir_key_modifier_ctrl, "mir_key_modifier_ctrl"),
96
 
        std::make_tuple(mir_key_modifier_ctrl_left, "mir_key_modifier_ctrl_left"),
97
 
        std::make_tuple(mir_key_modifier_ctrl_right, "mir_key_modifier_ctrl_right"),
98
 
        std::make_tuple(mir_key_modifier_meta, "mir_key_modifier_meta"),
99
 
        std::make_tuple(mir_key_modifier_meta_left, "mir_key_modifier_meta_left"),
100
 
        std::make_tuple(mir_key_modifier_meta_right, "mir_key_modifier_meta_right"),
101
 
        std::make_tuple(mir_key_modifier_caps_lock, "mir_key_modifier_caps_lock"),
102
 
        std::make_tuple(mir_key_modifier_num_lock, "mir_key_modifier_num_lock"),
103
 
        std::make_tuple(mir_key_modifier_scroll_lock, "mir_key_modifier_scroll_lock")
104
 
    };
105
 
    for (unsigned int i = 0; i < sizeof(key_modifier_strings)/sizeof(*key_modifier_strings); i++) {
106
 
        auto modifier = std::get<0>(key_modifier_strings[i]);
107
 
        auto str = std::get<1>(key_modifier_strings[i]);
108
 
        if (modifiers & modifier)
109
 
            ss << str << " ";
110
 
    }
111
 
    return ss.str();
112
 
}
113
 
 
114
 
static void format_key_event(std::stringstream &ss, MirKeyEvent const& ev)
 
48
    return key_action_strings[action];
 
49
}
 
50
 
 
51
std::string format_key_flags(MirKeyFlag flags)
 
52
{
 
53
    std::stringstream ss;
 
54
 
 
55
    static struct { MirKeyFlag flag; char const* str; } const key_flag_strings[] = {
 
56
        { mir_key_flag_woke_here, "mir_key_flag_woke_here" },
 
57
        { mir_key_flag_soft_keyboard, "mir_key_flag_soft_keyboard" },
 
58
        { mir_key_flag_keep_touch_mode, "mir_key_flag_keep_touch_mode" },
 
59
        { mir_key_flag_from_system, "mir_key_flag_from_system" },
 
60
        { mir_key_flag_editor_action, "mir_key_flag_editor_action" },
 
61
        { mir_key_flag_canceled, "mir_key_flag_canceled" },
 
62
        { mir_key_flag_virtual_hard_key, "mir_key_flag_virtual_hard_key" },
 
63
        { mir_key_flag_long_press, "mir_key_flag_long_press" },
 
64
        { mir_key_flag_canceled_long_press, "mir_key_flag_canceled_long_press" },
 
65
        { mir_key_flag_tracking, "mir_key_flag_tracking" },
 
66
        { mir_key_flag_fallback, "mir_key_flag_fallback" }
 
67
    };
 
68
    for (auto const& entry : key_flag_strings)
 
69
    {
 
70
        if (flags & entry.flag)
 
71
            ss << entry.str << " ";
 
72
    }
 
73
    return ss.str();
 
74
}
 
75
 
 
76
std::string format_modifiers (unsigned int modifiers)
 
77
{
 
78
    std::stringstream ss;
 
79
 
 
80
    static struct { MirKeyModifier modifier; char const* str; } const key_modifier_strings[] = {
 
81
        { mir_key_modifier_none, "mir_key_modifier_none" },
 
82
        { mir_key_modifier_alt, "mir_key_modifier_alt" },
 
83
        { mir_key_modifier_alt_left, "mir_key_modifier_alt_left" },
 
84
        { mir_key_modifier_alt_right, "mir_key_modifier_alt_right" },
 
85
        { mir_key_modifier_shift, "mir_key_modifier_shift" },
 
86
        { mir_key_modifier_shift_left, "mir_key_modifier_shift_left" },
 
87
        { mir_key_modifier_shift_right, "mir_key_modifier_shift_right" },
 
88
        { mir_key_modifier_sym, "mir_key_modifier_sym" },
 
89
        { mir_key_modifier_function, "mir_key_modifier_function" },
 
90
        { mir_key_modifier_ctrl, "mir_key_modifier_ctrl" },
 
91
        { mir_key_modifier_ctrl_left, "mir_key_modifier_ctrl_left" },
 
92
        { mir_key_modifier_ctrl_right, "mir_key_modifier_ctrl_right" },
 
93
        { mir_key_modifier_meta, "mir_key_modifier_meta" },
 
94
        { mir_key_modifier_meta_left, "mir_key_modifier_meta_left" },
 
95
        { mir_key_modifier_meta_right, "mir_key_modifier_meta_right" },
 
96
        { mir_key_modifier_caps_lock, "mir_key_modifier_caps_lock" },
 
97
        { mir_key_modifier_num_lock, "mir_key_modifier_num_lock" },
 
98
        { mir_key_modifier_scroll_lock, "mir_key_modifier_scroll_lock" }
 
99
    };
 
100
    for (auto const& entry : key_modifier_strings)
 
101
    {
 
102
        if (modifiers & entry.modifier)
 
103
            ss << entry.str << " ";
 
104
    }
 
105
    return ss.str();
 
106
}
 
107
 
 
108
void format_key_event(std::stringstream &ss, MirKeyEvent const& ev)
115
109
{
116
110
    ss << "MirKeyEvent {" << std::endl;
117
111
    ss << "  device_id: " << ev.device_id << std::endl;
128
122
    ss << "}";
129
123
}
130
124
 
131
 
static std::string format_motion_action(int action)
 
125
std::string format_motion_action(int action)
132
126
{
133
127
    std::stringstream ss;
134
128
 
135
 
    static std::string motion_action_strings[] = {
 
129
    static std::string const motion_action_strings[] = {
136
130
        "mir_motion_action_down",
137
131
        "mir_motion_action_up",
138
132
        "mir_motion_action_move",
151
145
    return ss.str();
152
146
}
153
147
 
154
 
static std::string format_motion_flags(MirMotionFlag flags)
 
148
std::string format_motion_flags(MirMotionFlag flags)
155
149
{
156
150
    std::stringstream ss;
157
151
 
161
155
    return ss.str();
162
156
}
163
157
 
164
 
static std::string format_button_state(MirMotionButton button_state)
 
158
std::string format_button_state(MirMotionButton button_state)
165
159
{
166
160
    std::stringstream ss;
167
161
 
168
 
    static std::tuple<MirMotionButton, char const*> button_strings[] = {
169
 
        std::make_tuple(mir_motion_button_primary, "mir_motion_button_primary"),
170
 
        std::make_tuple(mir_motion_button_secondary, "mir_motion_button_secondary"),
171
 
        std::make_tuple(mir_motion_button_tertiary, "mir_motion_button_tertiary"),
172
 
        std::make_tuple(mir_motion_button_back, "mir_motion_button_back"),
173
 
        std::make_tuple(mir_motion_button_forward, "mir_motion_button_forward")
 
162
    static struct { MirMotionButton button; char const* str; } const button_strings[] = {
 
163
        { mir_motion_button_primary, "mir_motion_button_primary" },
 
164
        { mir_motion_button_secondary, "mir_motion_button_secondary" },
 
165
        { mir_motion_button_tertiary, "mir_motion_button_tertiary" },
 
166
        { mir_motion_button_back, "mir_motion_button_back" },
 
167
        { mir_motion_button_forward, "mir_motion_button_forward" }
174
168
    };
175
 
    for (unsigned int i = 0; i < sizeof(button_strings)/sizeof(*button_strings); i++)
 
169
    for (auto const& entry : button_strings)
176
170
    {
177
 
        auto button = std::get<0>(button_strings[i]);
178
 
        auto str = std::get<1>(button_strings[i]);
179
 
        if (button_state & button)
180
 
            ss << str << " ";
 
171
        if (button_state & entry.button)
 
172
            ss << entry.str << " ";
181
173
    }
182
174
    return ss.str();
183
175
}
184
176
 
185
 
static void format_motion_event(std::stringstream &ss, MirMotionEvent const& ev)
 
177
void format_motion_event(std::stringstream &ss, MirMotionEvent const& ev)
186
178
{
187
179
    ss << "MirMotionEvent{" << std::endl;
188
180
    ss << "  type: motion" << std::endl;
215
207
        ss << "    hscroll: " << ev.pointer_coordinates[i].hscroll << std::endl;
216
208
        ss << "  }" << std::endl;
217
209
    }
 
210
    ss << "}" << std::endl;
218
211
    
219
212
}
220
 
static void format_event(std::stringstream &ss, MirEvent const& ev)
 
213
 
 
214
void format_event(std::stringstream &ss, MirEvent const& ev)
221
215
{
222
216
    switch (ev.type)
223
217
    {