summaryrefslogtreecommitdiff
path: root/graphics/svgalib/files/patch-src-keyboard-keyboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/svgalib/files/patch-src-keyboard-keyboard.c')
-rw-r--r--graphics/svgalib/files/patch-src-keyboard-keyboard.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/graphics/svgalib/files/patch-src-keyboard-keyboard.c b/graphics/svgalib/files/patch-src-keyboard-keyboard.c
new file mode 100644
index 000000000000..8e6d25ef89a2
--- /dev/null
+++ b/graphics/svgalib/files/patch-src-keyboard-keyboard.c
@@ -0,0 +1,76 @@
+--- src/keyboard/keyboard.c.orig Sun Jul 18 09:41:15 1999
++++ src/keyboard/keyboard.c Fri Sep 1 11:01:20 2000
+@@ -28,12 +28,12 @@
+ #include <sys/ioctl.h>
+ #include <fcntl.h>
+ #include <termios.h>
+-#include <linux/kd.h>
++#include <sys/kbio.h>
+ /* linux/keyboard.h defines NR_KEYS and some scancode-like constants, so it */
+ /* should also be useful for svgalib programs using the keyboard. It misses */
+ /* a few KERNEL ifdefs around kernel data structures though. */
+ #include <linux/keyboard.h>
+-#include <sys/vt.h>
++#include <sys/consio.h>
+ /* Needed to check uid of keymap files */
+ #include <sys/stat.h>
+ #include <unistd.h>
+@@ -69,10 +69,11 @@
+ "KP_4", "KP_5", "KP_6", "KP_Add",
+ "KP_1", "KP_2", "KP_3",
+ "KP_0", "KP_Period",
+- "Last_Console", "", "less", "F11", "F12", "", "", "", "", "", "", "",
+- "KP_Enter", "Control", "KP_Divide", "Control_backslash", "AltGr", "Break",
++ "Last_Console", "", "less", "F11", "F12",
++ "KP_Enter", "Control", "KP_Divide", "Control_backslash", "AltGr",
+ "Find", "Up", "Prior", "Left", "Right", "Select", "Down", "Next", "Insert",
+- "Remove", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""
++ "Remove", "Break", "", "", "", "", "", "",
++ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""
+ };
+ static void default_handler(int, int);
+ static char *kbd_load_keymap(char *ptr);
+@@ -333,14 +334,19 @@
+ tcgetattr(__svgalib_kbd_fd, &oldkbdtermios);
+ newkbdtermios = oldkbdtermios;
+
++ cfmakeraw(&newkbdtermios);
+ newkbdtermios.c_lflag &= ~(ICANON | ECHO | ISIG);
+- newkbdtermios.c_iflag &= ~(ISTRIP | IGNCR | ICRNL | INLCR | IXOFF | IXON);
++ newkbdtermios.c_oflag = OPOST | ONLCR;
++ newkbdtermios.c_iflag = IGNPAR | IGNBRK;
++ newkbdtermios.c_cflag = CREAD | CS8;
+ newkbdtermios.c_cc[VMIN] = 0; /* Making these 0 seems to have the */
+ newkbdtermios.c_cc[VTIME] = 0; /* desired effect. */
++ cfsetispeed(&newkbdtermios, 9600);
++ cfsetospeed(&newkbdtermios, 9600);
+
+- tcsetattr(__svgalib_kbd_fd, TCSAFLUSH, &newkbdtermios);
++ tcsetattr(__svgalib_kbd_fd, TCSANOW, &newkbdtermios);
+
+- ioctl(__svgalib_kbd_fd, KDSKBMODE, K_MEDIUMRAW);
++ ioctl(__svgalib_kbd_fd, KDSKBMODE, K_CODE);
+
+ keyboard_clearstate();
+
+@@ -578,7 +584,7 @@
+ /* VT switch. */
+ /* *** what about F11 & F12? */
+ int j, vt = 0;
+- struct vt_stat vts;
++ int vts;
+ for (j = 0; j < 12; j++)
+ if (functionkey_state & (1 << j)) {
+ vt = j + 1;
+@@ -587,9 +593,9 @@
+ }
+
+ /* Do not switch vt's if need not to */
+- ioctl(__svgalib_tty_fd, VT_GETSTATE, &vts);
++ ioctl(__svgalib_tty_fd, VT_GETACTIVE, &vts);
+
+- if(vt != vts.v_active) {
++ if(vt != vts) {
+ /* if switching vt's, need to clear keystates */
+ keyboard_clearstate();
+ /*