distinguish touch pad and touch screen

Signed-off-by: wangxuanxuan <wangxuanxuan9@huawei.com>
This commit is contained in:
wangxuanxuan
2023-07-05 10:13:50 +08:00
parent 4a1585c84a
commit 7ea2a97b72
3 changed files with 16 additions and 2 deletions
+2
View File
@@ -182,6 +182,8 @@ namespace DistributedInput {
const std::string PROPERTIES = "properties";
const std::string DH_TOUCH_PAD = "touchpad";
const std::string DINPUT_LOG_TITLE_TAG = "DINPUT";
constexpr const char* LATENCY_COUNT_THREAD_NAME = "latencyCount";
+13 -2
View File
@@ -15,6 +15,7 @@
#include "input_hub.h"
#include <algorithm>
#include <cinttypes>
#include <cstring>
#include <dirent.h>
@@ -28,7 +29,6 @@
#include <unistd.h>
#include <utility>
#include "constants_dinput.h"
#include "dinput_context.h"
#include "dinput_errcode.h"
@@ -205,13 +205,24 @@ size_t InputHub::GetEvents(RawEvent* buffer, size_t bufferSize)
return event - buffer;
}
bool InputHub::IsTouchPad(const InputDevice& inputDevice)
{
std::string dhName = inputDevice.name;
DHLOGI("device name is %s.", dhName.c_str());
transform(dhName.begin(), dhName.end(), dhName.begin(), ::tolower);
if (dhName.find(DH_TOUCH_PAD) == std::string::npos) {
return false;
}
return true;
}
size_t InputHub::CollectEvent(RawEvent* buffer, size_t& capacity, Device* device, struct input_event readBuffer[],
const size_t count)
{
std::vector<bool> needFilted(capacity, false);
bool isTouchEvent = false;
if ((device->classes & INPUT_DEVICE_CLASS_TOUCH_MT) || (device->classes & INPUT_DEVICE_CLASS_TOUCH)) {
if (device->identifier.relTypes.size() != 0) {
if (!IsTouchPad(device->identifier)) {
isTouchEvent = true;
HandleTouchScreenEvent(readBuffer, count, needFilted);
}
+1
View File
@@ -126,6 +126,7 @@ private:
bool ContainsNonZeroByte(const uint8_t* array, uint32_t startIndex, uint32_t endIndex);
int64_t ProcessEventTimestamp(const input_event& event);
bool IsTouchPad(const InputDevice& inputDevice);
/*
* this macro is used to tell if "bit" is set in "array"