colinux64/patch/kbd-2.6.25.diff
2025-02-13 19:09:34 -07:00

115 lines
3.8 KiB
Diff
Executable File

Keyboard driver
Index: linux-2.6.25-source/drivers/input/keyboard/Kconfig
===================================================================
--- linux-2.6.25-source.orig/drivers/input/keyboard/Kconfig
+++ linux-2.6.25-source/drivers/input/keyboard/Kconfig
@@ -17,7 +17,7 @@
default y
select SERIO
select SERIO_LIBPS2
- select SERIO_I8042 if X86_PC
+ select SERIO_I8042 if X86_PC && !COOPERATIVE
select SERIO_GSCPS2 if GSC
help
Say Y here if you want to use a standard AT or PS/2 keyboard. Usually
Index: linux-2.6.25-source/drivers/input/keyboard/atkbd.c
===================================================================
--- linux-2.6.25-source.orig/drivers/input/keyboard/atkbd.c
+++ linux-2.6.25-source/drivers/input/keyboard/atkbd.c
@@ -28,6 +28,7 @@
#include <linux/libps2.h>
#include <linux/mutex.h>
#include <linux/dmi.h>
+#include <linux/cooperative_internal.h>
#define DRIVER_DESC "AT and PS/2 keyboard driver"
@@ -657,6 +658,9 @@
struct ps2dev *ps2dev = &atkbd->ps2dev;
unsigned char param[2];
+ if (cooperative_mode_enabled())
+ return 0;
+
/*
* Some systems, where the bit-twiddling when testing the io-lines of the
* controller may confuse the keyboard need a full reset of the keyboard. On
Index: linux-2.6.25-source/drivers/input/serio/Kconfig
===================================================================
--- linux-2.6.25-source.orig/drivers/input/serio/Kconfig
+++ linux-2.6.25-source/drivers/input/serio/Kconfig
@@ -21,7 +21,7 @@
config SERIO_I8042
tristate "i8042 PC Keyboard controller" if EMBEDDED || !X86
default y
- depends on !PARISC && (!ARM || ARCH_SHARK || FOOTBRIDGE_HOST) && !M68K && !BLACKFIN
+ depends on !PARISC && (!ARM || ARCH_SHARK || FOOTBRIDGE_HOST) && !M68K && !BLACKFIN && !COOPERATIVE
---help---
i8042 is the chip over which the standard AT keyboard and PS/2
mouse are connected to the computer. If you use these devices,
@@ -158,6 +158,7 @@
config SERIO_LIBPS2
tristate "PS/2 driver library" if EMBEDDED
+ depends on !COOPERATIVE
help
Say Y here if you are using a driver for device connected
to a PS/2 port, such as PS/2 mouse or standard AT keyboard.
@@ -180,4 +181,9 @@
To compile this driver as a module, choose M here: the
module will be called serio_raw.
+config SERIO_COKBD
+ tristate "Cooperative Linux virtual keyboard controller driver"
+ depends on COOPERATIVE
+ default y
+
endif
Index: linux-2.6.25-source/drivers/input/serio/Makefile
===================================================================
--- linux-2.6.25-source.orig/drivers/input/serio/Makefile
+++ linux-2.6.25-source/drivers/input/serio/Makefile
@@ -20,3 +20,4 @@
obj-$(CONFIG_SERIO_MACEPS2) += maceps2.o
obj-$(CONFIG_SERIO_LIBPS2) += libps2.o
obj-$(CONFIG_SERIO_RAW) += serio_raw.o
+obj-$(CONFIG_SERIO_COKBD) += cokbd.o
Index: linux-2.6.25-source/drivers/char/keyboard.c
===================================================================
--- linux-2.6.25-source.orig/drivers/char/keyboard.c
+++ linux-2.6.25-source/drivers/char/keyboard.c
@@ -357,6 +357,14 @@
}
}
+#ifdef CONFIG_COOPERATIVE
+void keyboard_inject_utf8(uint c)
+{
+ to_utf8(vc_cons[fg_console].d, c);
+}
+EXPORT_SYMBOL_GPL(keyboard_inject_utf8);
+#endif
+
/*
* Called after returning from RAW mode or when changing consoles - recompute
* shift_down[] and shift_state from key_down[] maybe called when keymap is
Index: linux-2.6.25-source/include/linux/kbd_kern.h
===================================================================
--- linux-2.6.25-source.orig/include/linux/kbd_kern.h
+++ linux-2.6.25-source/include/linux/kbd_kern.h
@@ -1,3 +1,4 @@
+
#ifndef _KBD_KERN_H
#define _KBD_KERN_H
@@ -66,6 +67,7 @@
extern struct kbd_struct kbd_table[];
+extern void keyboard_inject_utf8(uint c);
extern int kbd_init(void);
extern unsigned char getledstate(void);