[Keyboard] 201909 s75 custom encoder (#6745)
* Handle custom encoder configuration * Whitespace changes * Undo broken stuff * more * Remove printfs * fix the dumb bug
This commit is contained in:
		
							parent
							
								
									6f5f943bb9
								
							
						
					
					
						commit
						e5aa28455e
					
				
					 4 changed files with 129 additions and 67 deletions
				
			
		| 
						 | 
				
			
			@ -94,51 +94,53 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
 | 
			
		|||
		}
 | 
			
		||||
		case id_get_keyboard_value:
 | 
			
		||||
		{
 | 
			
		||||
      switch( command_data[0])
 | 
			
		||||
      {
 | 
			
		||||
        case id_uptime:
 | 
			
		||||
        {
 | 
			
		||||
          uint32_t value = timer_read32();
 | 
			
		||||
          command_data[1] = (value >> 24 ) & 0xFF;
 | 
			
		||||
          command_data[2] = (value >> 16 ) & 0xFF;
 | 
			
		||||
          command_data[3] = (value >> 8 ) & 0xFF;
 | 
			
		||||
          command_data[4] = value & 0xFF;
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
        case id_oled_default_mode:
 | 
			
		||||
        {
 | 
			
		||||
          uint8_t default_oled = eeprom_read_byte((uint8_t*)DYNAMIC_KEYMAP_DEFAULT_OLED);
 | 
			
		||||
          command_data[1] = default_oled;
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
        case id_oled_mode:
 | 
			
		||||
        {
 | 
			
		||||
          command_data[1] = oled_mode;
 | 
			
		||||
          break;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        case id_encoder_modes:
 | 
			
		||||
        {
 | 
			
		||||
          command_data[1] = enabled_encoder_modes;
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
        case id_encoder_custom:
 | 
			
		||||
        {
 | 
			
		||||
          // uint8_t custom_encoder_idx = command_data[1];
 | 
			
		||||
          // command_data[2] = 0x00;
 | 
			
		||||
          // command_data[3] = 0x00;
 | 
			
		||||
          // command_data[4] = 0x00;
 | 
			
		||||
          // command_data[5] = 0x00;
 | 
			
		||||
          // command_data[6] = 0x00;
 | 
			
		||||
          // command_data[7] = 0x00;
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
        default:
 | 
			
		||||
        {
 | 
			
		||||
          *command_id = id_unhandled;
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
            switch( command_data[0])
 | 
			
		||||
            {
 | 
			
		||||
                case id_uptime:
 | 
			
		||||
                {
 | 
			
		||||
                uint32_t value = timer_read32();
 | 
			
		||||
                command_data[1] = (value >> 24 ) & 0xFF;
 | 
			
		||||
                command_data[2] = (value >> 16 ) & 0xFF;
 | 
			
		||||
                command_data[3] = (value >> 8 ) & 0xFF;
 | 
			
		||||
                command_data[4] = value & 0xFF;
 | 
			
		||||
                break;
 | 
			
		||||
                }
 | 
			
		||||
                case id_oled_default_mode:
 | 
			
		||||
                {
 | 
			
		||||
                    uint8_t default_oled = eeprom_read_byte((uint8_t*)DYNAMIC_KEYMAP_DEFAULT_OLED);
 | 
			
		||||
                    command_data[1] = default_oled;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
                case id_oled_mode:
 | 
			
		||||
                {
 | 
			
		||||
                    command_data[1] = oled_mode;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
                case id_encoder_modes:
 | 
			
		||||
                {
 | 
			
		||||
                    command_data[1] = enabled_encoder_modes;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
                case id_encoder_custom:
 | 
			
		||||
                {
 | 
			
		||||
                    uint8_t custom_encoder_idx = command_data[1];
 | 
			
		||||
                    uint16_t keycode = retrieve_custom_encoder_config(custom_encoder_idx, ENC_CUSTOM_CW);
 | 
			
		||||
                    command_data[2] =  keycode >> 8;
 | 
			
		||||
                    command_data[3] = keycode & 0xFF;
 | 
			
		||||
                    keycode = retrieve_custom_encoder_config(custom_encoder_idx, ENC_CUSTOM_CCW);
 | 
			
		||||
                    command_data[4] =  keycode >> 8;
 | 
			
		||||
                    command_data[5] = keycode & 0xFF;
 | 
			
		||||
                    keycode = retrieve_custom_encoder_config(custom_encoder_idx, ENC_CUSTOM_PRESS);
 | 
			
		||||
                    command_data[6] =  keycode >> 8;
 | 
			
		||||
                    command_data[7] = keycode & 0xFF;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
                default:
 | 
			
		||||
                {
 | 
			
		||||
                    *command_id = id_unhandled;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
			break;
 | 
			
		||||
    }
 | 
			
		||||
#ifdef DYNAMIC_KEYMAP_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			@ -164,7 +166,10 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
 | 
			
		|||
        }
 | 
			
		||||
        case id_encoder_custom:
 | 
			
		||||
        {
 | 
			
		||||
          // uint8_t custom_encoder_idx = command_data[1];
 | 
			
		||||
          uint8_t custom_encoder_idx = command_data[1];
 | 
			
		||||
          uint8_t encoder_behavior = command_data[2];
 | 
			
		||||
          uint16_t keycode = (command_data[3] << 8) | command_data[4];
 | 
			
		||||
          set_custom_encoder_config(custom_encoder_idx, encoder_behavior, keycode);
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
        default:
 | 
			
		||||
| 
						 | 
				
			
			@ -205,13 +210,6 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
 | 
			
		|||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		case id_dynamic_keymap_macro_get_buffer:
 | 
			
		||||
		{
 | 
			
		||||
			uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
 | 
			
		||||
			uint16_t size = command_data[2]; // size <= 28
 | 
			
		||||
			dynamic_keymap_macro_get_buffer( offset, size, &command_data[3] );
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		case id_dynamic_keymap_macro_set_buffer:
 | 
			
		||||
		{
 | 
			
		||||
			uint16_t offset = ( command_data[0] << 8 ) | command_data[1];
 | 
			
		||||
			uint16_t size = command_data[2]; // size <= 28
 | 
			
		||||
| 
						 | 
				
			
			@ -339,9 +337,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
        uint16_t mapped_code = handle_encoder_press();
 | 
			
		||||
        uint16_t held_keycode_timer = timer_read();
 | 
			
		||||
        if(mapped_code != 0){
 | 
			
		||||
          register_code(mapped_code);
 | 
			
		||||
          register_code16(mapped_code);
 | 
			
		||||
          while (timer_elapsed(held_keycode_timer) < MEDIA_KEY_DELAY){ /* no-op */ }
 | 
			
		||||
          unregister_code(mapped_code);
 | 
			
		||||
          unregister_code16(mapped_code);
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        // Do something else when release
 | 
			
		||||
| 
						 | 
				
			
			@ -380,9 +378,9 @@ void encoder_update_kb(uint8_t index, bool clockwise) {
 | 
			
		|||
      }
 | 
			
		||||
      uint16_t held_keycode_timer = timer_read();
 | 
			
		||||
      if(mapped_code != 0){
 | 
			
		||||
        register_code(mapped_code);
 | 
			
		||||
        register_code16(mapped_code);
 | 
			
		||||
        while (timer_elapsed(held_keycode_timer) < MEDIA_KEY_DELAY){ /* no-op */ }
 | 
			
		||||
        unregister_code(mapped_code);
 | 
			
		||||
        unregister_code16(mapped_code);
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      if(clockwise){
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue