一个可定制的命令行触摸打字导师

youtyper的Python项目详细描述


年轻人

youtyper是一个可定制的命令行触摸打字导师。在

你可以很容易地添加你的定制课程与文本,甚至Python函数。在

动机

有很多触摸式打字辅导应用程序。 然而,大多数应用程序都没有灵活性来最大限度地提高我的学习率。在

第一,课程的灵活性。在

例如,我很不擅长区分垂直于键盘上的“c”和“d”,但大多数应用程序都提供了rowwise课程。 我也不擅长输入“y”、“u”和“I”,但大多数应用程序在这些键的课程中也包含了“o”和“p”。 有些应用程序提供自定义文本的课程,但不能动态生成。 我想用Python创建课程。在

第二,分析的灵活性。在

我是个很有趣的人keybr.com公司,因为它的美丽和详细的统计数据。我可能花了更多的时间看图表而不是练习。虽然我不能创建像他们这样漂亮的界面,但我可以提供更详细的统计数据,甚至允许用户分析他们的输入。在

命名

  • “y”、“o”、“u”、“t”、“p”、“e”和“r”都在键盘的上排
  • 这些键就是我创建这个应用程序的原因。在
  • 此名称也可能表示此应用程序的可自定义性。在

安装

pip install youtyper

快速启动

youtyper:将在启用标准分析的情况下开始标准课程。在

自定义课程

使用--lesson_type选择您的课程。在

  1. 加载文本以创建课程

    youtyper --lesson_type text --text_path path-to-your-lesson-text

    其他可用选项:

    • --disable_shuffle:禁用课程洗牌(默认值:false)
    • --num_lessons 10:要学习的课程(默认:无,重复直到退出)
    • --len_lessons 50:一节课中的最大字符数(默认值:100)
  2. 加载python脚本以启用自定义课程

    youtyper --lesson_type python --generator_path path-to-your-generator --generator_name YourLessonGeneratorClassName

    使用指定的LessonGenerator类生成课程。示例生成器在examples下可用。在

  3. 加载内置课程(默认)

    youtyper --lesson_type built-in --lesson_name right_hand_home_row

    使用内置课程。有关可用的课程,请参见lessons/README.md--lesson_name:默认课程的课程名称(默认:“default_lesson”)

自定义分析仪

  1. 使用预定义的分析器

    youtyper ... --analyzer cpm error_rate ...

    • cpm:每分钟字符数(默认值:开)
    • error_rate:按错键的比率(默认值:on)

    其他可用选项:

    • --analyzer wpm:[待实现]每分钟显示单词数
    • --ignore_consecutive_errors:[要实现]忽略相同字符的连续错误(deafult:false)
  2. 使用自定义分析器

    youtyper ... --analyzer_path path-to-your-analyzer-file --analyzer_name YourStatisticsClassName

    使用指定的Analyzer类来分析课程日志。示例分析器在examples下可用。在

构建自己的自定义类

  1. 自定义课程
  • 您必须提供自定义的LessonGenerator才能创建自定义课程。
    • LessonGenarator必须是迭代器yieldsLesson
      • LessonGenarator必须实现__len__方法
      • Lesson基本上是文本到类型和元数据。在
    • 未知的命令行选项作为列表传递给LessonGenarator类。在
  1. 自定义分析器
  • 必须提供自定义Analyzer才能使用自定义分析。
    • Analyzer必须生成可打印文本以显示用户,并生成分析摘要词典以保存。
      • Analyzer必须实现返回(Dict, str)analyze方法
    • 未知的命令行选项作为列表传递给LessonGenarator类。
      • 您可以指定多个Analyzer,所有未知选项将传递给所有Analyzer
        • 检查您的选项是否无意中被其他分析程序共享。在

莱斯儿子日志

为了进行进一步的分析,youtyper将每个课程日志保存到用户homedir下的.youtyper目录中。在

课程日志是一个名为yyyymmdd_hhmmss_[lesson_name]_[lesson_id].json的json文件。在

结构如下:

{"lesson_name":"right_hand_home_row","lesson_id":"1","command-line-options":{"lesson_type":"built-in","lesson_name":"right_hand_home_row"},"text":"klj ;l;l;jjk ;ljl; kl;jkl jjlk ljk l; kl ;j","keystrokes":[{"timestamp":"2020/07/02 18:00:03","key":"k","target":"l"},{"..."}],"analytics":{"cpm":{"overall":100.0,"k":70.6,"l":116.4,"...":"..."},"error_rate":{"overall":0.043,"k":0.067,"l":0.032,"...":"..."},"...":"..."}}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
序列化反序列化java。awt。颜色>java。木卫一。InvalidClassException   java禁用多个日期范围jDateChooser   java为什么我的特例apper会被扔进泽西/灰熊?   JavaIntelliJ比较两个覆盖率数据   java什么是servletsdefault。你怎么办?   单击几下libgdx后java按钮没有响应   使用java将字符串转换为JSONArray   文件系统在java中刷新fileSystemViewer   java如何在hibernate中避免脏检查   java奇怪的问题,带有分号和“无法解决…”   java将值从子面板传递到父面板   HTML JTextPane CSS的Java FontSizeAction   java文件代码神秘地变成了一堆(0000)