]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/tinfo/lib_raw.c
ncurses 5.9 - patch 20140308
[ncurses.git] / ncurses / tinfo / lib_raw.c
index 61f76bdb02ebcb82edd6bcbf51c32cfb291bfa91..928692b0cb272ad52433dbb98ad2502dd5866303 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
 /****************************************************************************
- * Copyright (c) 1998-2010,2011 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            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -49,7 +49,7 @@
 
 #include <curses.priv.h>
 
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_raw.c,v 1.20 2011/04/16 16:42:10 tom Exp $")
+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 <sys/termio.h>                /* needed for ISC */
 
 #if HAVE_SYS_TERMIO_H
 #include <sys/termio.h>                /* needed for ISC */
@@ -62,6 +62,11 @@ MODULE_ID("$Id: lib_raw.c,v 1.20 2011/04/16 16:42:10 tom Exp $")
 #define _nc_setmode(mode)      /* nothing */
 #endif
 
 #define _nc_setmode(mode)      /* nothing */
 #endif
 
+#if USE_KLIBC_KBD
+#define INCL_KBD
+#include <os2.h>
+#endif
+
 #define COOKED_INPUT   (IXON|BRKINT|PARMRK)
 
 #ifdef TRACE
 #define COOKED_INPUT   (IXON|BRKINT|PARMRK)
 
 #ifdef TRACE
@@ -96,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) {
 #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;
            SP_PARM->_raw = TRUE;
            SP_PARM->_cbreak = 1;
            termp->Nttyb = buf;
@@ -214,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) {
 #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;
            SP_PARM->_raw = FALSE;
            SP_PARM->_cbreak = 0;
            termp->Nttyb = buf;