Половину октября занимался отслеживанием самого себя с помощью небольшой программы кейлогера. Изначально это был только слушатель нажатых клавиш и их сочетаний, потом что-то в голову взбрело записать ещё и перемещения мыши. И вот месяц кончился, данных скопилось много.
Как и планировал, начинаю с графиков. Итак, Keylogger можно считать завершённым, вот его результаты: всего было собрано 26 900 314 позиций мыши, 52 263 сочетания клавиш и 492 910 нажатых символов. Вот скажите мне, сколько это дней я вёл учёт? Даже точно не помню, в логах клавиш есть дата начала записи - это 15 октября. А сбор данных за мышь начал, кажется, 24 числа. С мыши нормально так сыпятся строки, концом учёта можно считать 31 октября.
И вот тепловые карты, слева наиболее точечная, справа сгруппированная в 10 раз.
![]() |
![]() |
|---|
В целом выходит именно то, что и нужно ожидать, в основном все позиции мыши крутятся вокруг центра. Есть ещё два интересных выброса - это пятно в левом верхнем углу и снизу полоска. Вот в чём дело: то левое верхнее пятно - это кнопка закрытия приложения. Этот светофор приложений на macOS. А панель снизу - это я играл в Factorio, именно после игры остался мой такой след обращений за панелью инструментов.
Что интересно - среднее значение крутится вокруг реального центра экрана. У меня разрешение 2 940 на 1 912 (да, такое странное), его центр в точке 1 470 на 956, а среднее значение по логгеру 1 458 на 1 014. Вот прям почти реальный центр экрана.
Но, кстати, на группированной диаграмме заметно, что слева от центра есть вертикальная красная полоска. Напоминает мне почку. Хочется сказать, что эти полосы - это характер работы с текстом - выделение строк. При работе с Word особенно. Так то я использую мышку активно только при рисовании и играх, поэтому за код и за учёбу там генерируются данные только с такими графическими приложениями, где нельзя настроить Vim.

Что касается основной цели проекта, то это был анализ частот использования обычных клавиш и их сочетаний. Итак, клавиши. Здесь вообще прикольно, чаще всего используется пробел и клавиша удаления символа. Так что в теории, лучше всего на эргономику клавиатуры должны влиять не всякие оптимизированные раскладки, а просто перемещение backspace поближе к центру. Желательно вообще вот что сделать: пробел разбить на две клавиши и второй сделать backspace. Это было бы гениальное решение.
Кстати, классический Colemak именно по этой причине делает backspace на caps lock. Но в macOS это не учитывается в раскладке. И поэтому неплохой кусочек оптимизации идёт прахом...
Дальше по частоте идут J и K - либо это распределение по частоте алфавита, потому что у меня большую часть времени там были N и E (потому что сидел на Colemak), либо потому что это одни из самых частых операций Vim на раскладке QWERTY - перемещение курсора вверх и вниз по тексту. Ну и в ту же топку A и F для перехода к началу строки или для поиска по символам. Хотя я не так часто ими пользуюсь...
Если что, клавиши здесь приведены по стандарту W3C (ну почти все). Что это за 179 и 76 в самом конце - я без понятия, скорее всего это коды клавиш, нажатых с активным alt.
Что касается остальных символов - скорее всего здесь частотное наложение (по языку) трёх раскладок - это немного QWERTY, Colemak и под конец классический ЙЦУКЕН с командным рядом как у Colemak (если кроме меня это кто-то понял).

Теперь сочетания. Среди комбинаций самые популярные - это переключение окон приложений на cmd + tab, знаменитая всем отмена на cmd + z, выход в командный режим Vim с помощью ctrl + c. На ctrl + space переключаю раскладки ввода. Дальше идут разные сочетания vim, на shift + { / } я перемещаюсь по абзацам текста.
Сочетание shift + space, попало сюда случайно, потому что я часто таким способом набираю заглавные буквы в предложениях. Ведь мне проще зажать шифт, набрать точку, потом поставить пробел и сразу же заглавную букву, чем чередовать шифт на первом и последнем символе в этой комбинации.
Что ещё надо добавить? Можете смотреть график, там понятнее должно быть. Самые частые классические сочетания идут в следующем порядке:
cmd+z/v/c/j/w/acmd+shft+[/]cmd+t/r
В рамках cmd клавиши на j у меня переключение окна терминала в VSCode, на w закрытие окна или вкладки, на a выделение всего текста (работает везде в рамках macOS). А shift и квадратные кавычки - перемещение между активными вкладками в Safari, Obsidian и VSCode. На t открывается новая вкладка в Safari, на r там же перезагружается страница.
Стандартная работа с компьютером тогда выглядит примерно так:
cmd + space чтобы открыть Spotlight, потом печать, например, saf, чтобы по автозаполнению открыть Safari. Набор чего-нибудь в поисковой строке, поиск... потом cmd + t для открытия новой вкладки. Поиск там... cmd + [ / ] чтобы переключиться на другую вкладку. Ладно, допустим, что-то отыскал, переключаюсь на cmd + tab обратно на VSCode, на cmd + o открываю нужный мне файл, и ввожу код. Как надоело, ctrl + c (выход из режима ввода vim), cmd + j (переключился на терминал), ctrl + p (достал последнюю введённую команду, аналог стрелочки вверх), enter - запуск программы. И так до потери пульса, никакая мышь не нужна.
Позже для запуска последней строки в терминале ввёл сочетание cmd + shift + l в настройках VSCode. Очень выручает.
Ну вот, такие данные. Логи клавиатуры (для сочетаний клавиш и для их частот) весят 52 МБ, для мыши 497 МБ. Кстати, логгер не умеет правильно считывать нажатия клавиши function, поэтому мои частые function + ctrl + c для центрирования окон считаются как ctrl + c. А ещё на macOS программа вообще в принципе не может считывать ввод клавиш при наборе паролей. Но всё равно в логах технически находится персональная информация, поэтому распространению они не подлежат.
А вот тепловая карта всей клавиатуры. Она уже относится к другому проекту, но о нём как-нибудь в другой раз.


