~ruther/qmk_firmware

eb902844946f0bda7da76cdb1e9aafae4881b63c — Robin Haberkorn 11 years ago 0bfba7a
serial_mouse: simplified clipping of X/Y/V/H changes below -127 using a MAX macro
2 files changed, 20 insertions(+), 18 deletions(-)

M protocol/serial_mouse_microsoft.c
M protocol/serial_mouse_mousesystems.c
M protocol/serial_mouse_microsoft.c => protocol/serial_mouse_microsoft.c +7 -2
@@ 27,6 27,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#include "print.h"
#include "debug.h"

#ifdef MAX
#undef MAX
#endif
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))

static void print_usb_data(const report_mouse_t *report);

void serial_mouse_task(void)


@@ 91,8 96,8 @@ void serial_mouse_task(void)
    report.y = ((buffer[0] << 4) & 0xC0) | buffer[2];

    /* USB HID uses values from -127 to 127 only */
    report.x = report.x < -127 ? -127 : report.x;
    report.y = report.y < -127 ? -127 : report.y;
    report.x = MAX(report.x, -127);
    report.y = MAX(report.y, -127);

#if 0
    if (!report.buttons && !report.x && !report.y) {

M protocol/serial_mouse_mousesystems.c => protocol/serial_mouse_mousesystems.c +13 -16
@@ 27,6 27,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#include "print.h"
#include "debug.h"

#ifdef MAX
#undef MAX
#endif
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))

//#define SERIAL_MOUSE_CENTER_SCROLL

static void print_usb_data(const report_mouse_t *report);


@@ 67,20 72,16 @@ void serial_mouse_task(void)

#ifdef SERIAL_MOUSE_CENTER_SCROLL
    if ((buffer[0] & 0x7) == 0x5 && (buffer[1] || buffer[2])) {
        report.h = (int8_t)buffer[1];
        /* USB HID uses only values from -127 to 127 */
        report.h = report.h < -127 ? -127 : report.h;
        report.v = (int8_t)buffer[2];
        report.v = report.v < -127 ? -127 : report.v;
        report.h = MAX((int8_t)buffer[1], -127);
        report.v = MAX((int8_t)buffer[2], -127);

        print_usb_data(&report);
        host_mouse_send(&report);

        if (buffer[3] || buffer[4]) {
            report.h = (int8_t)buffer[3];
            report.h = report.h < -127 ? -127 : report.h;
            report.v = (int8_t)buffer[4];
            report.v = report.v < -127 ? -127 : report.v;
            report.h = MAX((int8_t)buffer[3], -127);
            report.v = MAX((int8_t)buffer[4], -127);

            print_usb_data(&report);
            host_mouse_send(&report);


@@ 103,20 104,16 @@ void serial_mouse_task(void)
    if (!(buffer[0] & (1 << 0)))
        report.buttons |= MOUSE_BTN2;

    report.x = (int8_t)buffer[1];
    /* USB HID uses only values from -127 to 127 */
    report.x = report.x < -127 ? -127 : report.x;
    report.y = -(int8_t)buffer[2];
    report.y = report.y < -127 ? -127 : report.y;
    report.x = MAX((int8_t)buffer[1], -127);
    report.y = MAX(-(int8_t)buffer[2], -127);

    print_usb_data(&report);
    host_mouse_send(&report);

    if (buffer[3] || buffer[4]) {
        report.x = (int8_t)buffer[3];
        report.x = report.x < -127 ? -127 : report.x;
        report.y = -(int8_t)buffer[4];
        report.y = report.y < -127 ? -127 : report.y;
        report.x = MAX((int8_t)buffer[3], -127);
        report.y = MAX(-(int8_t)buffer[4], -127);

        print_usb_data(&report);
        host_mouse_send(&report);