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));
|