Avoid non-printable ASCII codes < 0x1c on FreeBSD
This commit is contained in:
parent
09eb75c14b
commit
8de22dc903
|
@ -3,6 +3,7 @@
|
||||||
on the FreeBSD console for the accelerator key access
|
on the FreeBSD console for the accelerator key access
|
||||||
(Console switching is still possible with
|
(Console switching is still possible with
|
||||||
Ctrl-Alt-F1 through Ctrl-Alt-F8)
|
Ctrl-Alt-F1 through Ctrl-Alt-F8)
|
||||||
|
* Avoid non-printable ASCII codes < 0x1c on a FreeBSD console
|
||||||
|
|
||||||
2017-03-30 Markus Gans <guru.mail@muenster.de>
|
2017-03-30 Markus Gans <guru.mail@muenster.de>
|
||||||
* Fixed bug: termcap "me" does not reset
|
* Fixed bug: termcap "me" does not reset
|
||||||
|
|
|
@ -1625,6 +1625,21 @@ void FTerm::initLinuxConsoleCharMap()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(BSD)
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FTerm::initBSDConsoleCharMap()
|
||||||
|
{
|
||||||
|
// A FreeBSD console can't show ASCII codes from 0x00 to 0x1b
|
||||||
|
|
||||||
|
if ( ! isBSDConsole() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (int i=0; i <= lastCharItem; i++ )
|
||||||
|
if ( character[i][fc::PC] < 0x1c )
|
||||||
|
character[i][fc::PC] = character[i][fc::ASCII];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
bool FTerm::charEncodable (uInt c)
|
bool FTerm::charEncodable (uInt c)
|
||||||
{
|
{
|
||||||
|
@ -2749,22 +2764,29 @@ void FTerm::init_termcaps()
|
||||||
status = tgetent(term_buffer, termtype);
|
status = tgetent(term_buffer, termtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( status != success && color256 )
|
||||||
|
{
|
||||||
|
// use "xterm-256color" as fallback if not found
|
||||||
|
std::strncpy (termtype, const_cast<char*>("xterm-256color"), 15);
|
||||||
|
status = tgetent(term_buffer, termtype);
|
||||||
|
}
|
||||||
|
|
||||||
if ( status != success )
|
if ( status != success )
|
||||||
{
|
{
|
||||||
// use xterm as fallback if not found
|
// use "xterm" as fallback if not found
|
||||||
std::strncpy (termtype, const_cast<char*>("xterm"), 6);
|
std::strncpy (termtype, const_cast<char*>("xterm"), 6);
|
||||||
status = tgetent(term_buffer, termtype);
|
status = tgetent(term_buffer, termtype);
|
||||||
|
|
||||||
if ( status != success )
|
if ( status != success )
|
||||||
{
|
{
|
||||||
// use ansi as fallback if not found
|
// use "ansi" as fallback if not found
|
||||||
std::strncpy (termtype, const_cast<char*>("ansi"), 5);
|
std::strncpy (termtype, const_cast<char*>("ansi"), 5);
|
||||||
status = tgetent(term_buffer, termtype);
|
status = tgetent(term_buffer, termtype);
|
||||||
ansi_terminal = true;
|
ansi_terminal = true;
|
||||||
|
|
||||||
if ( status != success )
|
if ( status != success )
|
||||||
{
|
{
|
||||||
// use vt100 as fallback if not found
|
// use "vt100" as fallback if not found
|
||||||
std::strncpy (termtype, const_cast<char*>("vt100"), 6);
|
std::strncpy (termtype, const_cast<char*>("vt100"), 6);
|
||||||
status = tgetent(term_buffer, termtype);
|
status = tgetent(term_buffer, termtype);
|
||||||
ansi_terminal = false;
|
ansi_terminal = false;
|
||||||
|
|
|
@ -257,6 +257,10 @@ class FTerm
|
||||||
static void initLinuxConsoleCharMap();
|
static void initLinuxConsoleCharMap();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(BSD)
|
||||||
|
static void initBSDConsoleCharMap();
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool charEncodable (uInt);
|
static bool charEncodable (uInt);
|
||||||
static uInt charEncode (uInt);
|
static uInt charEncode (uInt);
|
||||||
static uInt charEncode (uInt, fc::encoding);
|
static uInt charEncode (uInt, fc::encoding);
|
||||||
|
|
|
@ -1163,6 +1163,10 @@ void FWidget::show()
|
||||||
initLinuxConsoleCharMap();
|
initLinuxConsoleCharMap();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(BSD)
|
||||||
|
initBSDConsoleCharMap();
|
||||||
|
#endif
|
||||||
|
|
||||||
// set xterm underline cursor
|
// set xterm underline cursor
|
||||||
setXTermCursorStyle(fc::blinking_underline);
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue