⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newkey.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
/*	Copyright (c) 1984 AT&T	*//*	  All Rights Reserved  	*//*	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T	*//*	The copyright notice above does not evidence any   	*//*	actual or intended publication of such source code.	*/#ifndef lintstatic	char sccsid[] = "@(#)newkey.c 1.1 92/07/30 SMI"; /* from S5R3.1 1.3 */#endif#include	"curses_inc.h"/* * Set a new key or a new macro. * * rcvchars: the pattern identifying the key * keyval: the value to return when the key is recognized * macro: if this is not a function key but a macro, * 	tgetch() will block on macros. */newkey(rcvchars, keyval, macro)char	*rcvchars;short	keyval;int	macro;{    register	_KEY_MAP	**keys, *key_info,				**prev_keys = cur_term->_keys;    short	*numkeys = &cur_term->_ksz, len;    char	*str;    if ((!rcvchars) || (*rcvchars == '\0') || (keyval < 0) ||	(((keys = (_KEY_MAP **) malloc(sizeof (_KEY_MAP *) * (*numkeys + 1))) == NULL)))    {	goto bad;    }    len = strlen(rcvchars) + 1;    if ((key_info = (_KEY_MAP *) malloc(sizeof (_KEY_MAP) + len)) == NULL)    {	free (keys);bad :	term_errno = TERM_BAD_MALLOC;#ifdef	DEBUG	strcpy(term_parm_err, "newkey");#endif	/* DEBUG */	return (ERR);    }    if (macro)    {	(void) memcpy((char *) keys, (char *) prev_keys, (int) (*numkeys * sizeof (_KEY_MAP *)));	keys[*numkeys] = key_info;    }    else    {	short	*first = &(cur_term->_first_macro);	(void) memcpy((char *) keys, (char *) prev_keys, (int) (*first * sizeof (_KEY_MAP *)));	(void) memcpy((char *) &(keys[*first + 1]), (char *) &(prev_keys[*first]),	    (int) ((*numkeys - *first) * sizeof (_KEY_MAP *)));	keys[(*first)++] = key_info;	cur_term->_lastmacro_ordered++;    }    if (prev_keys != NULL)	free(prev_keys);    cur_term->_keys = keys;    (*numkeys)++;    key_info->_sends = str = (char *) key_info + sizeof(_KEY_MAP);    (void) memcpy(str, rcvchars, len);    key_info->_keyval = keyval;    cur_term->funckeystarter[*str] |= (macro ? _MACRO : _KEY);    return (OK);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -