--- drivers/usb/hid-input.c 2002-11-02 21:53:03.000000000 +0100 +++ ../linux-2.4.20-pre11/drivers/usb/hid-input.c 2002-11-0300:48:13.000000000 +0100 @@ -303,7 +303,7 @@ struct input_dev *input = &hid->input; int *quirks = &hid->quirks; - if (usage->hat_min != usage->hat_max) { + if ( ((usage->hat_max - usage->hat_min + 1) != 0) && (usage->hat_max != usage->hat_min)) { value = (value - usage->hat_min) * 8 / (usage->hat_max - usage->hat_min + 1) + 1; if (value < 0 || value > 8) value = 0; input_event(input, usage->type, usage->code ,hid_hat_to_axis[value].x);