Forum: PC-Programmierung Keycodes QWERTZ


von TastenAnschlag (Gast)


Lesenswert?

Moin,

ich schreibe gerade eine Funktion, die mir aus einem Char den 
HID-Keycode zurückgibt.
1
void getKeyCode(char c, Keyboard_t* _keyboard)
2
{
3
    switch (c)
4
    {
5
        case 'a':   _keyboard->Key1 = 0x04; break;
6
        case 'A':   _keyboard->Key1 = 0x04; _keyboard->L_SHIFT = 1; break;
7
        case 'b':   _keyboard->Key1 = 0x05; break;
8
        case 'B':   _keyboard->Key1 = 0x05; _keyboard->L_SHIFT = 1; break;
9
        case 'c':   _keyboard->Key1 = 0x06; break;
10
        case 'C':   _keyboard->Key1 = 0x06; _keyboard->L_SHIFT = 1; break;
11
        case 'd':   _keyboard->Key1 = 0x07; break;
12
        case 'D':   _keyboard->Key1 = 0x07; _keyboard->L_SHIFT = 1; break;
13
        case 'e':   _keyboard->Key1 = 0x08; break;
14
        case 'E':   _keyboard->Key1 = 0x08; _keyboard->L_SHIFT = 1; break;
15
        case 'f':   _keyboard->Key1 = 0x09; break;
16
        case 'F':   _keyboard->Key1 = 0x09; _keyboard->L_SHIFT = 1; break;
17
        case 'g':   _keyboard->Key1 = 0x0a; break;
18
        case 'G':   _keyboard->Key1 = 0x0a; _keyboard->L_SHIFT = 1; break;
19
        case 'h':   _keyboard->Key1 = 0x0b; break;
20
        case 'H':   _keyboard->Key1 = 0x0b; _keyboard->L_SHIFT = 1; break;
21
        case 'i':   _keyboard->Key1 = 0x0c; break;
22
        case 'I':   _keyboard->Key1 = 0x0c; _keyboard->L_SHIFT = 1; break;
23
        case 'j':   _keyboard->Key1 = 0x0d; break;
24
        case 'J':   _keyboard->Key1 = 0x0d; _keyboard->L_SHIFT = 1; break;
25
        case 'k':   _keyboard->Key1 = 0x0e; break;
26
        case 'K':   _keyboard->Key1 = 0x0e; _keyboard->L_SHIFT = 1; break;
27
        case 'l':   _keyboard->Key1 = 0x0f; break;
28
        case 'L':   _keyboard->Key1 = 0x0f; _keyboard->L_SHIFT = 1; break;
29
        case 'm':   _keyboard->Key1 = 0x10; break;
30
        case 'M':   _keyboard->Key1 = 0x10; _keyboard->L_SHIFT = 1; break;
31
        case 'n':   _keyboard->Key1 = 0x11; break;
32
        case 'N':   _keyboard->Key1 = 0x11; _keyboard->L_SHIFT = 1; break;
33
        case 'o':   _keyboard->Key1 = 0x12; break;
34
        case 'O':   _keyboard->Key1 = 0x12; _keyboard->L_SHIFT = 1; break;
35
        case 'p':   _keyboard->Key1 = 0x13; break;
36
        case 'P':   _keyboard->Key1 = 0x13; _keyboard->L_SHIFT = 1; break;
37
        case 'q':   _keyboard->Key1 = 0x14; break;
38
        case 'Q':   _keyboard->Key1 = 0x14; _keyboard->L_SHIFT = 1; break;
39
        case 'r':   _keyboard->Key1 = 0x15; break;
40
        case 'R':   _keyboard->Key1 = 0x15; _keyboard->L_SHIFT = 1; break;
41
        case 's':   _keyboard->Key1 = 0x16; break;
42
        case 'S':   _keyboard->Key1 = 0x16; _keyboard->L_SHIFT = 1; break;
43
        case 't':   _keyboard->Key1 = 0x17; break;
44
        case 'T':   _keyboard->Key1 = 0x17; _keyboard->L_SHIFT = 1; break;
45
        case 'u':   _keyboard->Key1 = 0x18; break;
46
        case 'U':   _keyboard->Key1 = 0x18; _keyboard->L_SHIFT = 1; break;
47
        case 'v':   _keyboard->Key1 = 0x19; break;
48
        case 'V':   _keyboard->Key1 = 0x19; _keyboard->L_SHIFT = 1; break;
49
        case 'w':   _keyboard->Key1 = 0x1a; break;
50
        case 'W':   _keyboard->Key1 = 0x1a; _keyboard->L_SHIFT = 1; break;
51
        case 'x':   _keyboard->Key1 = 0x1b; break;
52
        case 'X':   _keyboard->Key1 = 0x1b; _keyboard->L_SHIFT = 1; break;
53
54
        #ifdef USE_US_LAYOUT
55
            case 'y':   _keyboard->Key1 = 0x1c; break;
56
            case 'Y':   _keyboard->Key1 = 0x1c; _keyboard->L_SHIFT = 1; break;
57
            case 'z':   _keyboard->Key1 = 0x1d; break;
58
            case 'Z':   _keyboard->Key1 = 0x1d; _keyboard->L_SHIFT = 1; break;
59
        #else
60
            case 'z':   _keyboard->Key1 = 0x1c; break;
61
            case 'Z':   _keyboard->Key1 = 0x1c; _keyboard->L_SHIFT = 1; break;
62
            case 'y':   _keyboard->Key1 = 0x1d; break;
63
            case 'Y':   _keyboard->Key1 = 0x1d; _keyboard->L_SHIFT = 1; break;
64
        #endif
65
66
        case '1':   _keyboard->Key1 = 0x1e; break;
67
        case '!':   _keyboard->Key1 = 0x1e; _keyboard->L_SHIFT = 1; break;
68
        case '2':   _keyboard->Key1 = 0x1f; break;
69
        case '"':   _keyboard->Key1 = 0x1f; _keyboard->L_SHIFT = 1; break;
70
        case '²':   _keyboard->Key1 = 0x1f; _keyboard->L_CTRL  = 1; _keyboard->L_ALT = 1; break;
71
        case '3':   _keyboard->Key1 = 0x20; break;
72
        case '§':   _keyboard->Key1 = 0x20; _keyboard->L_SHIFT = 1; break;
73
        case '³':   _keyboard->Key1 = 0x20; _keyboard->L_CTRL  = 1; _keyboard->L_ALT = 1; break;
74
        case '4':   _keyboard->Key1 = 0x21; break;
75
        case '$':   _keyboard->Key1 = 0x21; _keyboard->L_SHIFT = 1; break;
76
        case '5':   _keyboard->Key1 = 0x22; break;
77
        case '%':   _keyboard->Key1 = 0x22; _keyboard->L_SHIFT = 1; break;
78
        case '6':   _keyboard->Key1 = 0x23; break;
79
        case '&':   _keyboard->Key1 = 0x23; _keyboard->L_SHIFT = 1; break;
80
        case '7':   _keyboard->Key1 = 0x24; break;
81
        case '/':   _keyboard->Key1 = 0x24; _keyboard->L_SHIFT = 1; break;
82
        case '{':   _keyboard->Key1 = 0x24; _keyboard->L_CTRL  = 1; _keyboard->L_ALT = 1; break;
83
        case '8':   _keyboard->Key1 = 0x25; break;
84
        case '(':   _keyboard->Key1 = 0x25; _keyboard->L_SHIFT = 1; break;
85
        case '[':   _keyboard->Key1 = 0x25; _keyboard->L_CTRL  = 1; _keyboard->L_ALT = 1; break;
86
        case '9':   _keyboard->Key1 = 0x26; break;
87
        case ')':   _keyboard->Key1 = 0x26; _keyboard->L_SHIFT = 1; break;
88
        case ']':   _keyboard->Key1 = 0x26; _keyboard->L_CTRL  = 1; _keyboard->L_ALT = 1; break;
89
        case '0':   _keyboard->Key1 = 0x27; break;
90
        case '=':   _keyboard->Key1 = 0x27; _keyboard->L_SHIFT = 1; break;
91
        case '}':   _keyboard->Key1 = 0x27; _keyboard->L_CTRL  = 1; _keyboard->L_ALT = 1; break;
92
93
        case ' ':   _keyboard->Key1 = 0x2c; break;
94
        case 'ß':   _keyboard->Key1 = 0x2d; break;
95
        case '?':   _keyboard->Key1 = 0x2d; _keyboard->L_SHIFT = 1; break;
96
        case '\\':  _keyboard->Key1 = 0x2d; _keyboard->L_CTRL  = 1; _keyboard->L_ALT = 1; break;
97
        case '´':   _keyboard->Key1 = 0x2e; break;
98
        case '`':   _keyboard->Key1 = 0x2e; _keyboard->L_SHIFT = 1; break;
99
        case 'ü':   _keyboard->Key1 = 0x2f; break;
100
        case 'Ü':   _keyboard->Key1 = 0x2f; _keyboard->L_SHIFT = 1; break;
101
        case '+':   _keyboard->Key1 = 0x30; break;
102
        case '*':   _keyboard->Key1 = 0x30; _keyboard->L_SHIFT = 1; break;
103
        case '~':   _keyboard->Key1 = 0x30; _keyboard->L_CTRL  = 1; _keyboard->L_ALT = 1; break;
104
        case '#':   _keyboard->Key1 = 0x31; break;
105
        case '\'':  _keyboard->Key1 = 0x31; _keyboard->L_SHIFT = 1; break;
106
        case 'ö':   _keyboard->Key1 = 0x32; break;
107
        case 'Ö':   _keyboard->Key1 = 0x32; _keyboard->L_SHIFT = 1; break;
108
        case 'ä':   _keyboard->Key1 = 0x34; break;
109
        case 'Ä':   _keyboard->Key1 = 0x34; _keyboard->L_SHIFT = 1; break;
110
        case '^':   _keyboard->Key1 = 0x35; break;
111
        case '°':   _keyboard->Key1 = 0x35; _keyboard->L_SHIFT = 1; break;
112
        case ',':   _keyboard->Key1 = 0x36; break;
113
        case ';':   _keyboard->Key1 = 0x36; _keyboard->L_SHIFT = 1; break;
114
        case '.':   _keyboard->Key1 = 0x37; break;
115
        case ':':   _keyboard->Key1 = 0x37; _keyboard->L_SHIFT = 1; break;
116
        case '-':   _keyboard->Key1 = 0x38; break;
117
        case '_':   _keyboard->Key1 = 0x38; _keyboard->L_SHIFT = 1; break;
118
119
120
        default:    _keyboard->Key1 = 0;
121
    }
122
}

Das funktioniert auch soweit schon ganz gut, nur finde ich einfach nicht 
die Codes für die "< > |"-Taste raus. Hat da jemand einen Tipp?

Danke!

von Georg B. (diereinegier)


Lesenswert?

Ist hier erschöpfend erklärt:

http://www.barcodeman.com/altek/mule/scandoc.php

von TastenAnschlag (Gast)


Lesenswert?

aber leider nicht für das deutsche Layout :(

von F. F. (foldi)


Lesenswert?

< = alt+60
> = alt+62

☺☺☺☺☺☻☺☺☺☺☺

von TastenAnschlag (Gast)


Lesenswert?

1
case '<':   _keyboard->Key1 = 0x3c; break;

Bringt mir Strg+F :D und 3e leider gar nichts...

von TastenAnschlag (Gast)


Lesenswert?

Ok, ich hab es:
1
case '<':   _keyboard->Key1 = 0x64; break;
2
case '>':   _keyboard->Key1 = 0x64; _keyboard->L_SHIFT = 1; break;
3
case '|':   _keyboard->Key1 = 0x64; _keyboard->L_CTRL  = 1; _keyboard->L_ALT = 1; break;

Trotzdem Danke an euch! :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.