ngram-keylogger: написал велосипед для анализа эффективности моего кнопкодавства
Пришли мне Dumang DK6 Mini — две чумовые полу-клавиатуры, на которых можно размещать клавиши произвольным образом. Kinesis мой не заменит, ясное дело, но в жанре прототипирования плоских клав равных ей нет. А мне бы что-нибудь для планшетов-ноутов было бы интересно собрать.
Решил попробовать сделать какую-нибудь раскладку с аккордами на популярные буквокомбинации и слова и понял, что понятия не имею, что я вообще жму и в комбинации с чем. Одно ясно — статистика, набранная по худлиту, мне точно не подойдет, я ж не наборщик, я в шелле команды правлю да в виме бултыхаюсь. Кажется.
Дай, думаю, подсоберу статистики сначала. Набросал кейлоггер, который не слоггирует мне все пароли, запустил ненадолго и уже офигел. Выяснилось, что моя текущая раскладка адекватна только теми частями, которые придумывал не я, а мое представление о том, как я ее использую, годно и того меньше.
Наиболее удививший меня пример (в README есть еще):
Хотя бы буквы у меня соответствуют английской частотности (ETAOIN…)?
# ngram-keylogger query --limit=5 keypresses '[a-z]'
4.095611% | t
4.042651% | e
3.964975% | i
3.424778% | o
3.216467% | n
OK, сойдет. А заглавные?
# ngram-keylogger query --limit=5 keypresses '[A-Z]'
1.062741% | S
0.430745% | L
0.353070% | C
0.338947% | A
0.314232% | T
Че? Как так вышло, что каждое сотое совершаемое мной действие — набор заглавной S
?
Так, после чего я ее печатаю?
# ngram-keylogger query --limit=5 bigrams '*' 'S' --renormalize
40.199336% | S | S
18.272425% | L | S
7.641196% | space | S
6.976744% | o | S
5.980066% | ... | S
Зашибись, спамлю еще S
, или печатаю LS
или oS
. Супер-естественно… S
после паузы и пробел
+ S
еще куда ни шло.
Итак, где я долблю по S
?
# ngram-keylogger query --limit 3 --by-context bigrams 'S' 'S' --renormalize
90.082645% | term:vi:magit:nrm | S | S
4.958678% | term:vi:magit:ins | S | S
3.305785% | browser | S | S
Ффух, и правда. S
это stage hunk
в vimagit
, и я реально много его жму, когда просматриваю, что собрался коммитить. Дело закрыто.
Другие находки: самая популярная с большим отрывом триграмма nnn
, неприлично малое отношение точек с запятой к двоеточиям, популярность git
, непопулярность h
и нижнего подчеркивания. И это только начало, а сколько еще открытий чудных…
Как вы составляете/оптимизируете раскладки? Есть советы, истории успеха? Xah Lee уже читал. Особенно интересно послушать пользователей chording-раскладок и прочих стенографистов-программистов; за пользователей QWERTY не переживаю — что им будет, они же в танке.