Найти устройство событий для клавиатуры, мыши - PullRequest
6 голосов
/ 19 марта 2012

Что такое надежный метод для поиска узла устройства событий для аппаратного обеспечения клавиатура или мышь ?

Я попытался прочитать / proc / bus / input / devices и найти 'Keyboard' или 'Mouse' в имени устройства, ноэто не всегда работает, так как имена устройств сильно различаются.

Другой вариант заключался в том, чтобы выбрать те из них с Handlers = kbd и Handlers = mouseX ,но на ноутбуке есть и другие устройства, такие как «Кнопка питания», «Видеошина» с Handlers = kbd .

Ответы [ 2 ]

0 голосов
/ 24 февраля 2017

Это пример поиска события клавиатуры:

const std::string get_dev_event_kbd()
{
    std::string sline, sdev="/dev/input/", sH="", sBEV="";
    std::ifstream ifs("/proc/bus/input/devices");
    auto trimstr=[](std::string &s)
    {
        int i=0, n=s.length(); //left
        while ((i<n)&&((s[i]==' ')||(s[i]=='\t'))) i++;
        s=(i>0)?s.substr(i):s;
        n=s.length()-1; i=n; //right
        while ((i>0)&&((s[i]==' ')||(s[i]=='\t')||(s[i]=='\n')||(s[i]=='\r'))) i--;
        s=(i<n)?s.substr(0,i+1):s;
    };

    while (std::getline(ifs,sline).good())
    {
        if (sline[0]=='H')
        {
            sH=sline.substr(sline.rfind(" event"));
            trimstr(sH);
        }
        if (sline.substr(0,5)=="B: EV")
        {
            sBEV=sline.substr(sline.find('=')+1);
            trimstr(sBEV);
        }
        if (sBEV=="120013") break;
    }
    sdev+=sH;
    return sdev;
}

См. this и this для получения более подробной информации.Кроме того, если вы получаете сообщение об ошибке 13 (Permission denied) при выполнении open () на устройстве, проверьте, определена ли для него группа 'input', и добавьте своего пользователя в группу

0 голосов
/ 20 марта 2012

Все устройства ввода имеют значение &input_class в поле dev->class. Таким образом, вы можете перебирать все устройства и проверять (dev->class == &input_class). Далее, для каждого найденного вами устройства ввода вам необходимо выяснить, имеет ли оно правильное имя устройства клавиатуры / мыши (например, «мыши», «мышь% d» и т. Д.).

...