Как подсчитать щелчки кнопок мыши?

Как мне подсчитать количество нажатий кнопок мыши с момента запуска Ubuntu?

Я хотел бы делать статистику по нажатию кнопок мыши, поэтому мне это нужно.

Благодаря

6
задан 30 December 2010 в 09:58

3 ответа

Хотя это и не совсем то, что вам нужно, WhatPulse - это что-то приятное, чтобы отслеживать различные подобные лакомства + онлайн рейтинг с командами, странами, ...

0
ответ дан 30 December 2010 в 09:58

Вы можете использовать evtest из проекта linux-input .

Но вы должны быть уверены, что CONFIG_INPUT_EVBUG = y в ядре (вероятно, по умолчанию, если вы устанавливаете отладочную версию) и установите уровень отладки на 8

echo 8 > /proc/sys/kernel/printk

На данный момент, с консоли , вы увидите несколько сообщений, которые вы можете разобрать.

evbug.c: Event. Dev: gpio-keys/input0, Type: 0, Code: 0, Value: 0
evbug.c: Event. Dev: gpio-keys/input0, Type: 1, Code: 103, Value: 1

Затем вы можете установить пакеты bitbake и evtest

sudo apt-get install bitbake evtest

Затем вы можете использовать evtest против вашего устройства, вам понадобится несколько тестов, чтобы выяснить, какое событие вам нужно, и вы можете сосчитать возникновение этого события.

evtest /dev/input/eventXX

В противном случае, если вы хотите считать только щелчок с момента входа в GDM / XDM, вы можете разработать или попросить кого-то сделать это, приложение, использующее GTK, или Qt или wxWidgets, Enlightenment или что угодно, чтобы отслеживать события мыши и запускать это приложение, как только появится десктоп.

0
ответ дан 30 December 2010 в 09:58

xinput можете делать то, что вам нужно, Лукаш. Вы можете иметь однострочник (ну, не совсем однострочник, но вы нажмете ENTER только один раз :-D) для этого, но сначала вы должны сделать некоторую работу. Клянусь, это довольно просто, я просто объясню большинство вещей здесь для ясности.

Откройте Терминал и введите:

xinput list

Вы получите хороший список указателей, кнопок клавиатуры и т. Д., Как этот отрывок из моего:

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ USB+PS/2 Optical Mouse                    id=10   [slave  pointer  (2)]
⎜   ↳ PS/2 Mouse                                id=13   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS GlidePoint                  id=14   [slave  pointer  (2)]

Моя USB-мышь находится прямо во второй строке, и вы видите, что ее идентификатор 10 . Найдите свою мышь в списке и запишите ее идентификатор, она понадобится вам для основной команды для того, что вы хотите.

Если вы хотите проверить, правильно ли вы получили ID, запустите xinput test <id>. Если вы двигаете мышь, нажимаете кнопки и т. Д., Вы должны увидеть множество информационных линий, идущих вверх по терминалу. Он перечисляет все, что вы делаете с помощью мыши. Если ничего не происходит, попробуйте другой идентификатор из списка указателей, который имеет смысл для вас, вы, вероятно, сначала выбрали неправильный (это действительно не должно быть так сложно).

Когда вы, наконец, нашли правильный идентификатор, выполните следующую команду:

xinput test <id>|sed -une '/release/ {      x
     /^$/ s/^.*$/1/
     G
     h
     s/^/      /
     s/^ *\(......\)\n/\1  /p
     x
     s/\n.*$//
     /^9*$/ s/^/0/
     s/.9*$/x&/
     h
     s/^.*x//
     y/0123456789/1234567890/
     x
     s/x.*$//
     G
     s/\n//
     h
}'

Скопируйте приведенное выше и вставьте его. Прежде чем нажать ENTER, замените < id > на тот идентификатор, который вы нашли. Когда вы запускаете его, вы пропускаете его туда, пока продолжаете пользоваться системой. В любое время, когда вы хотите проверить, сколько кликов было зарегистрировано, вы просто смотрите на терминал.

Некоторые важные комментарии:

  • К сожалению, я не очень хорош в консоли, оболочке, командах и т. Д. Я уверен, что кто-то может улучшить это или предложить лучшее решение. С моим решением есть неудобство: у вас нет реальных результатов в режиме реального времени. По какой-то причине, похоже, существует буферизация, и вам нужно генерировать больше событий мыши, чтобы прочитать старые. Так что, если вы сделаете щелчок, а он не отображается, немного наведите курсор мыши, и вскоре появится последний щелчок. Извините за это, но я пробовал кое-что, но пока не знаю, как это решить. Надеюсь, это не так уж плохо для вас.
  • Как видите, подсчитывается любой щелчок. Если вы хотите посчитать количество нажатий только для одной из кнопок, замените «release» на «release 1», «release 2», «release 3», что ж, у вас есть идея. Если вы хотите подсчитать их все, но с отдельной статистикой, запустите команду (с соответствующей индикацией кнопки) в отдельном терминале.

Подход, который я использовал: xinput list <id> делает грязную работу, показывая все, что происходит с мышью. Затем я перенаправляю этот вывод в sed, который будет анализировать только строки с событиями 'release'. Я полагаю, что все в порядке, если учесть, что событие «релиз» завершает «процесс щелчка» (кнопка вниз, а затем вверх). Скрипт sed не только показывает строки с «release», но и нумерует их. Этот скрипт был напрямую скопирован из info sed (раздел 4.7) и, несомненно, может быть улучшен.

0
ответ дан 30 December 2010 в 09:58

Другие вопросы по тегам:

Похожие вопросы: