X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Flib_raw.c;h=928692b0cb272ad52433dbb98ad2502dd5866303;hp=aea5df54813f272cbfab36c468ca19a4f351459e;hb=ef2d99350e0d3e4606171b5b1466ab92ec440205;hpb=8485ec820b6d0ad70950b63834f31b3ca235c84b diff --git a/ncurses/tinfo/lib_raw.c b/ncurses/tinfo/lib_raw.c index aea5df54..928692b0 100644 --- a/ncurses/tinfo/lib_raw.c +++ b/ncurses/tinfo/lib_raw.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -49,11 +49,7 @@ #include -MODULE_ID("$Id: lib_raw.c,v 1.17 2009/08/01 23:11:02 tom Exp $") - -#if SVR4_TERMIO && !defined(_POSIX_SOURCE) -#define _POSIX_SOURCE -#endif +MODULE_ID("$Id: lib_raw.c,v 1.21 2012/01/21 19:21:29 KO.Myung-Hun Exp $") #if HAVE_SYS_TERMIO_H #include /* needed for ISC */ @@ -66,6 +62,11 @@ MODULE_ID("$Id: lib_raw.c,v 1.17 2009/08/01 23:11:02 tom Exp $") #define _nc_setmode(mode) /* nothing */ #endif +#if USE_KLIBC_KBD +#define INCL_KBD +#include +#endif + #define COOKED_INPUT (IXON|BRKINT|PARMRK) #ifdef TRACE @@ -82,7 +83,7 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0) int result = ERR; TERMINAL *termp; - T((T_CALLED("raw(%p)"), SP_PARM)); + T((T_CALLED("raw(%p)"), (void *) SP_PARM)); if ((termp = TerminalOf(SP_PARM)) != 0) { TTY buf; @@ -91,8 +92,8 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0) buf = termp->Nttyb; #ifdef TERMIOS - buf.c_lflag &= ~(ICANON | ISIG | IEXTEN); - buf.c_iflag &= ~(COOKED_INPUT); + buf.c_lflag &= (unsigned) ~(ICANON | ISIG | IEXTEN); + buf.c_iflag &= (unsigned) ~(COOKED_INPUT); buf.c_cc[VMIN] = 1; buf.c_cc[VTIME] = 0; #else @@ -100,6 +101,17 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0) #endif result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); if (result == OK) { +#if USE_KLIBC_KBD + KBDINFO kbdinfo; + + kbdinfo.cb = sizeof(kbdinfo); + KbdGetStatus(&kbdinfo, 0); + + kbdinfo.cb = sizeof(kbdinfo); + kbdinfo.fsMask &= ~KEYBOARD_ASCII_MODE; + kbdinfo.fsMask |= KEYBOARD_BINARY_MODE; + KbdSetStatus(&kbdinfo, 0); +#endif SP_PARM->_raw = TRUE; SP_PARM->_cbreak = 1; termp->Nttyb = buf; @@ -123,7 +135,7 @@ NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0) int result = ERR; TERMINAL *termp; - T((T_CALLED("cbreak(%p)"), SP_PARM)); + T((T_CALLED("cbreak(%p)"), (void *) SP_PARM)); if ((termp = TerminalOf(SP_PARM)) != 0) { TTY buf; @@ -132,8 +144,8 @@ NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0) buf = termp->Nttyb; #ifdef TERMIOS - buf.c_lflag &= ~ICANON; - buf.c_iflag &= ~ICRNL; + buf.c_lflag &= (unsigned) ~ICANON; + buf.c_iflag &= (unsigned) ~ICRNL; buf.c_lflag |= ISIG; buf.c_cc[VMIN] = 1; buf.c_cc[VTIME] = 0; @@ -168,14 +180,14 @@ NCURSES_SP_NAME(qiflush) (NCURSES_SP_DCL0) int result = ERR; TERMINAL *termp; - T((T_CALLED("qiflush(%p)"), SP_PARM)); + T((T_CALLED("qiflush(%p)"), (void *) SP_PARM)); if ((termp = TerminalOf(SP_PARM)) != 0) { TTY buf; BEFORE("qiflush"); buf = termp->Nttyb; #ifdef TERMIOS - buf.c_lflag &= ~(NOFLSH); + buf.c_lflag &= (unsigned) ~(NOFLSH); result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); #else /* FIXME */ @@ -201,7 +213,7 @@ NCURSES_SP_NAME(noraw) (NCURSES_SP_DCL0) int result = ERR; TERMINAL *termp; - T((T_CALLED("noraw(%p)"), SP_PARM)); + T((T_CALLED("noraw(%p)"), (void *) SP_PARM)); if ((termp = TerminalOf(SP_PARM)) != 0) { TTY buf; @@ -218,6 +230,17 @@ NCURSES_SP_NAME(noraw) (NCURSES_SP_DCL0) #endif result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); if (result == OK) { +#if USE_KLIBC_KBD + KBDINFO kbdinfo; + + kbdinfo.cb = sizeof(kbdinfo); + KbdGetStatus(&kbdinfo, 0); + + kbdinfo.cb = sizeof(kbdinfo); + kbdinfo.fsMask &= ~KEYBOARD_BINARY_MODE; + kbdinfo.fsMask |= KEYBOARD_ASCII_MODE; + KbdSetStatus(&kbdinfo, 0); +#endif SP_PARM->_raw = FALSE; SP_PARM->_cbreak = 0; termp->Nttyb = buf; @@ -241,7 +264,7 @@ NCURSES_SP_NAME(nocbreak) (NCURSES_SP_DCL0) int result = ERR; TERMINAL *termp; - T((T_CALLED("nocbreak(%p)"), SP_PARM)); + T((T_CALLED("nocbreak(%p)"), (void *) SP_PARM)); if ((termp = TerminalOf(SP_PARM)) != 0) { TTY buf; @@ -279,7 +302,7 @@ NCURSES_SP_NAME(noqiflush) (NCURSES_SP_DCL0) int result = ERR; TERMINAL *termp; - T((T_CALLED("noqiflush(%p)"), SP_PARM)); + T((T_CALLED("noqiflush(%p)"), (void *) SP_PARM)); if ((termp = TerminalOf(SP_PARM)) != 0) { TTY buf; @@ -319,7 +342,7 @@ NCURSES_SP_NAME(intrflush) (NCURSES_SP_DCLx WINDOW *win GCC_UNUSED, bool flag) int result = ERR; TERMINAL *termp; - T((T_CALLED("intrflush(%p,%d)"), SP_PARM, flag)); + T((T_CALLED("intrflush(%p,%d)"), (void *) SP_PARM, flag)); if (SP_PARM == 0) returnCode(ERR); @@ -330,7 +353,7 @@ NCURSES_SP_NAME(intrflush) (NCURSES_SP_DCLx WINDOW *win GCC_UNUSED, bool flag) buf = termp->Nttyb; #ifdef TERMIOS if (flag) - buf.c_lflag &= ~(NOFLSH); + buf.c_lflag &= (unsigned) ~(NOFLSH); else buf.c_lflag |= (NOFLSH); result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);