static void DrawKeyBindingFunc( void *self ) { int mkeys[2]; menuaction_s *a = ( menuaction_s * ) self; M_FindKeysForCommand( bindnames[a->generic.localdata[0]][0], mkeys); if (mkeys[0] == -1) { Menu_DrawString( a->generic.x + a->generic.parent->x + 16, a->generic.y + a->generic.parent->y, "???" ); } else { int x; const char *name; name = Key_KeynumToString (mkeys[0]); Menu_DrawString( a->generic.x + a->generic.parent->x + 16, a->generic.y + a->generic.parent->y, name ); x = strlen(name) * 8; if (mkeys[1] != -1) { Menu_DrawString( a->generic.x + a->generic.parent->x + 24 + x, a->generic.y + a->generic.parent->y, "or" ); Menu_DrawString( a->generic.x + a->generic.parent->x + 48 + x, a->generic.y + a->generic.parent->y, Key_KeynumToString (mkeys[1]) ); } } }
static void KeyBindingFunc( void *self ) { menuaction_s *a = ( menuaction_s * ) self; int keys[2]; M_FindKeysForCommand( bindnames[a->generic.localdata[0]][0], keys ); if (keys[1] != -1) M_UnbindCommand( bindnames[a->generic.localdata[0]][0]); bind_grab = true; Menu_SetStatusBar( &s_keys_menu, "Press a key or button." ); }
static void DrawKeyBindingFunc( void *self ) { int keys[2]; menuaction_s *a = ( menuaction_s * ) self; M_FindKeysForCommand( bindnames[a->generic.localdata[0]][0], keys); if (keys[0] == -1) { Menu_DrawString (a->generic.x + a->generic.parent->x + 16, a->generic.y + a->generic.parent->y, "^1<NONE>", 255); } else { int x; const char *name; int alpha; if (cursor.menuitem == a) alpha=255; else alpha=160; name = Key_KeynumToString (keys[0]); Menu_DrawString (a->generic.x + a->generic.parent->x + 16, a->generic.y + a->generic.parent->y, name , alpha); x = strlen(name) * MENU_FONT_SIZE; if (keys[1] != -1) { Menu_DrawString (a->generic.x + a->generic.parent->x + MENU_FONT_SIZE*3 + x, a->generic.y + a->generic.parent->y, "or", alpha); Menu_DrawString (a->generic.x + a->generic.parent->x + MENU_FONT_SIZE*6 + x, a->generic.y + a->generic.parent->y, Key_KeynumToString(keys[1]), alpha); } } }
//string findkeysforcommand(string command) = #610; void QCBUILTIN PF_cl_findkeysforcommand (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals) { const char *cmdname = PR_GetStringOfs(prinst, OFS_PARM0); int bindmap = (prinst->callargc > 1)?G_FLOAT(OFS_PARM1):0; int keynums[2]; char keyname[512]; M_FindKeysForCommand(bindmap, 0, cmdname, keynums, NULL, countof(keynums)); keyname[0] = '\0'; Q_strncatz (keyname, va(" \'%i\'", MP_TranslateFTEtoQCCodes(keynums[0])), sizeof(keyname)); Q_strncatz (keyname, va(" \'%i\'", MP_TranslateFTEtoQCCodes(keynums[1])), sizeof(keyname)); RETURN_TSTRING(keyname); }