V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Aladdin
V2EX  ›  分享发现

NoisyTyper: 戴上耳机, Mac 变身打字机,进入疯狂码字模式,开始一个人的啪啪啪… [已开源]

  •  2
     
  •   Aladdin · 2015-12-08 02:54:37 +08:00 · 4830 次点击
    这是一个创建于 3034 天前的主题,其中的信息可能已经有所发展或是发生改变。

    NoisyTyper-Swift
    http://ialaddin.github.io/NoisyTyper-Swift

    很久以前用了一个叫做 NoisyTyper 的小工具,每次敲击键盘的时候,都会打字机的感觉,很 high 。

    那个是使用 C++ 配合一套第三方框架写的开源程序(代码仓库里的 Readme.md 有相关的介绍链接)。当时想改进一些功能,让退出方式更友好一些。它时不时的还卡一下,看了眼代码,觉得实现的太麻烦了,但一直没空去折腾。

    今天抽空用 Swift 重写了一份,核心逻辑都没有改变,但简单,直接很多,顺便增加了我当时希望拥有的调节音量的功能,以及更友好的退出功能。

    代码十分简单,对 Mac 程序感兴趣的朋友可以看看,有空也可以谢谢小工具给大家把玩一下 =D

    推荐初次使用的时候,戴上耳机,将 Mac 音量调整至 1/3 ,再打开惯用的背景音乐,调整 NoisyTyper 的音量。

    所有的调整都将被自动存储,下次会使用之前的配置。

    Enjõy !

    30 条回复    2018-11-17 12:27:33 +08:00
    KiseXu
        1
    KiseXu  
       2015-12-08 03:01:41 +08:00
    打开后打字没有任何声音
    KiseXu
        2
    KiseXu  
       2015-12-08 03:04:31 +08:00
    原来需要开启辅助功能
    Aladdin
        3
    Aladdin  
    OP
       2015-12-08 03:08:09 +08:00
    @KiseXu 我以为文档写的够清楚了, 23333
    看来还是不够清楚啊~~
    Aladdin
        4
    Aladdin  
    OP
       2015-12-08 03:11:57 +08:00
    需要开启的设置位于:
    1. 系统偏好设置->安全性与隐私->通用 : 允许从以下位置下载的应用 勾选 [任何位置]
    2. 系统偏好设置->安全性与隐私->隐私:左列表选中『辅助功能』:右侧列表点击 + ,添加 NoisyTyper
    3. 运行应用即可
    KiseXu
        5
    KiseXu  
       2015-12-08 03:13:01 +08:00
    @Aladdin 这应该在应用打开时做提示,然后把用户引导到设置界面去
    Aladdin
        6
    Aladdin  
    OP
       2015-12-08 03:14:23 +08:00
    @KiseXu 有空看看怎么弹出这个提示 =D
    Aladdin
        7
    Aladdin  
    OP
       2015-12-08 04:00:51 +08:00
    已更新,加入检测用户授权功能

    谢谢 @KiseXu 建议
    bugcoder
        8
    bugcoder  
       2015-12-08 05:47:10 +08:00
    以前一直都是在用 F.A.T 的 NoisyTyper , 说实话,这个实现是我见过的最好的实现了。楼主的效果最接近,但是打字声音还不够清脆,删除的声音完全是一个完了再开始另外一个。还有待改进。
    PopeyeLau
        9
    PopeyeLau  
       2015-12-08 08:44:36 +08:00   ❤️ 1
    Aladdin
        10
    Aladdin  
    OP
       2015-12-08 09:14:38 +08:00
    @PopeyeLau 也许先看到这个项目就不会写这份代码了=D
    anguslg
        11
    anguslg  
       2015-12-08 10:00:41 +08:00
    用机械键盘的同学会不会感到声音冲突 2333
    Aladdin
        12
    Aladdin  
    OP
       2015-12-08 10:03:50 +08:00
    @bugcoder 现在应该都是之前的声音没有播完,就不会理会下一次的敲击。比较明显的 bug 应该会出现在换行上:因为换行的声音比较长。

    改了一下,可以更新尝试下,希望体验有所改善 =D
    Aladdin
        13
    Aladdin  
    OP
       2015-12-08 10:05:06 +08:00
    @anguslg 戴上耳机还好吧~ 都用机械键盘了,就别拿这个 yy 了~
    我是没用惯机械键盘,用惯了 MBP 的键盘,对原生的键盘的键程,阻尼,都太熟悉了,不想换,才搞这个
    daben1990
        14
    daben1990  
       2015-12-08 10:47:55 +08:00
    Echoldman
        15
    Echoldman  
       2015-12-08 11:11:35 +08:00
    任务栏上的图标是模糊的, 在 Retain 屏幕上。其他都很好。
    Aladdin
        16
    Aladdin  
    OP
       2015-12-08 11:22:22 +08:00 via iPhone
    @Echoldman 这个好改,待会搞一下~
    kiray
        17
    kiray  
       2015-12-08 13:53:53 +08:00
    http://www.yingdev.com/projects/tickeys 跟这个比有什么优势么?
    kumakiti
        18
    kumakiti  
       2015-12-08 14:01:51 +08:00
    hhkb 非 type-s 用户表示天天啪啪啪
    exploreexe
        19
    exploreexe  
       2015-12-08 14:08:37 +08:00
    @PopeyeLau 这个好屌啊 还有剑气的选项 比打字机听起来还爽 哈哈哈
    exploreexe
        20
    exploreexe  
       2015-12-08 14:09:31 +08:00
    LZ 这个还是有点问题,打字不同步 还有很大的改进空间的说。
    Aladdin
        21
    Aladdin  
    OP
       2015-12-08 14:50:51 +08:00
    @kiray 都差不多。

    我看了这个代码,它应该和我是参考的同一个项目,也就是 OF 示例项目 NoisyTyper ,我在我的代码库的 Readme 里有相关的链接(开头处)。有兴趣的话,可以去看看。

    我不喜欢原版设定的退出方式,太 hardcore ,希望交互更直接一些,仅此而已 =D

    @exploreexe 关于不同步的问题,你说的是连按的时候可能存在音效没播放完整就被结束的情况吧?这里也没有想好,如何处理比较舒服。

    目前的做饭是这样的:为了节省内存, 5 种不同键程的核心区按键(也就是字母+数字区域)的各有一个常驻的 player 实例对象。每次敲击的时候,并没有严格的去按照实际的键盘布局进行调用播放,目前只是随机的选择其中一个进行播放,所以存在可能选中的 player 对象正在播放音效且没播完的情况。我会阶段当前播放,进行重新播放该音效。这个是我发现的一个 bug ,算是设计缺陷。

    现在我有几种想法:

    1. 按照实际的键盘布局来指定键程,固定按键与声音的关系。这样就会少了很多的冲突,因为实际上正常击键也很少有快速的连续用一个按键的情况。
    2. 或者现在的随机方法改进,如果随机到播放中的音效,就尝试新的随机过程,但这样也无法避免在 0.1s 内连续击键 5 次以上的冲突情况。
    3. 或者比较费内存的方式,每次击键就生成实例,设置一个生成上限。连续击键的次数在一定范围内,就不断的新建实例进行播放,播放完毕后释放掉就好。但这样的设计本身就存在一定的危险性。

    有好的建议不妨讨论下~
    Aladdin
        22
    Aladdin  
    OP
       2015-12-08 17:41:40 +08:00
    @Echoldman 适配 retina display 完成,可以重新下载一个试试看
    @exploreexe 尝试修改了不同步的问题
    Aspx
        23
    Aspx  
       2015-12-08 18:28:23 +08:00
    完全没找到打字的感觉,跟打架一样
    Aladdin
        24
    Aladdin  
    OP
       2015-12-08 19:02:40 +08:00
    @Aspx 2333 不喜欢的话,可以删掉了~ 谢谢尝试
    Showfom
        25
    Showfom  
       2015-12-08 19:09:20 +08:00
    Aladdin
        26
    Aladdin  
    OP
       2015-12-08 19:31:25 +08:00
    @Showfom yeah ,看完以后觉得 Rust 还是好复杂,还是 Swift 简单 =D
    Slienc7
        27
    Slienc7  
       2015-12-08 22:53:44 +08:00
    所以有没有类似的实现鼠标点击音效~~~
    Aladdin
        28
    Aladdin  
    OP
       2015-12-08 23:48:57 +08:00
    @xgowex 可以加啊,有什么好的音效吗?我可以给你添加上这个功能 =D
    firstinout
        29
    firstinout  
       2015-12-09 15:29:01 +08:00
    感谢楼主,音效不错,如果可以加入更多音效的选择就更好了(比如机械键盘)
    fbqk2008
        30
    fbqk2008  
       2018-11-17 12:27:33 +08:00
    打字的音效有什么用吗?这类需求真奇怪啊。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2882 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 11:34 · PVG 19:34 · LAX 04:34 · JFK 07:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.