summaryrefslogtreecommitdiff
path: root/sys/dev/syscons
diff options
context:
space:
mode:
authorKazutaka YOKOTA <yokota@FreeBSD.org>1999-05-09 11:02:37 +0000
committerKazutaka YOKOTA <yokota@FreeBSD.org>1999-05-09 11:02:37 +0000
commitc7fbf8d17363780d75af52553f36229e61b592e3 (patch)
tree812bb1d4f926a0a5e559fcfd5127e9818e7b8a65 /sys/dev/syscons
parentfe4dafab7377cdddc08e02dffda9024822cb73cf (diff)
Notes
Diffstat (limited to 'sys/dev/syscons')
-rw-r--r--sys/dev/syscons/syscons.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c
index 3ffa5be88323..b468f6ac2f95 100644
--- a/sys/dev/syscons/syscons.c
+++ b/sys/dev/syscons/syscons.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: syscons.c,v 1.293.2.1 1999/01/31 12:52:18 yokota Exp $
+ * $Id$
*/
#include "sc.h"
@@ -172,7 +172,9 @@ static long scrn_time_stamp;
static int saver_mode = CONS_LKM_SAVER; /* LKM/user saver */
static int run_scrn_saver = FALSE; /* should run the saver? */
static int scrn_idle = FALSE; /* about to run the saver */
+#if NSPLASH > 0
static int scrn_saver_failed;
+#endif
u_char scr_map[256];
u_char scr_rmap[256];
static int initial_video_mode; /* initial video mode # */
@@ -261,6 +263,8 @@ static const int nsccons = MAXCONS+2;
(*kbdsw[(kbd)->kb_index]->clear_state)((kbd))
#define kbd_get_fkeystr(kbd, fkey, len) \
(*kbdsw[(kbd)->kb_index]->get_fkeystr)((kbd), (fkey), (len))
+#define kbd_poll(kbd, on) \
+ (*kbdsw[(kbd)->kb_index]->poll)((kbd), (on))
/* prototypes */
static kbd_callback_func_t sckbdevent;
@@ -438,7 +442,7 @@ draw_cursor_image(scr_stat *scp)
cursor_image |= DEAD_CHAR;
}
} else {
- cursor_image = (readw(ptr) & 0x00ff) | *(scp->cursor_pos) & 0xff00;
+ cursor_image = (readw(ptr) & 0x00ff) | (*(scp->cursor_pos) & 0xff00);
scp->cursor_saveunder = cursor_image;
if (!(sc_flags & BLINK_CURSOR)||((sc_flags & BLINK_CURSOR)&&(blinkrate & 4))){
if ((cursor_image & 0x7000) == 0x7000) {
@@ -1564,10 +1568,16 @@ scioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
*(int *)data = scp->status & LOCK_MASK;
return 0;
- case KDSETRAD: /* set keyboard repeat & delay rates */
+ case KDSETREPEAT: /* set keyboard repeat & delay rates (new) */
+ error = kbd_ioctl(kbd, cmd, data);
+ if (error == ENOIOCTL)
+ error = ENODEV;
+ return error;
+
+ case KDSETRAD: /* set keyboard repeat & delay rates (old) */
if (*(int *)data & ~0x7f)
return EINVAL;
- error = kbd_ioctl(kbd, KDSETRAD, data);
+ error = kbd_ioctl(kbd, cmd, data);
if (error == ENOIOCTL)
error = ENODEV;
return error;
@@ -1994,7 +2004,9 @@ sccngetch(int flags)
cur_console->kbd_mode = K_XLATE;
kbd_ioctl(kbd, KDSKBMODE, (caddr_t)&cur_console->kbd_mode);
+ kbd_poll(kbd, TRUE);
c = scgetc(kbd, SCGETC_CN | flags);
+ kbd_poll(kbd, FALSE);
cur_console->kbd_mode = cur_mode;
kbd_ioctl(kbd, KDSKBMODE, (caddr_t)&cur_console->kbd_mode);