Mir

Merge lp:~mir-team/mir/unify-keyboard-actions into lp:mir

Proposed by Robert Carr
Status: Merged
Approved by: Robert Carr
Approved revision: no longer in the source branch.
Merged at revision: 2568
Proposed branch: lp:~mir-team/mir/unify-keyboard-actions
Merge into: lp:mir
Prerequisite: lp:~mir-team/mir/unify-event-modifiers
Diff against target: 589 lines (+93/-148)
20 files modified
src/client/events/event_builders.cpp (+1/-20)
src/client/input/android/android_input_lexicon.cpp (+1/-2)
src/client/input/android/event_conversion_helpers.cpp (+32/-0)
src/client/input/input_event.cpp (+2/-16)
src/client/input/xkb_mapper.cpp (+4/-7)
src/client/symbols.map (+2/-0)
src/include/common/mir/events/event_private.h (+1/-8)
src/include/common/mir/input/android/event_conversion_helpers.h (+9/-0)
src/server/input/android/android_input_dispatcher.cpp (+2/-1)
src/server/input/android/input_sender.cpp (+4/-2)
src/server/input/android/input_translator.cpp (+1/-9)
src/server/input/vt_filter.cpp (+1/-1)
tests/acceptance-tests/throwback/test_client_input.cpp (+1/-1)
tests/unit-tests/client/input/test_xkb_mapper.cpp (+17/-38)
tests/unit-tests/input/android/test_android_input_dispatcher.cpp (+2/-3)
tests/unit-tests/input/android/test_android_input_lexicon.cpp (+3/-4)
tests/unit-tests/input/android/test_android_input_sender.cpp (+1/-1)
tests/unit-tests/input/android/test_event_filter_input_dispatcher_policy.cpp (+2/-0)
tests/unit-tests/input/android/test_input_translator.cpp (+5/-21)
tests/unit-tests/input/test_input_event.cpp (+2/-14)
To merge this branch: bzr merge lp:~mir-team/mir/unify-keyboard-actions
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Approve
Andreas Pokorny (community) Approve
Alan Griffiths Approve
Alexandros Frantzis (community) Approve
Kevin DuBois (community) Approve
Review via email: mp+258288@code.launchpad.net

Commit message

Unify keyboard action enums.

The removed mir_key_action_multiple corresponds to a kind of "textual" event which we do not support (as input methods go via another channel).

repeat_count is unified in to mir_keyboard_action_repeat

Description of the change

Unify keyboard action enums.

The removed mir_key_action_multiple corresponds to a kind of "textual" event which we do not support (as input methods go via another channel).

repeat_count is unified in to mir_keyboard_action_repeat

This branch is part of the event cleaning pipeline:

Pluck-low-hanging-event-fruit: Remove unused event members.
Unify-event-modifiers: Consolidate modifier enums (https://code.launchpad.net/~mir-team/mir/unify-event-modifiers/+merge/258218)
Unify-keyboard-actions: Consolidate keyboard action enums and key repeat representation (https://code.launchpad.net/~mir-team/mir/unify-keyboard-actions/+merge/258288)
Remaining-nsec-removal: Remove usage of nsecs_t in event_private.h https://code.launchpad.net/~mir-team/mir/remaining-nsec-removal/+merge/258292
unify-pointer-button: Consolidate pointer button enums
https://code.launchpad.net/~mir-team/mir/unify-pointer-button

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Kevin DuBois (kdub) wrote :

lgtm

review: Approve
Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

Looks good.

+ event.key.action == mir_keyboard_action_down)

It would be nice to change (in a future MP) event.key to event.keyboard to better match the new names.

review: Approve
Revision history for this message
Robert Carr (robertcarr) wrote :

Fixed some conflicts and re taed

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

114 MirKeyboardAction mir_keyboard_event_action(MirKeyboardEvent const* kev)
115 {
116 auto const& old_kev = old_kev_from_new(kev);
117-
118- switch (old_kev.action)
119- {
120- case mir_key_action_down:
121- if (old_kev.repeat_count != 0)
122- return mir_keyboard_action_repeat;
123- else
124- return mir_keyboard_action_down;
125- case mir_key_action_up:
126- return mir_keyboard_action_up;
127- default:
128- // TODO:? This means we got key_action_multiple which I dont think is
129- // actually emitted yet (and never will be as in the future it would fall under text
130- // event in the new model).
131- return mir_keyboard_action_down;
132- }
133+
134+ return old_kev.action;
135 }

Could be a one liner:

    return old_kev_from_new(kev).action;

Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

218+int32_t android_keyboard_action_from_mir(MirKeyboardAction action, int32_t& repeat_count_out);

The name doesn't make it obvious that we have a return value and an out parameter - which, BTW is in the wrong location:

 http://unity.ubuntu.com/mir/cppguide/index.html?showone=Function_Parameter_Ordering#Function_Parameter_Ordering

review: Needs Fixing
Revision history for this message
Robert Carr (robertcarr) wrote :

>> }
>> Could be a one liner:
>> return old_kev_from_new(kev).action;

Not quite. mir_key_action_multiple does not correspond to mir_keyboard_action_repeat. mir_key_action_multiple is an unused feature from android relating to delivering multiple distinct keys in one event. mir_keyboard_action_repeat corresponds to AKEY_EVENT_ACTION_DOWN and repeatCount > 0.

Revision history for this message
Robert Carr (robertcarr) wrote :

>. The name doesn't make it obvious that we have a return value and an out parameter - which, BTW >> is in the wrong location:

Fixed parameter location.

I don't see how I could make it more obvious that there is an out parameter without repeating myself 3 times in the same line (non const reference, _out postfix...) I've added a comment explaining why MirKeyboardAction needs to be converted to 2 android values though.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

497+ ev.initialize(0, 0, 0, 0, 0, 0, 0, 0, std::chrono::nanoseconds(0), std::chrono::nanoseconds(0));

Yuck!

Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

OK

review: Approve
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

> >. The name doesn't make it obvious that we have a return value and an out
> parameter - which, BTW >> is in the wrong location:
>
> Fixed parameter location.
>
> I don't see how I could make it more obvious that there is an out parameter
> without repeating myself 3 times in the same line (non const reference, _out
> postfix...) I've added a comment explaining why MirKeyboardAction needs to be
> converted to 2 android values though.

Well you could return a struct { action, repeat_count }; or a tuple<>

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Andreas Pokorny (andreas-pokorny) wrote :

+ 489 might not be necessary?

+1 for tuple

lgtm

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/client/events/event_builders.cpp'
--- src/client/events/event_builders.cpp 2015-05-07 15:00:30 +0000
+++ src/client/events/event_builders.cpp 2015-05-12 14:00:09 +0000
@@ -92,23 +92,6 @@
92 return make_event_uptr(e);92 return make_event_uptr(e);
93}93}
9494
95namespace
96{
97MirKeyAction old_action_from_new(MirKeyboardAction action)
98{
99 switch (action)
100 {
101 case mir_keyboard_action_repeat:
102 case mir_keyboard_action_up:
103 return mir_key_action_up;
104 case mir_keyboard_action_down:
105 return mir_key_action_down;
106 default:
107 BOOST_THROW_EXCEPTION(std::logic_error("Invalid key action"));
108 }
109}
110}
111
112mir::EventUPtr mev::make_event(MirInputDeviceId device_id, int64_t timestamp,95mir::EventUPtr mev::make_event(MirInputDeviceId device_id, int64_t timestamp,
113 MirKeyboardAction action, xkb_keysym_t key_code,96 MirKeyboardAction action, xkb_keysym_t key_code,
114 int scan_code, MirInputEventModifiers modifiers)97 int scan_code, MirInputEventModifiers modifiers)
@@ -120,9 +103,7 @@
120 auto& kev = e->key;103 auto& kev = e->key;
121 kev.device_id = device_id;104 kev.device_id = device_id;
122 kev.event_time = timestamp;105 kev.event_time = timestamp;
123 kev.action = old_action_from_new(action);106 kev.action = action;
124 if (action == mir_keyboard_action_repeat)
125 kev.repeat_count = 1;
126 kev.key_code = key_code;107 kev.key_code = key_code;
127 kev.scan_code = scan_code;108 kev.scan_code = scan_code;
128 kev.modifiers = modifiers;109 kev.modifiers = modifiers;
129110
=== modified file 'src/client/input/android/android_input_lexicon.cpp'
--- src/client/input/android/android_input_lexicon.cpp 2015-05-05 00:15:05 +0000
+++ src/client/input/android/android_input_lexicon.cpp 2015-05-12 14:00:09 +0000
@@ -35,11 +35,10 @@
35 mir_event.type = mir_event_type_key;35 mir_event.type = mir_event_type_key;
36 mir_event.key.device_id = android_event->getDeviceId();36 mir_event.key.device_id = android_event->getDeviceId();
37 mir_event.key.source_id = android_event->getSource();37 mir_event.key.source_id = android_event->getSource();
38 mir_event.key.action = static_cast<MirKeyAction>(kev->getAction());38 mir_event.key.action = mia::mir_keyboard_action_from_android(kev->getAction(), kev->getRepeatCount());
39 mir_event.key.modifiers = mia::mir_modifiers_from_android(kev->getMetaState());39 mir_event.key.modifiers = mia::mir_modifiers_from_android(kev->getMetaState());
40 mir_event.key.key_code = kev->getKeyCode();40 mir_event.key.key_code = kev->getKeyCode();
41 mir_event.key.scan_code = kev->getScanCode();41 mir_event.key.scan_code = kev->getScanCode();
42 mir_event.key.repeat_count = kev->getRepeatCount();
43 mir_event.key.event_time = kev->getEventTime().count();42 mir_event.key.event_time = kev->getEventTime().count();
44 break;43 break;
45 }44 }
4645
=== modified file 'src/client/input/android/event_conversion_helpers.cpp'
--- src/client/input/android/event_conversion_helpers.cpp 2015-05-05 00:15:05 +0000
+++ src/client/input/android/event_conversion_helpers.cpp 2015-05-12 14:00:09 +0000
@@ -68,3 +68,35 @@
68 if (mir_modifiers & mir_input_event_modifier_scroll_lock) ret |= AMETA_SCROLL_LOCK_ON;68 if (mir_modifiers & mir_input_event_modifier_scroll_lock) ret |= AMETA_SCROLL_LOCK_ON;
69 return ret;69 return ret;
70}70}
71
72MirKeyboardAction mia::mir_keyboard_action_from_android(int32_t android_action, int32_t repeat_count)
73{
74 if (repeat_count > 0)
75 return mir_keyboard_action_repeat;
76
77 switch (android_action)
78 {
79 case AKEY_EVENT_ACTION_DOWN:
80 case AKEY_EVENT_ACTION_MULTIPLE:
81 return mir_keyboard_action_down;
82 case AKEY_EVENT_ACTION_UP:
83 return mir_keyboard_action_up;
84 default:
85 return mir_keyboard_action_down;
86 }
87}
88
89int32_t mia::android_keyboard_action_from_mir(int32_t& repeat_count_out, MirKeyboardAction action)
90{
91 repeat_count_out = 0;
92 switch (action)
93 {
94 case mir_keyboard_action_repeat:
95 repeat_count_out = 1;
96 case mir_keyboard_action_down:
97 return AKEY_EVENT_ACTION_DOWN;
98 case mir_keyboard_action_up:
99 default:
100 return AKEY_EVENT_ACTION_UP;
101 }
102}
71103
=== modified file 'src/client/input/input_event.cpp'
--- src/client/input/input_event.cpp 2015-05-05 00:15:05 +0000
+++ src/client/input/input_event.cpp 2015-05-12 14:00:09 +0000
@@ -209,22 +209,8 @@
209MirKeyboardAction mir_keyboard_event_action(MirKeyboardEvent const* kev)209MirKeyboardAction mir_keyboard_event_action(MirKeyboardEvent const* kev)
210{210{
211 auto const& old_kev = old_kev_from_new(kev);211 auto const& old_kev = old_kev_from_new(kev);
212 212
213 switch (old_kev.action)213 return old_kev.action;
214 {
215 case mir_key_action_down:
216 if (old_kev.repeat_count != 0)
217 return mir_keyboard_action_repeat;
218 else
219 return mir_keyboard_action_down;
220 case mir_key_action_up:
221 return mir_keyboard_action_up;
222 default:
223 // TODO:? This means we got key_action_multiple which I dont think is
224 // actually emitted yet (and never will be as in the future it would fall under text
225 // event in the new model).
226 return mir_keyboard_action_down;
227 }
228}214}
229215
230xkb_keysym_t mir_keyboard_event_key_code(MirKeyboardEvent const* kev)216xkb_keysym_t mir_keyboard_event_key_code(MirKeyboardEvent const* kev)
231217
=== modified file 'src/client/input/xkb_mapper.cpp'
--- src/client/input/xkb_mapper.cpp 2015-04-01 19:39:19 +0000
+++ src/client/input/xkb_mapper.cpp 2015-05-12 14:00:09 +0000
@@ -90,17 +90,14 @@
90 90
91 auto &key_ev = ev.key;91 auto &key_ev = ev.key;
92 92
93 xkb_key_direction direction;93 xkb_key_direction direction = XKB_KEY_DOWN;
9494
95 bool update_state = true;95 bool update_state = true;
96 if (key_ev.action == mir_key_action_up)96 if (key_ev.action == mir_keyboard_action_up)
97 direction = XKB_KEY_UP;97 direction = XKB_KEY_UP;
98 else if (key_ev.action == mir_key_action_down)98 else if (key_ev.action == mir_keyboard_action_down)
99 direction = XKB_KEY_DOWN;99 direction = XKB_KEY_DOWN;
100 else // mir_key_action_multiple does not correspond to a physical keypress100 else if (key_ev.action == mir_keyboard_action_repeat)
101 update_state = false;
102
103 if (key_ev.repeat_count > 0)
104 update_state = false;101 update_state = false;
105102
106 uint32_t xkb_scan_code = to_xkb_scan_code(key_ev.scan_code);103 uint32_t xkb_scan_code = to_xkb_scan_code(key_ev.scan_code);
107104
=== modified file 'src/client/symbols.map'
--- src/client/symbols.map 2015-05-07 07:20:05 +0000
+++ src/client/symbols.map 2015-05-12 14:00:09 +0000
@@ -206,6 +206,8 @@
206 mir::input::android::Lexicon::translate*;206 mir::input::android::Lexicon::translate*;
207 mir::input::android::android_modifiers_from_mir*;207 mir::input::android::android_modifiers_from_mir*;
208 mir::input::android::mir_modifiers_from_android*;208 mir::input::android::mir_modifiers_from_android*;
209 mir::input::android::mir_keyboard_action_from_android*;
210 mir::input::android::android_keyboard_action_from_mir*;
209 mir::client::DefaultConnectionConfiguration::DefaultConnectionConfiguration*;211 mir::client::DefaultConnectionConfiguration::DefaultConnectionConfiguration*;
210 mir::client::DefaultConnectionConfiguration::the_surface_map*;212 mir::client::DefaultConnectionConfiguration::the_surface_map*;
211 mir::client::DefaultConnectionConfiguration::the_rpc_channel*;213 mir::client::DefaultConnectionConfiguration::the_rpc_channel*;
212214
=== modified file 'src/include/common/mir/events/event_private.h'
--- src/include/common/mir/events/event_private.h 2015-05-07 07:20:05 +0000
+++ src/include/common/mir/events/event_private.h 2015-05-12 14:00:09 +0000
@@ -47,12 +47,6 @@
47typedef int64_t nsecs_t;47typedef int64_t nsecs_t;
4848
49typedef enum {49typedef enum {
50 mir_key_action_down = 0,
51 mir_key_action_up = 1,
52 mir_key_action_multiple = 2
53} MirKeyAction;
54
55typedef enum {
56 mir_motion_action_down = 0,50 mir_motion_action_down = 0,
57 mir_motion_action_up = 1,51 mir_motion_action_up = 1,
58 mir_motion_action_move = 2,52 mir_motion_action_move = 2,
@@ -91,12 +85,11 @@
9185
92 int32_t device_id;86 int32_t device_id;
93 int32_t source_id;87 int32_t source_id;
94 MirKeyAction action;88 MirKeyboardAction action;
95 MirInputEventModifiers modifiers;89 MirInputEventModifiers modifiers;
9690
97 int32_t key_code;91 int32_t key_code;
98 int32_t scan_code;92 int32_t scan_code;
99 int32_t repeat_count;
10093
101 nsecs_t event_time;94 nsecs_t event_time;
102} MirKeyEvent;95} MirKeyEvent;
10396
=== modified file 'src/include/common/mir/input/android/event_conversion_helpers.h'
--- src/include/common/mir/input/android/event_conversion_helpers.h 2015-05-05 00:15:05 +0000
+++ src/include/common/mir/input/android/event_conversion_helpers.h 2015-05-12 14:00:09 +0000
@@ -29,6 +29,15 @@
29{29{
30MirInputEventModifiers mir_modifiers_from_android(int32_t android_modifiers);30MirInputEventModifiers mir_modifiers_from_android(int32_t android_modifiers);
31int32_t android_modifiers_from_mir(MirInputEventModifiers modifiers);31int32_t android_modifiers_from_mir(MirInputEventModifiers modifiers);
32
33MirKeyboardAction mir_keyboard_action_from_android(int32_t android_action, int32_t repeat_count);
34
35// Mir differentiates between mir_keyboard_action_down
36// and mir_keyboard_action_repeat whereas android encodes
37// keyrepeats as AKEY_EVENT_ACTION_DOWN and a repeatCount of > 0
38// Thus when converting from MirKeyboardAction to an android
39// action we must also fetch a repeat count for the android event.
40int32_t android_keyboard_action_from_mir(int32_t& repeat_count_out, MirKeyboardAction action);
32}41}
33}42}
34}43}
3544
=== modified file 'src/server/input/android/android_input_dispatcher.cpp'
--- src/server/input/android/android_input_dispatcher.cpp 2015-05-07 07:20:05 +0000
+++ src/server/input/android/android_input_dispatcher.cpp 2015-05-12 14:00:09 +0000
@@ -55,12 +55,13 @@
55 {55 {
56 case mir_event_type_key:56 case mir_event_type_key:
57 {57 {
58 int32_t ignored_repeat_count = 0;
58 droidinput::NotifyKeyArgs const notify_key_args(59 droidinput::NotifyKeyArgs const notify_key_args(
59 std::chrono::nanoseconds(event.key.event_time),60 std::chrono::nanoseconds(event.key.event_time),
60 event.key.device_id,61 event.key.device_id,
61 event.key.source_id,62 event.key.source_id,
62 policy_flags,63 policy_flags,
63 event.key.action,64 mia::android_keyboard_action_from_mir(ignored_repeat_count, event.key.action),
64 0, /* flags */65 0, /* flags */
65 event.key.key_code,66 event.key.key_code,
66 event.key.scan_code,67 event.key.scan_code,
6768
=== modified file 'src/server/input/android/input_sender.cpp'
--- src/server/input/android/input_sender.cpp 2015-05-05 00:15:05 +0000
+++ src/server/input/android/input_sender.cpp 2015-05-12 14:00:09 +0000
@@ -237,16 +237,18 @@
237237
238droidinput::status_t mia::InputSender::ActiveTransfer::send_key_event(uint32_t seq, MirKeyEvent const& event)238droidinput::status_t mia::InputSender::ActiveTransfer::send_key_event(uint32_t seq, MirKeyEvent const& event)
239{239{
240 int32_t repeat_count = 0;
241 auto android_action = mia::android_keyboard_action_from_mir(repeat_count, event.action);
240 return publisher.publishKeyEvent(242 return publisher.publishKeyEvent(
241 seq,243 seq,
242 event.device_id,244 event.device_id,
243 event.source_id,245 event.source_id,
244 event.action,246 android_action,
245 0, /* Flags */247 0, /* Flags */
246 event.key_code,248 event.key_code,
247 event.scan_code,249 event.scan_code,
248 mia::android_modifiers_from_mir(event.modifiers),250 mia::android_modifiers_from_mir(event.modifiers),
249 event.repeat_count,251 repeat_count,
250 std::chrono::nanoseconds(event.event_time),252 std::chrono::nanoseconds(event.event_time),
251 std::chrono::nanoseconds(event.event_time)253 std::chrono::nanoseconds(event.event_time)
252 );254 );
253255
=== modified file 'src/server/input/android/input_translator.cpp'
--- src/server/input/android/input_translator.cpp 2015-05-07 07:20:05 +0000
+++ src/server/input/android/input_translator.cpp 2015-05-12 14:00:09 +0000
@@ -29,10 +29,6 @@
2929
30namespace30namespace
31{31{
32bool valid_key_event(MirKeyEvent const& key)
33{
34 return key.action == mir_key_action_up || key.action == mir_key_action_down;
35}
36inline int32_t get_index_from_motion_action(int action)32inline int32_t get_index_from_motion_action(int action)
37{33{
38 // FIXME: https://bugs.launchpad.net/mir/+bug/131169934 // FIXME: https://bugs.launchpad.net/mir/+bug/1311699
@@ -131,16 +127,12 @@
131 mir_event.type = mir_event_type_key;127 mir_event.type = mir_event_type_key;
132 mir_event.key.device_id = args->deviceId;128 mir_event.key.device_id = args->deviceId;
133 mir_event.key.source_id = args->source;129 mir_event.key.source_id = args->source;
134 mir_event.key.action = static_cast<MirKeyAction>(args->action);130 mir_event.key.action = mia::mir_keyboard_action_from_android(args->action, 0 /* repeat_count */);
135 mir_event.key.modifiers = mir_modifiers;131 mir_event.key.modifiers = mir_modifiers;
136 mir_event.key.key_code = args->keyCode;132 mir_event.key.key_code = args->keyCode;
137 mir_event.key.scan_code = args->scanCode;133 mir_event.key.scan_code = args->scanCode;
138 mir_event.key.repeat_count = 0;
139 mir_event.key.event_time = args->eventTime.count();134 mir_event.key.event_time = args->eventTime.count();
140135
141 if (!valid_key_event(mir_event.key))
142 return;
143
144 dispatcher->dispatch(mir_event);136 dispatcher->dispatch(mir_event);
145}137}
146138
147139
=== modified file 'src/server/input/vt_filter.cpp'
--- src/server/input/vt_filter.cpp 2015-05-05 00:15:05 +0000
+++ src/server/input/vt_filter.cpp 2015-05-12 14:00:09 +0000
@@ -38,7 +38,7 @@
38bool mir::input::VTFilter::handle(MirEvent const& event)38bool mir::input::VTFilter::handle(MirEvent const& event)
39{39{
40 if (event.type == mir_event_type_key &&40 if (event.type == mir_event_type_key &&
41 event.key.action == mir_key_action_down &&41 event.key.action == mir_keyboard_action_down &&
42 (event.key.modifiers & mir_input_event_modifier_alt) &&42 (event.key.modifiers & mir_input_event_modifier_alt) &&
43 (event.key.modifiers & mir_input_event_modifier_ctrl))43 (event.key.modifiers & mir_input_event_modifier_ctrl))
44 {44 {
4545
=== modified file 'tests/acceptance-tests/throwback/test_client_input.cpp'
--- tests/acceptance-tests/throwback/test_client_input.cpp 2015-04-30 11:36:36 +0000
+++ tests/acceptance-tests/throwback/test_client_input.cpp 2015-05-12 14:00:09 +0000
@@ -617,7 +617,7 @@
617 MirEvent key_event;617 MirEvent key_event;
618 std::memset(&key_event, 0, sizeof key_event);618 std::memset(&key_event, 0, sizeof key_event);
619 key_event.type = mir_event_type_key;619 key_event.type = mir_event_type_key;
620 key_event.key.action = mir_key_action_down;620 key_event.key.action = mir_keyboard_action_down;
621621
622 session->default_surface()->consume(key_event);622 session->default_surface()->consume(key_event);
623 });623 });
624624
=== modified file 'tests/unit-tests/client/input/test_xkb_mapper.cpp'
--- tests/unit-tests/client/input/test_xkb_mapper.cpp 2015-04-01 19:39:19 +0000
+++ tests/unit-tests/client/input/test_xkb_mapper.cpp 2015-05-12 14:00:09 +0000
@@ -31,25 +31,12 @@
31namespace31namespace
32{32{
3333
34static int map_key(mircv::XKBMapper &mapper, MirKeyAction action, int scan_code)34static int map_key(mircv::XKBMapper &mapper, MirKeyboardAction action, int scan_code)
35{35{
36 MirEvent ev;36 MirEvent ev;
37 ev.type = mir_event_type_key;37 ev.type = mir_event_type_key;
38 ev.key.action = action;38 ev.key.action = action;
39 ev.key.scan_code = scan_code;39 ev.key.scan_code = scan_code;
40 ev.key.repeat_count = 0;
41
42 mapper.update_state_and_map_event(ev);
43 return ev.key.key_code;
44}
45
46static int map_repeated_key(mircv::XKBMapper &mapper, MirKeyAction action, int scan_code)
47{
48 MirEvent ev;
49 ev.type = mir_event_type_key;
50 ev.key.action = action;
51 ev.key.scan_code = scan_code;
52 ev.key.repeat_count = 1;
5340
54 mapper.update_state_and_map_event(ev);41 mapper.update_state_and_map_event(ev);
55 return ev.key.key_code;42 return ev.key.key_code;
@@ -61,29 +48,21 @@
61{48{
62 mircv::XKBMapper mapper;49 mircv::XKBMapper mapper;
6350
64 EXPECT_EQ(XKB_KEY_4, map_key(mapper, mir_key_action_down, KEY_4));51 EXPECT_EQ(XKB_KEY_4, map_key(mapper, mir_keyboard_action_down, KEY_4));
65 EXPECT_EQ(XKB_KEY_Shift_L, map_key(mapper, mir_key_action_down, KEY_LEFTSHIFT));52 EXPECT_EQ(XKB_KEY_Shift_L, map_key(mapper, mir_keyboard_action_down, KEY_LEFTSHIFT));
66 EXPECT_EQ(XKB_KEY_dollar, map_key(mapper, mir_key_action_down, KEY_4));53 EXPECT_EQ(XKB_KEY_dollar, map_key(mapper, mir_keyboard_action_down, KEY_4));
67 EXPECT_EQ(XKB_KEY_dollar, map_key(mapper, mir_key_action_up, KEY_4));54 EXPECT_EQ(XKB_KEY_dollar, map_key(mapper, mir_keyboard_action_up, KEY_4));
68 EXPECT_EQ(XKB_KEY_Shift_L, map_key(mapper, mir_key_action_up, KEY_LEFTSHIFT));55 EXPECT_EQ(XKB_KEY_Shift_L, map_key(mapper, mir_keyboard_action_up, KEY_LEFTSHIFT));
69 EXPECT_EQ(XKB_KEY_4, map_key(mapper, mir_key_action_down, KEY_4));56 EXPECT_EQ(XKB_KEY_4, map_key(mapper, mir_keyboard_action_down, KEY_4));
70}
71
72TEST(XKBMapper, key_action_multiple_does_not_update_modifier_state)
73{
74 mircv::XKBMapper mapper;
75
76 EXPECT_EQ(XKB_KEY_Shift_R, map_key(mapper, mir_key_action_multiple, KEY_RIGHTSHIFT));
77 EXPECT_EQ(XKB_KEY_7, map_key(mapper, mir_key_action_down, KEY_7));
78}57}
7958
80TEST(XKBMapper, key_repeats_do_not_recurse_modifier_state)59TEST(XKBMapper, key_repeats_do_not_recurse_modifier_state)
81{60{
82 mircv::XKBMapper mapper;61 mircv::XKBMapper mapper;
8362
84 EXPECT_EQ(XKB_KEY_Shift_R, map_key(mapper, mir_key_action_down, KEY_RIGHTSHIFT));63 EXPECT_EQ(XKB_KEY_Shift_R, map_key(mapper, mir_keyboard_action_down, KEY_RIGHTSHIFT));
85 EXPECT_EQ(XKB_KEY_Shift_R, map_repeated_key(mapper, mir_key_action_down, KEY_RIGHTSHIFT));64 EXPECT_EQ(XKB_KEY_Shift_R, map_key(mapper, mir_keyboard_action_repeat, KEY_RIGHTSHIFT));
86 EXPECT_EQ(XKB_KEY_ampersand, map_key(mapper, mir_key_action_down, KEY_7));65 EXPECT_EQ(XKB_KEY_ampersand, map_key(mapper, mir_keyboard_action_down, KEY_7));
87 EXPECT_EQ(XKB_KEY_Shift_R, map_key(mapper, mir_key_action_up, KEY_RIGHTSHIFT));66 EXPECT_EQ(XKB_KEY_Shift_R, map_key(mapper, mir_keyboard_action_up, KEY_RIGHTSHIFT));
88 EXPECT_EQ(XKB_KEY_7, map_key(mapper, mir_key_action_down, KEY_7));67 EXPECT_EQ(XKB_KEY_7, map_key(mapper, mir_keyboard_action_down, KEY_7));
89}68}
9069
=== modified file 'tests/unit-tests/input/android/test_android_input_dispatcher.cpp'
--- tests/unit-tests/input/android/test_android_input_dispatcher.cpp 2015-05-05 00:15:05 +0000
+++ tests/unit-tests/input/android/test_android_input_dispatcher.cpp 2015-05-12 14:00:09 +0000
@@ -236,17 +236,16 @@
236 event.key.event_time = 1;236 event.key.event_time = 1;
237 event.key.device_id = 2;237 event.key.device_id = 2;
238 event.key.source_id = 3;238 event.key.source_id = 3;
239 event.key.action = mir_key_action_down;239 event.key.action = mir_keyboard_action_down;
240 event.key.scan_code = 4;240 event.key.scan_code = 4;
241 event.key.key_code = 5;241 event.key.key_code = 5;
242 event.key.repeat_count = 0;
243 event.key.modifiers = mir_input_event_modifier_shift;242 event.key.modifiers = mir_input_event_modifier_shift;
244243
245 droidinput::NotifyKeyArgs expected(std::chrono::nanoseconds(event.key.event_time),244 droidinput::NotifyKeyArgs expected(std::chrono::nanoseconds(event.key.event_time),
246 event.key.device_id,245 event.key.device_id,
247 event.key.source_id,246 event.key.source_id,
248 default_policy_flags,247 default_policy_flags,
249 event.key.action,248 AKEY_EVENT_ACTION_DOWN,
250 0, /* flags */249 0, /* flags */
251 event.key.key_code,250 event.key.key_code,
252 event.key.scan_code,251 event.key.scan_code,
253252
=== modified file 'tests/unit-tests/input/android/test_android_input_lexicon.cpp'
--- tests/unit-tests/input/android/test_android_input_lexicon.cpp 2015-05-05 00:15:05 +0000
+++ tests/unit-tests/input/android/test_android_input_lexicon.cpp 2015-05-12 14:00:09 +0000
@@ -34,12 +34,12 @@
3434
35 const int32_t device_id = 1;35 const int32_t device_id = 1;
36 const int32_t source_id = 2;36 const int32_t source_id = 2;
37 const int32_t action = 3;37 const int32_t action = AKEY_EVENT_ACTION_DOWN;
38 const int32_t flags = 4;38 const int32_t flags = 4;
39 const int32_t key_code = 5;39 const int32_t key_code = 5;
40 const int32_t scan_code = 6;40 const int32_t scan_code = 6;
41 const int32_t meta_state = AMETA_ALT_ON;41 const int32_t meta_state = AMETA_ALT_ON;
42 const int32_t repeat_count = 8;42 const int32_t repeat_count = 0;
43 auto const down_time = std::chrono::nanoseconds(9);43 auto const down_time = std::chrono::nanoseconds(9);
44 auto const event_time = std::chrono::nanoseconds(10);44 auto const event_time = std::chrono::nanoseconds(10);
4545
@@ -53,7 +53,7 @@
53 // Common event properties53 // Common event properties
54 EXPECT_EQ(device_id, mir_ev.key.device_id);54 EXPECT_EQ(device_id, mir_ev.key.device_id);
55 EXPECT_EQ(source_id, mir_ev.key.source_id);55 EXPECT_EQ(source_id, mir_ev.key.source_id);
56 EXPECT_EQ(action, mir_ev.key.action);56 EXPECT_EQ(mir_keyboard_action_down, mir_ev.key.action);
57 EXPECT_EQ(mir_input_event_modifier_alt, mir_ev.key.modifiers);57 EXPECT_EQ(mir_input_event_modifier_alt, mir_ev.key.modifiers);
5858
59 auto mir_key_ev = &mir_ev.key;59 auto mir_key_ev = &mir_ev.key;
@@ -61,7 +61,6 @@
61 EXPECT_EQ(mir_ev.type, mir_event_type_key);61 EXPECT_EQ(mir_ev.type, mir_event_type_key);
62 EXPECT_EQ(mir_key_ev->key_code, key_code);62 EXPECT_EQ(mir_key_ev->key_code, key_code);
63 EXPECT_EQ(mir_key_ev->scan_code, scan_code);63 EXPECT_EQ(mir_key_ev->scan_code, scan_code);
64 EXPECT_EQ(mir_key_ev->repeat_count, repeat_count);
65 EXPECT_EQ(mir_key_ev->event_time, event_time.count());64 EXPECT_EQ(mir_key_ev->event_time, event_time.count());
6665
67 delete android_key_ev;66 delete android_key_ev;
6867
=== modified file 'tests/unit-tests/input/android/test_android_input_sender.cpp'
--- tests/unit-tests/input/android/test_android_input_sender.cpp 2015-04-01 19:39:19 +0000
+++ tests/unit-tests/input/android/test_android_input_sender.cpp 2015-05-12 14:00:09 +0000
@@ -89,7 +89,7 @@
8989
90 key_event.type = mir_event_type_key;90 key_event.type = mir_event_type_key;
91 key_event.key.scan_code = 32;91 key_event.key.scan_code = 32;
92 key_event.key.action = mir_key_action_down;92 key_event.key.action = mir_keyboard_action_down;
9393
94 motion_event.type = mir_event_type_motion;94 motion_event.type = mir_event_type_motion;
95 motion_event.motion.pointer_count = 2;95 motion_event.motion.pointer_count = 2;
9696
=== modified file 'tests/unit-tests/input/android/test_event_filter_input_dispatcher_policy.cpp'
--- tests/unit-tests/input/android/test_event_filter_input_dispatcher_policy.cpp 2015-04-01 19:39:19 +0000
+++ tests/unit-tests/input/android/test_event_filter_input_dispatcher_policy.cpp 2015-05-12 14:00:09 +0000
@@ -24,6 +24,7 @@
24#include "mir_test_doubles/mock_event_filter.h"24#include "mir_test_doubles/mock_event_filter.h"
2525
26#include <androidfw/Input.h>26#include <androidfw/Input.h>
27#include <string.h>
2728
28#include <gtest/gtest.h>29#include <gtest/gtest.h>
29#include <gmock/gmock.h>30#include <gmock/gmock.h>
@@ -37,6 +38,7 @@
37{38{
38 using namespace ::testing;39 using namespace ::testing;
39 droidinput::KeyEvent ev;40 droidinput::KeyEvent ev;
41 ev.initialize(0, 0, 0, 0, 0, 0, 0, 0, std::chrono::nanoseconds(0), std::chrono::nanoseconds(0));
40 mtd::MockEventFilter filter;42 mtd::MockEventFilter filter;
41 mia::EventFilterDispatcherPolicy policy(mt::fake_shared(filter), true);43 mia::EventFilterDispatcherPolicy policy(mt::fake_shared(filter), true);
42 uint32_t policy_flags;44 uint32_t policy_flags;
4345
=== modified file 'tests/unit-tests/input/android/test_input_translator.cpp'
--- tests/unit-tests/input/android/test_input_translator.cpp 2015-05-07 07:20:05 +0000
+++ tests/unit-tests/input/android/test_input_translator.cpp 2015-05-12 14:00:09 +0000
@@ -102,21 +102,6 @@
102 translator.notifyDeviceReset(&reset);102 translator.notifyDeviceReset(&reset);
103}103}
104104
105TEST_F(InputTranslator, ignores_invalid_key_events)
106{
107 using namespace ::testing;
108
109 EXPECT_CALL(dispatcher, dispatch(_)).Times(0);
110
111 translator.notifyKey(nullptr);
112
113 const int32_t invalid_action = 5;
114 droidinput::NotifyKeyArgs key(some_time, device_id, source_id, 0, invalid_action, no_flags,
115 arbitrary_key_code, arbitrary_scan_code, no_modifiers, later_time);
116
117 translator.notifyKey(&key);
118}
119
120TEST_F(InputTranslator, ignores_invalid_motion_action)105TEST_F(InputTranslator, ignores_invalid_motion_action)
121{106{
122 using namespace ::testing;107 using namespace ::testing;
@@ -231,9 +216,9 @@
231 EXPECT_CALL(dispatcher, dispatch(mt::KeyDownEvent())).Times(1);216 EXPECT_CALL(dispatcher, dispatch(mt::KeyDownEvent())).Times(1);
232 EXPECT_CALL(dispatcher, dispatch(mt::KeyUpEvent())).Times(1);217 EXPECT_CALL(dispatcher, dispatch(mt::KeyUpEvent())).Times(1);
233218
234 droidinput::NotifyKeyArgs down(some_time, device_id, source_id, 0, mir_key_action_down,219 droidinput::NotifyKeyArgs down(some_time, device_id, source_id, 0, AKEY_EVENT_ACTION_DOWN,
235 no_flags, arbitrary_key_code, arbitrary_scan_code, no_modifiers, later_time);220 no_flags, arbitrary_key_code, arbitrary_scan_code, no_modifiers, later_time);
236 droidinput::NotifyKeyArgs up(some_time, device_id, source_id, 0, mir_key_action_up,221 droidinput::NotifyKeyArgs up(some_time, device_id, source_id, 0, AKEY_EVENT_ACTION_UP,
237 no_flags, arbitrary_key_code, arbitrary_scan_code, no_modifiers, later_time);222 no_flags, arbitrary_key_code, arbitrary_scan_code, no_modifiers, later_time);
238223
239 translator.notifyKey(&down);224 translator.notifyKey(&down);
@@ -248,10 +233,9 @@
248 expected.key.event_time = 1;233 expected.key.event_time = 1;
249 expected.key.device_id = 2;234 expected.key.device_id = 2;
250 expected.key.source_id = 3;235 expected.key.source_id = 3;
251 expected.key.action = mir_key_action_down;236 expected.key.action = mir_keyboard_action_down;
252 expected.key.scan_code = 4;237 expected.key.scan_code = 4;
253 expected.key.key_code = 5;238 expected.key.key_code = 5;
254 expected.key.repeat_count = 0;
255 expected.key.modifiers = mir_input_event_modifier_shift;239 expected.key.modifiers = mir_input_event_modifier_shift;
256240
257 InSequence seq;241 InSequence seq;
@@ -261,7 +245,7 @@
261 expected.key.device_id,245 expected.key.device_id,
262 expected.key.source_id,246 expected.key.source_id,
263 default_policy_flags,247 default_policy_flags,
264 expected.key.action,248 AKEY_EVENT_ACTION_DOWN,
265 0, /* flags */249 0, /* flags */
266 expected.key.key_code,250 expected.key.key_code,
267 expected.key.scan_code,251 expected.key.scan_code,
@@ -341,7 +325,7 @@
341 ).Times(1);325 ).Times(1);
342326
343 droidinput::NotifyKeyArgs tester(some_time, device_id, source_id,327 droidinput::NotifyKeyArgs tester(some_time, device_id, source_id,
344 GetParam().policy_flag, mir_key_action_down,328 GetParam().policy_flag, AKEY_EVENT_ACTION_DOWN,
345 no_flags, arbitrary_key_code, arbitrary_scan_code, no_modifiers, later_time);329 no_flags, arbitrary_key_code, arbitrary_scan_code, no_modifiers, later_time);
346330
347 translator.notifyKey(&tester);331 translator.notifyKey(&tester);
348332
=== modified file 'tests/unit-tests/input/test_input_event.cpp'
--- tests/unit-tests/input/test_input_event.cpp 2015-05-05 00:15:05 +0000
+++ tests/unit-tests/input/test_input_event.cpp 2015-05-12 14:00:09 +0000
@@ -125,27 +125,15 @@
125{125{
126 auto old_ev = a_key_ev();126 auto old_ev = a_key_ev();
127127
128 old_ev.key.action = mir_key_action_down;128 old_ev.key.action = mir_keyboard_action_down;
129 old_ev.key.repeat_count = 0;
130 129
131 auto new_kev = mir_input_event_get_keyboard_event(mir_event_get_input_event(&old_ev));130 auto new_kev = mir_input_event_get_keyboard_event(mir_event_get_input_event(&old_ev));
132 EXPECT_EQ(mir_keyboard_action_down, mir_keyboard_event_action(new_kev));131 EXPECT_EQ(mir_keyboard_action_down, mir_keyboard_event_action(new_kev));
133132
134 old_ev.key.action = mir_key_action_up;133 old_ev.key.action = mir_keyboard_action_up;
135 EXPECT_EQ(mir_keyboard_action_up, mir_keyboard_event_action(new_kev));134 EXPECT_EQ(mir_keyboard_action_up, mir_keyboard_event_action(new_kev));
136}135}
137136
138TEST(KeyInputEventProperties, repeat_action_produced_from_non_zero_repeat_count_in_old_style_event)
139{
140 auto old_ev = a_key_ev();
141
142 old_ev.key.action = mir_key_action_down;
143 old_ev.key.repeat_count = 1;
144
145 auto new_kev = mir_input_event_get_keyboard_event(mir_event_get_input_event(&old_ev));
146 EXPECT_EQ(mir_keyboard_action_repeat, mir_keyboard_event_action(new_kev));
147}
148
149TEST(KeyInputEventProperties, keycode_scancode_and_modifiers_taken_from_old_style_event)137TEST(KeyInputEventProperties, keycode_scancode_and_modifiers_taken_from_old_style_event)
150{138{
151 xkb_keysym_t key_code = 171;139 xkb_keysym_t key_code = 171;

Subscribers

People subscribed via source and target branches