diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-07-08 19:34:41 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-07-08 19:34:41 +0400 |
commit | 5e749af4295ba3120cd882f6e35b49a80292915e (patch) | |
tree | 2b350597577eb619dd3192dc5250a7fbbb4fb6f0 /source/blender/editors/interface | |
parent | f3fd7d88002dcfe42e51738cbb7d2d2be756dd19 (diff) |
2.5: Various Fixes
* Context panel now draws without header, with arrows, no scene name.
* Softbody vertex group search popup.
* Improve names for autogenerated shortcut keys in menus.
* Make most Select menus in the 3D view header work.
* Fix armature border select selection syncing.
* Add POSE_OT_select_constraint_target,
MESH_OT_select_by_number_vertices, MESH_OT_select_vertex_path.
* Merge mesh select similar into one operator.
* Don't give MESH_OT_select_random Space hotkey.
* Add DAG_object_flush_update to many mesh edit tools, not calling this
will crash with modifiers.
* RNA_def_enum_funcs for dynamic enums in operators, but not very useful
without context yet.
* Fix refresh issue with image window header + editmode.
* Fix drawing of shadow mesh for image painting.
* Remove deprecated uiDefMenuButO and uiDefMenuSep functions.
* Remove keyval.c, code is in wm_keymap.c already.
* Rename WM_operator_redo to WM_operator_props_popup.
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r-- | source/blender/editors/interface/interface.c | 20 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_icons.c | 23 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_panel.c | 45 | ||||
-rw-r--r-- | source/blender/editors/interface/keyval.c | 540 |
4 files changed, 53 insertions, 575 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 00ec875bd86..a76fdcbf39d 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -2619,26 +2619,6 @@ uiBut *uiDefIconTextButO(uiBlock *block, int type, char *opname, int opcontext, return but; } -static int ui_menu_y(uiBlock *block) -{ - uiBut *but= block->buttons.last; - - if(but) return but->y1; - else return 0; -} - -uiBut *uiDefMenuButO(uiBlock *block, char *opname, char *name) -{ - int y= ui_menu_y(block) - MENU_ITEM_HEIGHT; - return uiDefIconTextButO(block, BUT, opname, WM_OP_INVOKE_REGION_WIN, ICON_BLANK1, name, 0, y, MENU_WIDTH, MENU_ITEM_HEIGHT-1, NULL); -} - -uiBut *uiDefMenuSep(uiBlock *block) -{ - int y= ui_menu_y(block) - MENU_SEP_HEIGHT; - return uiDefBut(block, SEPR, 0, "", 0, y, MENU_WIDTH, MENU_SEP_HEIGHT, NULL, 0.0, 0.0, 0, 0, ""); -} - /* END Button containing both string label and icon */ void uiSetButLink(uiBut *but, void **poin, void ***ppoin, short *tot, int from, int to) diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 315b8693905..549164c23a1 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -342,6 +342,28 @@ static void vicon_disclosure_tri_right_draw(int x, int y, int w, int h, float al viconutil_draw_lineloop_smooth(pts, 3); } +static void vicon_small_tri_right_draw(int x, int y, int w, int h, float alpha) +{ + GLint pts[3][2]; + int cx = x+w/2-4; + int cy = y+w/2; + int d = w/5, d2 = w/7; + + viconutil_set_point(pts[0], cx-d2, cy+d); + viconutil_set_point(pts[1], cx-d2, cy-d); + viconutil_set_point(pts[2], cx+d2, cy); + + glColor4f(0.2f, 0.2f, 0.2f, alpha); + + glShadeModel(GL_SMOOTH); + glBegin(GL_TRIANGLES); + glVertex2iv(pts[0]); + glVertex2iv(pts[1]); + glVertex2iv(pts[2]); + glEnd(); + glShadeModel(GL_FLAT); +} + static void vicon_disclosure_tri_down_draw(int x, int y, int w, int h, float alpha) { GLint pts[3][2]; @@ -450,6 +472,7 @@ static void init_internal_icons() def_internal_vicon(VICON_MOVE_UP, vicon_move_up_draw); def_internal_vicon(VICON_MOVE_DOWN, vicon_move_down_draw); def_internal_vicon(VICON_X, vicon_x_draw); + def_internal_vicon(VICON_SMALL_TRI_RIGHT, vicon_small_tri_right_draw); IMB_freeImBuf(bbuf); } diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c index 319e69a40e4..3e009b50045 100644 --- a/source/blender/editors/interface/interface_panel.c +++ b/source/blender/editors/interface/interface_panel.c @@ -539,6 +539,7 @@ void ui_draw_aligned_panel(ARegion *ar, uiStyle *style, uiBlock *block, rcti *re int ofsx; if(panel->paneltab) return; + if(panel->type && (panel->type->flag & PNL_NO_HEADER)) return; /* calculate header rect */ /* + 0.001f to prevent flicker due to float inaccuracy */ @@ -644,6 +645,14 @@ void ui_draw_aligned_panel(ARegion *ar, uiStyle *style, uiBlock *block, rcti *re /************************** panel alignment *************************/ +static int get_panel_header(Panel *pa) +{ + if(pa->type && (pa->type->flag & PNL_NO_HEADER)) + return 0; + + return PNL_HEADER; +} + /* this function is needed because uiBlock and Panel itself dont change sizey or location when closed */ static int get_panel_real_ofsy(Panel *pa) @@ -656,8 +665,8 @@ static int get_panel_real_ofsy(Panel *pa) static int get_panel_real_ofsx(Panel *pa) { - if(pa->flag & PNL_CLOSEDX) return pa->ofsx+PNL_HEADER; - else if(pa->paneltab && (pa->paneltab->flag & PNL_CLOSEDX)) return pa->ofsx+PNL_HEADER; + if(pa->flag & PNL_CLOSEDX) return pa->ofsx+get_panel_header(pa); + else if(pa->paneltab && (pa->paneltab->flag & PNL_CLOSEDX)) return pa->ofsx+get_panel_header(pa); else return pa->ofsx+pa->sizex; } @@ -762,18 +771,18 @@ int uiAlignPanelStep(ScrArea *sa, ARegion *ar, float fac, int drag) /* no smart other default start loc! this keeps switching f5/f6/etc compatible */ ps= panelsort; ps->pa->ofsx= 0; - ps->pa->ofsy= -ps->pa->sizey-PNL_HEADER-style->panelouter; + ps->pa->ofsy= -ps->pa->sizey-get_panel_header(ps->pa)-style->panelouter; for(a=0; a<tot-1; a++, ps++) { psnext= ps+1; if(align==BUT_VERTICAL) { psnext->pa->ofsx= ps->pa->ofsx; - psnext->pa->ofsy= get_panel_real_ofsy(ps->pa) - psnext->pa->sizey-PNL_HEADER-style->panelouter; + psnext->pa->ofsy= get_panel_real_ofsy(ps->pa) - psnext->pa->sizey-get_panel_header(psnext->pa)-style->panelouter; } else { psnext->pa->ofsx= get_panel_real_ofsx(ps->pa); - psnext->pa->ofsy= ps->pa->ofsy + ps->pa->sizey - psnext->pa->sizey; + psnext->pa->ofsy= ps->pa->ofsy + ps->pa->sizey + get_panel_header(ps->pa) - psnext->pa->sizey - get_panel_header(psnext->pa); } } @@ -1200,6 +1209,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) { ARegion *ar= CTX_wm_region(C); uiBlock *block; + Panel *pa; int retval, mx, my, inside_header= 0, inside_scale= 0, inside; retval= WM_UI_HANDLER_CONTINUE; @@ -1215,22 +1225,27 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) /* check if inside boundbox */ inside= 0; + pa= block->panel; + + if(!pa || pa->paneltab!=NULL) + continue; + if(pa->type && pa->type->flag & PNL_NO_HEADER) + continue; - if(block->panel && block->panel->paneltab==NULL) - if(block->minx <= mx && block->maxx >= mx) - if(block->miny <= my && block->maxy+PNL_HEADER >= my) - inside= 1; + if(block->minx <= mx && block->maxx >= mx) + if(block->miny <= my && block->maxy+PNL_HEADER >= my) + inside= 1; if(inside) { /* clicked at panel header? */ - if(block->panel->flag & PNL_CLOSEDX) { + if(pa->flag & PNL_CLOSEDX) { if(block->minx <= mx && block->minx+PNL_HEADER >= mx) inside_header= 1; } else if((block->maxy <= my) && (block->maxy+PNL_HEADER >= my)) { inside_header= 1; } - else if(block->panel->control & UI_PNL_SCALE) { + else if(pa->control & UI_PNL_SCALE) { if(block->maxx-PNL_HEADER <= mx) if(block->miny+PNL_HEADER >= my) inside_scale= 1; @@ -1242,8 +1257,8 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) ui_handle_panel_header(C, block, mx, my); break; } - else if(inside_scale && !(block->panel->flag & PNL_CLOSED)) { - panel_activate_state(C, block->panel, PANEL_STATE_DRAG_SCALE); + else if(inside_scale && !(pa->flag & PNL_CLOSED)) { + panel_activate_state(C, pa, PANEL_STATE_DRAG_SCALE); break; } } @@ -1258,7 +1273,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) int zoom=0; /* if panel is closed, only zoom if mouse is over the header */ - if (block->panel->flag & (PNL_CLOSEDX|PNL_CLOSEDY)) { + if (pa->flag & (PNL_CLOSEDX|PNL_CLOSEDY)) { if (inside_header) zoom=1; } @@ -1271,7 +1286,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) SpaceLink *sl= sa->spacedata.first; if(sa->spacetype!=SPACE_BUTS) { - if(!(block->panel->control & UI_PNL_SCALE)) { + if(!(pa->control & UI_PNL_SCALE)) { if(event->type==PADPLUSKEY) sl->blockscale+= 0.1; else sl->blockscale-= 0.1; CLAMP(sl->blockscale, 0.6, 1.0); diff --git a/source/blender/editors/interface/keyval.c b/source/blender/editors/interface/keyval.c deleted file mode 100644 index f2172ac8cf0..00000000000 --- a/source/blender/editors/interface/keyval.c +++ /dev/null @@ -1,540 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include "stdio.h" -#include "ctype.h" -#include "string.h" - -#include "BKE_global.h" -#include "BLI_blenlib.h" -#include "BLI_arithb.h" - -#include "WM_types.h" - -char *key_event_to_string(unsigned short event) -{ - - switch(event) { - case AKEY: - return "A"; - break; - case BKEY: - return "B"; - break; - case CKEY: - return "C"; - break; - case DKEY: - return "D"; - break; - case EKEY: - return "E"; - break; - case FKEY: - return "F"; - break; - case GKEY: - return "G"; - break; - case HKEY: - return "H"; - break; - case IKEY: - return "I"; - break; - case JKEY: - return "J"; - break; - case KKEY: - return "K"; - break; - case LKEY: - return "L"; - break; - case MKEY: - return "M"; - break; - case NKEY: - return "N"; - break; - case OKEY: - return "O"; - break; - case PKEY: - return "P"; - break; - case QKEY: - return "Q"; - break; - case RKEY: - return "R"; - break; - case SKEY: - return "S"; - break; - case TKEY: - return "T"; - break; - case UKEY: - return "U"; - break; - case VKEY: - return "V"; - break; - case WKEY: - return "W"; - break; - case XKEY: - return "X"; - break; - case YKEY: - return "Y"; - break; - case ZKEY: - return "Z"; - break; - - case ZEROKEY: - return "Zero"; - break; - case ONEKEY: - return "One"; - break; - case TWOKEY: - return "Two"; - break; - case THREEKEY: - return "Three"; - break; - case FOURKEY: - return "Four"; - break; - case FIVEKEY: - return "Five"; - break; - case SIXKEY: - return "Six"; - break; - case SEVENKEY: - return "Seven"; - break; - case EIGHTKEY: - return "Eight"; - break; - case NINEKEY: - return "Nine"; - break; - - case LEFTCTRLKEY: - return "Leftctrl"; - break; - case LEFTALTKEY: - return "Leftalt"; - break; - case RIGHTALTKEY: - return "Rightalt"; - break; - case RIGHTCTRLKEY: - return "Rightctrl"; - break; - case RIGHTSHIFTKEY: - return "Rightshift"; - break; - case LEFTSHIFTKEY: - return "Leftshift"; - break; - - case ESCKEY: - return "Esc"; - break; - case TABKEY: - return "Tab"; - break; - case RETKEY: - return "Ret"; - break; - case SPACEKEY: - return "Space"; - break; - case LINEFEEDKEY: - return "Linefeed"; - break; - case BACKSPACEKEY: - return "Backspace"; - break; - case DELKEY: - return "Del"; - break; - case SEMICOLONKEY: - return "Semicolon"; - break; - case PERIODKEY: - return "Period"; - break; - case COMMAKEY: - return "Comma"; - break; - case QUOTEKEY: - return "Quote"; - break; - case ACCENTGRAVEKEY: - return "Accentgrave"; - break; - case MINUSKEY: - return "Minus"; - break; - case SLASHKEY: - return "Slash"; - break; - case BACKSLASHKEY: - return "Backslash"; - break; - case EQUALKEY: - return "Equal"; - break; - case LEFTBRACKETKEY: - return "Leftbracket"; - break; - case RIGHTBRACKETKEY: - return "Rightbracket"; - break; - - case LEFTARROWKEY: - return "Leftarrow"; - break; - case DOWNARROWKEY: - return "Downarrow"; - break; - case RIGHTARROWKEY: - return "Rightarrow"; - break; - case UPARROWKEY: - return "Uparrow"; - break; - - case PAD2: - return "Pad2"; - break; - case PAD4: - return "Pad4"; - break; - case PAD6: - return "Pad6"; - break; - case PAD8: - return "Pad8"; - break; - case PAD1: - return "Pad1"; - break; - case PAD3: - return "Pad3"; - break; - case PAD5: - return "Pad5"; - break; - case PAD7: - return "Pad7"; - break; - case PAD9: - return "Pad9"; - break; - - case PADPERIOD: - return "Padperiod"; - break; - case PADSLASHKEY: - return "Padslash"; - break; - case PADASTERKEY: - return "Padaster"; - break; - - case PAD0: - return "Pad0"; - break; - case PADMINUS: - return "Padminus"; - break; - case PADENTER: - return "Padenter"; - break; - case PADPLUSKEY: - return "Padplus"; - break; - - case F1KEY: - return "F1"; - break; - case F2KEY: - return "F2"; - break; - case F3KEY: - return "F3"; - break; - case F4KEY: - return "F4"; - break; - case F5KEY: - return "F5"; - break; - case F6KEY: - return "F6"; - break; - case F7KEY: - return "F7"; - break; - case F8KEY: - return "F8"; - break; - case F9KEY: - return "F9"; - break; - case F10KEY: - return "F10"; - break; - case F11KEY: - return "F11"; - break; - case F12KEY: - return "F12"; - break; - - case PAUSEKEY: - return "Pause"; - break; - case INSERTKEY: - return "Insert"; - break; - case HOMEKEY: - return "Home"; - break; - case PAGEUPKEY: - return "Pageup"; - break; - case PAGEDOWNKEY: - return "Pagedown"; - break; - case ENDKEY: - return "End"; - break; - } - - return ""; -} - -/* - * Decodes key combination strings [qual1+[qual2+[...]]]keyname - * The '+'s may be replaced by '-' or ' ' characters to support different - * formats. No additional whitespace is allowed. The keyname may be an internal - * name, like "RETKEY", or a more common name, like "Return". Decoding is case- - * insensitive. - * - * Example strings: "Ctrl+L", "ALT-ESC", "Shift A" - * - * Returns 1 if successful. - */ -int decode_key_string(char *str, unsigned short *key, unsigned short *qual) -{ - int i, prev, len, invalid=0; - - len= strlen(str); - *key= *qual= 0; - - /* Convert to upper case */ - for (i=0; i<len; i++) { - str[i]= toupper(str[i]); - } - - /* Handle modifiers */ - for (prev=i=0; i<len; i++) { - if (str[i]==' ' || str[i]=='+' || str[i]=='-') { -// XXX if (!strncmp(str+prev, "CTRL", i-prev)) *qual |= LR_CTRLKEY; -// else if (!strncmp(str+prev, "ALT", i-prev)) *qual |= LR_ALTKEY; -// else if (!strncmp(str+prev, "SHIFT", i-prev)) *qual |= LR_SHIFTKEY; -// else if (!strncmp(str+prev, "COMMAND", i-prev)) *qual |= LR_COMMANDKEY; - prev=i+1; - } - } - - /* Compare last part against key names */ - if ((len-prev==1) || ((len-prev==4) && !strncmp(str+prev, "KEY", 3))) { - - if (str[prev]>='A' && str[prev]<='Z') { - *key= str[prev]-'A'+AKEY; - } else if (str[prev]>='0' && str[prev]<='9') { - *key= str[prev]-'0'+ZEROKEY; - } else { - invalid= 1; - } - - } else if (!strncmp(str+prev, "ZEROKEY", len-prev) || !strncmp(str+prev, "ZERO", len-prev)) { - *key= ZEROKEY; - } else if (!strncmp(str+prev, "ONEKEY", len-prev) || !strncmp(str+prev, "ONE", len-prev)) { - *key= ONEKEY; - } else if (!strncmp(str+prev, "TWOKEY", len-prev) || !strncmp(str+prev, "TWO", len-prev)) { - *key= TWOKEY; - } else if (!strncmp(str+prev, "THREEKEY", len-prev) || !strncmp(str+prev, "THREE", len-prev)) { - *key= THREEKEY; - } else if (!strncmp(str+prev, "FOURKEY", len-prev) || !strncmp(str+prev, "FOUR", len-prev)) { - *key= FOURKEY; - } else if (!strncmp(str+prev, "FIVEKEY", len-prev) || !strncmp(str+prev, "FIVE", len-prev)) { - *key= FIVEKEY; - } else if (!strncmp(str+prev, "SIZEKEY", len-prev) || !strncmp(str+prev, "SIX", len-prev)) { - *key= SIXKEY; - } else if (!strncmp(str+prev, "SEVENKEY", len-prev) || !strncmp(str+prev, "SEVEN", len-prev)) { - *key= SEVENKEY; - } else if (!strncmp(str+prev, "EIGHTKEY", len-prev) || !strncmp(str+prev, "EIGHT", len-prev)) { - *key= EIGHTKEY; - } else if (!strncmp(str+prev, "NINEKEY", len-prev) || !strncmp(str+prev, "NINE", len-prev)) { - *key= NINEKEY; - - } else if (!strncmp(str+prev, "ESCKEY", len-prev) || !strncmp(str+prev, "ESC", len-prev)) { - *key= ESCKEY; - } else if (!strncmp(str+prev, "TABKEY", len-prev) || !strncmp(str+prev, "TAB", len-prev)) { - *key= TABKEY; - } else if (!strncmp(str+prev, "RETKEY", len-prev) || !strncmp(str+prev, "RETURN", len-prev) || !strncmp(str+prev, "ENTER", len-prev)) { - *key= RETKEY; - } else if (!strncmp(str+prev, "SPACEKEY", len-prev) || !strncmp(str+prev, "SPACE", len-prev)) { - *key= SPACEKEY; - } else if (!strncmp(str+prev, "LINEFEEDKEY", len-prev) || !strncmp(str+prev, "LINEFEED", len-prev)) { - *key= LINEFEEDKEY; - } else if (!strncmp(str+prev, "BACKSPACEKEY", len-prev) || !strncmp(str+prev, "BACKSPACE", len-prev)) { - *key= BACKSPACEKEY; - } else if (!strncmp(str+prev, "DELKEY", len-prev) || !strncmp(str+prev, "DELETE", len-prev)) { - *key= DELKEY; - - } else if (!strncmp(str+prev, "SEMICOLONKEY", len-prev) || !strncmp(str+prev, "SEMICOLON", len-prev)) { - *key= SEMICOLONKEY; - } else if (!strncmp(str+prev, "PERIODKEY", len-prev) || !strncmp(str+prev, "PERIOD", len-prev)) { - *key= PERIODKEY; - } else if (!strncmp(str+prev, "COMMAKEY", len-prev) || !strncmp(str+prev, "COMMA", len-prev)) { - *key= COMMAKEY; - } else if (!strncmp(str+prev, "QUOTEKEY", len-prev) || !strncmp(str+prev, "QUOTE", len-prev)) { - *key= QUOTEKEY; - } else if (!strncmp(str+prev, "ACCENTGRAVEKEY", len-prev) || !strncmp(str+prev, "ACCENTGRAVE", len-prev)) { - *key= ACCENTGRAVEKEY; - } else if (!strncmp(str+prev, "MINUSKEY", len-prev) || !strncmp(str+prev, "MINUS", len-prev)) { - *key= MINUSKEY; - } else if (!strncmp(str+prev, "SLASHKEY", len-prev) || !strncmp(str+prev, "SLASH", len-prev)) { - *key= SLASHKEY; - } else if (!strncmp(str+prev, "BACKSLASHKEY", len-prev) || !strncmp(str+prev, "BACKSLASH", len-prev)) { - *key= BACKSLASHKEY; - } else if (!strncmp(str+prev, "EQUALKEY", len-prev) || !strncmp(str+prev, "EQUAL", len-prev)) { - *key= EQUALKEY; - } else if (!strncmp(str+prev, "LEFTBRACKETKEY", len-prev) || !strncmp(str+prev, "LEFTBRACKET", len-prev)) { - *key= LEFTBRACKETKEY; - } else if (!strncmp(str+prev, "RIGHTBRACKETKEY", len-prev) || !strncmp(str+prev, "RIGHTBRACKET", len-prev)) { - *key= RIGHTBRACKETKEY; - } else if (!strncmp(str+prev, "DELKEY", len-prev) || !strncmp(str+prev, "DELETE", len-prev)) { - *key= DELKEY; - - } else if (!strncmp(str+prev, "LEFTARROWKEY", len-prev) || !strncmp(str+prev, "LEFTARROW", len-prev)) { - *key= LEFTARROWKEY; - } else if (!strncmp(str+prev, "DOWNARROWKEY", len-prev) || !strncmp(str+prev, "DOWNARROW", len-prev)) { - *key= DOWNARROWKEY; - } else if (!strncmp(str+prev, "RIGHTARROWKEY", len-prev) || !strncmp(str+prev, "RIGHTARROW", len-prev)) { - *key= RIGHTARROWKEY; - } else if (!strncmp(str+prev, "UPARROWKEY", len-prev) || !strncmp(str+prev, "UPARROW", len-prev)) { - *key= UPARROWKEY; - - } else if (!strncmp(str+prev, "PAD", 3)) { - - if (len-prev<=4) { - - if (str[prev]>='0' && str[prev]<='9') { - *key= str[prev]-'0'+ZEROKEY; - } else { - invalid= 1; - } - - } else if (!strncmp(str+prev+3, "PERIODKEY", len-prev-3) || !strncmp(str+prev+3, "PERIOD", len-prev-3)) { - *key= PADPERIOD; - } else if (!strncmp(str+prev+3, "SLASHKEY", len-prev-3) || !strncmp(str+prev+3, "SLASH", len-prev-3)) { - *key= PADSLASHKEY; - } else if (!strncmp(str+prev+3, "ASTERKEY", len-prev-3) || !strncmp(str+prev+3, "ASTERISK", len-prev-3)) { - *key= PADASTERKEY; - } else if (!strncmp(str+prev+3, "MINUSKEY", len-prev-3) || !strncmp(str+prev+3, "MINUS", len-prev-3)) { - *key= PADMINUS; - } else if (!strncmp(str+prev+3, "ENTERKEY", len-prev-3) || !strncmp(str+prev+3, "ENTER", len-prev-3)) { - *key= PADENTER; - } else if (!strncmp(str+prev+3, "PLUSKEY", len-prev-3) || !strncmp(str+prev+3, "PLUS", len-prev-3)) { - *key= PADPLUSKEY; - } else { - invalid= 1; - } - - } else if (!strncmp(str+prev, "F1KEY", len-prev) || !strncmp(str+prev, "F1", len-prev)) { - *key= F1KEY; - } else if (!strncmp(str+prev, "F2KEY", len-prev) || !strncmp(str+prev, "F2", len-prev)) { - *key= F2KEY; - } else if (!strncmp(str+prev, "F3KEY", len-prev) || !strncmp(str+prev, "F3", len-prev)) { - *key= F3KEY; - } else if (!strncmp(str+prev, "F4KEY", len-prev) || !strncmp(str+prev, "F4", len-prev)) { - *key= F4KEY; - } else if (!strncmp(str+prev, "F5KEY", len-prev) || !strncmp(str+prev, "F5", len-prev)) { - *key= F5KEY; - } else if (!strncmp(str+prev, "F6KEY", len-prev) || !strncmp(str+prev, "F6", len-prev)) { - *key= F6KEY; - } else if (!strncmp(str+prev, "F7KEY", len-prev) || !strncmp(str+prev, "F7", len-prev)) { - *key= F7KEY; - } else if (!strncmp(str+prev, "F8KEY", len-prev) || !strncmp(str+prev, "F8", len-prev)) { - *key= F8KEY; - } else if (!strncmp(str+prev, "F9KEY", len-prev) || !strncmp(str+prev, "F9", len-prev)) { - *key= F9KEY; - } else if (!strncmp(str+prev, "F10KEY", len-prev) || !strncmp(str+prev, "F10", len-prev)) { - *key= F10KEY; - } else if (!strncmp(str+prev, "F11KEY", len-prev) || !strncmp(str+prev, "F11", len-prev)) { - *key= F11KEY; - } else if (!strncmp(str+prev, "F12KEY", len-prev) || !strncmp(str+prev, "F12", len-prev)) { - *key= F12KEY; - - } else if (!strncmp(str+prev, "PAUSEKEY", len-prev) || !strncmp(str+prev, "PAUSE", len-prev)) { - *key= PAUSEKEY; - } else if (!strncmp(str+prev, "INSERTKEY", len-prev) || !strncmp(str+prev, "INSERT", len-prev)) { - *key= INSERTKEY; - } else if (!strncmp(str+prev, "HOMEKEY", len-prev) || !strncmp(str+prev, "HOME", len-prev)) { - *key= HOMEKEY; - } else if (!strncmp(str+prev, "PAGEUPKEY", len-prev) || !strncmp(str+prev, "PAGEUP", len-prev)) { - *key= PAGEUPKEY; - } else if (!strncmp(str+prev, "PAGEDOWNKEY", len-prev) || !strncmp(str+prev, "PAGEDOWN", len-prev)) { - *key= PAGEDOWNKEY; - } else if (!strncmp(str+prev, "ENDKEY", len-prev) || !strncmp(str+prev, "END", len-prev)) { - *key= ENDKEY; - - } else { - invalid= 1; - } - - if (!invalid && *key) { - return 1; - } - - return 0; -} |