Implemented New MK_COMBINED Functionality (#9557)
* implemented new mousekey_combined functionality * minor formatting change to documentation * Update tmk_core/common/mousekey.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update tmk_core/common/mousekey.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update tmk_core/common/mousekey.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update tmk_core/common/mousekey.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update docs/feature_mouse_keys.md Co-authored-by: Nick Brassel <nick@tzarc.org> * Update docs/feature_mouse_keys.md Co-authored-by: Nick Brassel <nick@tzarc.org> * Update docs/feature_mouse_keys.md Co-authored-by: Nick Brassel <nick@tzarc.org> * Update docs/feature_mouse_keys.md Co-authored-by: Nick Brassel <nick@tzarc.org> Co-authored-by: Nathan Vercaemert <nathan.vercaemert@gmail.com> Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Nick Brassel <nick@tzarc.org>
This commit is contained in:
		
							parent
							
								
									2e08c72e95
								
							
						
					
					
						commit
						19006c9753
					
				
					 2 changed files with 78 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -1,19 +1,19 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2011 Jun Wako <wakojun@gmail.com>
 | 
			
		||||
 | 
			
		||||
This program is free software: you can redistribute it and/or modify
 | 
			
		||||
it under the terms of the GNU General Public License as published by
 | 
			
		||||
the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
(at your option) any later version.
 | 
			
		||||
 | 
			
		||||
This program is distributed in the hope that it will be useful,
 | 
			
		||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
You should have received a copy of the GNU General Public License
 | 
			
		||||
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 * Copyright 2011 Jun Wako <wakojun@gmail.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "keycode.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +66,8 @@ uint8_t mk_wheel_interval    = MOUSEKEY_WHEEL_INTERVAL;
 | 
			
		|||
uint8_t mk_wheel_max_speed   = MOUSEKEY_WHEEL_MAX_SPEED;
 | 
			
		||||
uint8_t mk_wheel_time_to_max = MOUSEKEY_WHEEL_TIME_TO_MAX;
 | 
			
		||||
 | 
			
		||||
#ifndef MK_COMBINED
 | 
			
		||||
 | 
			
		||||
static uint8_t move_unit(void) {
 | 
			
		||||
    uint16_t unit;
 | 
			
		||||
    if (mousekey_accel & (1 << 0)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -102,6 +104,46 @@ static uint8_t wheel_unit(void) {
 | 
			
		|||
    return (unit > MOUSEKEY_WHEEL_MAX ? MOUSEKEY_WHEEL_MAX : (unit == 0 ? 1 : unit));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#else /* #ifndef MK_COMBINED */
 | 
			
		||||
 | 
			
		||||
static uint8_t move_unit(void) {
 | 
			
		||||
    uint16_t unit;
 | 
			
		||||
    if (mousekey_accel & (1 << 0)) {
 | 
			
		||||
        unit = 1;
 | 
			
		||||
    } else if (mousekey_accel & (1 << 1)) {
 | 
			
		||||
        unit = (MOUSEKEY_MOVE_DELTA * mk_max_speed) / 2;
 | 
			
		||||
    } else if (mousekey_accel & (1 << 2)) {
 | 
			
		||||
        unit = MOUSEKEY_MOVE_MAX;
 | 
			
		||||
    } else if (mousekey_repeat == 0) {
 | 
			
		||||
        unit = MOUSEKEY_MOVE_DELTA;
 | 
			
		||||
    } else if (mousekey_repeat >= mk_time_to_max) {
 | 
			
		||||
        unit = MOUSEKEY_MOVE_DELTA * mk_max_speed;
 | 
			
		||||
    } else {
 | 
			
		||||
        unit = (MOUSEKEY_MOVE_DELTA * mk_max_speed * mousekey_repeat) / mk_time_to_max;
 | 
			
		||||
    }
 | 
			
		||||
    return (unit > MOUSEKEY_MOVE_MAX ? MOUSEKEY_MOVE_MAX : (unit == 0 ? 1 : unit));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static uint8_t wheel_unit(void) {
 | 
			
		||||
    uint16_t unit;
 | 
			
		||||
    if (mousekey_accel & (1 << 0)) {
 | 
			
		||||
        unit = 1;
 | 
			
		||||
    } else if (mousekey_accel & (1 << 1)) {
 | 
			
		||||
        unit = (MOUSEKEY_WHEEL_DELTA * mk_wheel_max_speed) / 2;
 | 
			
		||||
    } else if (mousekey_accel & (1 << 2)) {
 | 
			
		||||
        unit = MOUSEKEY_WHEEL_MAX;
 | 
			
		||||
    } else if (mousekey_repeat == 0) {
 | 
			
		||||
        unit = MOUSEKEY_WHEEL_DELTA;
 | 
			
		||||
    } else if (mousekey_repeat >= mk_wheel_time_to_max) {
 | 
			
		||||
        unit = MOUSEKEY_WHEEL_DELTA * mk_wheel_max_speed;
 | 
			
		||||
    } else {
 | 
			
		||||
        unit = (MOUSEKEY_WHEEL_DELTA * mk_wheel_max_speed * mousekey_repeat) / mk_wheel_time_to_max;
 | 
			
		||||
    }
 | 
			
		||||
    return (unit > MOUSEKEY_WHEEL_MAX ? MOUSEKEY_WHEEL_MAX : (unit == 0 ? 1 : unit));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif /* #ifndef MK_COMBINED */
 | 
			
		||||
 | 
			
		||||
void mousekey_task(void) {
 | 
			
		||||
    // report cursor and scroll movement independently
 | 
			
		||||
    report_mouse_t const tmpmr = mouse_report;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue