Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
cs24-19fa
git_rec_nano
Commits
1c9ab8bf
Commit
1c9ab8bf
authored
8 years ago
by
Benno Schulenberg
Browse files
Options
Download
Email Patches
Plain Diff
tweaks: rename a struct element, to be more fitting
The keycode is not a sequence; it is a single integer value.
parent
e2950701
master
feature/match-parens
refactor/readbility
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
src/global.c
+21
-21
src/global.c
src/nano.h
+3
-3
src/nano.h
src/rcfile.c
+2
-2
src/rcfile.c
src/winio.c
+3
-3
src/winio.c
with
29 additions
and
29 deletions
+29
-29
src/global.c
View file @
1c9ab8bf
...
...
@@ -342,7 +342,7 @@ void add_to_sclist(int menus, const char *scstring, void (*func)(void), int togg
assign_keyinfo
(
s
,
scstring
);
#ifdef DEBUG
fprintf
(
stderr
,
"Setting
sequenc
e to %d for shortcut
\"
%s
\"
in menus %x
\n
"
,
s
->
seq
,
scstring
,
s
->
menus
);
fprintf
(
stderr
,
"Setting
keycod
e to %d for shortcut
\"
%s
\"
in menus %x
\n
"
,
s
->
keycode
,
scstring
,
s
->
menus
);
#endif
}
...
...
@@ -381,7 +381,7 @@ int sc_seq_or(void (*func)(void), int defaultval)
if
(
s
)
{
meta_key
=
s
->
meta
;
return
s
->
seq
;
return
s
->
keycode
;
}
/* else */
return
defaultval
;
...
...
@@ -406,51 +406,51 @@ void assign_keyinfo(sc *s, const char *keystring)
if
(
s
->
keystr
[
0
]
==
'^'
)
{
assert
(
strlen
(
s
->
keystr
)
>
1
);
s
->
seq
=
s
->
keystr
[
1
]
-
64
;
s
->
keycode
=
s
->
keystr
[
1
]
-
64
;
}
else
if
(
s
->
meta
)
{
assert
(
strlen
(
s
->
keystr
)
>
2
);
s
->
seq
=
tolower
((
int
)
s
->
keystr
[
2
]);
s
->
keycode
=
tolower
((
int
)
s
->
keystr
[
2
]);
}
else
if
(
s
->
keystr
[
0
]
==
'F'
)
{
assert
(
strlen
(
s
->
keystr
)
>
1
);
s
->
seq
=
KEY_F0
+
atoi
(
&
s
->
keystr
[
1
]);
s
->
keycode
=
KEY_F0
+
atoi
(
&
s
->
keystr
[
1
]);
}
else
/* RAWINPUT */
s
->
seq
=
(
int
)
s
->
keystr
[
0
];
s
->
keycode
=
(
int
)
s
->
keystr
[
0
];
/* Override some keys which don't bind as easily as we'd like. */
if
(
strcasecmp
(
s
->
keystr
,
"^Space"
)
==
0
)
s
->
seq
=
0
;
s
->
keycode
=
0
;
else
if
(
strcasecmp
(
s
->
keystr
,
"M-Space"
)
==
0
)
s
->
seq
=
(
int
)
' '
;
s
->
keycode
=
(
int
)
' '
;
else
{
if
(
!
strcasecmp
(
s
->
keystr
,
"Up"
))
s
->
seq
=
KEY_UP
;
s
->
keycode
=
KEY_UP
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"Down"
))
s
->
seq
=
KEY_DOWN
;
s
->
keycode
=
KEY_DOWN
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"Left"
))
s
->
seq
=
KEY_LEFT
;
s
->
keycode
=
KEY_LEFT
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"Right"
))
s
->
seq
=
KEY_RIGHT
;
s
->
keycode
=
KEY_RIGHT
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"Ins"
))
s
->
seq
=
KEY_IC
;
s
->
keycode
=
KEY_IC
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"Del"
))
s
->
seq
=
KEY_DC
;
s
->
keycode
=
KEY_DC
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"Bsp"
))
s
->
seq
=
KEY_BACKSPACE
;
s
->
keycode
=
KEY_BACKSPACE
;
/* The Tab and Enter keys don't actually produce special codes
* but the exact integer values of ^I and ^M. Rebinding the
* latter therefore also rebinds Tab and Enter. */
else
if
(
!
strcasecmp
(
s
->
keystr
,
"Tab"
))
s
->
seq
=
NANO_CONTROL_I
;
s
->
keycode
=
NANO_CONTROL_I
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"Enter"
))
s
->
seq
=
KEY_ENTER
;
s
->
keycode
=
KEY_ENTER
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"PgUp"
))
s
->
seq
=
KEY_PPAGE
;
s
->
keycode
=
KEY_PPAGE
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"PgDn"
))
s
->
seq
=
KEY_NPAGE
;
s
->
keycode
=
KEY_NPAGE
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"Home"
))
s
->
seq
=
KEY_HOME
;
s
->
keycode
=
KEY_HOME
;
else
if
(
!
strcasecmp
(
s
->
keystr
,
"End"
))
s
->
seq
=
KEY_END
;
s
->
keycode
=
KEY_END
;
}
}
...
...
This diff is collapsed.
Click to expand it.
src/nano.h
View file @
1c9ab8bf
...
...
@@ -436,11 +436,11 @@ typedef struct rcoption {
typedef
struct
sc
{
char
*
keystr
;
/* The s
hortcut key for a function, ASCII version
. */
/* The s
tring that describes a keystroke, like "^C" or "M-R"
. */
bool
meta
;
/* Whether this is a Meta keystroke. */
int
seq
;
/* The
actual sequence to check once the type is determined
. */
int
keycode
;
/* The
integer that, together with meta, identifies the keystroke
. */
int
menus
;
/* Which menus this applies to. */
void
(
*
scfunc
)(
void
);
...
...
This diff is collapsed.
Click to expand it.
src/rcfile.c
View file @
1c9ab8bf
...
...
@@ -474,14 +474,14 @@ void parse_binding(char *ptr, bool dobind)
assign_keyinfo
(
newsc
,
keycopy
);
/* Do not allow rebinding a frequent escape-sequence starter: Esc [. */
if
(
newsc
->
meta
&&
newsc
->
seq
==
91
)
{
if
(
newsc
->
meta
&&
newsc
->
keycode
==
91
)
{
rcfile_error
(
N_
(
"Sorry, keystroke
\"
%s
\"
may not be rebound"
),
newsc
->
keystr
);
free
(
newsc
);
goto
free_copy
;
}
#ifdef DEBUG
fprintf
(
stderr
,
"s->keystr =
\"
%s
\"\n
"
,
newsc
->
keystr
);
fprintf
(
stderr
,
"s->
seq
=
\"
%d
\"\n
"
,
newsc
->
seq
);
fprintf
(
stderr
,
"s->
keycode
=
\"
%d
\"\n
"
,
newsc
->
keycode
);
#endif
}
...
...
This diff is collapsed.
Click to expand it.
src/winio.c
View file @
1c9ab8bf
...
...
@@ -591,7 +591,7 @@ int parse_kbinput(WINDOW *win)
#endif
/* Slang doesn't support KEY_CANCEL. */
case
KEY_CANCEL
:
retval
=
first_sc_for
(
currmenu
,
do_cancel
)
->
seq
;
retval
=
first_sc_for
(
currmenu
,
do_cancel
)
->
keycode
;
break
;
#endif
#ifdef KEY_SUSPEND
...
...
@@ -1558,7 +1558,7 @@ int get_mouseinput(int *mouse_x, int *mouse_y, bool allow_shortcuts)
/* And put the corresponding key into the keyboard buffer. */
if
(
f
!=
NULL
)
{
const
sc
*
s
=
first_sc_for
(
currmenu
,
f
->
scfunc
);
unget_kbinput
(
s
->
seq
,
s
->
meta
);
unget_kbinput
(
s
->
keycode
,
s
->
meta
);
}
return
1
;
}
else
...
...
@@ -1616,7 +1616,7 @@ const sc *get_shortcut(int *kbinput)
#endif
for
(
s
=
sclist
;
s
!=
NULL
;
s
=
s
->
next
)
{
if
((
s
->
menus
&
currmenu
)
&&
*
kbinput
==
s
->
seq
&&
if
((
s
->
menus
&
currmenu
)
&&
*
kbinput
==
s
->
keycode
&&
meta_key
==
s
->
meta
)
{
#ifdef DEBUG
fprintf
(
stderr
,
"matched seq '%s' (menu is %x from %x)
\n
"
,
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help