Tastatur Layout Unabhängig VK ??
-
Hi ich bin ziemlich von den Tastaturlayout und Scan Codes verwirt.
Ich such nen Weg die Keys Tastaturlayout unabhängig. Also das wenn ichs auf ner deutschen Tastatur aufzeichne auch auf ner englishen abspielen könnte...Hier mal der Code von der ich den keybpard dump erstellt hab:
int vKey[257] = { VK_LBUTTON, VK_RBUTTON, VK_MBUTTON, 0x05, 0x06, VK_BACK, VK_TAB, VK_CLEAR, VK_RETURN, VK_SHIFT, VK_CONTROL, VK_MENU, VK_PAUSE, VK_CAPITAL, VK_ESCAPE, VK_SPACE, VK_PRIOR, VK_NEXT, VK_END, VK_HOME, VK_LEFT, VK_UP, VK_RIGHT, VK_DOWN, VK_SELECT, VK_PRINT, VK_EXECUTE, VK_SNAPSHOT, VK_INSERT, VK_DELETE, VK_HELP, 30,31,32,33,34,35,36,37,38,39, // 0-9 Tasten 41,42,43,44,45,46,47,48,49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, // A ,B ,C ,D ,E ,F ,G ,H ,I,J ,K ,L ,M ,N ,O , 50,51,52,53,54,55,56,57,58,59,0x5A, // P ,Q ,R ,S ,T ,U ,V ,W ,X ,Y ,Z VK_LWIN, VK_RWIN, VK_APPS, VK_NUMPAD0, VK_NUMPAD1, VK_NUMPAD2, VK_NUMPAD3, VK_NUMPAD4, VK_NUMPAD5, VK_NUMPAD6, VK_NUMPAD7, VK_NUMPAD8, VK_NUMPAD9, VK_MULTIPLY, VK_ADD, VK_SEPARATOR, VK_SUBTRACT, VK_DECIMAL, VK_DIVIDE, VK_F1, VK_F2, VK_F3, VK_F4, VK_F5, VK_F6, VK_F7, VK_F8, VK_F9, VK_F10, VK_F11, VK_F12, VK_F13, VK_F14, VK_F15, VK_F16, VK_F17, VK_F18, VK_F19, VK_F20, VK_F21, VK_F22, VK_F23, VK_F24, VK_NUMLOCK, VK_SCROLL, VK_LSHIFT, VK_RSHIFT, VK_LCONTROL, VK_RCONTROL, VK_LMENU, VK_RMENU, VK_OEM_1, VK_OEM_PLUS, VK_OEM_COMMA, VK_OEM_MINUS, VK_OEM_PERIOD, VK_OEM_2, VK_OEM_3, VK_OEM_4, VK_OEM_5, VK_OEM_6, VK_OEM_7, VK_OEM_8 }; CString strKey[257] = { "left mouse", "right mouse", "middel mouse", "mouse4", "mouse5", "backspace", "tab", "clear", "return", "shift", "ctrl", "alt", "pause", "CAPS LOCK", "escape", "space", "page up", "page down", "end", "home", "left", "up", "right", "down", "select", "print", "execute", "print snapshot", "insert", "delete", "help", "0","1","2","3","4","5","6","7","8","9", // 0-9 Tasten "A" ,"B" ,"C" ,"D" ,"E" ,"F" ,"G" ,"H" ,"I","J","K","L","M","N","O", "P" ,"Q" ,"R" ,"S" ,"T" ,"U" ,"V" ,"W" ,"X" ,"Y" ,"Z", "Left Window", "Rigth Window", "applications", "numpad 0", "numpad 1", "numpad 2", "numpad 3", "numpad 4", "numpad 5", "numpad 6", "numpad 7", "numpad 8", "numpad 9", "muliply", "add", "seperator", "subtract", "decimal", "divide", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21", "F22", "F23", "F24", "NUM lock", "SCROLL lock", "left shift", "right shift", "left ctrl", "right ctrl", "left alt", "right alt", ";:", "+", ",", "-", ".", "//?", "`~", "[{", "\|", "]}", "single-quote/double-quote", "unknown" }; CStdioFile testfile; testfile.Open("C://keyboard_dump.txt", CFile::modeCreate | CFile::modeWrite | CFile::typeText); int i = 0; while(vKey[i] != 0) { LONG lScan = MapVirtualKey(vKey[i], 0) << 16; // if it's an extended key, add the extended flag //if (fExtended) lScan |= 0x01000000L; CString str; int nBufferLen = 64; int nLen; do { nBufferLen *= 2; LPTSTR psz = str.GetBufferSetLength(nBufferLen); nLen = ::GetKeyNameText(lScan, psz, nBufferLen + 1); str.ReleaseBuffer(nLen); } while(nLen == nBufferLen); strKey[i] = "msdn: " + strKey[i] + "][de: " + str; CString stri; stri.Format("%i", i); CString strvkey; strvkey.Format("%i", vKey[i]); testfile.WriteString("VVKNUM: " + stri + " | TEXT: " + strKey[i] + " | VKNUM: " + strvkey + " |\r\n"); i++; } testfile.Close(); int AnzahlKeys = 0; while(strKey[AnzahlKeys] != "") AnzahlKeys++; /* Wieviele Keys ? CString msg; msg.Format("%i", i); AfxMessageBox(msg); */ i = 0;Und hier die keydump:
VVKNUM: 0 | TEXT: msdn: left mouse][de: | VKNUM: 1 | VVKNUM: 1 | TEXT: msdn: right mouse][de: | VKNUM: 2 | VVKNUM: 2 | TEXT: msdn: middel mouse][de: | VKNUM: 4 | VVKNUM: 3 | TEXT: msdn: mouse4][de: | VKNUM: 5 | VVKNUM: 4 | TEXT: msdn: mouse5][de: | VKNUM: 6 | VVKNUM: 5 | TEXT: msdn: backspace][de: | VKNUM: 8 | VVKNUM: 6 | TEXT: msdn: tab][de: | VKNUM: 9 | VVKNUM: 7 | TEXT: msdn: clear][de: | VKNUM: 12 | VVKNUM: 8 | TEXT: msdn: return][de: EINGABE (ZEHNERTASTATUR) | VKNUM: 13 | VVKNUM: 9 | TEXT: msdn: shift][de: | VKNUM: 16 | VVKNUM: 10 | TEXT: msdn: ctrl][de: STRG-RECHTS | VKNUM: 17 | VVKNUM: 11 | TEXT: msdn: alt][de: ALT GR | VKNUM: 18 | VVKNUM: 12 | TEXT: msdn: pause][de: | VKNUM: 19 | VVKNUM: 13 | TEXT: msdn: CAPS LOCK][de: | VKNUM: 20 | VVKNUM: 14 | TEXT: msdn: escape][de: | VKNUM: 27 | VVKNUM: 15 | TEXT: msdn: space][de: | VKNUM: 32 | VVKNUM: 16 | TEXT: msdn: page up][de: BILD-NACH-OBEN | VKNUM: 33 | VVKNUM: 17 | TEXT: msdn: page down][de: BILD-NACH-UNTEN | VKNUM: 34 | VVKNUM: 18 | TEXT: msdn: end][de: ENDE | VKNUM: 35 | VVKNUM: 19 | TEXT: msdn: home][de: POS1 | VKNUM: 36 | VVKNUM: 20 | TEXT: msdn: left][de: NACH-LINKS | VKNUM: 37 | VVKNUM: 21 | TEXT: msdn: up][de: NACH-OBEN | VKNUM: 38 | VVKNUM: 22 | TEXT: msdn: right][de: NACH-RECHTS | VKNUM: 39 | VVKNUM: 23 | TEXT: msdn: down][de: NACH-UNTEN | VKNUM: 40 | VVKNUM: 24 | TEXT: msdn: select][de: | VKNUM: 41 | VVKNUM: 25 | TEXT: msdn: print][de: | VKNUM: 42 | VVKNUM: 26 | TEXT: msdn: execute][de: | VKNUM: 43 | VVKNUM: 27 | TEXT: msdn: print snapshot][de: <00> | VKNUM: 44 | VVKNUM: 28 | TEXT: msdn: insert][de: EINFG | VKNUM: 45 | VVKNUM: 29 | TEXT: msdn: delete][de: ENTF | VKNUM: 46 | VVKNUM: 30 | TEXT: msdn: help][de: | VKNUM: 47 | VVKNUM: 31 | TEXT: msdn: 0][de: | VKNUM: 30 | VVKNUM: 32 | TEXT: msdn: 1][de: | VKNUM: 31 | VVKNUM: 33 | TEXT: msdn: 2][de: | VKNUM: 32 | VVKNUM: 34 | TEXT: msdn: 3][de: BILD-NACH-OBEN | VKNUM: 33 | VVKNUM: 35 | TEXT: msdn: 4][de: BILD-NACH-UNTEN | VKNUM: 34 | VVKNUM: 36 | TEXT: msdn: 5][de: ENDE | VKNUM: 35 | VVKNUM: 37 | TEXT: msdn: 6][de: POS1 | VKNUM: 36 | VVKNUM: 38 | TEXT: msdn: 7][de: NACH-LINKS | VKNUM: 37 | VVKNUM: 39 | TEXT: msdn: 8][de: NACH-OBEN | VKNUM: 38 | VVKNUM: 40 | TEXT: msdn: 9][de: NACH-RECHTS | VKNUM: 39 | VVKNUM: 41 | TEXT: msdn: A][de: | VKNUM: 41 | VVKNUM: 42 | TEXT: msdn: B][de: | VKNUM: 42 | VVKNUM: 43 | TEXT: msdn: C][de: | VKNUM: 43 | VVKNUM: 44 | TEXT: msdn: D][de: <00> | VKNUM: 44 | VVKNUM: 45 | TEXT: msdn: E][de: EINFG | VKNUM: 45 | VVKNUM: 46 | TEXT: msdn: F][de: ENTF | VKNUM: 46 | VVKNUM: 47 | TEXT: msdn: G][de: | VKNUM: 47 | VVKNUM: 48 | TEXT: msdn: H][de: 0 | VKNUM: 48 | VVKNUM: 49 | TEXT: msdn: I][de: 1 | VKNUM: 49 | VVKNUM: 50 | TEXT: msdn: J][de: J | VKNUM: 74 | VVKNUM: 51 | TEXT: msdn: K][de: K | VKNUM: 75 | VVKNUM: 52 | TEXT: msdn: L][de: L | VKNUM: 76 | VVKNUM: 53 | TEXT: msdn: M][de: M | VKNUM: 77 | VVKNUM: 54 | TEXT: msdn: N][de: N | VKNUM: 78 | VVKNUM: 55 | TEXT: msdn: O][de: O | VKNUM: 79 | VVKNUM: 56 | TEXT: msdn: P][de: 2 | VKNUM: 50 | VVKNUM: 57 | TEXT: msdn: Q][de: 3 | VKNUM: 51 | VVKNUM: 58 | TEXT: msdn: R][de: 4 | VKNUM: 52 | VVKNUM: 59 | TEXT: msdn: S][de: 5 | VKNUM: 53 | VVKNUM: 60 | TEXT: msdn: T][de: 6 | VKNUM: 54 | VVKNUM: 61 | TEXT: msdn: U][de: 7 | VKNUM: 55 | VVKNUM: 62 | TEXT: msdn: V][de: 8 | VKNUM: 56 | VVKNUM: 63 | TEXT: msdn: W][de: 9 | VKNUM: 57 | VVKNUM: 64 | TEXT: msdn: X][de: | VKNUM: 58 | VVKNUM: 65 | TEXT: msdn: Y][de: | VKNUM: 59 | VVKNUM: 66 | TEXT: msdn: Z][de: Z | VKNUM: 90 | VVKNUM: 67 | TEXT: msdn: Left Window][de: LINKE WINDOWS | VKNUM: 91 | VVKNUM: 68 | TEXT: msdn: Rigth Window][de: RECHTE WINDOWS | VKNUM: 92 | VVKNUM: 69 | TEXT: msdn: applications][de: ANWENDUNG | VKNUM: 93 | VVKNUM: 70 | TEXT: msdn: numpad 0][de: EINFG | VKNUM: 96 | VVKNUM: 71 | TEXT: msdn: numpad 1][de: ENDE | VKNUM: 97 | VVKNUM: 72 | TEXT: msdn: numpad 2][de: NACH-UNTEN | VKNUM: 98 | VVKNUM: 73 | TEXT: msdn: numpad 3][de: BILD-NACH-UNTEN | VKNUM: 99 | VVKNUM: 74 | TEXT: msdn: numpad 4][de: NACH-LINKS | VKNUM: 100 | VVKNUM: 75 | TEXT: msdn: numpad 5][de: | VKNUM: 101 | VVKNUM: 76 | TEXT: msdn: numpad 6][de: NACH-RECHTS | VKNUM: 102 | VVKNUM: 77 | TEXT: msdn: numpad 7][de: POS1 | VKNUM: 103 | VVKNUM: 78 | TEXT: msdn: numpad 8][de: NACH-OBEN | VKNUM: 104 | VVKNUM: 79 | TEXT: msdn: numpad 9][de: BILD-NACH-OBEN | VKNUM: 105 | VVKNUM: 80 | TEXT: msdn: muliply][de: DRUCK | VKNUM: 106 | VVKNUM: 81 | TEXT: msdn: add][de: + | VKNUM: 107 | VVKNUM: 82 | TEXT: msdn: seperator][de: | VKNUM: 108 | VVKNUM: 83 | TEXT: msdn: subtract][de: - | VKNUM: 109 | VVKNUM: 84 | TEXT: msdn: decimal][de: ENTF | VKNUM: 110 | VVKNUM: 85 | TEXT: msdn: divide][de: (ZEHNERTASTATUR) | VKNUM: 111 | VVKNUM: 86 | TEXT: msdn: F1][de: | VKNUM: 112 | VVKNUM: 87 | TEXT: msdn: F2][de: | VKNUM: 113 | VVKNUM: 88 | TEXT: msdn: F3][de: | VKNUM: 114 | VVKNUM: 89 | TEXT: msdn: F4][de: | VKNUM: 115 | VVKNUM: 90 | TEXT: msdn: F5][de: | VKNUM: 116 | VVKNUM: 91 | TEXT: msdn: F6][de: | VKNUM: 117 | VVKNUM: 92 | TEXT: msdn: F7][de: | VKNUM: 118 | VVKNUM: 93 | TEXT: msdn: F8][de: | VKNUM: 119 | VVKNUM: 94 | TEXT: msdn: F9][de: | VKNUM: 120 | VVKNUM: 95 | TEXT: msdn: F10][de: | VKNUM: 121 | VVKNUM: 96 | TEXT: msdn: F11][de: | VKNUM: 122 | VVKNUM: 97 | TEXT: msdn: F12][de: | VKNUM: 123 | VVKNUM: 98 | TEXT: msdn: F13][de: | VKNUM: 124 | VVKNUM: 99 | TEXT: msdn: F14][de: | VKNUM: 125 | VVKNUM: 100 | TEXT: msdn: F15][de: | VKNUM: 126 | VVKNUM: 101 | TEXT: msdn: F16][de: | VKNUM: 127 | VVKNUM: 102 | TEXT: msdn: F17][de: | VKNUM: 128 | VVKNUM: 103 | TEXT: msdn: F18][de: | VKNUM: 129 | VVKNUM: 104 | TEXT: msdn: F19][de: | VKNUM: 130 | VVKNUM: 105 | TEXT: msdn: F20][de: | VKNUM: 131 | VVKNUM: 106 | TEXT: msdn: F21][de: | VKNUM: 132 | VVKNUM: 107 | TEXT: msdn: F22][de: | VKNUM: 133 | VVKNUM: 108 | TEXT: msdn: F23][de: | VKNUM: 134 | VVKNUM: 109 | TEXT: msdn: F24][de: | VKNUM: 135 | VVKNUM: 110 | TEXT: msdn: NUM lock][de: NUM-FESTSTELL | VKNUM: 144 | VVKNUM: 111 | TEXT: msdn: SCROLL lock][de: UNTBR | VKNUM: 145 | VVKNUM: 112 | TEXT: msdn: left shift][de: | VKNUM: 160 | VVKNUM: 113 | TEXT: msdn: right shift][de: | VKNUM: 161 | VVKNUM: 114 | TEXT: msdn: left ctrl][de: STRG-RECHTS | VKNUM: 162 | VVKNUM: 115 | TEXT: msdn: right ctrl][de: STRG-RECHTS | VKNUM: 163 | VVKNUM: 116 | TEXT: msdn: left alt][de: ALT GR | VKNUM: 164 | VVKNUM: 117 | TEXT: msdn: right alt][de: ALT GR | VKNUM: 165 | VVKNUM: 118 | TEXT: msdn: ;:][de: ü | VKNUM: 186 | VVKNUM: 119 | TEXT: msdn: +][de: + | VKNUM: 187 | VVKNUM: 120 | TEXT: msdn: ,][de: , | VKNUM: 188 | VVKNUM: 121 | TEXT: msdn: -][de: (ZEHNERTASTATUR) | VKNUM: 189 | VVKNUM: 122 | TEXT: msdn: .][de: . | VKNUM: 190 | VVKNUM: 123 | TEXT: msdn: //?][de: # | VKNUM: 191 | VVKNUM: 124 | TEXT: msdn: `~][de: ö | VKNUM: 192 | VVKNUM: 125 | TEXT: msdn: [{][de: ß | VKNUM: 219 | VVKNUM: 126 | TEXT: msdn: |][de: ZIRKUMFLEX | VKNUM: 220 | VVKNUM: 127 | TEXT: msdn: ]}][de: AKUT | VKNUM: 221 | VVKNUM: 128 | TEXT: msdn: single-quote/double-quote][de: ä | VKNUM: 222 | VVKNUM: 129 | TEXT: msdn: unknown][de: | VKNUM: 223 |So jetz würd ich gern Wissen wo der Fehler bei der Umwandlung ist den normalerweise müsste ja US ("a") = DE ("A") sein ... Laut der Keydump ists aber nicht so hat das was damit zu tun:
LONG lScan = MapVirtualKey(vKey[i], 0) << 16; // if it's an extended key, add the extended flag //if (fExtended) lScan |= 0x01000000L;Weil da bin ich mir nicht alzu sicher ob da was falsch verändert wird. Hab ich aus der CHotKeyCtrl Classe entnomen (winctrl2.cpp : GetKeyName)
Wär für jeden Tipp dankbar.
greetz
-
du bist doof
-
Puh ich hab das jetz soweit Kapiert jetz meine einzige Fragenoch:
per GetAsyncKeyState(int vKey)
krieg ich ja den Status pb gedrückt oder nicht... Aber wie krieg ich raus ob der Key der gedrückt wurde extended ist ?? bzw nur auf den extended Key reagieren ??