微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于HIDEmuKbd工程一直发送键值A的问题。

关于HIDEmuKbd工程一直发送键值A的问题。

时间:10-02 整理:3721RD 点击:

如题,在该工程下,我把函数的代码稍作修改,

static void hidEmuKbd_HandleKeys( uint8 shift, uint8 keys )
{
  static uint8 prevKey1 = 0;
  static uint8 prevKey2 = 0;
  //static uint8 index = 0;//可以参考Nordic的代码

  (void)shift;  // Intentionally unreferenced parameter

  if ( (keys & HAL_KEY_SW_1) && (prevKey1 == 0) )
  {
    // pressed
    hidEmuKbdSendReport( HID_KEYBOARD_A );//HID_KEYBOARD_A
    prevKey1 = 1;
  }
 /* else if (!(keys & HAL_KEY_SW_1) && (prevKey1 == 1) )
  {
    // released
    hidEmuKbdSendReport( KEY_NONE );
    prevKey1 = 0;
  }*/
  
  //for test key2
  if ( (keys & HAL_KEY_SW_2) && (prevKey2 == 0) )
  {
    // pressed
    hidEmuKbdSendReport( KEY_RIGHT_ARROW );//HID_KEYBOARD_A
    prevKey2 = 1;
  }
  else if ( !(keys & HAL_KEY_SW_2) && (prevKey2 == 1) )
  {
    // released
    hidEmuKbdSendReport( KEY_NONE );
    prevKey2 = 0;
  }
/*
  if ( (keys & HAL_KEY_SW_2) && (prevKey2 == 0) )
  {
    // pressed 
    if ( !hidBootMouseEnabled )
    {
      hidEmuKbdSendReport( KEY_RIGHT_ARROW );//HID_KEYBOARD_M
    }
    else
    {
      hidEmuKbdSendMouseReport( MOUSE_BUTTON_1 );
    }
    prevKey2 = 1;
  }
  else if ( !(keys & HAL_KEY_SW_2) && (prevKey2 == 1) )
  {
    // releasedaaaaaaaaaaaaaaaaaaaaa
    if ( !hidBootMouseEnabled )
    {
      hidEmuKbdSendReport( KEY_NONE );
    }
    else
    {
      hidEmuKbdSendMouseReport ( MOUSE_BUTTON_NONE );
    }
    prevKey2 = 0;
  }
  */
}

编译下载后,在文本文件中,按下HAL_KEY_SW_1这个键,电脑一直打印字符,从程序来看,这条语句应该是只执行了一次:

if ( (keys & HAL_KEY_SW_1) && (prevKey1 == 0) )
  {
    // pressed
    hidEmuKbdSendReport( HID_KEYBOARD_A );//HID_KEYBOARD_A
    prevKey1 = 1;
  }

从而A的键值也只发送了一次,那么为什么会一直打印字符A呢?求解。

 

Xuelin,

应该是release 按键没有发送出去。。。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top