-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.txt
118 lines (88 loc) · 20.9 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
This is the typewriter by which Leon used to save his progress during his missions!
Well, this sophisticated typewriter is best for you if you are looking for a way to further enhance your typing speed! But to put it more straightforward, i'mma tell you that it literally takes time and patience as there's absolutely no such thing as magic involved in this project at all!
By gamifying this project, i wish to have helped everyone who is using this free software purposefully to whether evaluate or boost their typing speed along with their accuracy!
+ So i'll be taking a leap forward to further explain to you what's this all about and how it works:
In order to make a better typist, you need to possess 2 key features, first is building accuracy, which indicates your level of being precise in typing that requires a dedicated amount of composure and effort to gradually build patterns of accuracy; second invaluable competency that must be prioritized afterwards, is having at least a decent speed that is a highly determining key factor when it comes down to make a professional typist.
To achieve this all, you'd require to keep typing and this would also require you to have an opportunity for this to grow your skills. The most primarily regarded opportunity is having a vast source of words for your practice.
Don't worry, we have provided you with all of that! This work includes a vast variety of words from dictionary that come in 3 main comprehensive-sorted categories represented as difficulty levels: 1. Essential Words 2. Advanced Words 3. Full Words
The Essential Words are a compilation of mostly used words in english that typing them is the first priority for anyone! So if you're a newbie, it's highly recommended for you to only choose the first category containing almost all essentially common words which can further reinforce your overall typing skill!
The Advanced Words difficulty is a bit of something comprised of a hell of a more complex and rich words that's worth taking your time as you gradually move on to higher skills, which would strengthen your typing speed and take your skills to a higher level, increasing your accuracy at the same time!
The Full Words is a highly challenging difficulty mode for everyone, even those who are adept typists with years of experience that may come across some words that many may have not even heard of before, let alone having typed 'em! This mode is capable of stepping up your brain's overall function of more successful and accurate improvisations when it comes down to typing words!
First off, once you run the program, you come across a window that contains many features. First thing to keep in mind that deserves the first heed, is the difficulty LabelFrame inside which you can choose from one of the 3 available difficulty levels mentioned earlier, that is just a click away to choose among for yourself! *It's mandatory to choose one difficulty every time you begin a typing session!
Next thing you come across which is also a mandatory section, is an optional minute-entry which is located in a small field that's automatically focused once a typing session is not active! Once you've typed the duration into the field (in minutes), in which you'd like to take the test for, you're just a click away from beginning a session! keep in mind that longer durations are typically intended for practice rather than testing your speed and accuracy! but all in all, it will calculate your resutls once the time is over and just in case it's not interrupted by you!
Also, best practice is to set the timer on 1 minute in case you'd rather take a test than some casual self-drill or something just for your own practice!
Third thing that requires attention is nothing but the button that starts the procedure! But first things first, you get two primary typewriter modes in general (SOLO-WORD & MULTI_WORDS), One of which (SOLO-WORD) is the default mode that comes challenging as it requires you to type words one by one so that the next word would come suddently and immediately after but with some perception delay which is solely caused as a result of a unique personal delay of your own mental reaction patterns to sudden circumstances which is typically measured in milliseconds. But you can get some additional percent in your time duration relative to each minute by simply skipping the challenge mode! Otherwise, if you hit Yes and accept the challenge, you are just being granted an equal amount of time surprisingly with that much strain and challenge still present under the hood but instead earning a bit more points for that!
The other primary typewriter mode (MULTI-WORDS) doesn't contain any form of challenge as it's just a standard typing tool with 16 words being introduced at a time to significantly reduce the perception delay!
Both typewriter modes are accessible to switch to one another from the bottom-most left side of the program through a button!
Also keep in mind that you can always select a keyboard layout before starting a typing session, which is quite optional and not mandatory at all! This only helps better sort the results per person! This feature is available through a button named "KB Layout" and if you decide not to tamper with it, by default, it would declare your keyboard layout as "QWERTY"!
One other notable feature is blind typing. When you look at the screen for what you have typed, you find the urge to correct yourself or sometimes even lowering your speed! While with blind typing, you can't see what you type! Which helps you gain mastery along with typing. By not always looking at or double-checking what you type, you'll become a better typist and you'll eventually get the hang of all word patterns without always spelling them!
By simply clicking on the "Hide/Show" Button located under the main entry where you type words, you can replace real characters with dollars "$"! This technique per se, can significantly enhance your typing skills. Accuracy and Speed are two crucial keys determining your overall skills! you can simply revert the text state back using the same button.
Now that you've learned how to switch to different (Multi - Solo) primary typewriter modes, or how to customize your keyboard layout, or how to establish a typing session, then giving the countdown a kickoff or whether to accept a challenge or decide to opt out, it's time to introduce you to some more ideas i have added to the software.
There's a state bar on top of the program, at the center of the state bar there's something called "STATE" which is set to "AFK" when there's no ongoing or active typing session. But once you have activated or started a typing session, you'll notice that the color of state bar would change to darkblue and the state would update to the typing difficulty mode you had selected before initiating the session!
Another thing you'll notice on the state bar, is on it's right side which is nothing but a simple "Uptime Timer" which shows the duration in which the program was active or left opened since its first start. It just shows how long a user is using the software and for how long the program could last open & active for long hours or even days, weeks or maybe months! ensuring it would never crash!
The other thing on the left side of the state bar is completely related to users! "Node" represents the running OS account which could potentially act as a unique identifier to each device within a whole local network of connected devices, and the "User" represents the username by which someone has logged in to the program. *You need to create an account and log in before using the program, hence, you must start the program from "login.py"
There remains the "Leaderboard" button that is used to show you the leaderboard representing each user's best results with regard to their ordinal position in a whole competition manner. You are also somehow, thorugh a message, linked, offered or invited to pay a visit to the leaderboard environment everytime you complete a successful typing session!
And lastly, the "QUIT" button is not just an ordinary quit button! in fact, it's something that you can use to log out or terminate an active overall session (just inside the program, no matter you've been AFK or typing as long as the uptime timer goes on counting)
As you want to use the program, you need to create an account so after your account is ready and you have logged in, you should not forget to log out. Otherwise, your account is accessible to anyone using the same device or on the same OS account on that device within a local network, therefore this could lead to a security breach to your account, potentially resulting in a change to your overall typing records within the local database associated to your account!
In order to log out, there's only one way that also Quits the program afterwards! Simply click on the red "QUIT" button located in the bottom-most right side of the window everytime you're finished using the program!
++ One other worthwhile thing to mention is the realtime WPM speed meter that reports your typing speed in words per mintue in a realtime manner, just a bit under the placement of words being represented before they are typed & passed.
++ And the other thing is the CAPS/LOCK reporter that announces if your CAPS/LOCK is On by telling you through showing a yellowish label inside which is written 'CAPS LOCK ON' and only if you turn it off, it would disappear from the screen. (This feature works only on Windows)
* Please note that you'll need to restart the engine once the time is up and establish another typing session with any duration count you'd desire. (1 minute is the least available option)
* Please keep in mind that you cannot quit the program or configure keyboard layout or switch to another typewriter mode or opening the leaderboard during a typing session, unless you stop the session manually yourself or wait for it to finish itself!
* Also, if you stop the session manually you can later watch your results but cannot save them! And if you stay idle for prolonged periods, you may encounter an error stating that you were idle and therefore, your results would not be saved at all nor will they even be represented to you through a simple message!
* One last thing is that there's a label designed underneath the program that leads to opening a link to my Github account. So always consider supporting me on github through starring this project and sharing the link elsewhere! However, you can also Hide that label by pressing a button on its right side if its presence by any means sounds bothersome being in the window.
+ INTRODUCTION OF SOME FILES IN THE PARENT DIRECTORY OF THE PROJECT:
1. "leaderboard.py" is used to calculate and create a database that makes the leaderboard. (NOT THE FIRST FILE TO OPEN IN ORDER TO USE THE PROGRAM)
2. "leaderboard_gui.py" is used to represent the created leaderboard in a more appealing GUI, thus resulting in an impressive design and a more pleasing overall look! (NOT THE FIRST FILE TO OPEN IN ORDER TO USE THE PROGRAM)
3. "Leons_Typewriter.py" is a SoloWord typing test python-written program, the core of the whole software, thus labeling it as the main file, set by default. (FIRST FILE TO OPEN IN ORDER TO USE THE PROGRAM)
4. "Leons_Typewriter_multi.py" is a MultiWord typing test python-written program and the main file, not set by default but switchable from "Leons_Typewriter.py". (CORE OF THE PROGRAM & POTENTIALLY THE FIRST FILE TO OPEN IN ORDER TO USE THE SOFTWARE)
5. "login.py" is a tool to login into your account. It's not the main file, but the first file to open by default as it redirects itself to the main environment of the software! (FIRST FILE TO OPEN IN ORDER TO USE THE PROGRAM!)
6. "register.py" is a tool to create an account for yourself if you have none! (NECESSARY & REDIRECTABLE FROM "login.py")
7. "update_login_info.py" is a tool to change or modify user account if needed! Just in case you feel like needing to change your password or other personal info. (ALMOST NECESSARY & REDIRECTABLE FROM "register.py")
8. "words.py" works only as a wordbase in form of three main python lists that categorizes them into different classes designed for convenient access to all available difficulty modes and the full-words list provided in this file is an all-inclusive encyclopedia in form of a dictionary-rich grade entity partly derived from the respected natural language dictionary that contains all english words.
+ INTRODUCING SOME SUB-DIRECTORIES IN THE PARENT DIRECTORY OF THE PROJECT:
1. "Additional" is a sub-directory within the project that contains copyright-free image contents used in the project. (Please note that the pictures were all flagged as 'Free To Use, Share & Modify' before i decided to used them in my project)
2. "helper" is a sub-direcotry that contains an auxiliary python file that is used to remotely close a db connection in case the current running script is unable to interrupt it and delete file residual leftovers afterwards. (helper.py)
3. "layout_config" is a sub-directory that contains the "layout_config.py" file which is used to configure keyboard layout, which is something optional to do.
4. "ONLY_MANAGERS_AND_SUPERVISORS___Password__Reset__" is a sub_directory that contains "pass_reset.py" file and is used to reset a user's password to the literal of '12345678' so that they can further regain access to their account by changing their password in case they had forgotten their old one. This is done by a manager, NOT the user, so it's not considered as a part of client direct-access at all.
+ INTRODUCTION OF DATABASE TERMS:
1. "position" is the competitive ordinal position for each user available only in the "leaderboard.db" database.
2. "record_id" is the unique identifier of any record that exists in the 'typewriter.db' main database.
3. "username" is the unique identifier for each user who had also registered an account in the database before using the project.
4. "total_score" is the total score count that is calculated by the program after any thorough test is taken.
5. "net_wpm" is the typing speed in WPM or 'Word Per Minute' that calculates all correct whole-word entries including the space characters in a typing session. WPM measures typing speed through dividing the total number of whole words by the duration it took to take a test in minutes.
6. "gross_wpm" is the typing speed in WPM or 'Word Per Minute' that contains all whole-word entries (either correct or incorrect) & including the space characters. WPM measures typing speed through dividing the total number of whole words by the duration it took to take a test in minutes.
7. "pure_wpm" is the typing speed in WPM or 'Word Per Minute' that contains all correct whole-word entries excluding the space characters (which is the only difference that distinguishes the term from 'net_wpm'). WPM measures typing speed through dividing the total number of whole words by the duration it took to take a test in minutes.
8. "accuracy" is the measure of decency and precision when it comes to typing. The more the mistakes, the less the accuracy; and the less the mistakes, the more the accuracy becomes. Its output is always returned in form of 'percent' .
9. "correct_chars" is the number of correct characters inputted in a thorough session and for every whole-word input. (excluding space characters)
10. "total_keystrokes" is the number of all keystrokes in a whole-word input. whether correct or incorrect. (including spaces)
11. "correct_keystrokes" is the number of correct keystrokes in a whole-word input. (including spaces if be)
12. "incorrect_keystrokes" is the number of incorrect keystrokes in a whole-word input. (including spaces if be)
13. "time_in_minutes" is the total time in minutes took to take a test or complete a session.
14. "extended_seconds" is the time that has been extended or given to you additionally. You are granted the extended period only if you are in the solo-word typewriter primary mode and only if have not accepted the challenge. This small portion of time would somehow make up for the time you may have wasted on delaying.
15. "total_minutes" is the total minutes of time that you have spent during each typing session.
16. "typed_words" is the total number of whole words typed during a typing session.
17. "correct_words" is the number of only correct words typed during a typing session.
18. "incorrect_words" is the number of only incorrect words typed during a typing session.
19. "positive_points" is only the total amount of positive points earned during a typing session.
20. "negative_points" is only the total amount of negative points earned (for making mistakes) during a typing session.
21. "all_keypress" is the total number of keys pressed including spaces and incorrect characters whether in a whole-word or non-whole-word entry that could even include correction attempts per character made by user!
22. "interrupted" is the state of having interrupted a typing session or not. It's shown by 'True' or 'False' statements and yet it's always set on 'False' in the database since i've not allowed for saving data after user interruption. and it's purely made for the sole purpose of aiding in modification for other developers who wish to further modify this work or contribute to this project to help it improve! (Copyright notice shall be advised for any modification)
23. "idle" is the state of having been idle for prolonged periods during a session. It's shown by 'True' or 'False' statements and yet it's always set on 'False' in the database since i've not allowed for saving data after user idleness. and it's purely made for the sole purpose of aiding in modification for other developers who wish to further modify this work or contribute to this project to help it improve! (Copyright notice shall be advised for any modification)
24. "challenge_mode" is the state of having accepted a challenge within the primary typewriter mode of 'solo-word' or not. It's shown in 'True' or 'False'
25. "typewriter_mode" is the state of having switched to 'multi_words' or having stayed in the 'solo_word' mode before taking a test. It's shown in either 'solo-word' or 'multi-words' within the database.
26. "net_cpm" is the typing speed in CPM which is technically characters per minute and is the number of only correct characters per minute including spaces.
27. "kpm" is the typing speed in KPM which is technically keystrokes per minute and is the number of total keystrokes counted per minute.
28. "kph" is the typing speed in KPH which is technically keystrokes per hour and is the number of total keystrokes counted per hour.
29. "keyboard_layout" is the keyboard layout chosen through the 'KB Layout' button in the program. If you do not choose a layout for your keyboard, then it's already set to 'QWERTY' by default.
30. "keyboard_keys_used" is the number of physical keyboard keys totally used throughout the whole test taken. (repeat is not counted as twice or more than once)
31. "keyboard_keys" is the set of all physical keyboard keys used in a typing session. (literal keys shown in a tuple that are generally regarded repeatless and unique)
32. "os_name" is the name of your OS whether it's Windows, Linux or MacOS or Java ... (empty means being unable to determine your OS)
33. "os_admin" is the admin's username in an OS or the subsidiary OS account.
34. "event_date" is the exact datetime the event took place. It's represented in a datetime format containing 'year', 'month', 'day', 'hour', 'minute' and 'second' !
___ ALL IN ALL, THIS WORK WAS ONLY THE v1.0 & THE FIRST RELEASE OF THIS PROJECT THAT CAN BE FURTHER ENHANCED BY YOUR SUGGESTIONS! KEEP IN TOUCH WITH ME IF YOU FEEL LIKE ANY USEFUL IDEA CAN BE CONSIDERED OR ABOUT ANYTHING THAT THE PROJECT CURRENTLY LACKS IN! ___
__ DON'T FORGET TO SUPPORT ME THROUGH MY GITHUB PROFILE AND ALSO CONSIDER STARRING THE "Typewriter" REPOSITORY AND DON'T REFUSE TO EXPRESS YOUR IDEAS THAT COULD POTENTIALLY MAKE THIS PROJECT EVEN BETTER! __
################# THERE'S ALSO AN EASTEREGG INVOLVED WHICH IS PLANNED TO BE ONLY TWO CLICKS AWAY TO BE DISCOVERED! #################
®®®®®®®®®®®®®® Copyright (C) [2023] [Mohammad Dorri] <[https://www.github.com/PG6AW]> ®®®®®®®®®®®®®®
*** THIS WORK IS PROTECTED BY GPL-3 LICENSE AND YOU'LL HAVE TO INCLUDE OWNER'S LICENSE IN ANY MODIFIED VERSION OF YOURS WHEN IT COMES DOWN TO ANY TYPE OF SHARING SUCH AS REDISTRIBUTING THE CURRENT PROJECT AND HEREBY I DON'T GRANT ANYONE TO SELL THIS FREE SOFTWARE OR USING THIS PROJECT FOR SALE BY ANY WAY AND BY ANY MEANS. (All Rights Reserved!) ***
< AND ONE LAST THING TO ADD, THANKS TO TESTERS AND CONTRIBUTORS TO THIS PROJECT, WHO HAVE SPENT TIME AND ENGAGED THEMSELVES IN THIS WORK WHETHER FOR SUPPORTING ME OR EVEN FOR THE SOLE PURPOSE OF ENAHNCING THEIR TYPING SPEED & ACCURACY! BOTH WOULD REALLY MAKE ME HAPPY! THANK YOU ALL AND GOOD LUCK! AND AGAIN, YOUR SUGGESTIONS TO HELP THIS PROJECT IMPROVE, IS ALWAYS WELCOME! >