LRESULT KeyboardWinAPI::wndproc (HWND msgwin, UINT msg, WPARAM wParam, LPARAM lParam) { LPARAM repeat_count = lParam & 0x0000FFFF; LPARAM scan_code = lParam & 0x00FF0000; LPARAM extended = lParam & 0x01000000; LPARAM context_code = lParam & 0x20000000; LPARAM was_down = lParam & 0x40000000; LPARAM key_up = lParam & 0x80000000; std::string key; if (key_up) { key = "-"; } else { key = was_down ? "=" : "+"; } bool have_key = false; switch (msg) { case WM_CHAR: case WM_UNICHAR: { key = ":"; // control chars if (wParam < 0x20 || (wParam >= 0x7f && wParam < 0xa0)) break; encode_utf8(wParam, key); if (verbose) { CLOG << (void*)msg << ": \"" << key << "\" from " << wParam << ": " << "x" << repeat_count << std::endl; } have_key = true; }; break; case WM_KEYDOWN: case WM_KEYUP: case WM_SYSKEYDOWN: case WM_SYSKEYUP: if (verbose) { CLOG << (void*)msg << ": " << key << wParam << ": " << "x" << repeat_count << std::endl; } switch (wParam) { #define MAP_KEY(vk, name) case vk: { \ key += name; \ have_key = true; \ }; break MAP_KEY(VK_SPACE, "Space"); MAP_KEY(VK_BACK, "BackSpace"); MAP_KEY(VK_ESCAPE,"Escape"); MAP_KEY(VK_CAPITAL, "CapsLock"); MAP_KEY(VK_TAB, "Tab"); MAP_KEY(VK_RETURN, "Return"); MAP_KEY(VK_CONTROL, "Ctrl"); //MAP_KEY(VK_LCONTROL, "Ctrl"); //MAP_KEY(VK_RCONTROL, "Ctrl"); MAP_KEY(VK_MENU, "Alt"); //MAP_KEY(VK_LMENU, "Alt"); //MAP_KEY(VK_RMENU, "Alt"); MAP_KEY(VK_F1, "F1"); MAP_KEY(VK_F2, "F2"); MAP_KEY(VK_F3, "F3"); MAP_KEY(VK_F4, "F4"); MAP_KEY(VK_F5, "F5"); MAP_KEY(VK_F6, "F6"); MAP_KEY(VK_F7, "F7"); MAP_KEY(VK_F8, "F8"); MAP_KEY(VK_F9, "F9"); MAP_KEY(VK_F10, "F10"); MAP_KEY(VK_F11, "F11"); MAP_KEY(VK_F12, "F12"); MAP_KEY(VK_F13, "F13"); MAP_KEY(VK_F14, "F14"); MAP_KEY(VK_F15, "F15"); MAP_KEY(VK_NUMPAD0, "NUMPAD0"); MAP_KEY(VK_NUMPAD1, "NUMPAD1"); MAP_KEY(VK_NUMPAD2, "NUMPAD2"); MAP_KEY(VK_NUMPAD3, "NUMPAD3"); MAP_KEY(VK_NUMPAD4, "NUMPAD4"); MAP_KEY(VK_NUMPAD5, "NUMPAD5"); MAP_KEY(VK_NUMPAD6, "NUMPAD6"); MAP_KEY(VK_NUMPAD7, "NUMPAD7"); MAP_KEY(VK_NUMPAD8, "NUMPAD8"); MAP_KEY(VK_NUMPAD9, "NUMPAD9"); MAP_KEY(VK_UP, "Up"); MAP_KEY(VK_DOWN, "Down"); MAP_KEY(VK_LEFT, "Left"); MAP_KEY(VK_RIGHT, "Right"); MAP_KEY(VK_PRIOR, "PageUp"); MAP_KEY(VK_NEXT, "PageDown"); MAP_KEY(VK_HOME, "Home"); MAP_KEY(VK_END, "End"); MAP_KEY(VK_NUMLOCK, "NumLock"); MAP_KEY(VK_SCROLL, "Scroll"); MAP_KEY(VK_PAUSE, "Pause"); MAP_KEY(VK_SHIFT, "Shift"); MAP_KEY(VK_INSERT, "Insert"); MAP_KEY(VK_DELETE, "Delete"); MAP_KEY(VK_LWIN, "Win"); MAP_KEY(VK_RWIN, "Win"); MAP_KEY(VK_APPS, "Menu"); MAP_KEY(VK_SNAPSHOT, "PrintScreen"); MAP_KEY(VK_CONVERT, "Convert"); MAP_KEY(VK_NONCONVERT, "Nonconvert"); MAP_KEY(VK_ACCEPT, "Accept"); MAP_KEY(VK_MODECHANGE, "Modechange"); MAP_KEY(VK_SELECT, "Select"); MAP_KEY(VK_PRINT, "Print"); MAP_KEY(VK_EXECUTE, "Execute"); MAP_KEY(VK_HELP, "Help"); default: { key += getPress(wParam, scan_code); have_key = true; } } break; } if (have_key) { for (int i=0 ; i<repeat_count ; ++i) presses.push_back(key); } return CallWindowProc(old_wndproc, msgwin, msg, wParam, lParam); }
void DigitalPressureSensor::saveCurPress() { this->saveData(getPress()); }