We're going to figure this out, BILLYKANE!
I started digging further into the various solutions and software available for ACPI, and saw a few that looked familiar, such as xmodmap, which I believe I have used in the past.
One I ran across is an omnibook module that could provide the functionality you need. I downloaded the source and here is the README file under the doc/ directory:
===============================================================
Kernel Support for HP OmniBooks, Pavilions and Compal laptops
===============================================================
This package is intended to provide Linux kernel support for many laptops such as:
- HP OmniBook and Pavilion
- Toshiba Satellite and Tecra which are not supported by the toshiba_acpi module
- Compal ACL00
- Many laptops manufactured by Compal Electronics, Inc as ODM
Supported features depends on the exact laptop model but may include:
- Enabling hotkey buttons
- Console (LCD display) blanking
- Battery status monitoring.
- Fan and fan policy support
- Touchpad control
- AC Adapter status monitoring
- External display monitors status monitoring and control
- LCD brightness (backlight) monitoring and control
- Docking station/port replicator status
- CPU temperature monitoring
- Mute LED monitoring and control
- Wifi and Bluetooth adapters monitoring and control
- Cooling method control
- CPU Throttling control
Useful links:
Full documentation (HOWTO, Installation instructions, Supported laptops list... ):
http://omnibook.sourceforge.net/doku.php?id=start
Sourceforge project page:
http://sourceforge.net/projects/omnibook
Other links not related to the project:
For HP Omnibook specific issues ou can see the OmniBook mailing list:
http://zurich.ai.mit.edu/mailman/listinfo/omnibook
or the Toshiba linux mailing list:
http://linux.toshiba-dme.co.jp/linux/
***********************************************
I downloaded the source found
here, the latest one, but it would not compile on my system. I tried it on my Slackware system and that one failed as well. After a bit of searching, I found this reference:
http://sourceforge.net/tracker/index...60&atid=868544
You can see there is mention of a file that can be found
here that is a source rpm. I extracted the source by the following steps, and it compiled properly. There is mention of a patch in the page where I found that ftp file, but I'm not sure what they are discussing there. They might be adding this code the kernel source, but that is just a guess.
I started from my home directory for my user, where the omnibook-20080627-1.1.6.src.rpm file is located.
jcwx@mars:~$ mkdir temp
jcwx@mars:~$ cp omnibook-20080627-1.1.6.src.rpm temp
jcwx@mars:~$ cd temp
jcwx@mars:~/temp$ ls
omnibook-20080627-1.1.6.src.rpm
jcwx@mars:~/temp$ rpm2cpio omnibook-20080627-1.1.6.src.rpm | cpio -idv
omnibook-2.20080627.tar.bz2
omnibook-fix-uninitialized.diff
omnibook-fix-wrong_named_variable.diff
omnibook.spec
preamble
135 blocks
jcwx@mars:~/temp$ ls
omnibook-2.20080627.tar.bz2 omnibook-fix-wrong_named_variable.diff
omnibook-20080627-1.1.6.src.rpm omnibook.spec
omnibook-fix-uninitialized.diff preamble
jcwx@mars:~/temp$ tar -xvjf omnibook-2.20080627.tar.bz2
omnibook-2.20080627/
omnibook-2.20080627/doc/
omnibook-2.20080627/doc/.svn/
(...)
omnibook-2.20080627/temperature.c
omnibook-2.20080627/blank.c
omnibook-2.20080627/laptop.h
jcwx@mars:~/temp$ ls
omnibook-2.20080627/ omnibook-fix-wrong_named_variable.diff
omnibook-2.20080627.tar.bz2 omnibook.spec
omnibook-20080627-1.1.6.src.rpm preamble
omnibook-fix-uninitialized.diff
jcwx@mars:~/temp$ cd omnibook-2.20080627
jcwx@mars:~/temp/omnibook-2.20080627$ ls
Makefile compal.c dump.c info.c misc/ sections.lds
ac.c compat.h ec.c init.c muteled.c temperature.c
acpi.c cooling.c fan.c kbc.c nbsmi.c throttling.c
battery.c display.c fan_policy.c laptop.h omnibook.h touchpad.c
blank.c doc/ hardware.h lcd.c pio.c wireless.c
bluetooth.c dock.c hotkeys.c lib.c polling.c
jcwx@mars:~/temp/omnibook-2.20080627$ make
make -C /lib/modules/2.6.27.31-smp/build SUBDIRS=/home/jcwx/temp/omnibook-2.20080627 modules
make[1]: Entering directory `/usr/src/linux-2.6.27.31'
CC [M] /home/jcwx/temp/omnibook-2.20080627/init.o
CC [M] /home/jcwx/temp/omnibook-2.20080627/lib.o
(...)
CC [M] /home/jcwx/temp/omnibook-2.20080627/throttling.o
LD [M] /home/jcwx/temp/omnibook-2.20080627/omnibook.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/jcwx/temp/omnibook-2.20080627/omnibook.mod.o
LD [M] /home/jcwx/temp/omnibook-2.20080627/omnibook.ko
make[1]: Leaving directory `/usr/src/linux-2.6.27.31'
jcwx@mars:~/temp/omnibook-2.20080627$ su
Password:
root@mars:/home/jcwx/temp/omnibook-2.20080627# make install
********************************
I didn't install the module on my system as there is no need to do so. You will now have a module named 'omnibook' installed on your system, and will need to load it with:
root@mars:~# modprobe omnibook
You can then do some testing to see if any of your Fn keys are working.
Let us know if this helps you.