Adafruit Feather BLE / BLE Friend mouse buttons support
This commit is contained in:
		
							parent
							
								
									80707d529c
								
							
						
					
					
						commit
						f0fc2db4e2
					
				
					 3 changed files with 21 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -87,6 +87,7 @@ struct queue_item {
 | 
			
		|||
    uint16_t consumer;
 | 
			
		||||
    struct __attribute__((packed)) {
 | 
			
		||||
      int8_t x, y, scroll, pan;
 | 
			
		||||
      uint8_t buttons;
 | 
			
		||||
    } mousemove;
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -699,6 +700,22 @@ static bool process_queue_item(struct queue_item *item, uint16_t timeout) {
 | 
			
		|||
      strcpy_P(fmtbuf, PSTR("AT+BLEHIDMOUSEMOVE=%d,%d,%d,%d"));
 | 
			
		||||
      snprintf(cmdbuf, sizeof(cmdbuf), fmtbuf, item->mousemove.x,
 | 
			
		||||
          item->mousemove.y, item->mousemove.scroll, item->mousemove.pan);
 | 
			
		||||
      if (!at_command(cmdbuf, NULL, 0, true, timeout)) {
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
      strcpy_P(cmdbuf, PSTR("AT+BLEHIDMOUSEBUTTON="));
 | 
			
		||||
      if (item->mousemove.buttons & MOUSE_BTN1) {
 | 
			
		||||
        strcat(cmdbuf, "L");
 | 
			
		||||
      }
 | 
			
		||||
      if (item->mousemove.buttons & MOUSE_BTN2) {
 | 
			
		||||
        strcat(cmdbuf, "R");
 | 
			
		||||
      }
 | 
			
		||||
      if (item->mousemove.buttons & MOUSE_BTN3) {
 | 
			
		||||
        strcat(cmdbuf, "M");
 | 
			
		||||
      }
 | 
			
		||||
      if (item->mousemove.buttons == 0) {
 | 
			
		||||
        strcat(cmdbuf, "0");
 | 
			
		||||
      }
 | 
			
		||||
      return at_command(cmdbuf, NULL, 0, true, timeout);
 | 
			
		||||
#endif
 | 
			
		||||
    default:
 | 
			
		||||
| 
						 | 
				
			
			@ -757,7 +774,7 @@ bool adafruit_ble_send_consumer_key(uint16_t keycode, int hold_duration) {
 | 
			
		|||
 | 
			
		||||
#ifdef MOUSE_ENABLE
 | 
			
		||||
bool adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll,
 | 
			
		||||
                                  int8_t pan) {
 | 
			
		||||
                                  int8_t pan, uint8_t buttons) {
 | 
			
		||||
  struct queue_item item;
 | 
			
		||||
 | 
			
		||||
  item.queue_type = QTMouseMove;
 | 
			
		||||
| 
						 | 
				
			
			@ -765,6 +782,7 @@ bool adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll,
 | 
			
		|||
  item.mousemove.y = y;
 | 
			
		||||
  item.mousemove.scroll = scroll;
 | 
			
		||||
  item.mousemove.pan = pan;
 | 
			
		||||
  item.mousemove.buttons = buttons;
 | 
			
		||||
 | 
			
		||||
  while (!send_buf.enqueue(item)) {
 | 
			
		||||
    send_buf_send_one();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ extern bool adafruit_ble_send_consumer_key(uint16_t keycode, int hold_duration);
 | 
			
		|||
 * The parameters are signed and indicate positive of negative direction
 | 
			
		||||
 * change. */
 | 
			
		||||
extern bool adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll,
 | 
			
		||||
                                         int8_t pan);
 | 
			
		||||
                                         int8_t pan, uint8_t buttons);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Compute battery voltage by reading an analog pin.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -669,7 +669,7 @@ static void send_mouse(report_mouse_t *report)
 | 
			
		|||
  if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) {
 | 
			
		||||
    #ifdef MODULE_ADAFRUIT_BLE
 | 
			
		||||
      // FIXME: mouse buttons
 | 
			
		||||
      adafruit_ble_send_mouse_move(report->x, report->y, report->v, report->h);
 | 
			
		||||
      adafruit_ble_send_mouse_move(report->x, report->y, report->v, report->h, report->buttons);
 | 
			
		||||
    #else
 | 
			
		||||
      bluefruit_serial_send(0xFD);
 | 
			
		||||
      bluefruit_serial_send(0x00);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue