Remove obsolete code that was used only in Chromium OS.
This CL removes {LEFT|RIGHT}_{ALT|CTRL|SHIFT} support from ibus-mozc, which was
originally added for Chromium OS to support Pinyin input but is no longer used.
Basically this is just a dead-code removal. Hence no user visible change is
expected.
BUG=none
TEST=compile
Hiroshi Sumita authored 8 years ago
Yohei Yukawa committed 8 years ago
0 | 0 | MAJOR=2 |
1 | 1 | MINOR=17 |
2 | BUILD=2109 | |
2 | BUILD=2110 | |
3 | 3 | REVISION=102 |
4 | 4 | # NACL_DICTIONARY_VERSION is the target version of the system dictionary to be |
5 | 5 | # downloaded by NaCl Mozc. |
38 | 38 | namespace ibus { |
39 | 39 | |
40 | 40 | namespace { |
41 | // TODO(hsumita): Removes this class, and moves |data_| into member | |
42 | // variables of KeyEventhandler. | |
43 | class AdditionalModifiersData { | |
44 | public: | |
45 | AdditionalModifiersData() { | |
46 | data_[commands::KeyEvent::LEFT_ALT] = commands::KeyEvent::ALT; | |
47 | data_[commands::KeyEvent::RIGHT_ALT] = commands::KeyEvent::ALT; | |
48 | data_[commands::KeyEvent::LEFT_CTRL] = commands::KeyEvent::CTRL; | |
49 | data_[commands::KeyEvent::RIGHT_CTRL] = commands::KeyEvent::CTRL; | |
50 | data_[commands::KeyEvent::LEFT_SHIFT] = commands::KeyEvent::SHIFT; | |
51 | data_[commands::KeyEvent::RIGHT_SHIFT] = commands::KeyEvent::SHIFT; | |
52 | } | |
53 | const map<uint32, commands::KeyEvent::ModifierKey> &data() { | |
54 | return data_; | |
55 | } | |
56 | ||
57 | private: | |
58 | map<uint32, commands::KeyEvent::ModifierKey> data_; | |
59 | }; | |
60 | ||
61 | // TODO(hsumita): Moves this function into member functions of | |
62 | // KeyEventHandler. | |
63 | void AddAdditionalModifiers( | |
64 | set<commands::KeyEvent::ModifierKey> *modifier_keys_set) { | |
65 | DCHECK(modifier_keys_set); | |
66 | ||
67 | const map<uint32, commands::KeyEvent::ModifierKey> &data = | |
68 | Singleton<AdditionalModifiersData>::get()->data(); | |
69 | ||
70 | // Adds MODIFIER if there are (LEFT|RIGHT)_MODIFIER like LEFT_SHIFT. | |
71 | for (set<commands::KeyEvent::ModifierKey>::const_iterator it = | |
72 | modifier_keys_set->begin(); it != modifier_keys_set->end(); ++it) { | |
73 | map<uint32, commands::KeyEvent::ModifierKey>::const_iterator item = | |
74 | data.find(*it); | |
75 | if (item != data.end()) { | |
76 | modifier_keys_set->insert(item->second); | |
77 | } | |
78 | } | |
79 | } | |
80 | ||
81 | 41 | bool IsModifierToBeSentOnKeyUp(const commands::KeyEvent &key_event) { |
82 | 42 | if (key_event.modifier_keys_size() == 0) { |
83 | 43 | return false; |
225 | 185 | for (size_t i = 0; i < key_event->modifier_keys_size(); ++i) { |
226 | 186 | modifiers_to_be_sent_.insert(key_event->modifier_keys(i)); |
227 | 187 | } |
228 | AddAdditionalModifiers(&modifiers_to_be_sent_); | |
229 | 188 | } |
230 | 189 | currently_pressed_modifiers_.insert(keyval); |
231 | 190 | return false; |
49 | 49 | handler_.reset(new KeyEventHandler); |
50 | 50 | |
51 | 51 | keyval_to_modifier_.clear(); |
52 | keyval_to_modifier_[IBUS_Shift_L] = commands::KeyEvent::LEFT_SHIFT; | |
53 | keyval_to_modifier_[IBUS_Shift_R] = commands::KeyEvent::RIGHT_SHIFT; | |
54 | keyval_to_modifier_[IBUS_Control_L] = commands::KeyEvent::LEFT_CTRL; | |
55 | keyval_to_modifier_[IBUS_Control_R] = commands::KeyEvent::RIGHT_CTRL; | |
56 | keyval_to_modifier_[IBUS_Alt_L] = commands::KeyEvent::LEFT_ALT; | |
57 | keyval_to_modifier_[IBUS_Alt_R] = commands::KeyEvent::RIGHT_ALT; | |
52 | keyval_to_modifier_[IBUS_Shift_L] = commands::KeyEvent::SHIFT; | |
53 | keyval_to_modifier_[IBUS_Shift_R] = commands::KeyEvent::SHIFT; | |
54 | keyval_to_modifier_[IBUS_Control_L] = commands::KeyEvent::CTRL; | |
55 | keyval_to_modifier_[IBUS_Control_R] = commands::KeyEvent::CTRL; | |
56 | keyval_to_modifier_[IBUS_Alt_L] = commands::KeyEvent::ALT; | |
57 | keyval_to_modifier_[IBUS_Alt_R] = commands::KeyEvent::ALT; | |
58 | 58 | } |
59 | 59 | |
60 | 60 | // Currently this function does not supports special keys. |
62 | 62 | const map<guint, commands::KeyEvent::ModifierKey>::const_iterator it = |
63 | 63 | keyval_to_modifier_.find(keyval); |
64 | 64 | if (it != keyval_to_modifier_.end()) { |
65 | key->add_modifier_keys(it->second); | |
65 | bool found = false; | |
66 | for (int i = 0; i < key->modifier_keys_size(); ++i) { | |
67 | if (key->modifier_keys(i) == it->second) { | |
68 | found = true; | |
69 | break; | |
70 | } | |
71 | } | |
72 | if (!found) { | |
73 | key->add_modifier_keys(it->second); | |
74 | } | |
66 | 75 | } else { |
67 | 76 | key->set_key_code(keyval); |
68 | 77 | } |
148 | 157 | EXPECT_FALSE(handler_->GetKeyEvent( |
149 | 158 | IBUS_Alt_L, kDummyKeycode, IBUS_MOD1_MASK, |
150 | 159 | config::Config::ROMAN, true, &key)); |
151 | EXPECT_MODIFIERS_TO_BE_SENT( | |
152 | (commands::KeyEvent::LEFT_ALT | commands::KeyEvent::ALT)); | |
160 | EXPECT_MODIFIERS_TO_BE_SENT(commands::KeyEvent::ALT); | |
153 | 161 | EXPECT_MODIFIERS_PRESSED(); |
154 | 162 | |
155 | 163 | key.Clear(); |
213 | 221 | // Shift down |
214 | 222 | EXPECT_FALSE(ProcessKey(false, IBUS_Shift_L, &key)); |
215 | 223 | EXPECT_TRUE(IsPressed(IBUS_Shift_L)); |
216 | EXPECT_MODIFIERS_TO_BE_SENT( | |
217 | (commands::KeyEvent::LEFT_SHIFT | commands::KeyEvent::SHIFT)); | |
224 | EXPECT_MODIFIERS_TO_BE_SENT(commands::KeyEvent::SHIFT); | |
218 | 225 | |
219 | 226 | // "a" down |
220 | 227 | key.Clear(); |
240 | 247 | // Shift down |
241 | 248 | EXPECT_FALSE(ProcessKey(false, IBUS_Shift_L, &key)); |
242 | 249 | EXPECT_TRUE(IsPressed(IBUS_Shift_L)); |
243 | EXPECT_MODIFIERS_TO_BE_SENT( | |
244 | (commands::KeyEvent::LEFT_SHIFT | commands::KeyEvent::SHIFT)); | |
250 | EXPECT_MODIFIERS_TO_BE_SENT(commands::KeyEvent::SHIFT); | |
245 | 251 | |
246 | 252 | // "0" down |
247 | 253 | key.Clear(); |
270 | 276 | // Alt down |
271 | 277 | EXPECT_FALSE(ProcessKey(false, IBUS_Alt_L, &key)); |
272 | 278 | EXPECT_TRUE(IsPressed(IBUS_Alt_L)); |
273 | EXPECT_MODIFIERS_TO_BE_SENT( | |
274 | (commands::KeyEvent::LEFT_ALT | commands::KeyEvent::ALT)); | |
279 | EXPECT_MODIFIERS_TO_BE_SENT(commands::KeyEvent::ALT); | |
275 | 280 | |
276 | 281 | // "a" down |
277 | 282 | key.Clear(); |
278 | 283 | key.add_modifier_keys(commands::KeyEvent::ALT); |
279 | key.add_modifier_keys(commands::KeyEvent::LEFT_ALT); | |
280 | 284 | EXPECT_TRUE(ProcessKey(false, 'a', &key)); |
281 | 285 | EXPECT_TRUE(IsPressed(IBUS_Alt_L)); |
282 | 286 | EXPECT_MODIFIERS_TO_BE_SENT(kNoModifiers); |
284 | 288 | // "a" up |
285 | 289 | key.Clear(); |
286 | 290 | key.add_modifier_keys(commands::KeyEvent::ALT); |
287 | key.add_modifier_keys(commands::KeyEvent::LEFT_ALT); | |
288 | 291 | EXPECT_FALSE(ProcessKey(true, 'a', &key)); |
289 | 292 | EXPECT_TRUE(IsPressed(IBUS_Alt_L)); |
290 | 293 | EXPECT_MODIFIERS_TO_BE_SENT(kNoModifiers); |
302 | 305 | // Ctrl down |
303 | 306 | EXPECT_FALSE(ProcessKey(false, IBUS_Control_L, &key)); |
304 | 307 | EXPECT_TRUE(IsPressed(IBUS_Control_L)); |
305 | EXPECT_MODIFIERS_TO_BE_SENT( | |
306 | (commands::KeyEvent::LEFT_CTRL | commands::KeyEvent::CTRL)); | |
308 | EXPECT_MODIFIERS_TO_BE_SENT(commands::KeyEvent::CTRL); | |
307 | 309 | |
308 | 310 | // "a" down |
309 | 311 | key.Clear(); |
310 | 312 | key.add_modifier_keys(commands::KeyEvent::CTRL); |
311 | key.add_modifier_keys(commands::KeyEvent::LEFT_CTRL); | |
312 | 313 | EXPECT_TRUE(ProcessKey(false, 'a', &key)); |
313 | 314 | EXPECT_TRUE(IsPressed(IBUS_Control_L)); |
314 | 315 | EXPECT_MODIFIERS_TO_BE_SENT(kNoModifiers); |
316 | 317 | // "a" up |
317 | 318 | key.Clear(); |
318 | 319 | key.add_modifier_keys(commands::KeyEvent::CTRL); |
319 | key.add_modifier_keys(commands::KeyEvent::LEFT_CTRL); | |
320 | 320 | EXPECT_FALSE(ProcessKey(true, 'a', &key)); |
321 | 321 | EXPECT_TRUE(IsPressed(IBUS_Control_L)); |
322 | 322 | EXPECT_MODIFIERS_TO_BE_SENT(kNoModifiers); |
336 | 336 | EXPECT_FALSE(ProcessKeyWithCapsLock(false, IBUS_Shift_L, &key)); |
337 | 337 | EXPECT_TRUE(IsPressed(IBUS_Shift_L)); |
338 | 338 | EXPECT_MODIFIERS_TO_BE_SENT( |
339 | (commands::KeyEvent::CAPS | commands::KeyEvent::LEFT_SHIFT | | |
340 | commands::KeyEvent::SHIFT)); | |
339 | (commands::KeyEvent::CAPS | commands::KeyEvent::SHIFT)); | |
341 | 340 | |
342 | 341 | // "a" down |
343 | 342 | key.Clear(); |
364 | 363 | // Left-Shift down |
365 | 364 | EXPECT_FALSE(ProcessKey(false, IBUS_Shift_L, &key)); |
366 | 365 | EXPECT_TRUE(IsPressed(IBUS_Shift_L)); |
367 | EXPECT_MODIFIERS_TO_BE_SENT( | |
368 | (commands::KeyEvent::LEFT_SHIFT | commands::KeyEvent::SHIFT)); | |
366 | EXPECT_MODIFIERS_TO_BE_SENT(commands::KeyEvent::SHIFT); | |
369 | 367 | |
370 | 368 | // Right-Shift down |
371 | 369 | key.Clear(); |
372 | 370 | key.add_modifier_keys(commands::KeyEvent::SHIFT); |
373 | key.add_modifier_keys(commands::KeyEvent::LEFT_SHIFT); | |
374 | 371 | EXPECT_FALSE(ProcessKey(false, IBUS_Shift_R, &key)); |
375 | 372 | EXPECT_TRUE(IsPressed(IBUS_Shift_L)); |
376 | 373 | EXPECT_TRUE(IsPressed(IBUS_Shift_R)); |
377 | EXPECT_MODIFIERS_TO_BE_SENT( | |
378 | (commands::KeyEvent::LEFT_SHIFT | commands::KeyEvent::RIGHT_SHIFT | | |
379 | commands::KeyEvent::SHIFT)); | |
374 | EXPECT_MODIFIERS_TO_BE_SENT(commands::KeyEvent::SHIFT); | |
380 | 375 | } |
381 | 376 | |
382 | 377 | TEST_F(KeyEventHandlerTest, ProcessModifiers) { |
390 | 385 | EXPECT_TRUE(ProcessKey(true, IBUS_Shift_L, &key)); |
391 | 386 | EXPECT_NO_MODIFIERS_PRESSED(); |
392 | 387 | EXPECT_MODIFIERS_TO_BE_SENT(kNoModifiers); |
393 | EXPECT_EQ((commands::KeyEvent::SHIFT | commands::KeyEvent::LEFT_SHIFT), | |
394 | KeyEventUtil::GetModifiers(key)); | |
388 | EXPECT_EQ(commands::KeyEvent::SHIFT, KeyEventUtil::GetModifiers(key)); | |
395 | 389 | |
396 | 390 | // Shift down => Ctrl down => Shift up => Alt down => Ctrl up => Alt up |
397 | 391 | key.Clear(); |
408 | 402 | EXPECT_TRUE(ProcessKey(true, IBUS_Alt_L, &key)); |
409 | 403 | EXPECT_NO_MODIFIERS_PRESSED(); |
410 | 404 | EXPECT_MODIFIERS_TO_BE_SENT(kNoModifiers); |
411 | EXPECT_EQ((commands::KeyEvent::ALT | commands::KeyEvent::LEFT_ALT | | |
412 | commands::KeyEvent::CTRL | commands::KeyEvent::LEFT_CTRL | | |
413 | commands::KeyEvent::SHIFT | commands::KeyEvent::LEFT_SHIFT), | |
405 | EXPECT_EQ((commands::KeyEvent::ALT | commands::KeyEvent::CTRL | | |
406 | commands::KeyEvent::SHIFT), | |
414 | 407 | KeyEventUtil::GetModifiers(key)); |
415 | 408 | } |
416 | 409 |
29 | 29 | #include "unix/ibus/key_translator.h" |
30 | 30 | |
31 | 31 | #include <map> |
32 | #include <set> | |
32 | 33 | #include <string> |
33 | 34 | |
34 | 35 | #include "base/logging.h" |
129 | 130 | // - IBUS_Kana_Lock? IBUS_KEY_Kana_Shift? |
130 | 131 | }; |
131 | 132 | |
132 | const struct ModifierKeyMap { | |
133 | const struct ModifierKeyMapData { | |
133 | 134 | guint from; |
134 | 135 | mozc::commands::KeyEvent::ModifierKey to; |
135 | } modifier_key_map[] = { | |
136 | {IBUS_Shift_L, mozc::commands::KeyEvent::LEFT_SHIFT}, | |
137 | {IBUS_Shift_R, mozc::commands::KeyEvent::RIGHT_SHIFT}, | |
138 | {IBUS_Control_L, mozc::commands::KeyEvent::LEFT_CTRL}, | |
139 | {IBUS_Control_R, mozc::commands::KeyEvent::RIGHT_CTRL}, | |
140 | {IBUS_Alt_L, mozc::commands::KeyEvent::LEFT_ALT}, | |
141 | {IBUS_Alt_R, mozc::commands::KeyEvent::RIGHT_ALT}, | |
136 | } modifier_key_map_data[] = { | |
137 | {IBUS_Shift_L, mozc::commands::KeyEvent::SHIFT}, | |
138 | {IBUS_Shift_R, mozc::commands::KeyEvent::SHIFT}, | |
139 | {IBUS_Control_L, mozc::commands::KeyEvent::CTRL}, | |
140 | {IBUS_Control_R, mozc::commands::KeyEvent::CTRL}, | |
141 | {IBUS_Alt_L, mozc::commands::KeyEvent::ALT}, | |
142 | {IBUS_Alt_R, mozc::commands::KeyEvent::ALT}, | |
142 | 143 | {IBUS_LOCK_MASK, mozc::commands::KeyEvent::CAPS}, |
143 | 144 | }; |
144 | 145 | |
145 | const struct ModifierMaskMap { | |
146 | const struct ModifierMaskMapData { | |
146 | 147 | guint from; |
147 | 148 | mozc::commands::KeyEvent::ModifierKey to; |
148 | } modifier_mask_map[] = { | |
149 | } modifier_mask_map_data[] = { | |
149 | 150 | {IBUS_SHIFT_MASK, mozc::commands::KeyEvent::SHIFT}, |
150 | 151 | {IBUS_CONTROL_MASK, mozc::commands::KeyEvent::CTRL}, |
151 | 152 | {IBUS_MOD1_MASK, mozc::commands::KeyEvent::ALT}, |
415 | 416 | } |
416 | 417 | |
417 | 418 | if (i->first & modifiers) { |
418 | out_event->add_modifier_keys(i->second); | |
419 | // Add a modifier key if doesn't exist. | |
420 | commands::KeyEvent::ModifierKey modifier = i->second; | |
421 | bool found = false; | |
422 | for (int i = 0; i < out_event->modifier_keys_size(); ++i) { | |
423 | if (modifier == out_event->modifier_keys(i)) { | |
424 | found = true; | |
425 | break; | |
426 | } | |
427 | } | |
428 | if (!found) { | |
429 | out_event->add_modifier_keys(modifier); | |
430 | } | |
419 | 431 | } |
420 | 432 | } |
421 | 433 | |
427 | 439 | CHECK(special_key_map_.insert(make_pair(special_key_map[i].from, |
428 | 440 | special_key_map[i].to)).second); |
429 | 441 | } |
430 | for (int i = 0; i < arraysize(modifier_key_map); ++i) { | |
431 | CHECK(modifier_key_map_.insert(make_pair(modifier_key_map[i].from, | |
432 | modifier_key_map[i].to)).second); | |
433 | } | |
434 | for (int i = 0; i < arraysize(modifier_mask_map); ++i) { | |
435 | CHECK(modifier_mask_map_.insert(make_pair(modifier_mask_map[i].from, | |
436 | modifier_mask_map[i].to)).second); | |
442 | for (int i = 0; i < arraysize(modifier_key_map_data); ++i) { | |
443 | CHECK(modifier_key_map_.insert( | |
444 | make_pair(modifier_key_map_data[i].from, | |
445 | modifier_key_map_data[i].to)).second); | |
446 | } | |
447 | for (int i = 0; i < arraysize(modifier_mask_map_data); ++i) { | |
448 | CHECK(modifier_mask_map_.insert( | |
449 | make_pair(modifier_mask_map_data[i].from, | |
450 | modifier_mask_map_data[i].to)).second); | |
437 | 451 | } |
438 | 452 | for (int i = 0; i < arraysize(kana_map_jp); ++i) { |
439 | 453 | CHECK(kana_map_jp_.insert( |
497 | 497 | IsContained(commands::KeyEvent::ALT, out.modifier_keys()); |
498 | 498 | } |
499 | 499 | |
500 | TEST_F(KeyTranslatorTest, MultipleShiftKeysTest) { | |
501 | commands::KeyEvent out; | |
502 | ||
503 | // Hit Shift_L with shift modifier (typically Shift_R). | |
504 | EXPECT_TRUE(translator_->Translate(IBUS_Shift_L, 0, IBUS_SHIFT_MASK, | |
505 | config::Config::ROMAN, true, &out)); | |
506 | EXPECT_EQ(1, out.modifier_keys_size()); | |
507 | IsContained(commands::KeyEvent::SHIFT, out.modifier_keys()); | |
508 | } | |
509 | ||
500 | 510 | TEST_F(KeyTranslatorTest, TranslateUnknow) { |
501 | 511 | commands::KeyEvent out; |
502 | 512 | EXPECT_FALSE(translator_->Translate(IBUS_VoidSymbol, 0, 0, |
534 | 544 | EXPECT_TRUE(translator_->Translate( |
535 | 545 | IBUS_Shift_L, 0, 0, config::Config::ROMAN, true, &out)); |
536 | 546 | EXPECT_EQ(1, out.modifier_keys_size()); |
537 | EXPECT_EQ(commands::KeyEvent::LEFT_SHIFT, out.modifier_keys(0)); | |
547 | EXPECT_EQ(commands::KeyEvent::SHIFT, out.modifier_keys(0)); | |
538 | 548 | |
539 | 549 | // Just tap right_shift key |
540 | 550 | out.Clear(); |
541 | 551 | EXPECT_TRUE(translator_->Translate( |
542 | 552 | IBUS_Shift_R, 0, 0, config::Config::ROMAN, true, &out)); |
543 | 553 | EXPECT_EQ(1, out.modifier_keys_size()); |
544 | EXPECT_EQ(commands::KeyEvent::RIGHT_SHIFT, out.modifier_keys(0)); | |
554 | EXPECT_EQ(commands::KeyEvent::SHIFT, out.modifier_keys(0)); | |
545 | 555 | |
546 | 556 | // Just tap left_ctrl key |
547 | 557 | out.Clear(); |
548 | 558 | EXPECT_TRUE(translator_->Translate( |
549 | 559 | IBUS_Control_L, 0, 0, config::Config::ROMAN, true, &out)); |
550 | 560 | EXPECT_EQ(1, out.modifier_keys_size()); |
551 | EXPECT_EQ(commands::KeyEvent::LEFT_CTRL, out.modifier_keys(0)); | |
561 | EXPECT_EQ(commands::KeyEvent::CTRL, out.modifier_keys(0)); | |
552 | 562 | |
553 | 563 | // Just tap right_ctrl key |
554 | 564 | out.Clear(); |
555 | 565 | EXPECT_TRUE(translator_->Translate( |
556 | 566 | IBUS_Control_R, 0, 0, config::Config::ROMAN, true, &out)); |
557 | 567 | EXPECT_EQ(1, out.modifier_keys_size()); |
558 | EXPECT_EQ(commands::KeyEvent::RIGHT_CTRL, out.modifier_keys(0)); | |
568 | EXPECT_EQ(commands::KeyEvent::CTRL, out.modifier_keys(0)); | |
559 | 569 | |
560 | 570 | // Just tap left_alt key |
561 | 571 | out.Clear(); |
562 | 572 | EXPECT_TRUE(translator_->Translate( |
563 | 573 | IBUS_Alt_L, 0, 0, config::Config::ROMAN, true, &out)); |
564 | 574 | EXPECT_EQ(1, out.modifier_keys_size()); |
565 | EXPECT_EQ(commands::KeyEvent::LEFT_ALT, out.modifier_keys(0)); | |
575 | EXPECT_EQ(commands::KeyEvent::ALT, out.modifier_keys(0)); | |
566 | 576 | |
567 | 577 | // Just tap right_alt key |
568 | 578 | out.Clear(); |
569 | 579 | EXPECT_TRUE(translator_->Translate( |
570 | 580 | IBUS_Alt_R, 0, 0, config::Config::ROMAN, true, &out)); |
571 | 581 | EXPECT_EQ(1, out.modifier_keys_size()); |
572 | EXPECT_EQ(commands::KeyEvent::RIGHT_ALT, out.modifier_keys(0)); | |
582 | EXPECT_EQ(commands::KeyEvent::ALT, out.modifier_keys(0)); | |
573 | 583 | } |
574 | 584 | |
575 | 585 | } // namespace ibus |