У меня Dell v131. На новых драйверах круто работает тачпад, но не работает его LED при отключении. Я написал программу, которая реагирует на Fn + F3 и отключает тачпад, но как работать с LED я без понятия. В Linux'e, вроде с ядра 3.4 (на последней убунте точно работает) можно сделать так:
echo 1 > /sys/class/leds/dell-laptop::touchpad/brightness
или
echo 0 > /sys/class/leds/dell-laptop::touchpad/brightness
Я нашел вроде файлы в ядре где это реализовано (drivers/platform/x86/dell-laptop.c).
Там есть код:
static void touchpad_led_on(void)
{
	int command = 0x97;
	char data = 1;
	i8042_command(&data, command | 1 << 12);
}
Так же я нарыл еще и вот такое в других файлах:
int i8042_command(unsigned char *param, int command)
{
	unsigned long flags;
	int retval;
	spin_lock_irqsave(&i8042_lock, flags);
	retval = __i8042_command(param, command);
	spin_unlock_irqrestore(&i8042_lock, flags);
	return retval;
}
static int __i8042_command(unsigned char *param, int command)
{
	int i, error;
	if (i8042_noloop && command == I8042_CMD_AUX_LOOP)
		return -1;
	error = i8042_wait_write();
	if (error)
		return error;
	dbg("%02x -> i8042 (command)\n", command & 0xff);
	i8042_write_command(command & 0xff);
	for (i = 0; i < ((command >> 12) & 0xf); i++) {
		error = i8042_wait_write();
		if (error)
			return error;
		dbg("%02x -> i8042 (parameter)\n", param[i]);
		i8042_write_data(param[i]);
	}
	for (i = 0; i < ((command >> 8) & 0xf); i++) {
		error = i8042_wait_read();
		if (error) {
			dbg("     -- i8042 (timeout)\n");
			return error;
		}
		if (command == I8042_CMD_AUX_LOOP &&
		    !(i8042_read_status() & I8042_STR_AUXDATA)) {
			dbg("     -- i8042 (auxerr)\n");
			return -1;
		}
		param[i] = i8042_read_data();
		dbg("%02x <- i8042 (return)\n", param[i]);
	}
	return 0;
}
Я хочу написать такое же под Windows 7. Но не очень понимаю что делать. Даже не знаю, куда копать, так как никогда драйверов не писал и так далее. Подскажите, пожалуйста, что-нибудь.