{ version: 0.2.0 routes: { 0x04: { type: router name: Dynamic Keymap define: DYNAMIC_KEYMAP description: ''' This subsystem allows for live modifications of the keymap, allowing keys to be reassigned without rebuilding the firmware. ''' enable_if_preprocessor: defined(DYNAMIC_KEYMAP_ENABLE) routes: { 0x00: { type: command name: Capabilities Query define: CAPABILITIES_QUERY description: ''' Dynamic Keymap subsystem capabilities query. Each bit should be considered as a "usable" route within this subsystem. ''' return_type: u32 return_purpose: capabilities return_constant: XAP_ROUTE_DYNAMIC_KEYMAP_CAPABILITIES } 0x01: { type: command name: Get Layer Count define: GET_LAYER_COUNT description: Query maximum number of layers that can be addressed within the keymap. return_type: u8 return_constant: DYNAMIC_KEYMAP_LAYER_COUNT } 0x02: { type: command name: Get Keycode define: GET_KEYMAP_KEYCODE description: Query the Keycode at the requested location. request_type: struct request_struct_length: 3 request_struct_members: [ { type: u8 name: Layer }, { type: u8 name: Row }, { type: u8 name: Column } ] return_type: u16 return_execute: dynamic_keymap_get_keycode } 0x03: { type: command name: Set Keycode define: SET_KEYMAP_KEYCODE description: Modify the Keycode at the requested location. permissions: secure request_type: struct request_struct_length: 5 request_struct_members: [ { type: u8 name: Layer }, { type: u8 name: Row }, { type: u8 name: Column }, { type: u16 name: Keycode } ] return_execute: dynamic_keymap_set_keycode } } } 0x05: { type: router name: Dynamic Encoders define: DYNAMIC_ENCODER description: ''' This subsystem allows for live modifications of the keymap, allowing encoder functionality to be reassigned without rebuilding the firmware. ''' enable_if_preprocessor: defined(DYNAMIC_KEYMAP_ENABLE) && defined(ENCODER_MAP_ENABLE) routes: { 0x00: { type: command name: Capabilities Query define: CAPABILITIES_QUERY description: ''' Dynamic Encoders subsystem capabilities query. Each bit should be considered as a "usable" route within this subsystem. ''' return_type: u32 return_purpose: capabilities return_constant: XAP_ROUTE_DYNAMIC_ENCODER_CAPABILITIES } 0x02: { type: command name: Get Keycode define: GET_ENCODER_KEYCODE description: Query the Keycode at the requested location. request_type: struct request_struct_length: 3 request_struct_members: [ { type: u8 name: Layer }, { type: u8 name: Encoder }, { type: u8 name: Clockwise } ] return_type: u16 return_execute: dynamic_encoder_get_keycode } 0x03: { type: command name: Set Keycode define: SET_ENCODER_KEYCODE permissions: secure description: Modify the Keycode at the requested location. request_type: struct request_struct_length: 5 request_struct_members: [ { type: u8 name: Layer }, { type: u8 name: Encoder }, { type: u8 name: Clockwise }, { type: u16 name: Keycode } ] return_execute: dynamic_encoder_set_keycode } } } 0x06: { type: router name: Lighting define: LIGHTING description: ''' This subsystem allows for control over the lighting subsystem. ''' enable_if_preprocessor: defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) routes: { 0x00: { type: command name: Capabilities Query define: CAPABILITIES_QUERY description: ''' Lighting subsystem capabilities query. Each bit should be considered as a "usable" route within this subsystem. ''' return_type: u32 return_purpose: capabilities return_constant: XAP_ROUTE_LIGHTING_CAPABILITIES } } } } }