1/* 2 * Copyright 2018, Data61, CSIRO (ABN 41 687 119 230) 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <keyboard/codes.h> 8 9/* Mapping from scan codes to characters. Anything that is not a definitive 10 * character is mapped to 0. Note that this assumes set 2 scan codes. 11 */ 12static char codes[255] = { 13 [0x16] = '1', // or ! 14 [0x1e] = '2', // or @ 15 [0x26] = '3', // or # 16 [0x25] = '4', // or $ 17 [0x2e] = '5', // or % 18 [0x36] = '6', // or ^ 19 [0x3d] = '7', // or & 20 [0x3e] = '8', // or * 21 [0x46] = '9', // or ( 22 [0x45] = '0', // or ) 23 [0x66] = '\b', 24 [0x0d] = '\t', 25 [0x15] = 'Q', 26 [0x1d] = 'W', 27 [0x24] = 'E', 28 [0x2d] = 'R', 29 [0x2c] = 'T', 30 [0x35] = 'Y', 31 [0x3c] = 'U', 32 [0x43] = 'I', 33 [0x44] = 'O', 34 [0x4d] = 'P', 35 [0x54] = '[', // or { 36 [0x5b] = ']', // or } 37 [0x5d] = '\\', //or | 38 [0x1c] = 'A', 39 [0x1b] = 'S', 40 [0x23] = 'D', 41 [0x2b] = 'F', 42 [0x34] = 'G', 43 [0x33] = 'H', 44 [0x3b] = 'J', 45 [0x42] = 'K', 46 [0x4b] = 'L', 47 [0x4c] = ';', // or : 48 [0x52] = '\'', // or " 49 [0x5a] = '\n', // enter 50 [0x1a] = 'Z', 51 [0x22] = 'X', 52 [0x21] = 'C', 53 [0x2a] = 'V', 54 [0x32] = 'B', 55 [0x31] = 'N', 56 [0x3a] = 'M', 57 [0x41] = ',', // or < 58 [0x49] = '.', // or > 59 [0x4a] = '/', // or ? 60 [0x29] = ' ', // space 61 [0x76] = 033, // esc 62}; 63 64char sel4keyboard_code_to_char(int index) 65{ 66 if (index > sizeof(codes) || index < 0) { 67 return 0; 68 } 69 return codes[index]; 70} 71