Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Synchronet
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Main
Synchronet
Commits
0f33856a
Commit
0f33856a
authored
1 year ago
by
Deucе
Browse files
Options
Downloads
Patches
Plain Diff
Add support for DECBKM.
parent
32cad313
No related branches found
No related tags found
No related merge requests found
Pipeline
#5762
passed
1 year ago
Stage: build
Stage: test
Changes
4
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
src/conio/cterm.c
+28
-2
28 additions, 2 deletions
src/conio/cterm.c
src/conio/cterm.h
+2
-0
2 additions, 0 deletions
src/conio/cterm.h
src/conio/cterm.txt
+4
-0
4 additions, 0 deletions
src/conio/cterm.txt
src/syncterm/term.c
+5
-1
5 additions, 1 deletion
src/syncterm/term.c
with
39 additions
and
3 deletions
src/conio/cterm.c
+
28
−
2
View file @
0f33856a
...
@@ -2623,6 +2623,9 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
...
@@ -2623,6 +2623,9 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
flags
|=
CIOLIB_VIDEO_NOBLINK
;
flags
|=
CIOLIB_VIDEO_NOBLINK
;
SETVIDEOFLAGS
(
flags
);
SETVIDEOFLAGS
(
flags
);
break
;
break
;
case
67
:
cterm
->
extattr
|=
CTERM_EXTATTR_DECBKM
;
break
;
case
69
:
case
69
:
cterm
->
extattr
|=
CTERM_EXTATTR_DECLRMM
;
cterm
->
extattr
|=
CTERM_EXTATTR_DECLRMM
;
break
;
break
;
...
@@ -2725,6 +2728,9 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
...
@@ -2725,6 +2728,9 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
flags
&=
~
CIOLIB_VIDEO_NOBLINK
;
flags
&=
~
CIOLIB_VIDEO_NOBLINK
;
SETVIDEOFLAGS
(
flags
);
SETVIDEOFLAGS
(
flags
);
break
;
break
;
case
67
:
cterm
->
extattr
&=
~
(
CTERM_EXTATTR_DECBKM
);
break
;
case
69
:
case
69
:
cterm
->
extattr
&=
~
(
CTERM_EXTATTR_DECLRMM
);
cterm
->
extattr
&=
~
(
CTERM_EXTATTR_DECLRMM
);
break
;
break
;
...
@@ -2910,7 +2916,7 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
...
@@ -2910,7 +2916,7 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
CTERM_SAVEMODE_NOBRIGHT
|
CTERM_SAVEMODE_BGBRIGHT
|
CTERM_SAVEMODE_ORIGIN
|
CTERM_SAVEMODE_SIXEL_SCROLL
|
CTERM_SAVEMODE_NOBRIGHT
|
CTERM_SAVEMODE_BGBRIGHT
|
CTERM_SAVEMODE_ORIGIN
|
CTERM_SAVEMODE_SIXEL_SCROLL
|
CTERM_SAVEMODE_MOUSE_X10
|
CTERM_SAVEMODE_MOUSE_NORMAL
|
CTERM_SAVEMODE_MOUSE_HIGHLIGHT
|
CTERM_SAVEMODE_MOUSE_X10
|
CTERM_SAVEMODE_MOUSE_NORMAL
|
CTERM_SAVEMODE_MOUSE_HIGHLIGHT
|
CTERM_SAVEMODE_MOUSE_BUTTONTRACK
|
CTERM_SAVEMODE_MOUSE_ANY
|
CTERM_SAVEMODE_MOUSE_FOCUS
|
CTERM_SAVEMODE_MOUSE_BUTTONTRACK
|
CTERM_SAVEMODE_MOUSE_ANY
|
CTERM_SAVEMODE_MOUSE_FOCUS
|
CTERM_SAVEMODE_MOUSE_UTF8
|
CTERM_SAVEMODE_MOUSE_SGR
|
CTERM_SAVEMODE_MOUSE_ALTSCROLL
|
CTERM_SAVEMODE_MOUSE_URXVT
|
CTERM_SAVEMODE_DECLRMM
);
CTERM_SAVEMODE_MOUSE_UTF8
|
CTERM_SAVEMODE_MOUSE_SGR
|
CTERM_SAVEMODE_MOUSE_ALTSCROLL
|
CTERM_SAVEMODE_MOUSE_URXVT
|
CTERM_SAVEMODE_DECLRMM
|
CTERM_SAVEMODE_DECBKM
);
cterm
->
saved_mode
&=
~
(
cterm
->
saved_mode_mask
);
cterm
->
saved_mode
&=
~
(
cterm
->
saved_mode_mask
);
cterm
->
saved_mode
|=
(
cterm
->
extattr
&
CTERM_EXTATTR_AUTOWRAP
)
?
CTERM_SAVEMODE_AUTOWRAP
:
0
;
cterm
->
saved_mode
|=
(
cterm
->
extattr
&
CTERM_EXTATTR_AUTOWRAP
)
?
CTERM_SAVEMODE_AUTOWRAP
:
0
;
cterm
->
saved_mode
|=
(
cterm
->
cursor
==
_NORMALCURSOR
)
?
CTERM_SAVEMODE_CURSOR
:
0
;
cterm
->
saved_mode
|=
(
cterm
->
cursor
==
_NORMALCURSOR
)
?
CTERM_SAVEMODE_CURSOR
:
0
;
...
@@ -2932,6 +2938,7 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
...
@@ -2932,6 +2938,7 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
cterm
->
saved_mode
|=
(
cterm
->
mouse_state_query
(
1007
,
cterm
->
mouse_state_query_cbdata
)
?
CTERM_SAVEMODE_MOUSE_ALTSCROLL
:
0
);
cterm
->
saved_mode
|=
(
cterm
->
mouse_state_query
(
1007
,
cterm
->
mouse_state_query_cbdata
)
?
CTERM_SAVEMODE_MOUSE_ALTSCROLL
:
0
);
cterm
->
saved_mode
|=
(
cterm
->
mouse_state_query
(
1015
,
cterm
->
mouse_state_query_cbdata
)
?
CTERM_SAVEMODE_MOUSE_URXVT
:
0
);
cterm
->
saved_mode
|=
(
cterm
->
mouse_state_query
(
1015
,
cterm
->
mouse_state_query_cbdata
)
?
CTERM_SAVEMODE_MOUSE_URXVT
:
0
);
cterm
->
saved_mode
|=
(
cterm
->
extattr
&
CTERM_EXTATTR_DECLRMM
)
?
CTERM_SAVEMODE_DECLRMM
:
0
;
cterm
->
saved_mode
|=
(
cterm
->
extattr
&
CTERM_EXTATTR_DECLRMM
)
?
CTERM_SAVEMODE_DECLRMM
:
0
;
cterm
->
saved_mode
|=
(
cterm
->
extattr
&
CTERM_EXTATTR_DECBKM
)
?
CTERM_SAVEMODE_DECBKM
:
0
;
setwindow
(
cterm
);
setwindow
(
cterm
);
break
;
break
;
}
}
...
@@ -2984,6 +2991,11 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
...
@@ -2984,6 +2991,11 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
cterm
->
saved_mode
&=
~
(
CTERM_SAVEMODE_NOBLINK
);
cterm
->
saved_mode
&=
~
(
CTERM_SAVEMODE_NOBLINK
);
cterm
->
saved_mode
|=
(
flags
&
CIOLIB_VIDEO_NOBLINK
)
?
CTERM_SAVEMODE_NOBLINK
:
0
;
cterm
->
saved_mode
|=
(
flags
&
CIOLIB_VIDEO_NOBLINK
)
?
CTERM_SAVEMODE_NOBLINK
:
0
;
break
;
break
;
case
67
:
cterm
->
saved_mode_mask
|=
CTERM_SAVEMODE_DECBKM
;
cterm
->
saved_mode
&=
~
(
CTERM_SAVEMODE_DECBKM
);
cterm
->
saved_mode
|=
(
cterm
->
extattr
&
CTERM_EXTATTR_DECBKM
)
?
CTERM_SAVEMODE_DECBKM
:
0
;
break
;
case
69
:
case
69
:
cterm
->
saved_mode_mask
|=
CTERM_SAVEMODE_DECLRMM
;
cterm
->
saved_mode_mask
|=
CTERM_SAVEMODE_DECLRMM
;
cterm
->
saved_mode
&=
~
(
CTERM_SAVEMODE_DECLRMM
);
cterm
->
saved_mode
&=
~
(
CTERM_SAVEMODE_DECLRMM
);
...
@@ -3127,6 +3139,12 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
...
@@ -3127,6 +3139,12 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
cterm
->
mouse_state_change
(
1007
,
cterm
->
saved_mode
&
CTERM_SAVEMODE_MOUSE_ALTSCROLL
,
cterm
->
mouse_state_change_cbdata
);
cterm
->
mouse_state_change
(
1007
,
cterm
->
saved_mode
&
CTERM_SAVEMODE_MOUSE_ALTSCROLL
,
cterm
->
mouse_state_change_cbdata
);
if
(
cterm
->
saved_mode_mask
&
CTERM_SAVEMODE_MOUSE_URXVT
)
if
(
cterm
->
saved_mode_mask
&
CTERM_SAVEMODE_MOUSE_URXVT
)
cterm
->
mouse_state_change
(
1015
,
cterm
->
saved_mode
&
CTERM_SAVEMODE_MOUSE_URXVT
,
cterm
->
mouse_state_change_cbdata
);
cterm
->
mouse_state_change
(
1015
,
cterm
->
saved_mode
&
CTERM_SAVEMODE_MOUSE_URXVT
,
cterm
->
mouse_state_change_cbdata
);
if
(
cterm
->
saved_mode_mask
&
CTERM_SAVEMODE_DECBKM
)
{
if
(
cterm
->
saved_mode
&
CTERM_SAVEMODE_DECBKM
)
cterm
->
extattr
|=
CTERM_EXTATTR_DECBKM
;
else
cterm
->
extattr
&=
~
CTERM_EXTATTR_DECBKM
;
}
if
(
cterm
->
saved_mode_mask
&
CTERM_SAVEMODE_DECLRMM
)
{
if
(
cterm
->
saved_mode_mask
&
CTERM_SAVEMODE_DECLRMM
)
{
if
(
cterm
->
saved_mode
&
CTERM_SAVEMODE_DECLRMM
)
if
(
cterm
->
saved_mode
&
CTERM_SAVEMODE_DECLRMM
)
cterm
->
extattr
|=
CTERM_EXTATTR_DECLRMM
;
cterm
->
extattr
|=
CTERM_EXTATTR_DECLRMM
;
...
@@ -3210,6 +3228,14 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
...
@@ -3210,6 +3228,14 @@ static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *
SETVIDEOFLAGS
(
flags
);
SETVIDEOFLAGS
(
flags
);
}
}
break
;
break
;
case
67
:
if
(
cterm
->
saved_mode_mask
&
CTERM_SAVEMODE_DECBKM
)
{
if
(
cterm
->
saved_mode
&
CTERM_SAVEMODE_DECBKM
)
cterm
->
extattr
|=
CTERM_EXTATTR_DECBKM
;
else
cterm
->
extattr
&=
~
CTERM_EXTATTR_DECBKM
;
}
break
;
case
69
:
case
69
:
if
(
cterm
->
saved_mode_mask
&
CTERM_SAVEMODE_DECLRMM
)
{
if
(
cterm
->
saved_mode_mask
&
CTERM_SAVEMODE_DECLRMM
)
{
if
(
cterm
->
saved_mode
&
CTERM_SAVEMODE_DECLRMM
)
if
(
cterm
->
saved_mode
&
CTERM_SAVEMODE_DECLRMM
)
...
@@ -4516,7 +4542,7 @@ cterm_reset(struct cterminal *cterm)
...
@@ -4516,7 +4542,7 @@ cterm_reset(struct cterminal *cterm)
cterm
->
xpos
=
TERM_MINX
;
cterm
->
xpos
=
TERM_MINX
;
cterm
->
ypos
=
TERM_MINY
;
cterm
->
ypos
=
TERM_MINY
;
cterm
->
cursor
=
_NORMALCURSOR
;
cterm
->
cursor
=
_NORMALCURSOR
;
cterm
->
extattr
=
CTERM_EXTATTR_AUTOWRAP
|
CTERM_EXTATTR_SXSCROLL
;
cterm
->
extattr
=
CTERM_EXTATTR_AUTOWRAP
|
CTERM_EXTATTR_SXSCROLL
|
CTERM_EXTATTR_DECBKM
;
FREE_AND_NULL
(
cterm
->
tabs
);
FREE_AND_NULL
(
cterm
->
tabs
);
cterm
->
tabs
=
malloc
(
sizeof
(
cterm_tabs
));
cterm
->
tabs
=
malloc
(
sizeof
(
cterm_tabs
));
if
(
cterm
->
tabs
)
{
if
(
cterm
->
tabs
)
{
...
...
This diff is collapsed.
Click to expand it.
src/conio/cterm.h
+
2
−
0
View file @
0f33856a
...
@@ -109,6 +109,7 @@ struct cterminal {
...
@@ -109,6 +109,7 @@ struct cterminal {
#define CTERM_SAVEMODE_MOUSE_ALTSCROLL 0x20000
#define CTERM_SAVEMODE_MOUSE_ALTSCROLL 0x20000
#define CTERM_SAVEMODE_MOUSE_URXVT 0x40000
#define CTERM_SAVEMODE_MOUSE_URXVT 0x40000
#define CTERM_SAVEMODE_DECLRMM 0x80000
#define CTERM_SAVEMODE_DECLRMM 0x80000
#define CTERM_SAVEMODE_DECBKM 0x100000
int32_t
saved_mode
;
int32_t
saved_mode
;
int32_t
saved_mode_mask
;
int32_t
saved_mode_mask
;
...
@@ -125,6 +126,7 @@ struct cterminal {
...
@@ -125,6 +126,7 @@ struct cterminal {
#define CTERM_EXTATTR_SXSCROLL 0x0004
#define CTERM_EXTATTR_SXSCROLL 0x0004
#define CTERM_EXTATTR_DECLRMM 0x0008
#define CTERM_EXTATTR_DECLRMM 0x0008
#define CTERM_EXTATTR_BRACKETPASTE 0x0010
#define CTERM_EXTATTR_BRACKETPASTE 0x0010
#define CTERM_EXTATTR_DECBKM 0x0020
int
save_xpos
;
// Saved position (for later restore)
int
save_xpos
;
// Saved position (for later restore)
int
save_ypos
;
int
save_ypos
;
int
sequence
;
// An escape sequence is being parsed
int
sequence
;
// An escape sequence is being parsed
...
...
This diff is collapsed.
Click to expand it.
src/conio/cterm.txt
+
4
−
0
View file @
0f33856a
...
@@ -874,6 +874,8 @@ CSI ? Ps... h (DECSET)
...
@@ -874,6 +874,8 @@ CSI ? Ps... h (DECSET)
This makes the blink (5, 6) graphic renditions not cause the
This makes the blink (5, 6) graphic renditions not cause the
character to blink. Mostly for use with CSI ? 34 h to permit
character to blink. Mostly for use with CSI ? 34 h to permit
fonts to be used without blinking. Defaults to reset.
fonts to be used without blinking. Defaults to reset.
67 - When set, the backspace key sends a backspace character.
Defaults to set.
69 - DEC Left Right Margin Mode enabled
69 - DEC Left Right Margin Mode enabled
Enables CSI s to set the left/right margins, and disables CSI s
Enables CSI s to set the left/right margins, and disables CSI s
from saving the current cursor position.
from saving the current cursor position.
...
@@ -1001,6 +1003,8 @@ CSI ? Ps... l (DECRST)
...
@@ -1001,6 +1003,8 @@ CSI ? Ps... l (DECRST)
35 - Blink Enable
35 - Blink Enable
With this mode reset, the blink (5,6) graphic renditions behave
With this mode reset, the blink (5,6) graphic renditions behave
normally (cause the characters to blink). Defaults to reset.
normally (cause the characters to blink). Defaults to reset.
67 - When reset, the backspace key sends a delete character.
Defaults to set.
69 - DEC Left Right Margin Mode disabled
69 - DEC Left Right Margin Mode disabled
Disables CSI s from setting the left/right margins, and changes
Disables CSI s from setting the left/right margins, and changes
it back to saving the current cursor position. The current
it back to saving the current cursor position. The current
...
...
This diff is collapsed.
Click to expand it.
src/syncterm/term.c
+
5
−
1
View file @
0f33856a
...
@@ -4586,7 +4586,11 @@ doterm(struct bbslist *bbs)
...
@@ -4586,7 +4586,11 @@ doterm(struct bbslist *bbs)
conn_send
(
"
\033
[Z"
,
3
,
0
);
conn_send
(
"
\033
[Z"
,
3
,
0
);
break
;
break
;
case
'\b'
:
case
'\b'
:
if
(
cterm
->
extattr
&
CTERM_EXTATTR_DECBKM
)
key
=
'\b'
;
key
=
'\b'
;
else
key
=
'\x7f'
;
break
;
/* FALLTHROUGH to default */
/* FALLTHROUGH to default */
default:
default:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment