char caps(char c){ if((c < 91 && c > 64) || (c < 123 && c > 96)){ if(isShiftDown()){ return c + 32; } return c - 32; } return c; }
static void EnterNavigationMode(CPageViewer_t *viewer) { int i; document_rendered_link_t *from, *to; int screen_start, screen_end; if (viewer->navigation_mode) LeaveNavigationMode(viewer); screen_start = viewer->page->current_line * viewer->page->width; screen_end = (viewer->page->current_line + viewer->page->last_height) * viewer->page->width; from = viewer->page->rendered.links; while (from) { if (from->start >= screen_start || from->end >= screen_start) break; from = from->next; } if (from == NULL) return; // no navigation viewer->current_links_total = 0; to = from; while (to) { if (to->start >= screen_end) break; viewer->current_links_total++; to = to->next; } if (viewer->current_links_total == 0) return; // make links table viewer->current_links = (document_rendered_link_t **) Q_malloc(viewer->current_links_total*sizeof(document_rendered_link_t *)); i = 0; while (from != to) { viewer->current_links[i++] = from; from = from->next; } viewer->navigation_mode = true; if (isShiftDown()) viewer->current_link_index = viewer->current_links_total - 1; else viewer->current_link_index = 0; }
char keycodeToChar(uint8_t keycode){ int k = keycode; if(k >= 0x80) k -= 0x80; char c = 0; if(isShiftDown()){ c = shift[k]; } else{ c = noShift[k]; } if(isCapsDown()){ c = caps(c); } return c; }
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; }
//*************************************************************** void CToolCreateEntity::commit(const NLMISC::CVector &createPosition, float createAngle) { //H_AUTO(R2_CToolCreateEntity_commit) if (_CreateState == ChooseArrayOrigin) { if (!getEditor().verifyRoomLeft(0, 1)) { getUI().executeLuaScript("r2:checkStaticQuota(1)"); return; } setContextHelp(CI18N::get("uiR2EDDrawArrayContextHelp")); _CreateState = DrawArray; _ArrayDefaultAngle = createAngle; _ArrayOrigin = createPosition; _ArrayEnd = createPosition; updateArray(getGhost()); removeGhostSlot(); return; } CEntityCL *ghost = getGhost(); if (!ghost) return; cloneEntityIntoScenario(ghost, createPosition, createAngle, true, /* new action */ false /* create ghost */); if (isMultiPos() && isShiftDown()) { // prevent newly created ghost to be removed twice ... removeGhostSlot(); // re set this tool to generate a new entity look getUI().runActionHandler("r2ed_create_entity", NULL, "PaletteId=" + _PaletteId); } }
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; }
void CEditBox_Key(CEditBox *e, int key) { char c; switch (key) { case K_LEFTARROW: e->pos--; break; case K_RIGHTARROW: e->pos++; break; case K_HOME: e->pos = 0; break; case K_END: e->pos = strlen(e->text); break; case K_DEL: if (e->pos < strlen(e->text)) memmove(e->text + e->pos, e->text + e->pos + 1, strlen(e->text + e->pos + 1) + 1); break; case K_BACKSPACE: if (e->pos > 0) { memmove(e->text + e->pos - 1, e->text + e->pos, strlen(e->text + e->pos) + 1); e->pos --; } break; case 'v': case 'V': if (isCtrlDown()) { int len; char *clip = ReadFromClipboard(); len = min(strlen(clip), e->max - strlen(e->text)); if (len > 0) { memmove(e->text + e->pos + len, e->text + e->pos, strlen(e->text + e->pos) + 1); memcpy(e->text + e->pos, clip, len); e->pos += len; } } break; } e->pos = max(e->pos, 0); e->pos = min(e->pos, strlen(e->text)); if (!isCtrlDown() && key >= ' ' && key <= '}' && strlen(e->text) < e->max) { memmove(e->text + e->pos + 1, e->text + e->pos, strlen(e->text + e->pos) + 1); c = key; if (isShiftDown() && c >= 'a' && c <= 'z') c = toupper(c); e->text[e->pos] = c; e->pos++; } }
qbool CPageViewer_Key(CPageViewer_t *viewer, int key, wchar unichar) { qbool ret = false; if (viewer->page == NULL) return 0; if (viewer->navigation_mode) { char *href; switch (key) { case K_TAB: viewer->current_link_index += isShiftDown() ? -1 : 1; viewer->current_link_index = (viewer->current_link_index + viewer->current_links_total) % viewer->current_links_total; ret = true; break; case K_ENTER: href = viewer->current_links[viewer->current_link_index]->tag->href; if (href) { LeaveNavigationMode(viewer); CPageViewer_GoUrl(viewer, href); } ret = true; break; case K_SHIFT: break; default: LeaveNavigationMode(viewer); ret = true; break; } } if (!viewer->navigation_mode) { switch (key) { case K_UPARROW: case K_MWHEELUP: viewer->page->current_line--; ret = true; break; case K_DOWNARROW: case K_MWHEELDOWN: viewer->page->current_line++; ret = true; break; case K_PGUP: viewer->page->current_line -= viewer->page->last_height-1; ret = true; break; case K_PGDN: viewer->page->current_line += viewer->page->last_height-1; ret = true; break; case K_HOME: viewer->page->current_line = 0; ret = true; break; case K_END: viewer->page->current_line = viewer->page->rendered.text_lines; ret = true; break; case K_BACKSPACE: CPageViewer_Back(viewer, 1); ret = true; break; case K_TAB: EnterNavigationMode(viewer); ret = true; break; } } return ret; }
// // 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; }