138a139,178 > Rune kbtabcaps[Nscan] = > { > [0x00] No, 0x1b, '1', '2', '3', '4', '5', '6', > [0x08] '7', '8', '9', '0', '-', '=', '\b', '\t', > [0x10] 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', > [0x18] 'O', 'P', '[', ']', '\n', Ctrl, 'A', 'S', > [0x20] 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', > [0x28] '\'', '`', Shift, '\\', 'Z', 'X', 'C', 'V', > [0x30] 'B', 'N', 'M', ',', '.', '/', Shift, '*', > [0x38] Latin, ' ', Ctrl, KF|1, KF|2, KF|3, KF|4, KF|5, > [0x40] KF|6, KF|7, KF|8, KF|9, KF|10, Num, Scroll, '7', > [0x48] '8', '9', '-', '4', '5', '6', '+', '1', > [0x50] '2', '3', '0', '.', No, No, No, KF|11, > [0x58] KF|12, No, No, No, No, No, No, No, > [0x60] No, No, No, No, No, No, No, No, > [0x68] No, No, No, No, No, No, No, No, > [0x70] No, No, No, No, No, No, No, No, > [0x78] No, Up, No, Up, No, No, No, No, > }; > > Rune kbtabshiftcaps[Nscan] = > { > [0x00] No, 0x1b, '!', '@', '#', '$', '%', '^', > [0x08] '&', '*', '(', ')', '_', '+', '\b', '\t', > [0x10] 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', > [0x18] 'o', 'p', '{', '}', '\n', Ctrl, 'a', 's', > [0x20] 'd', 'f', 'g', 'h', 'j', 'k', 'l', ':', > [0x28] '"', '~', Shift, '|', 'z', 'x', 'c', 'v', > [0x30] 'b', 'n', 'm', '<', '>', '?', Shift, '*', > [0x38] Latin, ' ', Ctrl, KF|1, KF|2, KF|3, KF|4, KF|5, > [0x40] KF|6, KF|7, KF|8, KF|9, KF|10, Num, Scroll, '7', > [0x48] '8', '9', '-', '4', '5', '6', '+', '1', > [0x50] '2', '3', '0', '.', No, No, No, KF|11, > [0x58] KF|12, No, No, No, No, No, No, No, > [0x60] No, No, No, No, No, No, No, No, > [0x68] No, No, No, No, No, No, No, No, > [0x70] No, No, No, No, No, No, No, No, > [0x78] No, View, No, Up, No, No, No, No, > }; > 310c350,354 < } else if(shift) --- > } else if (shift &&caps) > c = kbtabshiftcaps[c]; > else if (caps) > c = kbtabcaps[c]; > else if(shift) 317,319d360 < if(caps && c<='z' && c>='a') < c += 'A' - 'a'; < 475a517,518 > case 4: kbtabcaps[scanc] = r; break; > case 5: kbtabshiftcaps[scanc] = r; break; 491a535,536 > case 4: *r = kbtabcaps[*sc]; return 1; > case 5: *r = kbtabshiftcaps[*sc]; return 1;