aboutsummaryrefslogtreecommitdiff
path: root/arch/casiowin/easy-input/include/EasyInput.h
blob: 6e5d287507eb4ff4b86838d3a397d6de20516822 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/* ****************************************************************************
 * EasyInput.h -- Easy input.
 * Copyright (C) 2017 Thomas "Cakeisalie5" Touhey <thomas@touhey.fr>
 *
 * This file is part of the 'casiowin/easy-input' module in libcarrot, an
 * experimental modular libc project.
 *
 * This file is governed by the CeCILL-C license under French law and abiding
 * by the rules of distribution of free software. You can use, modify and or
 * redistribute it under the terms of the CeCILL-C license as circulated by
 * CEA, CNRS and INRIA at the following URL: http://www.cecill.info
 *
 * As a counterpart to the access to the source code and rights to copy, modify
 * and redistribute granted by the license, users are provided only with a
 * limited warranty and the software's author, the holder of the economic
 * rights, and the successive licensors have only limited liability.
 *
 * In this respect, the user's attention is drawn to the risks associated with
 * loading, using, modifying and/or developing and reproducing the software by
 * the user in light of its specific status of free software, that may mean
 * that it is complicated to manipulate, and that also therefore means that it
 * is reserved for developers and experienced professionals having in-depth
 * computer knowledge. Users are therefore encouraged to load and test the
 * software's suitability as regards their requirements in conditions enabling
 * the security of their systems and/or data to be ensured and, more generally,
 * to use and operate it in the same conditions as regards security.
 *
 * The fact that you are presently reading this means you have had knowledge of
 * the CeCILL-C license and that you accept its terms.
 * ************************************************************************* */
#include <cdefs.h>
#include <fxlib.h>

/* ************************************************************************* */
/*  Settings, main operations                                                */
/* ************************************************************************* */
/* Among the settings are:
 * - the position you want to have the dialog (column, row);
 * - the box length;
 * - the alignment;
 * - the start mode (alpha);
 * - whether we want caps or not.
 *
 * Here are the different values for the start mode (alpha mode): */

enum __EI_ALPHA_MODE {
	EI_NORMAL       = 1,
	EI_ALPHA        = 2,
	EI_ALPHA_LOCKED = 3
};

/* Here are the different values for the alignment. */

enum __EI_ALIGN {
	EI_ALIGN_LEFT   = 1,
	EI_ALIGN_CENTER = 2,
	EI_ALIGN_RIGHT  = 3
};

/* Here are the different type of operations you can do using the
 * `EI_manage_config` utility. */

enum __EI_PARAM_TYPE {
	EI_GET_ALL = -1,

	EI_SET_COLUMN     = 0,
	EI_SET_ROW        = 1,
	EI_SET_BOX_LENGTH = 2,
	EI_SET_ALIGN      = 3,
	EI_SET_START_MODE = 4,
	EI_SET_Aa_KEY     = 5
};

/* And here is the configuration structure. */

typedef struct __EI_config {
	unsigned int column, row;
	unsigned int box_length;
	unsigned int align;
	unsigned int start_mode;
	unsigned int Aa_key;
} EI_config;

/* Initialize the settings, edit one parameter. */

extern void        EI_init _OF((void)) __THROW;
extern const void *EI_manage_config _OF((enum __EI_PARAM_TYPE __param,
	int __value)) __THROW;

/* And here is the central function to get a string, hurray! */

extern char *EI_input_string _OF((int __length, const char *__allowed))
	__THROW;
/* ************************************************************************* */
/*  Private functions                                                        */
/* ************************************************************************* */
/* These are utilities the author left in the original public header.
 * First, here is to check the string. */

extern int EI_str_length _OF((const char *__str));
extern int EI_check_char _OF((char __c, const char *__allowed));

/* Manage the cursor. */

typedef struct {
	int flashstyle; /* -1 if not flashing, else flashmode */
	int column;     /* starts at 1 */
	int row;        /* starts at 1 */
	int graphic_mode;
} EI_cursor_settings;

extern int  EI_Cursor_SetPosition _OF((char __column, int __mode));
extern int  EI_Cursor_SetFlashOn  _OF((char __flashstyle));
extern void EI_Cursor_SetFlashOff _OF((void));
extern int  EI_Cursor_GetSettings _OF((EI_cursor_settings *__cursor_settings));