Как мне подсчитать количество нажатий кнопок мыши с момента запуска Ubuntu?
Я хотел бы делать статистику по нажатию кнопок мыши, поэтому мне это нужно.
Благодаря
Хотя это и не совсем то, что вам нужно, WhatPulse - это что-то приятное, чтобы отслеживать различные подобные лакомства + онлайн рейтинг с командами, странами, ...
Вы можете использовать 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 или что угодно, чтобы отслеживать события мыши и запускать это приложение, как только появится десктоп.
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 > на тот идентификатор, который вы нашли. Когда вы запускаете его, вы пропускаете его туда, пока продолжаете пользоваться системой. В любое время, когда вы хотите проверить, сколько кликов было зарегистрировано, вы просто смотрите на терминал.
Некоторые важные комментарии:
Подход, который я использовал: xinput list <id>
делает грязную работу, показывая все, что происходит с мышью. Затем я перенаправляю этот вывод в sed
, который будет анализировать только строки с событиями 'release'. Я полагаю, что все в порядке, если учесть, что событие «релиз» завершает «процесс щелчка» (кнопка вниз, а затем вверх). Скрипт sed не только показывает строки с «release», но и нумерует их. Этот скрипт был напрямую скопирован из info sed
(раздел 4.7) и, несомненно, может быть улучшен.