15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// found in the LICENSE file.
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "mojo/examples/keyboard/keys.h"
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "base/macros.h"
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "ui/events/event_constants.h"
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h"
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace mojo {
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace examples {
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace {
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const Key kQWERTYKeysRow1[] =
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_Q, 1, 0, 'q' },
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_W, 1, 0, 'w' },
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_E, 1, 0, 'e' },
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_R, 1, 0, 'r' },
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_T, 1, 0, 't' },
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_Y, 1, 0, 'y' },
2353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)  { ui::VKEY_U, 1, 0, 'u' },
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_I, 1, 0, 'i' },
255d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)  { ui::VKEY_O, 1, 0, 'o' },
26c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  { ui::VKEY_P, 1, 0, 'p' },
27a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)};
2853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const Key kQWERTYKeysRow2[] =
30c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_A, 1, 0, 'a' },
32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  { ui::VKEY_S, 1, 0, 's' },
33c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  { ui::VKEY_D, 1, 0, 'd' },
34e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_F, 1, 0, 'f' },
35e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_G, 1, 0, 'g' },
36e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_H, 1, 0, 'h' },
37e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_J, 1, 0, 'j' },
38c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  { ui::VKEY_K, 1, 0, 'k' },
39e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_L, 1, 0, 'l' },
40e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)};
41e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
42e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)const Key kQWERTYKeysRow3[] =
43e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles){
44e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { SPECIAL_KEY_SHIFT, 1.5, 0, 0 },
45e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_Z, 1, 0, 'z' },
46e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_X, 1, 0, 'x' },
47e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_C, 1, 0, 'c' },
48e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_V, 1, 0, 'v' },
49e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_B, 1, 0, 'b' },
50e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_N, 1, 0, 'n' },
51e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_M, 1, 0, 'm' },
52e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_BACK, 1.5, 0, 0 },
53e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)};
54e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
55c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)const Key kQWERTYKeysRow4[] =
56c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){
57c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  { SPECIAL_KEY_NUMERIC, 1.5, 0, 0 },
58c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  { ui::VKEY_DIVIDE, 1, 0, '/' },
59e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_SPACE, 5, 0, ' ' },
60c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  { ui::VKEY_DECIMAL, 1, 0, '.' },
61c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  { ui::VKEY_RETURN, 1.5, 0, 0 },
62c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)};
63d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
64d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)const Row kQWERTYRow1 = {
65d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)  0,
66c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  kQWERTYKeysRow1,
67c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  arraysize(kQWERTYKeysRow1),
68c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)};
69c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
70c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)const Row kQWERTYRow2 = {
71e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  .5,
72e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  kQWERTYKeysRow2,
73e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  arraysize(kQWERTYKeysRow2),
74e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)};
75e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
76e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)const Row kQWERTYRow3 = {
77e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  0,
78e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  kQWERTYKeysRow3,
79e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  arraysize(kQWERTYKeysRow3),
80e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)};
81e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
82d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)const Row kQWERTYRow4 = {
83d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)  0,
84d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)  kQWERTYKeysRow4,
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  arraysize(kQWERTYKeysRow4),
86e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)};
87e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
88e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)const Key kNumericKeysRow1[] =
89e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles){
90e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)  { ui::VKEY_1, 1, 0, 0 },
915d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)  { ui::VKEY_2, 1, 0, 0 },
9251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)  { ui::VKEY_3, 1, 0, 0 },
9309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)  { ui::VKEY_4, 1, 0, 0 },
9409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)  { ui::VKEY_5, 1, 0, 0 },
95c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  { ui::VKEY_6, 1, 0, 0 },
965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_7, 1, 0, 0 },
9709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)  { ui::VKEY_8, 1, 0, 0 },
9809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)  { ui::VKEY_9, 1, 0, 0 },
99d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)  { ui::VKEY_0, 1, 0, 0 },
1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1025d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)const Key kNumericKeysRow2[] =
1035d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles){
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  // @#$%&-+()
1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_2, 1, ui::EF_SHIFT_DOWN, '@' },
1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_3, 1, ui::EF_SHIFT_DOWN, '#' },
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_4, 1, ui::EF_SHIFT_DOWN, '$' },
1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_5, 1, ui::EF_SHIFT_DOWN, '%' },
1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_7, 1, ui::EF_SHIFT_DOWN, '&' },
1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_SUBTRACT, 1, 0, '-' },
1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_ADD, 1, 0, '+' },
112591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch  { ui::VKEY_9, 1, ui::EF_SHIFT_DOWN, '(' },
1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_0, 1, ui::EF_SHIFT_DOWN, ')' },
1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
115926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const Key kNumericKeysRow3[] =
1179e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles){
1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  // *"':;!? backspace
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_MULTIPLY, 1, 0, '*' },
1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_OEM_7, 1, ui::EF_SHIFT_DOWN, '"' },
1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_OEM_7, 1, 0, '\'' },
1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_OEM_1, 1, ui::EF_SHIFT_DOWN, ':' },
1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_OEM_1, 1, 0, ';' },
124c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  { ui::VKEY_1, 1, ui::EF_SHIFT_DOWN, '!' },
1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_OEM_2, 1, ui::EF_SHIFT_DOWN, '?' },
1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_BACK, 1.5, 0, 0 },
1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const Key kNumericKeysRow4[] =
1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  // ABC _ / space (3) ,.enter
1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { SPECIAL_KEY_ALPHA, 1.5, 0, 0 },
1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_OEM_MINUS, 1, ui::EF_SHIFT_DOWN, '_' },
1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_OEM_2, 1, 0, '/' },
1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_SPACE, 3, 0, ' ' },
1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_OEM_COMMA, 1, 0, ',' },
137323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)  { ui::VKEY_OEM_PERIOD, 1, 0, '.' },
1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  { ui::VKEY_RETURN, 1.5, 0, 0 },
1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const Row kNumericRow1 = {
1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  0,
1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  kNumericKeysRow1,
1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  arraysize(kNumericKeysRow1),
1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const Row kNumericRow2 = {
1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  .5,
1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  kNumericKeysRow2,
1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  arraysize(kNumericKeysRow2),
1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const Row kNumericRow3 = {
15409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)  1.5,
15509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)  kNumericKeysRow3,
1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  arraysize(kNumericKeysRow3),
1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
158d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const Row kNumericRow4 = {
160c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)  0,
1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  kNumericKeysRow4,
1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  arraysize(kNumericKeysRow4),
1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
16402772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch
1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}  // namespace
1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)std::vector<const Row*> GetQWERTYRows() {
1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  std::vector<const Row*> rows;
169  rows.push_back(&kQWERTYRow1);
170  rows.push_back(&kQWERTYRow2);
171  rows.push_back(&kQWERTYRow3);
172  rows.push_back(&kQWERTYRow4);
173  return rows;
174}
175
176std::vector<const Row*> GetNumericRows() {
177  std::vector<const Row*> rows;
178  rows.push_back(&kNumericRow1);
179  rows.push_back(&kNumericRow2);
180  rows.push_back(&kNumericRow3);
181  rows.push_back(&kNumericRow4);
182  return rows;
183}
184
185}  // namespace examples
186}  // namespace mojo
187