keymacro.h revision 276881
1210284Sjmallett/* $NetBSD: keymacro.h,v 1.2 2011/07/28 03:44:36 christos Exp $ */ 2210284Sjmallett 3210284Sjmallett/*- 4210284Sjmallett * Copyright (c) 1992, 1993 5210284Sjmallett * The Regents of the University of California. All rights reserved. 6210284Sjmallett * 7210284Sjmallett * This code is derived from software contributed to Berkeley by 8210284Sjmallett * Christos Zoulas of Cornell University. 9210284Sjmallett * 10210284Sjmallett * Redistribution and use in source and binary forms, with or without 11210284Sjmallett * modification, are permitted provided that the following conditions 12210284Sjmallett * are met: 13210284Sjmallett * 1. Redistributions of source code must retain the above copyright 14210284Sjmallett * notice, this list of conditions and the following disclaimer. 15210284Sjmallett * 2. Redistributions in binary form must reproduce the above copyright 16210284Sjmallett * notice, this list of conditions and the following disclaimer in the 17210284Sjmallett * documentation and/or other materials provided with the distribution. 18210284Sjmallett * 3. Neither the name of the University nor the names of its contributors 19210284Sjmallett * may be used to endorse or promote products derived from this software 20210284Sjmallett * without specific prior written permission. 21210284Sjmallett * 22210284Sjmallett * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23210284Sjmallett * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24210284Sjmallett * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25210284Sjmallett * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26210284Sjmallett * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27210284Sjmallett * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28210284Sjmallett * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29210284Sjmallett * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30210284Sjmallett * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31210284Sjmallett * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32210284Sjmallett * SUCH DAMAGE. 33210284Sjmallett * 34210284Sjmallett * @(#)key.h 8.1 (Berkeley) 6/4/93 35210284Sjmallett * $FreeBSD: head/lib/libedit/keymacro.h 276881 2015-01-09 07:40:56Z bapt $ 36210284Sjmallett */ 37210284Sjmallett 38210284Sjmallett/* 39210284Sjmallett * el.keymacro.h: Key macro header 40210284Sjmallett */ 41210284Sjmallett#ifndef _h_el_keymacro 42210284Sjmallett#define _h_el_keymacro 43210284Sjmallett 44210284Sjmalletttypedef union keymacro_value_t { 45210284Sjmallett el_action_t cmd; /* If it is a command the # */ 46210284Sjmallett Char *str; /* If it is a string... */ 47210284Sjmallett} keymacro_value_t; 48210284Sjmallett 49210284Sjmalletttypedef struct keymacro_node_t keymacro_node_t; 50210284Sjmallett 51210284Sjmalletttypedef struct el_keymacromacro_t { 52210284Sjmallett Char *buf; /* Key print buffer */ 53210284Sjmallett keymacro_node_t *map; /* Key map */ 54210284Sjmallett keymacro_value_t val; /* Local conversion buffer */ 55210284Sjmallett} el_keymacro_t; 56210284Sjmallett 57210284Sjmallett#define XK_CMD 0 58210284Sjmallett#define XK_STR 1 59210284Sjmallett#define XK_NOD 2 60210284Sjmallett#define XK_EXE 3 61210284Sjmallett 62210284Sjmallettprotected int keymacro_init(EditLine *); 63210284Sjmallettprotected void keymacro_end(EditLine *); 64210284Sjmallettprotected keymacro_value_t *keymacro_map_cmd(EditLine *, int); 65210284Sjmallettprotected keymacro_value_t *keymacro_map_str(EditLine *, Char *); 66210284Sjmallettprotected void keymacro_reset(EditLine *); 67210284Sjmallettprotected int keymacro_get(EditLine *, Char *, keymacro_value_t *); 68210284Sjmallettprotected void keymacro_add(EditLine *, const Char *, keymacro_value_t *, int); 69210284Sjmallettprotected void keymacro_clear(EditLine *, el_action_t *, const Char *); 70210284Sjmallettprotected int keymacro_delete(EditLine *, const Char *); 71210284Sjmallettprotected void keymacro_print(EditLine *, const Char *); 72210284Sjmallettprotected void keymacro_kprint(EditLine *, const Char *, keymacro_value_t *, 73210284Sjmallett int); 74210284Sjmallettprotected size_t keymacro__decode_str(const Char *, char *, size_t, 75210284Sjmallett const char *); 76210284Sjmallett 77210284Sjmallett#endif /* _h_el_keymacro */ 78210284Sjmallett