[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: FN KEY and 2.6.1(3|4)



Am Dienstag, den 18.10.2005, 09:00 +0100 schrieb Jochen Voss:
> Dear Stelian,
> 
> On Tue, Oct 18, 2005 at 07:37:19AM +0200, Stelian Pop wrote:
> > A modified and both technicaly and aestheticaly correct patch was
> > already merged in the latest stable kernel. But it requires a modified X
> > input driver in order to work.
> > 
> > Wasn't this already discussed in
> > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=307327 ?
> Sorry, this had escaped my mind.  But I remember now.
> 
> Despite being correct, does the new method also work?  Did anybody
> get, for example, the combination fn-up to produce pageup with the new
> system?  Is that patch to the X input driver publicly available?

First of all, I'm writing about the situation on my Fedora Rawhide
system. It's most likely the same on Debian systems. 

This change in 2.6.14 doesn't work on console at the moment. The
function key is shown through showkey with keycode 464. But loadkeys and
dumpkeys only support keycodes up to 255. The package version of kbd is
1.12 with some unrelated patches.

While adding a line "plain keycode 464 = CtrlR" to my keymap and trying
to load it with "loadkeys -u" I get following error message:
"addkey called with bad index 464"

Next I applied the attached patch to kbd to see if it works. Partially
successful, because I've got loadkeys to accept my modified keymap. But
two things are going wrong:
1. After login I get four times the message
	KDSKBENT: Invalid argument
	failed to bind key 256 to value 638 
2. Adding lines like "ctrlr keycode 103 = PageUp" to the keymap works,
but has no effect. PageUp, PageDown, Home and End are not triggered by
pressing fn with cursor keys, despite I see their entries with dumpkeys
(for grepping use Select, Next, Find, Prior).

Somebody else new ideas?

Frank

Attachment: de-latin1-nodeadkeys-powerbook56.map.gz
Description: GNU Zip compressed data

diff -upr orig/kbd-1.12/src/dumpkeys.c kbd-1.12/src/dumpkeys.c
--- orig/kbd-1.12/src/dumpkeys.c	2004-01-16 20:45:31.000000000 +0100
+++ kbd-1.12/src/dumpkeys.c	2005-10-18 17:46:59.000000000 +0200
@@ -47,7 +47,9 @@ has_key(int n) {
 
 static void
 find_nr_keys(void) {
-	nr_keys = (has_key(255) ? 256 : has_key(127) ? 128 : 112);
+	nr_keys = (has_key(511) ? 512 :
+	           has_key(255) ? 256 :
+	           has_key(127) ? 128 : 112);
 }
 
 static void
diff -upr orig/kbd-1.12/src/loadkeys.y kbd-1.12/src/loadkeys.y
--- orig/kbd-1.12/src/loadkeys.y	2004-01-16 22:51:25.000000000 +0100
+++ kbd-1.12/src/loadkeys.y	2005-10-18 17:49:38.000000000 +0200
@@ -32,7 +32,7 @@
 #endif
 
 #undef NR_KEYS
-#define NR_KEYS 256
+#define NR_KEYS 512
 
 /* What keymaps are we defining? */
 char defining[MAX_NR_KEYMAPS];

Reply to: