bool BaseKeyboardState::readKey(Common::Event *event) { //_currentPrintable = (event->type == SDL_TEXTINPUT); // TODO _currentCharCode = keyCodeToVKey(event); // Verify that this is a printable ISO-8859-character (including the upper charset) if ((_currentCharCode <= 0x7E && _currentCharCode >= 0x20) || (_currentCharCode <= 0xFF && _currentCharCode >= 0xA0)) { _currentPrintable = true; } else { _currentPrintable = false; } //_currentKeyData = KeyData; _currentControl = isControlDown(); _currentAlt = isAltDown(); _currentShift = isShiftDown(); return STATUS_OK; }
bool BaseKeyboardState::readKey(Common::Event *event) { //_currentPrintable = (event->type == SDL_TEXTINPUT); // TODO _currentCharCode = keyCodeToVKey(event); if ((_currentCharCode <= Common::KEYCODE_z && _currentCharCode >= Common::KEYCODE_a) || (_currentCharCode <= Common::KEYCODE_9 && _currentCharCode >= Common::KEYCODE_0) || (_currentCharCode == Common::KEYCODE_SPACE)) { _currentPrintable = true; } else { _currentPrintable = false; } //_currentKeyData = KeyData; _currentControl = isControlDown(); _currentAlt = isAltDown(); _currentShift = isShiftDown(); return STATUS_OK; }
bool BaseKeyboardState::readKey(Common::Event *event) { //_currentPrintable = (event->type == SDL_TEXTINPUT); // TODO _currentCharCode = keyCodeToVKey(event); // convert all lowercase keys to uppercase to make it easier for handling later on for consistency if (Common::isLower(_currentCharCode) && (event->kbd.hasFlags(Common::KBD_SHIFT) || event->kbd.flags & Common::KBD_CAPS)) { if (!(event->kbd.keycode >= Common::KEYCODE_F1 && event->kbd.keycode <= Common::KEYCODE_F12)) { _currentCharCode = toupper(_currentCharCode); } } // Verify that this is a printable ISO-8859-character (including the upper charset) if ((_currentCharCode <= 0x7E && _currentCharCode >= 0x20) || (_currentCharCode <= 0xFF && _currentCharCode >= 0xA0)) { _currentPrintable = true; } else { _currentPrintable = false; } //_currentKeyData = KeyData; _currentControl = isControlDown(); _currentAlt = isAltDown(); _currentShift = isShiftDown(); return STATUS_OK; }
// // keys handling // returns: true if processed, false if ignored // qbool FL_Key(filelist_t *fl, int key) { if (fl->mode != FL_MODE_NORMAL) { switch(key) { case 'y': case 'Y': case K_ENTER: if (!FL_IsCurrentDir(fl)) { if (fl->mode == FL_MODE_DELETE) { FL_DeleteFile(fl); } #ifdef WITH_ZIP else if (fl->mode == FL_MODE_COMPRESS) { FL_CompressFile(fl); // Compress file. } else if (fl->mode == FL_MODE_DECOMPRESS) { FL_DecompressFile(fl); // Decompress file. } #endif // WITH_ZIP } fl->mode = FL_MODE_NORMAL; return true; case 'n': case 'N': case K_ESCAPE: fl->mode = FL_MODE_NORMAL; return true; } return false; } // Check for search if ((key >= ' ' && key <= '~') && (fl->search_valid || (!isAltDown() && !isCtrlDown() && !isShiftDown()))) { int len; if (!fl->search_valid) { // Start searching fl->search_valid = true; fl->search_error = false; fl->search_string[0] = 0; } len = strlen(fl->search_string); if (len < MAX_SEARCH_STRING && !fl->search_error) { fl->search_string[len] = key; fl->search_string[len+1] = 0; fl->search_dirty = true; // Save the last time the user entered a char in the // search term, so that we know when to timeout the search prompt. // (See beginning of FL_Draw) last_search_enter_time = Sys_DoubleTime(); } return true; // handled } else { fl->search_valid = false; // finish search mode } // sorting mode / displaying columns if (key >= '1' && key <= '4') { if (isCtrlDown() && !isAltDown() && !isShiftDown()) { switch (key) { case '2': Cvar_Toggle(&file_browser_show_size); break; case '3': Cvar_Toggle(&file_browser_show_date); break; case '4': Cvar_Toggle(&file_browser_show_time); break; default: break; } return true; } else if (!isCtrlDown() && isAltDown() && !isShiftDown()) { char buf[128]; strlcpy(buf, file_browser_sort_mode.string, 32); // WTF? if (key == buf[0]) { // reverse order buf[0] ^= 128; } else { // add new memmove(buf+1, buf, strlen(buf)+1); buf[0] = key; } buf[8] = 0; Cvar_Set(&file_browser_sort_mode, buf); fl->need_resort = true; return true; } } // change drive #ifdef _WIN32 if (isAltDown() && isCtrlDown() && tolower(key) >= 'a' && tolower(key) <= 'z') { char newdir[MAX_PATH+1]; char olddir[MAX_PATH+1]; snprintf(newdir, sizeof (newdir), "%c:\\", tolower(key)); // validate if (Sys_getcwd(olddir, MAX_PATH+1) == 0) return true; if (Sys_chdir(newdir) == 0) return true; Sys_chdir(olddir); // and set FL_SetCurrentDir(fl, newdir); fl->need_refresh = true; return true; } #endif if (key == '\\' || key == '/') { FL_ChangeDir(fl, va("%c", PATH_SEPARATOR)); return true; } if (key == K_ENTER || key == K_MOUSE1) { if (FL_IsCurrentDir(fl)) { FL_ChangeDir(fl, FL_GetCurrentPath(fl)); return true; } #ifdef WITH_ZIP else if (FL_IsCurrentArchive(fl)) { FL_ChangeArchive(fl, FL_GetCurrentPath(fl)); return true; } #endif //WITH_ZIP else { return false; } } if (key == K_BACKSPACE) { if (fl->show_dirup) FL_ChangeDir(fl, ".."); return true; } if (key == K_UPARROW || key == K_MWHEELUP) { fl->current_entry--; FL_CheckDisplayPosition(fl); return true; } if (key == K_DOWNARROW || key == K_MWHEELDOWN) { fl->current_entry++; FL_CheckDisplayPosition(fl); return true; } if (key == K_PGUP) { fl->current_entry -= fl->last_page_size; FL_CheckDisplayPosition(fl); return true; } if (key == K_PGDN) { fl->current_entry += fl->last_page_size; FL_CheckDisplayPosition(fl); return true; } if (key == K_HOME) { fl->current_entry = 0; FL_CheckDisplayPosition(fl); return true; } if (key == K_END) { fl->current_entry = fl->num_entries - 1; FL_CheckDisplayPosition(fl); return true; } #ifdef WITH_ZIP // // Compress the current file. // if ((key == 'c' || key == 'C') && isAltDown()) { if (!FL_IsCurrentDir(fl)) { if (isShiftDown()) { // Alt + shift + c == Compress without confirming. FL_CompressFile(fl); } else { // Alt + c == Confirm before compressing. fl->mode = FL_MODE_COMPRESS; } } return true; } // // Decompress the current file. // if ((key == 'd' || key == 'D') && isAltDown()) { if (!strcmp(COM_FileExtension(FL_GetCurrentPath(fl)), "gz")) { FL_DecompressFile(fl); } } #endif // WITH_ZIP // // Delete the current file. // if (key == K_DEL) { if (!FL_IsCurrentDir(fl)) { if (isShiftDown()) { // Shift + del == Delete without confirming. FL_DeleteFile(fl); } else { // Del == Confirm before deleting. fl->mode = FL_MODE_DELETE; } } return true; } return false; }