V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
werifu
V2EX  ›  分享创造

好奇自己对键盘各键的使用频率,写了个能统计按键并生成热力图的程序 Keyboard Heatmap

  •  1
     
  •   werifu · 2023-01-03 16:43:40 +08:00 · 3568 次点击
    这是一个创建于 692 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/werifu/keyboard-heatmap

    如题,出发点是想知道自己哪些按键用最多,又想直观看到效果,所以采取了热力图的样子,做成键盘的布局,实现使用的是 Rust 的 egui ,原理其实就是监听键盘事件然后统计映射到热力图上而已。

    • 支持两种键盘的布局,一种是 MacBook 的键盘,另一种是 87 键的键盘(也就是中间有控制键区,但是没有小键盘的),都是 QWERTY 美式键盘布局,因为我手头只有这两种键盘,别的没法试所以就没做了。

    • 由自定义色相决定主题颜色

    • 可以保存为图片

    效果大概如下,是大概半个小时内的按键统计情况,主要做的事是在水群(也就是打汉字拼音,不过我用的是双拼,所以猜测跟全拼可能会有比较大差异,欢迎 po 出来)

    有个缺陷是按键的热力图深度到 150+基本就人眼不可区分了,我是用 HSL 颜色空间来做热力图深度的,空间也比较有限,没有特别好的办法,有好做法的话也欢迎建议。

    22 条回复    2023-01-10 10:06:00 +08:00
    AoEiuV020CN
        1
    AoEiuV020CN  
       2023-01-03 17:04:14 +08:00
    深度这个, 为什么用 sigmoid ,感觉第一反应应该是线性的,把当前最高作为线性最大值,映射到 0-1 ,有什么不好的吗?
    wdy3334
        2
    wdy3334  
       2023-01-03 17:05:49 +08:00
    ctrl c v
    opengps
        3
    opengps  
       2023-01-03 17:06:11 +08:00
    Ctrl ,C ,V ,Enter
    enzyme
        4
    enzyme  
       2023-01-03 17:37:19 +08:00
    不错。

    有个其实没什么用的小建议。为了增加趣味性,鼓励用户分享。可以考虑输出下最常用的字母案件是什么。最接近的英文词是什么,最接近的中文词汇是什么。
    loading
        5
    loading  
       2023-01-03 17:37:53 +08:00 via Android
    想法不错,有空我也试一下仿一个出来。
    PerFectTime
        6
    PerFectTime  
       2023-01-03 18:38:36 +08:00
    那自然是 CV 最多了
    EngAPI
        7
    EngAPI  
       2023-01-03 18:44:04 +08:00
    装了个 kmcounter v3.7 也差不多类似的,刚开始看看,后来直接废弃了
    hertzry
        8
    hertzry  
       2023-01-03 20:16:12 +08:00
    直接除以最大值变成 0~1 。
    luckykong
        9
    luckykong  
       2023-01-03 21:06:54 +08:00
    可以增加一个功能,按照空格将输入分隔开,然后进行词频统计,把最高的几个词标出来。这样就能简单的实现 4 楼的想法了。反正只是图好玩,准不准确无所谓
    LuxChen
        10
    LuxChen  
       2023-01-04 08:53:46 +08:00
    这个工具开着之后,不知道为什么,打字总会多出来几个字母,就好比现在这样,不确定是不是这个原因 iidi
    missdeer
        11
    missdeer  
       2023-01-04 09:05:33 +08:00   ❤️ 5
    改成立体的,越多越高
    liuidetmks
        12
    liuidetmks  
       2023-01-04 10:44:41 +08:00
    加强版,鼠标点击的分布。 (想不出有什么现实意义。
    lxms2021
        13
    lxms2021  
       2023-01-04 15:36:41 +08:00
    每个键上面能显示按键次数么
    Picmen
        14
    Picmen  
       2023-01-05 16:55:04 +08:00
    数量多了之后颜色不好分辨的话,建议增加数量显示
    Picmen
        15
    Picmen  
       2023-01-05 16:57:11 +08:00
    @Picmen 我错了,这个是有的
    shantongxu
        16
    shantongxu  
       2023-01-05 17:22:23 +08:00
    可以记录按键寿命, 键盘一直宣传几千万次的点击寿命,用个几年看看能不能达到 😐
    pagict
        17
    pagict  
       2023-01-05 22:28:54 +08:00
    3D 柱状图,高度为频次
    werifu
        18
    werifu  
    OP
       2023-01-06 14:19:21 +08:00
    @AoEiuV020CN 我其实是取了半个 sigmod ,让导数单调递减,不用线性的理由是我想加大按键次数比较少时的颜色变化,因为有些按键的频率是非常低的,可能很长时间只会按到一两次,按线性去平分颜色会让这些键非常不明显,而对次数比较多的键,对多一两次感知并不敏感
    werifu
        19
    werifu  
    OP
       2023-01-06 14:22:35 +08:00
    @missdeer 我觉得是个可以的思路,做成类似 https://skyline.github.com/ 的 3D 柱状图
    werifu
        20
    werifu  
    OP
       2023-01-06 14:23:30 +08:00
    @LuxChen 好像没有发现过这种情况,开个 issue 详细描述下?
    werifu
        21
    werifu  
    OP
       2023-01-06 14:29:41 +08:00
    @liuidetmks 商业上一些 web 服务有这种鼠标 click/hover 分布的热力图统计,不过似乎主要是用来给 PM 看和改进产品的
    lyqqqq
        22
    lyqqqq  
       2023-01-10 10:06:00 +08:00
    可以加个。
    按键组合频次列表。

    按键间隔不超过某个阈值( 0.5s )视为为一个组合内的。长度不限

    怎样就 我今天 CTRL+C 1000 次。。。。
    CTRL+V 1100
    EN 999 次
    最长的组合是 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    🤣
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5324 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:41 · PVG 16:41 · LAX 00:41 · JFK 03:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.