@ -298,6 +298,8 @@ void ipc_client_handle_command(struct ipc_client *client) {
 
			
		
	
		
			
				
									client - > subscribed_events  | =  IPC_EVENT_MODE ; 
 
			
		
	
		
			
				
								}  else  if  ( strcmp ( event_type ,  " modifier " )  = =  0 )  { 
 
			
		
	
		
			
				
									client - > subscribed_events  | =  IPC_EVENT_MODIFIER ; 
 
			
		
	
		
			
				
								}  else  if  ( strcmp ( event_type ,  " binding " )  = =  0 )  { 
 
			
		
	
		
			
				
									client - > subscribed_events  | =  IPC_EVENT_BINDING ; 
 
			
		
	
		
			
				
								}  else  { 
 
			
		
	
		
			
				
									ipc_send_reply ( client ,  " { \" success \" : false} " ,  18 ) ; 
 
			
		
	
		
			
				
									ipc_client_disconnect ( client ) ; 
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -633,3 +635,48 @@ void ipc_event_modifier(uint32_t modifier, const char *state) {
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						json_object_put ( obj ) ;  // free
 
 
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					static  void  ipc_event_binding ( json_object  * sb_obj )  {  
			
		
	
		
			
				
						json_object  * obj  =  json_object_new_object ( ) ; 
 
			
		
	
		
			
				
						json_object_object_add ( obj ,  " change " ,  json_object_new_string ( " run " ) ) ; 
 
			
		
	
		
			
				
						json_object_object_add ( obj ,  " binding " ,  sb_obj ) ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						const  char  * json_string  =  json_object_to_json_string ( obj ) ; 
 
			
		
	
		
			
				
						ipc_send_event ( json_string ,  IPC_EVENT_BINDING ) ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						json_object_put ( obj ) ;  // free
 
 
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					void  ipc_event_binding_keyboard ( struct  sway_binding  * sb )  {  
			
		
	
		
			
				
						json_object  * sb_obj  =  json_object_new_object ( ) ; 
 
			
		
	
		
			
				
						json_object_object_add ( sb_obj ,  " command " ,  json_object_new_string ( sb - > command ) ) ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						const  char  * names [ 10 ] ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						int  len  =  get_modifier_names ( names ,  sb - > modifiers ) ; 
 
			
		
	
		
			
				
						int  i ; 
 
			
		
	
		
			
				
						json_object  * modifiers  =  json_object_new_array ( ) ; 
 
			
		
	
		
			
				
						for  ( i  =  0 ;  i  <  len ;  + + i )  { 
 
			
		
	
		
			
				
							json_object_array_add ( modifiers ,  json_object_new_string ( names [ i ] ) ) ; 
 
			
		
	
		
			
				
						} 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						json_object_object_add ( sb_obj ,  " event_state_mask " ,  modifiers ) ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						// TODO: implement bindcode
 
 
			
		
	
		
			
				
						json_object_object_add ( sb_obj ,  " input_code " ,  json_object_new_int ( 0 ) ) ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						json_object  * symbols  =  json_object_new_array ( ) ; 
 
			
		
	
		
			
				
						uint32_t  keysym ; 
 
			
		
	
		
			
				
						char  buffer [ 64 ] ; 
 
			
		
	
		
			
				
						for  ( i  =  0 ;  i  <  sb - > keys - > length ;  + + i )  { 
 
			
		
	
		
			
				
							keysym  =  * ( uint32_t  * ) sb - > keys - > items [ i ] ; 
 
			
		
	
		
			
				
							if  ( xkb_keysym_get_name ( keysym ,  buffer ,  64 )  >  0 )  { 
 
			
		
	
		
			
				
								json_object_array_add ( symbols ,  json_object_new_string ( buffer ) ) ; 
 
			
		
	
		
			
				
							} 
 
			
		
	
		
			
				
						} 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						json_object_object_add ( sb_obj ,  " symbols " ,  symbols ) ; 
 
			
		
	
		
			
				
						json_object_object_add ( sb_obj ,  " input_type " ,  json_object_new_string ( " keyboard " ) ) ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						ipc_event_binding ( sb_obj ) ; 
 
			
		
	
		
			
				
					}