1 // Copyright 2022 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #[derive(Debug, Clone, Copy)] 6 pub struct MapEntry { 7 pub linux_keycode: u16, 8 pub xkb: u32, 9 pub win: u32, 10 pub mac: u32, 11 } 12 13 // Based on Chromium's chromium/chromium/ui/events/keycodes/dom/keycode_converter_data.inc. 14 pub const KEYCODE_MAP: [MapEntry; 104] = [ 15 MapEntry { 16 linux_keycode: 30, 17 xkb: 0x0026, 18 win: 0x001e, 19 mac: 0x0000, 20 }, 21 MapEntry { 22 linux_keycode: 48, 23 xkb: 0x0038, 24 win: 0x0030, 25 mac: 0x000b, 26 }, 27 MapEntry { 28 linux_keycode: 46, 29 xkb: 0x0036, 30 win: 0x002e, 31 mac: 0x0008, 32 }, 33 MapEntry { 34 linux_keycode: 32, 35 xkb: 0x0028, 36 win: 0x0020, 37 mac: 0x0002, 38 }, 39 MapEntry { 40 linux_keycode: 18, 41 xkb: 0x001a, 42 win: 0x0012, 43 mac: 0x000e, 44 }, 45 MapEntry { 46 linux_keycode: 33, 47 xkb: 0x0029, 48 win: 0x0021, 49 mac: 0x0003, 50 }, 51 MapEntry { 52 linux_keycode: 34, 53 xkb: 0x002a, 54 win: 0x0022, 55 mac: 0x0005, 56 }, 57 MapEntry { 58 linux_keycode: 35, 59 xkb: 0x002b, 60 win: 0x0023, 61 mac: 0x0004, 62 }, 63 MapEntry { 64 linux_keycode: 23, 65 xkb: 0x001f, 66 win: 0x0017, 67 mac: 0x0022, 68 }, 69 MapEntry { 70 linux_keycode: 36, 71 xkb: 0x002c, 72 win: 0x0024, 73 mac: 0x0026, 74 }, 75 MapEntry { 76 linux_keycode: 37, 77 xkb: 0x002d, 78 win: 0x0025, 79 mac: 0x0028, 80 }, 81 MapEntry { 82 linux_keycode: 38, 83 xkb: 0x002e, 84 win: 0x0026, 85 mac: 0x0025, 86 }, 87 MapEntry { 88 linux_keycode: 50, 89 xkb: 0x003a, 90 win: 0x0032, 91 mac: 0x002e, 92 }, 93 MapEntry { 94 linux_keycode: 49, 95 xkb: 0x0039, 96 win: 0x0031, 97 mac: 0x002d, 98 }, 99 MapEntry { 100 linux_keycode: 24, 101 xkb: 0x0020, 102 win: 0x0018, 103 mac: 0x001f, 104 }, 105 MapEntry { 106 linux_keycode: 25, 107 xkb: 0x0021, 108 win: 0x0019, 109 mac: 0x0023, 110 }, 111 MapEntry { 112 linux_keycode: 16, 113 xkb: 0x0018, 114 win: 0x0010, 115 mac: 0x000c, 116 }, 117 MapEntry { 118 linux_keycode: 19, 119 xkb: 0x001b, 120 win: 0x0013, 121 mac: 0x000f, 122 }, 123 MapEntry { 124 linux_keycode: 31, 125 xkb: 0x0027, 126 win: 0x001f, 127 mac: 0x0001, 128 }, 129 MapEntry { 130 linux_keycode: 20, 131 xkb: 0x001c, 132 win: 0x0014, 133 mac: 0x0011, 134 }, 135 MapEntry { 136 linux_keycode: 22, 137 xkb: 0x001e, 138 win: 0x0016, 139 mac: 0x0020, 140 }, 141 MapEntry { 142 linux_keycode: 47, 143 xkb: 0x0037, 144 win: 0x002f, 145 mac: 0x0009, 146 }, 147 MapEntry { 148 linux_keycode: 17, 149 xkb: 0x0019, 150 win: 0x0011, 151 mac: 0x000d, 152 }, 153 MapEntry { 154 linux_keycode: 45, 155 xkb: 0x0035, 156 win: 0x002d, 157 mac: 0x0007, 158 }, 159 MapEntry { 160 linux_keycode: 21, 161 xkb: 0x001d, 162 win: 0x0015, 163 mac: 0x0010, 164 }, 165 MapEntry { 166 linux_keycode: 44, 167 xkb: 0x0034, 168 win: 0x002c, 169 mac: 0x0006, 170 }, 171 MapEntry { 172 linux_keycode: 2, 173 xkb: 0x000a, 174 win: 0x0002, 175 mac: 0x0012, 176 }, 177 MapEntry { 178 linux_keycode: 3, 179 xkb: 0x000b, 180 win: 0x0003, 181 mac: 0x0013, 182 }, 183 MapEntry { 184 linux_keycode: 4, 185 xkb: 0x000c, 186 win: 0x0004, 187 mac: 0x0014, 188 }, 189 MapEntry { 190 linux_keycode: 5, 191 xkb: 0x000d, 192 win: 0x0005, 193 mac: 0x0015, 194 }, 195 MapEntry { 196 linux_keycode: 6, 197 xkb: 0x000e, 198 win: 0x0006, 199 mac: 0x0017, 200 }, 201 MapEntry { 202 linux_keycode: 7, 203 xkb: 0x000f, 204 win: 0x0007, 205 mac: 0x0016, 206 }, 207 MapEntry { 208 linux_keycode: 8, 209 xkb: 0x0010, 210 win: 0x0008, 211 mac: 0x001a, 212 }, 213 MapEntry { 214 linux_keycode: 9, 215 xkb: 0x0011, 216 win: 0x0009, 217 mac: 0x001c, 218 }, 219 MapEntry { 220 linux_keycode: 10, 221 xkb: 0x0012, 222 win: 0x000a, 223 mac: 0x0019, 224 }, 225 MapEntry { 226 linux_keycode: 11, 227 xkb: 0x0013, 228 win: 0x000b, 229 mac: 0x001d, 230 }, 231 MapEntry { 232 linux_keycode: 28, 233 xkb: 0x0024, 234 win: 0x001c, 235 mac: 0x0024, 236 }, 237 MapEntry { 238 linux_keycode: 1, 239 xkb: 0x0009, 240 win: 0x0001, 241 mac: 0x0035, 242 }, 243 MapEntry { 244 linux_keycode: 14, 245 xkb: 0x0016, 246 win: 0x000e, 247 mac: 0x0033, 248 }, 249 MapEntry { 250 linux_keycode: 15, 251 xkb: 0x0017, 252 win: 0x000f, 253 mac: 0x0030, 254 }, 255 MapEntry { 256 linux_keycode: 57, 257 xkb: 0x0041, 258 win: 0x0039, 259 mac: 0x0031, 260 }, 261 MapEntry { 262 linux_keycode: 12, 263 xkb: 0x0014, 264 win: 0x000c, 265 mac: 0x001b, 266 }, 267 MapEntry { 268 linux_keycode: 13, 269 xkb: 0x0015, 270 win: 0x000d, 271 mac: 0x0018, 272 }, 273 MapEntry { 274 linux_keycode: 26, 275 xkb: 0x0022, 276 win: 0x001a, 277 mac: 0x0021, 278 }, 279 MapEntry { 280 linux_keycode: 27, 281 xkb: 0x0023, 282 win: 0x001b, 283 mac: 0x001e, 284 }, 285 MapEntry { 286 linux_keycode: 43, 287 xkb: 0x0033, 288 win: 0x002b, 289 mac: 0x002a, 290 }, 291 MapEntry { 292 linux_keycode: 39, 293 xkb: 0x002f, 294 win: 0x0027, 295 mac: 0x0029, 296 }, 297 MapEntry { 298 linux_keycode: 40, 299 xkb: 0x0030, 300 win: 0x0028, 301 mac: 0x0027, 302 }, 303 MapEntry { 304 linux_keycode: 41, 305 xkb: 0x0031, 306 win: 0x0029, 307 mac: 0x0032, 308 }, 309 MapEntry { 310 linux_keycode: 51, 311 xkb: 0x003b, 312 win: 0x0033, 313 mac: 0x002b, 314 }, 315 MapEntry { 316 linux_keycode: 52, 317 xkb: 0x003c, 318 win: 0x0034, 319 mac: 0x002f, 320 }, 321 MapEntry { 322 linux_keycode: 53, 323 xkb: 0x003d, 324 win: 0x0035, 325 mac: 0x002c, 326 }, 327 MapEntry { 328 linux_keycode: 58, 329 xkb: 0x0042, 330 win: 0x003a, 331 mac: 0x0039, 332 }, 333 MapEntry { 334 linux_keycode: 119, 335 xkb: 0x007f, 336 win: 0x0045, 337 mac: 0xffff, 338 }, 339 MapEntry { 340 linux_keycode: 110, 341 xkb: 0x0076, 342 win: 0xe052, 343 mac: 0x0072, 344 }, 345 MapEntry { 346 linux_keycode: 102, 347 xkb: 0x006e, 348 win: 0xe047, 349 mac: 0x0073, 350 }, 351 MapEntry { 352 linux_keycode: 104, 353 xkb: 0x0070, 354 win: 0xe049, 355 mac: 0x0074, 356 }, 357 MapEntry { 358 linux_keycode: 111, 359 xkb: 0x0077, 360 win: 0xe053, 361 mac: 0x0075, 362 }, 363 MapEntry { 364 linux_keycode: 107, 365 xkb: 0x0073, 366 win: 0xe04f, 367 mac: 0x0077, 368 }, 369 MapEntry { 370 linux_keycode: 109, 371 xkb: 0x0075, 372 win: 0xe051, 373 mac: 0x0079, 374 }, 375 MapEntry { 376 linux_keycode: 106, 377 xkb: 0x0072, 378 win: 0xe04d, 379 mac: 0x007c, 380 }, 381 MapEntry { 382 linux_keycode: 105, 383 xkb: 0x0071, 384 win: 0xe04b, 385 mac: 0x007b, 386 }, 387 MapEntry { 388 linux_keycode: 108, 389 xkb: 0x0074, 390 win: 0xe050, 391 mac: 0x007d, 392 }, 393 MapEntry { 394 linux_keycode: 103, 395 xkb: 0x006f, 396 win: 0xe048, 397 mac: 0x007e, 398 }, 399 MapEntry { 400 linux_keycode: 69, 401 xkb: 0x004d, 402 win: 0xe045, 403 mac: 0x0047, 404 }, 405 MapEntry { 406 linux_keycode: 98, 407 xkb: 0x006a, 408 win: 0xe035, 409 mac: 0x004b, 410 }, 411 MapEntry { 412 linux_keycode: 78, 413 xkb: 0x0056, 414 win: 0x004e, 415 mac: 0x0045, 416 }, 417 MapEntry { 418 linux_keycode: 28, 419 xkb: 0x0068, 420 win: 0xe01c, 421 mac: 0x004c, 422 }, 423 MapEntry { 424 linux_keycode: 79, 425 xkb: 0x0057, 426 win: 0x004f, 427 mac: 0x0053, 428 }, 429 MapEntry { 430 linux_keycode: 80, 431 xkb: 0x0058, 432 win: 0x0050, 433 mac: 0x0054, 434 }, 435 MapEntry { 436 linux_keycode: 81, 437 xkb: 0x0059, 438 win: 0x0051, 439 mac: 0x0055, 440 }, 441 MapEntry { 442 linux_keycode: 75, 443 xkb: 0x0053, 444 win: 0x004b, 445 mac: 0x0056, 446 }, 447 MapEntry { 448 linux_keycode: 76, 449 xkb: 0x0054, 450 win: 0x004c, 451 mac: 0x0057, 452 }, 453 MapEntry { 454 linux_keycode: 77, 455 xkb: 0x0055, 456 win: 0x004d, 457 mac: 0x0058, 458 }, 459 MapEntry { 460 linux_keycode: 71, 461 xkb: 0x004f, 462 win: 0x0047, 463 mac: 0x0059, 464 }, 465 MapEntry { 466 linux_keycode: 72, 467 xkb: 0x0050, 468 win: 0x0048, 469 mac: 0x005b, 470 }, 471 MapEntry { 472 linux_keycode: 73, 473 xkb: 0x0051, 474 win: 0x0049, 475 mac: 0x005c, 476 }, 477 MapEntry { 478 linux_keycode: 82, 479 xkb: 0x005a, 480 win: 0x0052, 481 mac: 0x0052, 482 }, 483 MapEntry { 484 linux_keycode: 116, 485 xkb: 0x007c, 486 win: 0xe05e, 487 mac: 0xffff, 488 }, 489 MapEntry { 490 linux_keycode: 121, 491 xkb: 0x0081, 492 win: 0x007e, 493 mac: 0x005f, 494 }, 495 MapEntry { 496 linux_keycode: 29, 497 xkb: 0x0025, 498 win: 0x001d, 499 mac: 0x003b, 500 }, 501 MapEntry { 502 linux_keycode: 42, 503 xkb: 0x0032, 504 win: 0x002a, 505 mac: 0x0038, 506 }, 507 MapEntry { 508 linux_keycode: 56, 509 xkb: 0x0040, 510 win: 0x0038, 511 mac: 0x003a, 512 }, 513 MapEntry { 514 linux_keycode: 125, 515 xkb: 0x0085, 516 win: 0xe05b, 517 mac: 0x0037, 518 }, 519 MapEntry { 520 linux_keycode: 97, 521 xkb: 0x0069, 522 win: 0xe01d, 523 mac: 0x003e, 524 }, 525 MapEntry { 526 linux_keycode: 54, 527 xkb: 0x003e, 528 win: 0x0036, 529 mac: 0x003c, 530 }, 531 MapEntry { 532 linux_keycode: 100, 533 xkb: 0x006c, 534 win: 0xe038, 535 mac: 0x003d, 536 }, 537 MapEntry { 538 linux_keycode: 126, 539 xkb: 0x0086, 540 win: 0xe05c, 541 mac: 0x0036, 542 }, 543 MapEntry { 544 linux_keycode: 55, 545 xkb: 0x003f, 546 win: 0x0037, 547 mac: 0x0043, 548 }, 549 MapEntry { 550 linux_keycode: 83, 551 xkb: 0x005b, 552 win: 0x0053, 553 mac: 0x0041, 554 }, 555 MapEntry { 556 linux_keycode: 74, 557 xkb: 0x0052, 558 win: 0x004a, 559 mac: 0x004e, 560 }, 561 MapEntry { 562 linux_keycode: 59, 563 xkb: 0x0043, 564 win: 0x003b, 565 mac: 0x007a, 566 }, 567 MapEntry { 568 linux_keycode: 60, 569 xkb: 0x0044, 570 win: 0x003c, 571 mac: 0x0078, 572 }, 573 MapEntry { 574 linux_keycode: 61, 575 xkb: 0x0045, 576 win: 0x003d, 577 mac: 0x0063, 578 }, 579 MapEntry { 580 linux_keycode: 62, 581 xkb: 0x0046, 582 win: 0x003e, 583 mac: 0x0076, 584 }, 585 MapEntry { 586 linux_keycode: 63, 587 xkb: 0x0047, 588 win: 0x003f, 589 mac: 0x0060, 590 }, 591 MapEntry { 592 linux_keycode: 64, 593 xkb: 0x0048, 594 win: 0x0040, 595 mac: 0x0061, 596 }, 597 MapEntry { 598 linux_keycode: 65, 599 xkb: 0x0049, 600 win: 0x0041, 601 mac: 0x0062, 602 }, 603 MapEntry { 604 linux_keycode: 66, 605 xkb: 0x004a, 606 win: 0x0042, 607 mac: 0x0064, 608 }, 609 MapEntry { 610 linux_keycode: 67, 611 xkb: 0x004b, 612 win: 0x0043, 613 mac: 0x0065, 614 }, 615 MapEntry { 616 linux_keycode: 68, 617 xkb: 0x004c, 618 win: 0x0044, 619 mac: 0x006d, 620 }, 621 MapEntry { 622 linux_keycode: 87, 623 xkb: 0x005f, 624 win: 0x0057, 625 mac: 0x0067, 626 }, 627 MapEntry { 628 linux_keycode: 88, 629 xkb: 0x0060, 630 win: 0x0058, 631 mac: 0x006f, 632 }, 633 MapEntry { 634 linux_keycode: 117, 635 xkb: 0x007d, 636 win: 0x0059, 637 mac: 0x0051, 638 }, 639 ]; 640