[Commits] typing-turtle branch master updated.

Wade Brainerd wadetb at gmail.com
Fri Jan 2 11:47:13 EST 2009


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "/home/olpc-code/git/activities/typing-turtle".

The branch, master has been updated
       via  c903bb07c07bde142202ce09093b7651f00928cb (commit)
       via  b5321fbe108b7b66b7c1607dc229ea77e8279248 (commit)
       via  b277a042162d77a1310575dc3183079ed68cde9d (commit)
       via  a26cfaec4cd4f3e707585bf32697370f5691c789 (commit)
       via  1c4b5e78f042c226d7d2b672acfb67b9791d4952 (commit)
      from  354ffa6f7d053ff2ed0b54584d21a14a7a7fedf2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

 MANIFEST                          |    9 +++-
 NEWS                              |    2 +
 activity/activity.info            |    2 +-
 keyboard.py                       |   19 ++++---
 lessonbuilder.py => lessonbuilder |   99 +++++++++++++++++++++++-------------
 lessons/en_US/MAKELESSONS         |  101 +++++++++++++++++-------------------
 lessons/en_US/MAKETESTLESSONS     |   27 +++-------
 lessons/en_US/bottomrow.lesson    |    2 +-
 lessons/en_US/homerow.lesson      |    2 +-
 lessons/en_US/intro.lesson        |    2 +-
 lessons/en_US/leftcapital.lesson  |    2 +-
 lessons/en_US/rightcapital.lesson |    2 +-
 lessons/en_US/test.lesson         |    2 +-
 lessons/en_US/toprow.lesson       |    2 +-
 mainscreen.py                     |    3 +-
 po/TypingTurtle.pot               |   80 ++++++++++++++++++-----------
 16 files changed, 200 insertions(+), 156 deletions(-)
 rename lessonbuilder.py => lessonbuilder (86%)
 mode change 100644 => 100755

- Log -----------------------------------------------------------------
commit c903bb07c07bde142202ce09093b7651f00928cb
Author: Wade Brainerd <wadetb at gmail.com>
Date:   Fri Jan 2 16:47:11 2009 +0000

     Release version 4.

diff --git a/NEWS b/NEWS
index 92de95e..d3261ae 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,5 @@
+4
+
 3
 
 2
diff --git a/activity/activity.info b/activity/activity.info
index 44aacb0..7fdc7d2 100644
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -1,6 +1,6 @@
 [Activity]
 name = Typing Turtle
-activity_version = 3
+activity_version = 4
 host_version = 1
 service_name = org.laptop.community.TypingTurtle
 icon = Activity-typingturtle

commit b5321fbe108b7b66b7c1607dc229ea77e8279248
Author: Wade Brainerd <wadetb at gmail.com>
Date:   Fri Jan 2 16:46:46 2009 +0000

    Release tweaks.

diff --git a/MANIFEST b/MANIFEST
index 205e949..dd7644e 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -7,10 +7,10 @@ keyboard.py
 lessonscreen.py
 medalscreen.py
 mainscreen.py
+lessonbuilder
 activity/Activity-typingturtle.svg
 activity/activity.info
 po/TypingTurtle.pot
-lessonbuilder.py
 images/tt-back.jpg
 images/OLPC_Rhand_M.svg
 images/silver-medal.svg
@@ -60,7 +60,14 @@ images/OLPC_Rhand_COMMA.svg
 images/OLPC_Rhand_QUESTIONMARK.svg
 images/OLPC_Lhand_C.svg
 images/OLPC_Rhand_O.svg
+lessons/en_US/MAKELESSONS
+lessons/en_US/MAKETESTLESSONS
+lessons/en_US/2of12.txt
+lessons/en_US/badwords.txt
 lessons/en_US/bottomrow.lesson
 lessons/en_US/intro.lesson
 lessons/en_US/toprow.lesson
 lessons/en_US/homerow.lesson
+lessons/en_US/rightcapital.lesson
+lessons/en_US/test.lesson
+lessons/en_US/leftcapital.lesson
diff --git a/keyboard.py b/keyboard.py
index c6ec9b9..e7537b1 100644
--- a/keyboard.py
+++ b/keyboard.py
@@ -569,10 +569,6 @@ class KeyboardWidget(KeyboardData, gtk.DrawingArea):
         key = self.key_scan_map.get(event.hardware_keycode)
         if key:
             key['key-pressed'] = event.type == gtk.gdk.KEY_PRESS
-            if self.draw_hands:
-                self.queue_draw()
-            else:
-                self._expose_key(key)
 
         # Hack to get the current modifier state - which will not be represented by the event.
         state = gtk.gdk.device_get_core_pointer().get_state(self.window)[1]
@@ -580,12 +576,21 @@ class KeyboardWidget(KeyboardData, gtk.DrawingArea):
         if self.active_group != event.group or self.active_state != state:
             self.active_group = event.group
             self.active_state = state
+
             self.queue_draw()
+            #self.window.process_updates(True)
 
-            info = self.keymap.translate_keyboard_state(
-                0x18, self.active_state, self.active_group)
-            
+            #info = self.keymap.translate_keyboard_state(
+            #    0x18, self.active_state, self.active_group)
             #print "press %d state=%x group=%d level=%d" % (event.hardware_keycode, self.active_state, self.active_group, info[2])
+
+        else:
+            if self.draw_hands:
+                self.queue_draw()
+                #self.window.process_updates(True)
+            else:
+                if key:
+                    self._expose_key(key)
         
         return False
 
diff --git a/lessonbuilder b/lessonbuilder
index 01fc08a..678c61f 100755
--- a/lessonbuilder
+++ b/lessonbuilder
@@ -313,13 +313,12 @@ def build_lesson(
     if len(new_keys) >= 2:
         for k in new_keys[1:-1]:
             keynames += ', ' + k
-        keynames += new_keys[-2] + ' and ' + new_keys[-1]
-        keynames += _(' keys')
+        keynames += _(' and %s keys') % new_keys[-1]
     else:
         keynames += _(' key')
 
     add_step(lesson,
-        _('Welcome to the %(name)s lesson!\n\nIn this lesson, you will learn the %(keynames)s.  Press the Enter key when you are ready to begin!') \
+        _('Welcome to the %(name)s lesson!\n\nIn this lesson, you will learn the %(keynames)s.  Press the ENTER key when you are ready to begin!') \
             % { 'name': name, 'keynames': keynames },
         'key', '\n')
 
@@ -437,25 +436,25 @@ def build_intro_lesson():
     text += _('Always use the correct finger to press each key!\n\n')
     text += _('If you learn which finger presses each key, and keep practicing, you will be typing like a pro before you know it!\n\n')
     text += _('Now, place your hands on the keyboard just like the picture below.\n')
-    text += _('When you\'re ready, press the space bar with your thumb!')
+    text += _('When you\'re ready, press the SPACE bar with your thumb!')
     add_step(lesson, text, 'key', ' ')
 
     text = ''
-    text += _('Good job!  You correctly typed your first key.  When typing, the space bar is ')
-    text += _('used to insert spaces between words.\n\n')
-    text += _('Press the space bar again with your thumb.')
+    text += _('Good job!  You correctly typed your first key.  When typing, the SPACE bar is ')
+    text += _('used to insert blank spaces between words.\n\n')
+    text += _('Press the SPACE bar again with your thumb.')
     add_step(lesson, text, 'key', ' ')
     
     text = ''
-    text += _('Now I\'ll teach you the second key, enter.  ')
-    text += _('That\'s the big square key near your right pinky finger.\n\n')
-    text += _('Without moving any other fingers, reach your pinky over and press ')
-    text += _('Enter.\nCheck the picture below if you need a hint!')
+    text += _('Now I\'ll teach you the second key, ENTER.  ')
+    text += _('That\'s the big square key near your right little finger.\n\n')
+    text += _('Without moving any other fingers, reach your little finger over and press ')
+    text += _('ENTER.\nCheck the picture below if you need a hint!')
     add_step(lesson, text, 'key', '\n')
     
     text = ''
-    text += _('Great!  When typing, the enter key is used to begin a new line.\n\n')
-    text += _('Press the enter key again with your right pinky.')
+    text += _('Great!  When typing, the ENTER key is used to begin a new line.\n\n')
+    text += _('Press the ENTER key again with your right little finger.')
     add_step(lesson, text, 'key', '\n')
     
     text = ''
diff --git a/lessons/en_US/MAKELESSONS b/lessons/en_US/MAKELESSONS
index 7d4ecc7..9a5c8f0 100755
--- a/lessons/en_US/MAKELESSONS
+++ b/lessons/en_US/MAKELESSONS
@@ -1,56 +1,51 @@
-#!/usr/bin/python
+#!/bin/bash
 #
-# Script which generates en_US lesson content for Typing Turtle.
+# Script for generating en_US lesson content for Typing Turtle.
 #
-# Add typing-turtle directory to path.
-import sys
-sys.path.append('../../')
-
-from lessonbuilder import *
-
-words = load_wordlist('2of12.txt')
-bad_words = load_wordlist('badwords.txt')
-
-lesson = build_intro_lesson()
-open('intro.lesson', 'w').write(json.write(lesson))
-
-lesson = build_lesson(
-	name='The Home Row', 
-	description='This lesson teaches you the a, s, d, f, g, h, j, k and l keys \nin the middle of the keyboard.\nThese keys are called the Home Row.', 
-	order=0,
-	new_keys='asdfghjkl', base_keys='', 
-	words=words, bad_words=bad_words)
-open('homerow.lesson', 'w').write(json.write(lesson))
-
-lesson = build_lesson(
-	name='The Top Row', 
-	description='This lesson teaches you the q, w, e, r, t, y, u, i, o and p keys \non the top row of the keyboard.', 
-	order=1,
-	new_keys='qwertyuiop', base_keys='asdfghjkl', 
-	words=words, bad_words=bad_words)
-open('toprow.lesson', 'w').write(json.write(lesson))
-
-lesson = build_lesson(
-	name='The Bottom Row', 
-	description='This lesson teaches you the z, x, c, v, b, n and m keys \non the bottom row of the keyboard.', 
-	order=2,
-	new_keys='zxcvbnm', base_keys='asdfghjklqwertyuiop', 
-	words=words, bad_words=bad_words)
-open('bottomrow.lesson', 'w').write(json.write(lesson))
-
-lesson = build_lesson(
-	name='Left Hand Capitals', 
-	description='This lesson teaches you the CAPITAL letters which are typed by your left hand.\nThese are Q, W, E, R, T, A, S, D, F, G, Z, X, C, V and B.', 
-	order=3,
-	new_keys='QWERTASDFGZXCVB', base_keys='abcdefghijklmnopqrstuvwxyz', 
-	words=words, bad_words=bad_words)
-open('leftcapital.lesson', 'w').write(json.write(lesson))
-
-lesson = build_lesson(
-	name='Right Hand Capitals', 
-	description='This lesson teaches you the CAPITAL letters which are typed by your right hand.\nThese are Y, U, I, O, P, H, J, K, L, B, N, and M.', 
-	order=4,
-	new_keys='YUIOPHJKLBNM', base_keys='abcdefghijklmnopqrstuvwxyzQWERTASDFGZXCVB', 
-	words=words, bad_words=bad_words)
-open('rightcapital.lesson', 'w').write(json.write(lesson))
 
+# Generate the introductory lesson.
+../../lessonbuilder --make-intro-lesson --order=0 --output=intro.lesson
+
+# Generate the home, top and bottom row lessons.
+../../lessonbuilder --make-key-lesson \
+    --title="The Home Row" \
+    --desc="This lesson teaches you the a, s, d, f, g, h, j, k and l keys \nin the middle of the keyboard.\nThese keys are called the Home Row." \
+    --keys="asdfghjkl" \
+    --wordlist=2of12.txt \
+    --order=1 \
+    --output=homerow.lesson
+    
+../../lessonbuilder --make-key-lesson \
+    --title="The Top Row" \
+    --desc="This lesson teaches you the q, w, e, r, t, y, u, i, o and p keys \non the top row of the keyboard." \
+    --keys="qwertyuiop" --base-keys="asdfghjkl" \
+    --wordlist=2of12.txt \
+    --order=2 \
+    --output=toprow.lesson
+
+../../lessonbuilder --make-key-lesson \
+    --title="The Bottom Row" \
+    --desc="This lesson teaches you the z, x, c, v, b, n and m keys \non the bottom row of the keyboard." \
+    --keys="zxcvbnm" --base-keys="asdfghjklqwertyuiop" \
+    --wordlist=2of12.txt \
+    --order=3 \
+    --output=bottomrow.lesson
+
+# Generate left and right hand capital lessons.
+../../lessonbuilder --make-key-lesson \
+    --title="Left Hand Capitals" \
+    --desc="This lesson teaches you the CAPITAL letters which are typed by your left hand.\nThese are Q, W, E, R, T, A, S, D, F, G, Z, X, C, V and B." \
+    --keys="QWERTASDFGZXCVB" \
+    --base-keys="abcdefghijklmnopqrstuvwxyz" \
+    --wordlist=2of12.txt \
+    --order=4 \
+    --output=leftcapital.lesson
+
+../../lessonbuilder --make-key-lesson \
+    --title="Right Hand Capitals" \
+    --desc="This lesson teaches you the CAPITAL letters which are typed by your right hand.\nThese are Y, U, I, O, P, H, J, K, L, B, N, and M." \
+    --keys="YUIOPHJKLBNM" \
+    --base-keys="abcdefghijklmnopqrstuvwxyzQWERTASDFGZXCVB" \
+    --wordlist=2of12.txt \
+    --order=5 \
+    --output=rightcapital.lesson
diff --git a/lessons/en_US/MAKETESTLESSONS b/lessons/en_US/MAKETESTLESSONS
index b53f2b9..1d16761 100755
--- a/lessons/en_US/MAKETESTLESSONS
+++ b/lessons/en_US/MAKETESTLESSONS
@@ -1,21 +1,8 @@
-#!/usr/bin/python
-# coding: utf-8
-#
-# Script which generates en_US lesson content for Typing Turtle.
-#
-import sys
+../../lessonbuilder --make-key-lesson \
+    --title="Test lesson" \
+    --desc="This lesson exists to test out obscure Typing Turtle features.\nPlease skip it by pressing the arrow button to the right." \
+    --keys="æΩABbB" \
+    --wordlist=2of12.txt \
+    --order=-1 \
+    --output=test.lesson
 
-# Add typing-turtle directory to path.
-sys.path.append('../../')
-from lessonbuilder import *
-
-words = load_wordlist('2of12.txt')
-bad_words = load_wordlist('badwords.txt')
-
-lesson = build_lesson(
-	name='Test', 
-	description='Quick dummy lesson', 
-	order=-1,
-	new_keys=u'AæΩ', base_keys='', 
-	words=words, bad_words=bad_words)
-open('test.lesson', 'w').write(json.write(lesson))
diff --git a/lessons/en_US/bottomrow.lesson b/lessons/en_US/bottomrow.lesson
index 0259282..5df080d 100644
--- a/lessons/en_US/bottomrow.lesson
+++ b/lessons/en_US/bottomrow.lesson
@@ -1 +1 @@
-{"order":2,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the The Bottom Row lesson!\n\nIn this lesson, you will learn the zx, c, v, b, n and m keys.  Press the Enter key when you are ready to begin!"},{"text":"z","mode":"key","instructions":"Press the z key with your left pinky finger."},{"text":"x","mode":"key","instructions":"Press the x key with your left ring finger."},{"text":"c","mode":"key","instructions":"Press the c key with your left middle finger."},{"text":"v","mode":"key","instructions":"Press the v key with your left index finger."},{"text":"b","mode":"key","instructions":"Press the b key with your left index finger."},{"text":"n","mode":"key","instructions":"Press the n key with your right index finger."},{"text":"m","mode":"key","instructions":"Press the m key with your right index finger."},{"text":"xx nn zz mm vv mm cc vv nn xx vv bb xx mm xx mm vv vv cc xx bb nn nn nn vv nn cc vv vv bb nn xx bb vv mm nn mm mm mm vv","mode":"text","instructi
 ons":"Practice typing the keys you just learned."},{"text":"nn mm vv vv vv bb zz xx zz vv vv zz xx xx bb bb mm zz nn cc mm bb vv vv xx zz mm vv bb xx bb mm zz xx cc bb cc mm zz xx","mode":"text","instructions":"Keep practicing the new keys."},{"text":"vv nv bv nm xb mb cm cc nx mv bb mb xb zm nc nn cz xn mc cc bm cz nb nc zv nc bn nx zz mm nv zz vv zz bn mv bz nz cc nm mc mn vv mb bz nn nc cc vv nx","mode":"text","instructions":"Now put the keys together into pairs."},{"text":"nv mv zm mm cz cn zz nn nv nb cz nc cm bc cc mm xn bm nm cc xn vv nc bc mm nx cn bc zz xn mc mv cz nc bc zm xb xc cc vv nx cz nn nm cm zv zz nn bc vv","mode":"text","instructions":"Keep practicing key pairs."},{"text":"zw xc kv ix ni vv nr zw ng ni xs mq mn xi ms xt om xu xe ny cy ml xe cm bj bu xb bt bm zz mj mi xn sv bd bt dc cy zp ym fc am ez cn ym dn um ct on zp","mode":"text","instructions":"Now practice all the keys you know."},{"text":"tc yv lb vy mf ns zm mr lc cd ms dv bc my zk bp km ml va nq 
 nh um uv hn lc mp ce vv un sm oz zm iz yv tn cc va kc ca pc mn ns ev az dm nd mo bg wb sv","mode":"text","instructions":"Almost done.  Keep practicing all the keys you know."},{"text":"thimble retaken employee sabra sunroof swamp burnish doctoral glowing demotion catacomb morality trochaic dabbler squeezer pane babel upfront exertion entomb flaming tonk bevy defame optimal bald fervid luncheon provider buzzard grovel bleacher warmish razzle djellaba given crone cite dismay doxology limpet minority notably wintery passable tinker recycle cardinal thoracic murkily khan clout urbanely shaken beanbag unless undimmed lowland bagpiper outplace bray minter panache impure reengage immerse waken analog chi mogul luck bindery vegan noble bronchus assign bologna driving flippant patchy wanton nucleon kidnaper nilly explicit baronage tangled knit waking garrison namedrop mediate biker cookbook combined fawn accursed freebase fend ball","mode":"text","instructions":"Time to type real wor
 ds."},{"text":"ancients shrimp knack numinous wrangle import vermouth signpost recess pampas mad crocus reclaim babyish hormonal raven cost deadbolt vacant finicky tizzy alchemy brisk mum minim chairman bowsprit mohair grab bindweed phoneme frizz gnarled brackish penalty semipro unhurt swank barring sieve extent smithy realize polemic maple weldable beseem mummify sobriety ramjet express wanna tinder fumigant shaven glaciate promoter blintze aseptic cowpox snooze court evident claw prone rainfall miasmata czar achiever sentient javelin carfare enrage yardarm run coalesce grantor bath besom brigade cavity begonia myrtle shrine crassly maned gelding obsolete bibulous rooms purblind deistic merry legman vaquero betook penuche bigmouth highbrow amuse","mode":"text","instructions":"Keep practicing these words."},{"text":"scaled buyback bonbon seiner namedrop wherein overlaid ventral erectile stoic inn liberate foghorn mini phaeton ponytail refreeze cortical plume longhair amazon 
 reeve fritz untrue outbreak contain cuisine caplet whim event nimbi instance dripping rumored oxymoron liken link stargaze main unsolved superb songbird sparing nuclear chopper dismount recommit millage ablate airplane induce roan pretext hamlet paneling downsize rockfall blazer graphic ionize nematode violate servitor clincher codex occult bookie avidly cadet tenuity sign special enameler optimal beery viscus innards exegeses armhole stinky bold notation untrod cutie nubbin seraphim doxology ubiquity trisect bummer jitney myelitis innuendo gimmick combat smiley whom wavelet kerosene sneaker softness beggarly lockup redrawn escalate myth tobacco doubloon stickup enfeeble taco basilisk shabby sans dimity sailing excess monkey pinch glancing elements famish isomer retract irritant ochre bedroll beriberi bluebell dadaism topmost hotline fuzzy seignior escaped slump cougar chasm scalawag bananas subside finished unsoiled besieger rebirth drachma snowdrop rescue devout kumquat ad
 vise abstain misstate obscene fetch galena miry wetlands tankard homeroom bogie below pinching revere tubing disabled wanton granny binge lucid rioting sultana poetic banquet amuse bullhorn jackpot familiar bad larynx titmice macaroon unleash drenched lockup minatory warble tarnish clannish culture earphone modeling penumbra vault caraway diviner taxable carder kielbasa copier","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"The Bottom Row","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson teaches you the z, x, c, v, b, n and m keys \non the bottom row of the keyboard."}
\ No newline at end of file
+{"order":3,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the The Bottom Row lesson!\n\nIn this lesson, you will learn the z, x, c, v, b, n and m keys.  Press the ENTER key when you are ready to begin!"},{"text":"z","mode":"key","instructions":"Press the z key with your left little finger."},{"text":"x","mode":"key","instructions":"Press the x key with your left ring finger."},{"text":"c","mode":"key","instructions":"Press the c key with your left middle finger."},{"text":"v","mode":"key","instructions":"Press the v key with your left index finger."},{"text":"b","mode":"key","instructions":"Press the b key with your left index finger."},{"text":"n","mode":"key","instructions":"Press the n key with your right index finger."},{"text":"m","mode":"key","instructions":"Press the m key with your right index finger."},{"text":"xx nn nn cc nn mm mm mm nn zz bb cc xx mm vv zz cc xx xx zz vv vv mm vv cc cc cc xx zz zz vv xx bb nn vv cc mm cc zz zz","mode":"text","instru
 ctions":"You did it! Practice typing the keys you just learned."},{"text":"mm bb vv nn cc bb zz nn nn bb vv xx vv vv mm cc vv vv mm vv nn nn bb xx mm cc nn vv mm zz mm nn nn mm cc vv xx zz zz bb","mode":"text","instructions":"Keep practicing the new keys."},{"text":"mb mb cm bv xn cc bz bc zz vv bv mv bb nc cn nx xb bm nm nm vv cz cc vv mc zv bb mm nb vv zv xn zz nc zm bb bb bz cn zv nv cm nv nv bv bm zv bv nx cn","mode":"text","instructions":"Nice work. Now put the keys together into pairs."},{"text":"cm nz nb mv cz zv bv nz mm cn bz mb cm cc nv nb nv xb vv bb xb bn zz zz bc nm nx nc mm mn bb mm bz nx cz vv mn bn cz mm nm bm nv vv bm zz bm zz bb bc","mode":"text","instructions":"Keep practicing key pairs."},{"text":"wn rc bj tm gz kb xf nf by vu dv um ic cy xg ac pm rb bb kc av wc xl be bm av xp bm cy ny nq rb nu vu im bg zv mc ib cl zp on nh yz nx bt vv gb xy ix","mode":"text","instructions":"Good job. Now practice all the keys you know."},{"text":"cr bw kv ve xc yz xw ux 
 xh vv bj un pm sv fc bo nd bi om mp rz pc zm dv cl lm hb ub vi cs nx ub yx hm wm nq xc cu rc be iz vo bc bc xy zl xs bz xq bh","mode":"text","instructions":"Almost done.  Keep practicing all the keys you know."},{"text":"kielbasi pretax toweling contrary basalt urbanity loner gasoline bite cancer unease dormant but meekness glisten tomahawk syllabus zillion cliquish disgrace refract dominate behind whereon introit craftily popgun abs elixir badger foible nitty wiz rousing creased inertia bemire divvy circus devilry derby asphyxia dedicate mutt zone buyer ecstatic politic incense posting napalm knowable lecture heading baseness pitchman winner vice pontoon corpora recesses tramper bulky lick angular link clownish unisex abscissa moccasin forgive deliver moxie granule bidder telegram byroad ceramic hooves catheter wend lived steamer giving wallaby mamma assemble bigness affix banking nowhere affect rung niece viking unhorse therm beside fatness botch","mode":"text","instructio
 ns":"You did it! Time to type real words."},{"text":"pinky town strewn gabfest resown gelding scribe humane doings prophecy mah tokenism alderman coating ordinal closing rumbling inkwell unripe bridal pippin taxicab murk keno beguiler medical coward expel reattach reengage loch engross millrace sect eggnog snore cadence tatami mache destruct alum varsity cynic searing midyear abuser frantic unpeeled braise curious abject trisect swoon fetlock prospect beating analyze broaden winery mindedly insigne helium hound infield auxin moment nutria terbium mod tonsure deafness synapse pompon gaunt trauma scrawl burning untiring mound clutter foam artisan dualism penology unblock gangway species lichee buttress misled overdose veranda punt gasbag zonal govern cowardly stormily corbel smear","mode":"text","instructions":"Keep practicing these words."},{"text":"handwork illness twosome vaunt ratline overhand volcanic invasion canopy nosegay repent bicycle news ranks nitwit need beneath t
 ibiae melody entrance salable playboy runnel cicada unction falconry snaky specimen seatmate roomy ceramist secretly zero aquiline ounce encumber clonk dipping tubal fable misuse pixie cabaret prevent spoken bread sheikdom crummy odium refine cocoon shine monthly thatcher bluffly coulomb tonearm hellcat destined valid crack rice deficit notary coiffure bonfire endeavor marsh oatmeal misuse mitosis clan nuclei united means curtsy flatland scolding gunfire fun exciting minatory cajolery ensconce unchaste affiance snail kicker biennium blintze pen peanuts ravenous genitals tang chili inertial mechanic europium regency halcyon souvenir obese gentrify savagely diver intrigue exempt crag gent secret amenable hybrid pong uprising shimmery bloat polarize inexpert rectum missive chyme curfew chiseled castle north slipcase pilchard barrier measure boner chemical misdeed stopover pigskin nuptials reason caviare aground vogue steam linage limn grocer comity viable fiscally frenetic em s
 nowbird kiln reunify bleed airline mourn mensch ironical futon umbel lutenist spinster kerchief prune rabidly bushed dingle belittle weakener moralize brights gimbals raging clomp sachet gardenia mistime enzyme bygones abortive dominate abyss mirage unnerve pointer amen accord uncloak faucet recall huntsman hewn loyalism veggies midrib eaves limiter dumps coed urgently canine","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"The Bottom Row","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson teaches you the z, x, c, v, b, n and m keys \non the bottom row of the keyboard."}
\ No newline at end of file
diff --git a/lessons/en_US/homerow.lesson b/lessons/en_US/homerow.lesson
index 37d21d0..97e9399 100644
--- a/lessons/en_US/homerow.lesson
+++ b/lessons/en_US/homerow.lesson
@@ -1 +1 @@
-{"order":0,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the The Home Row lesson!\n\nIn this lesson, you will learn the as, d, f, g, h, j, k and l keys.  Press the Enter key when you are ready to begin!"},{"text":"a","mode":"key","instructions":"Press the a key with your left pinky finger."},{"text":"s","mode":"key","instructions":"Press the s key with your left ring finger."},{"text":"d","mode":"key","instructions":"Press the d key with your left middle finger."},{"text":"f","mode":"key","instructions":"Press the f key with your left index finger."},{"text":"g","mode":"key","instructions":"Press the g key with your left index finger."},{"text":"h","mode":"key","instructions":"Press the h key with your right index finger."},{"text":"j","mode":"key","instructions":"Press the j key with your right index finger."},{"text":"k","mode":"key","instructions":"Press the k key with your right middle finger."},{"text":"l","mode":"key","instructions":"Press the l key wit
 h your right ring finger."},{"text":"kk kk dd ff jj ff hh aa ff kk dd jj ss jj ss ll jj kk jj ll ff gg dd hh jj ff jj ff ss jj dd gg ss aa jj gg hh hh kk aa","mode":"text","instructions":"Practice typing the keys you just learned."},{"text":"ll ff aa kk ll dd jj dd hh dd hh aa ll jj ll hh kk aa dd hh jj aa aa hh ff aa ss ff gg ss jj ll aa kk ff kk ll kk kk aa","mode":"text","instructions":"Keep practicing the new keys."},{"text":"sg ds gj ks ah gj ls fh hj hj kk gl kk gs ll sa ag sk fl dh dd ah fg hk sk al gg ks ag dk sl lh hl ls dj lf gs da kk hs dh ka df kl hk kk sf sa dg lg","mode":"text","instructions":"Now put the keys together into pairs."},{"text":"jj sf as sk gk ga jj ga dj fs ak aa sd sd fa ja gf ff dd dh hg gs fl ja hf dg sl sj fh sf lk lg ad kd hs fl ag ad sj as sd gh gl fg ah gj as hk ga gg","mode":"text","instructions":"Keep practicing key pairs."},{"text":"as sd gg da df fl sk ss fg hk ah lj gf ka sh lh hk gl kd lk fl ga gl lj gh gj gh sj kg gg ld kj al ss ha d
 a ga dd ha hd gj dk af ld da hj fl lk lk hf ld dd hj ag sl fj fh fl ka fh dj hs fs lh ah dk lf sk sk sk gk lh fs fl hl af fa dd gd gj ls sh ld dk al aa ff ls la lf lg hh fg jj gg dk ls dg sf ll","mode":"text","instructions":"Almost done.  Keep practicing key pairs."},{"text":"gala gaga halal halal shall dad ad ska flag fad fall ll hag fag ska had sag alfalfa sad aha shall hash shh jag gall lass ask ad flag gag fad da gaff algal hash salsa ha ska dad algal saga has dash ah had gas all alas flash ask shall sag hag flask fad has fa flag da alfalfa fag flag fag hash flask salsa fag hall flask falls ash add alas fa da slash glad hajj alga alas ha lass add ad slag jag shh had lad shh aha glass gas gaff lash lag hag slash ah has","mode":"text","instructions":"Time to type real words."},{"text":"gaff flag falls shag gal falls gash add saga shag fag ad gag jag shad hah salad add hall alas hall gall sag half gal aha ll fag fa flash gala halal sag lash shh gash gall sh dash ask shag sa
 lsa all alga sag flash salsa sash glad gas slash gal had ssh halal hag ll ask lash ah ah aha ah ad flak hah lag hah shh falls gad slag half lad ash gall shah shh lag dad dash fag glass alas fall gash algal salsa fag halal algal has sh gas gal flag gash halal fag saga","mode":"text","instructions":"Keep practicing these words."},{"text":"fall saga shh fag flash flask flask aha shad dash gala slag hash halal has fall sag gaff flash hajj gala jag ska glass shad shad shh dash ska gaff gall lag alfalfa da hall ssh shag ssh sh gad falls lass hajj flash flash slash saga sash has hall algal fall ha ssh shad dash ssh dash glad flak gash hag dash sag shag alga as hajj ad gash slag has shag shag flash lad flask saga la gall slash hag flask hall salad had fall da fag la dash hah algal flash half alfalfa aha glad ha fall ska lass salad ssh shall fa flag saga shall hall ah da sag ha gad dash salad saga lag hag alga flash slag dash ska la lash shad gal shall dash ad da shall gas gaff ah fa
  fad all flag slash flag lass saga gag add aha flag salad gas fag sash ah halal as gag as hall dash lad lad saga ah gash shah hah lash ah gad saga ask da gala gas salsa had gag ad gal alas falls ask saga fad shad sash flak salsa shall salsa hall aha ska fa gaff saga sad has alas","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"The Home Row","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson teaches you the a, s, d, f, g, h, j, k and l keys \nin the middle of the keyboard.\nThese keys are called the Home Row."}
\ No newline at end of file
+{"order":1,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the The Home Row lesson!\n\nIn this lesson, you will learn the a, s, d, f, g, h, j, k and l keys.  Press the ENTER key when you are ready to begin!"},{"text":"a","mode":"key","instructions":"Press the a key with your left little finger."},{"text":"s","mode":"key","instructions":"Press the s key with your left ring finger."},{"text":"d","mode":"key","instructions":"Press the d key with your left middle finger."},{"text":"f","mode":"key","instructions":"Press the f key with your left index finger."},{"text":"g","mode":"key","instructions":"Press the g key with your left index finger."},{"text":"h","mode":"key","instructions":"Press the h key with your right index finger."},{"text":"j","mode":"key","instructions":"Press the j key with your right index finger."},{"text":"k","mode":"key","instructions":"Press the k key with your right middle finger."},{"text":"l","mode":"key","instructions":"Press the l key 
 with your right ring finger."},{"text":"ss kk jj dd kk kk ll ll jj aa hh ff ss ll hh aa ff dd ss aa gg gg ll hh dd ff ff ss aa aa gg ss jj kk gg ff kk dd aa ss","mode":"text","instructions":"You did it! Practice typing the keys you just learned."},{"text":"ll hh gg jj ff jj aa jj jj hh gg dd ff ff ll dd gg gg ll gg kk jj hh dd ll ff jj gg ll aa ll kk jj ll ff gg dd aa aa hh","mode":"text","instructions":"Keep practicing the new keys."},{"text":"la ll gj dj kj gl fj hf kl hs sd hh fa ll gf dh aa ja ld ld fs sj ga lh aj dk fa sa af hs jj kj ka ss kg ff fa lj gf fd gh gj gh gl sg ks jj kh lg gf","mode":"text","instructions":"Nice work. Now put the keys together into pairs."},{"text":"fg ja sk hh sj fd kh ja ad hd fg ll gj ga gh af gl hg kf ff hk sf ls ka hf ff sf ss sa dd fl ag fj sf kk kf dd sf kk sa ak ks gh hs ja ka ks ka fl df","mode":"text","instructions":"Keep practicing key pairs."},{"text":"kg ds ak lh gs gj aj jj gg ks sd df da ss dd fg sh fs af hl hk lf kg sj gl hh lf
  ls hd dd hl dj af gg sd sl jj lj fh dl fl hg al ja kk kd sg aa gf gf lg gl hk gj la ah kk dk hs fs aa lh ll fs hk lj gh as da ag gl gd kk kj df fl gs sd ld gh lk kd ld gd lg kd dj ah gh ak da fa sk kd kd gf hs kj gk fd","mode":"text","instructions":"Almost done.  Keep practicing key pairs."},{"text":"fag ska ah slash ssh alfalfa sass glad gaga la hall sh alas shag ass all gash lad as aha hag gala dad hall fag slag hall dad ssh flak all da ash hajj sh gal flag ash flag ass lag lass saga dad lass as dash dash fa had half glad gall fag sass fa alas dash all ask ad dash glad ll ask gash ad hajj shad salad lad ska gag gash slash half ad gash has add salad gaga fa alfalfa ash hash salad hah gaff has ll glass flash lash half shah algal flag salsa salsa","mode":"text","instructions":"Good job. Time to type real words."},{"text":"lad la shad sass lad hajj hag shall hajj hall add algal sh gash dash flash alfalfa ad gag gala fall slag has lad gall gag half glad ha hash gas lass gash f
 alls slash gaga ad had jag hag flag sash gash alas shall glass has salsa all halal ll hag hall ask shah algal falls all lass hash sass salad da ssh falls add ash lag fa aha hall dad da glad lad hag half gag sh add slash hah salad shad lag hah shad sh alas shad glass hall hall slag lash lad slag sag jag aha","mode":"text","instructions":"Keep practicing these words."},{"text":"sag ass hag gall lash flak fall ad sh gall has sag gag saga glad gad dash sad ssh shh as sh glad fall alfalfa sh ssh lass da half flask add flash halal dash gal aha gala fall hash glass gaff lag ska sash hag lag halal flash gaff salad flak hajj sad sh flask as lass slash sass gash lass lass lass gall lad sash add ash gal gaff shh gaff aha shh hajj all la gad fall shad hah ask ah flak lag salad sad fad flask gag ash gash ask fad ah sash hall ah fag sag fag fall lash had gala gaff ass alga hajj fa shad ah shad alas slash salsa fa gad saga alga salad half falls alfalfa ll all had ask lash saga fag hall sag
 a half la hag sh all alga ask salad dash fag flask dash da has falls da gag gall salad ash ash sash has glass hash glass gala saga gas falls glad alas dash shh as shh sag ll sad as flash lass sad ll fa gag dad gall sass hag hall all as has halal gala ass sh alfalfa falls ah gad gag sass fag sh","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"The Home Row","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson teaches you the a, s, d, f, g, h, j, k and l keys \nin the middle of the keyboard.\nThese keys are called the Home Row."}
\ No newline at end of file
diff --git a/lessons/en_US/intro.lesson b/lessons/en_US/intro.lesson
index 9a0977c..3c79b8a 100644
--- a/lessons/en_US/intro.lesson
+++ b/lessons/en_US/intro.lesson
@@ -1 +1 @@
-{"name":"Welcome","steps":[{"text":" ","mode":"key","instructions":"Hi, welcome to Typing Turtle!  My name is Max the turtle, and I'll to teach you how to type.\n\nFirst, I will tell you the secret of fast typing... Always use the correct finger to press each key!\n\nIf you learn which finger presses each key, and keep practicing, you will be typing like a pro before you know it!\n\nNow, place your hands on the keyboard just like the picture below.\nWhen you're ready, press the space bar with your thumb!"},{"text":" ","mode":"key","instructions":"Good job!  You correctly typed your first key.  When typing, the space bar is used to insert spaces between words.\n\nPress the space bar again with your thumb."},{"text":"\n","mode":"key","instructions":"Now I'll teach you the second key, enter.  That's the big square key near your right pinky finger.\n\nWithout moving any other fingers, reach your pinky over and press Enter.\nCheck the picture below if you need a hint!"},{"text":"
 \n","mode":"key","instructions":"Great!  When typing, the enter key is used to begin a new line.\n\nPress the enter key again with your right pinky."},{"text":" ","mode":"key","instructions":"Wonderful!  Now I'm going to tell you a little more about Typing Turtle.\n\nThe box you are reading is where instructions will appear.  The keyboard picture below shows what your hands should be doing.  The numbers up top show how quickly and accurately you are typing.\n\nWhen you see a big picture of a key like this one, you are supposed to press that key on the keyboard.\nRemember, always use the correct finger to type each key!"},{"text":"\n","mode":"key","instructions":"$report"}],"report":"simple","order":0,"medals":[{"wpm":0,"name":"bronze","accuracy":10},{"wpm":0,"name":"silver","accuracy":70},{"wpm":0,"name":"gold","accuracy":100}],"description":"Click here to begin your typing adventure."}
\ No newline at end of file
+{"name":"Welcome","steps":[{"text":" ","mode":"key","instructions":"Hi, welcome to Typing Turtle!  My name is Max the turtle, and I'll to teach you how to type.\n\nFirst, I will tell you the secret of fast typing... Always use the correct finger to press each key!\n\nIf you learn which finger presses each key, and keep practicing, you will be typing like a pro before you know it!\n\nNow, place your hands on the keyboard just like the picture below.\nWhen you're ready, press the SPACE bar with your thumb!"},{"text":" ","mode":"key","instructions":"Good job!  You correctly typed your first key.  When typing, the SPACE bar is used to insert blank spaces between words.\n\nPress the SPACE bar again with your thumb."},{"text":"\n","mode":"key","instructions":"Now I'll teach you the second key, ENTER.  That's the big square key near your right little finger.\n\nWithout moving any other fingers, reach your little finger over and press ENTER.\nCheck the picture below if you need a hi
 nt!"},{"text":"\n","mode":"key","instructions":"Great!  When typing, the ENTER key is used to begin a new line.\n\nPress the ENTER key again with your right little finger."},{"text":" ","mode":"key","instructions":"Wonderful!  Now I'm going to tell you a little more about Typing Turtle.\n\nThe box you are reading is where instructions will appear.  The keyboard picture below shows what your hands should be doing.  The numbers up top show how quickly and accurately you are typing.\n\nWhen you see a big picture of a key like this one, you are supposed to press that key on the keyboard.\nRemember, always use the correct finger to type each key!"},{"text":"\n","mode":"key","instructions":"$report"}],"report":"simple","order":0,"medals":[{"wpm":0,"name":"bronze","accuracy":10},{"wpm":0,"name":"silver","accuracy":70},{"wpm":0,"name":"gold","accuracy":100}],"description":"Click here to begin your typing adventure."}
\ No newline at end of file
diff --git a/lessons/en_US/leftcapital.lesson b/lessons/en_US/leftcapital.lesson
index ea560ca..0a80c19 100644
--- a/lessons/en_US/leftcapital.lesson
+++ b/lessons/en_US/leftcapital.lesson
@@ -1 +1 @@
-{"order":3,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the Left Hand Capitals lesson!\n\nIn this lesson, you will learn the QW, E, R, T, A, S, D, F, G, Z, X, C, V and B keys.  Press the Enter key when you are ready to begin!"},{"text":"Q","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the Q key with your left pinky finger."},{"text":"W","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the W key with your left ring finger."},{"text":"E","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the E key with your left middle finger."},{"text":"R","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the R key with your left index finger."},{"text":"T","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the T key with your left 
 index finger."},{"text":"A","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the A key with your left pinky finger."},{"text":"S","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the S key with your left ring finger."},{"text":"D","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the D key with your left middle finger."},{"text":"F","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the F key with your left index finger."},{"text":"G","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the G key with your left index finger."},{"text":"Z","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the Z key with your left pinky finger."},{"text":"X","mode":"key","instructions":"Press and hold the S
 HIFT key with your right pinky finger, then press the X key with your left ring finger."},{"text":"C","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the C key with your left middle finger."},{"text":"V","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the V key with your left index finger."},{"text":"B","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the B key with your left index finger."},{"text":"WW RR ZZ CC FF SS RR QQ ZZ XX QQ QQ AA DD BB CC EE WW QQ WW DD VV FF SS ZZ SS EE FF GG RR QQ QQ CC VV QQ VV FF VV VV XX","mode":"text","instructions":"Practice typing the keys you just learned."},{"text":"BB RR CC DD BB AA AA ZZ TT AA XX WW XX TT GG AA BB SS EE AA XX WW WW XX FF VV RR GG XX EE RR FF WW CC SS XX VV TT QQ RR","mode":"text","instructions":"Keep practicing the new keys."},{"text":"AC AD CX AD RT SV RG TE XS XX QS AE 
 GZ AA AQ TT BT DV BT RX WZ BB AT WS GE VE FS SS EX EG RD ZZ GS TA SS GS WC FD QQ DX QX DE VE RD TS ZG DA ES VS SV","mode":"text","instructions":"Now put the keys together into pairs."},{"text":"RV TD TX QW EC TT BX SZ EB DT DB XC WG EF VV VZ SA GV CE XC XD RE SC CQ BC FV EZ AV VS ZT QC XG ZC WA TB FD FR ZX SR CA TS ZV DR WA RV FT TZ GR EB AR","mode":"text","instructions":"Keep practicing key pairs."},{"text":"VG Zm CQ SR Sj De Ep QF EF dF SB AZ Sy TD XR qG Sy DT vX Wk GC Rk tW XS zA cS cZ XT wS uF AR xR Xm CA xZ Gt vV ZV GG ZT ST Cb EX jT Al Dq Ez cC Bw Rv","mode":"text","instructions":"Now practice all the keys you know."},{"text":"sB kZ eV Ek WQ hA WG Sd Bl RZ Di Vt XV VE wA oB yD Eg dF Xe aT cV QW EV yT Cs eF AR Te aT CA vA ZR bE Tk CV ZS qC zB TZ Fh fA gD Sj CS TD dR lD qE GB","mode":"text","instructions":"Almost done.  Keep practicing all the keys you know."},{"text":"TQBr WkQD ZhTW ZZAT XrTa TwVl XsCB ZjEg FFED FzBo DQWi EBBh SxGB CnQn VFAF GXDp DfWv AyQc GgBe CfXD EtA
 Q WZRT AWGm DkTQ SFFb VfCF DtGB TwRD WZSx XmWe QTWj EpRx EeQg CeXk BnCs AxZh QgGZ WuQD RfQh RfFF ElWC SwRw QrXW GdTi BpVh QdCx XdRk AiZX ZdFW ERVV GvZv TRTx BAEZ XVQq DkVE BbAm EmQA FbAQ ExAw QuSe EFSj DeBC WvBa TVRV GkGS VCSZ QfSa DuFi ZfRk SdBE QwSX WAXS RaZG BoWh TaXW XmBW VwWr CTTi QpFw RmZG EwZV EGFB DlRv WiXy SVCr EfZf GCSV QECu WEXa TAVn SSWa EDTm XRDj FEVV FDVr TrCe DDZS QvRm WeQW GfGt","mode":"text","instructions":"Time to type real words."},{"text":"FTRR CtAZ BgSh TVRj DjBy WjXT WvRg GBZj DVAg ZtGc ZXDg RSZk VqFf SwZW SaEs WcVQ ESCt EdWp WlRD TnTW AWQC SpGb BSZh DnSQ ZRQc CnXa ZVFs ZQFZ RsCu TnZq FaSr FwDk DeGG DjFs BiWq CpSo ESVf SeEf QzXB QyBu CiDT ADWu RnRA TuTu TmAr RpVS RiQw FhFw CaVb WTGi XCQt QlXA FWXz EzFa QcBV FwBQ ETXq EpVf WkZj AZVE EXCj SiSl ECCl BdCQ ZDXC SlWQ DuBq RFVo GXQF TrCA DwDV QhVw ThFf QxEG VRXu SBBD BgWc QnEi XTZB EVQs BaDw RrRm ZpRk AbCm AnXe EwFh GXFA WxSk ArFk FiXn AyFf DiAD ZdFS QyCA SdTS XsWk QSZo XRRB GbAG RDXA","mode":"text","instructi
 ons":"Keep practicing these words."},{"text":"BCFW CtXz ZzCR TrGF ReFr QsRh DhFb AkGo DiEG EATn CrZQ VvQF VZRr RkBX RiDp QrTv TgWR BgCj CeXl EXZk GSAc WbEz QsBz SFQd GnBj SiWb QgDx DCTE CaSl TsRe BSAd BdEa ATCV FcQe ZaQd TuAy FmBo RdQh XSCt TnSb WpSR GDAc BkDq VyEy FcRr XWCC VAZX SwTX BoBt RcTG QWFS BqBp WbVo WWAj SATr AmZR CxEn ZuSA TvCa ZFVe SpVZ GoDE RjBR RpTE XAGE SZXF TrTn ZlAT FSEz SBRQ WsXc VqCx TQZB QCFw TSVd CBTF TFEz DzQz BkWw DXCz BrCc GjFo ZkXm TZBS QfXj VSFW TkVd ZeAV FxGk BrAB GBDV ZqBV SlFk GfCW QgRi QEVv TEAc SoWs VuRB BoVg CvXc CnZr DzFT AfVp TGZW CyFu DCVk ViVS FFXx DnVR VAZy FQQk BAVr SCCa CTQj AoVl EzSg QCAW ArED EzFp BfXq StTy EZXh WeXe AuVD CmEW EZXw XwXQ SsSG EDSf WfGs RkRl RzAx WoXB EVFR ErVW EwGj XtSf TlVi ZoDE XrZE BuTD ZeTg QlXr RfSi CgTD FBWz FrDk EiQA DkDF SwFz XTVR FoQl CnXa AVEV BcBT FvEq RSGC EQBv XiEo GeBE RpRw ASBX AGSr FhRx RiTD GnGe VfFo CgAQ FFVa ZwSR SQXs VTEx XZCs WGRb FdXg BhTs FqET ScSn TlZT VkXF EyCv ZbTo BVWk VGAl FiGl EfVy RrBa RSW
 b AVBQ WeTB AiDR FFVb GpXb WbCb TGSm TyGG XTAn ZdRV VaQA","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"Left Hand Capitals","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson teaches you the CAPITAL letters which are typed by your left hand.\nThese are Q, W, E, R, T, A, S, D, F, G, Z, X, C, V and B."}
\ No newline at end of file
+{"order":4,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the Left Hand Capitals lesson!\n\nIn this lesson, you will learn the Q, W, E, R, T, A, S, D, F, G, Z, X, C, V and B keys.  Press the ENTER key when you are ready to begin!"},{"text":"Q","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the Q key with your left little finger."},{"text":"W","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the W key with your left ring finger."},{"text":"E","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the E key with your left middle finger."},{"text":"R","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the R key with your left index finger."},{"text":"T","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the T key with yo
 ur left index finger."},{"text":"A","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the A key with your left little finger."},{"text":"S","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the S key with your left ring finger."},{"text":"D","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the D key with your left middle finger."},{"text":"F","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the F key with your left index finger."},{"text":"G","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the G key with your left index finger."},{"text":"Z","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the Z key with your left little finger."},{"text":"X","mode":"key","instructions":"Pres
 s and hold the SHIFT key with your right little finger, then press the X key with your left ring finger."},{"text":"C","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the C key with your left middle finger."},{"text":"V","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the V key with your left index finger."},{"text":"B","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the B key with your left index finger."},{"text":"RR CC XX TT CC VV BB VV XX WW GG AA EE VV FF QQ AA TT EE QQ DD DD VV FF TT AA SS EE WW WW DD EE ZZ CC FF SS CC TT QQ WW","mode":"text","instructions":"You did it! Practice typing the keys you just learned."},{"text":"VV GG DD XX SS ZZ WW XX XX GG DD RR SS SS VV TT DD DD BB DD XX XX FF TT BB AA XX DD BB QQ BB CC ZZ VV AA DD RR QQ WW GG","mode":"text","instructions":"Keep practicing the new keys."},{"text":"BB W
 S SQ AA XB ES ZZ RC EA VZ WW EB XQ WC CC DW DT FZ RW FV QB XC CE XE GF DX GC VQ TR RD DX FA FD ES TX QA ZD CS QG ZT EZ RC ZG GG ZZ CW XR BE RR ET","mode":"text","instructions":"Nice work. Now put the keys together into pairs."},{"text":"DC BQ RE TE BT CW VC ER XS ZA RF RD DS CZ GR TA QW VB SV XR AD ZS CX TR BV VG VV XA FG RS WC EV CT WQ BX WR CZ CT EF TG CC ZC TA ZQ VW FS WT FX WA GR","mode":"text","instructions":"Keep practicing key pairs."},{"text":"Cg uR rQ nA tF AS yZ WG Bm fX WB dF TQ QG oC XW SX Qa kS WZ Rs hV Sr bR pT aQ Fo Ws CR Fo Xb EG Gl Rl Qy Rf Fy Gn nX Xv jT SD VE BA SA FZ iD sT QR Ea","mode":"text","instructions":"Good job. Now practice all the keys you know."},{"text":"GC Xj TE Rt WQ ZC Sm DX jD nD SR GT rC Am AC TZ wT Vf Qx hW Wb So TE hE Ai Dp EE Va Ag pF sE BV WT nT Cc WR qF zE oX DV hG TB Xg vZ RQ XV Ey SF nT wR","mode":"text","instructions":"Almost done.  Keep practicing all the keys you know."},{"text":"XiEz FWSZ TQVZ XZVF VVEe RDEl VgAV AwWl ZmQR WfSm 
 AxBB WhBv FFCA GSQn ERSu XFZm XcXt WVFz ZvQt BwVk WpFk GSCX SXDW SsCy SlVn AhTt WGBz GhXE EyGh ZVCR DXTo WZSR WVSX RsFv GEDc VTGZ TlDB ZBGt FARV GTZX QdRk EWBa AWFw QZQj CsCQ WxWr XgVf TETC GhDu FSRG ThXn SaCi EzEn EtZC GTFw XECj WtXC RGXS DZTm GpGz GuZg RnEl ViQV WZWj GFXl CjZo QQZR RXZt GBZa RkWq EZRW CeFn DwWS ChCV WtEy BlZr QuTb SWAS VdQj FDCD TmXn DQTr DXXl ZZTR DAQB WWDt WAFl GGSc TpDd BzEo TqGr ATWs AETq TjGi ScVo ZgEp ZyEf GfBV QQXr QzQv","mode":"text","instructions":"Well done! Time to type jumbles."},{"text":"TdBB EsSE SFQs GbRd XqEV EoWg WiVv FmCu FZZe QXDy AZZh AvXW EyGh FyWT ToRo GgFW RsAl SBSk XEDi CqAl BgTZ TCCq TlCQ ZASh ZzCV GxWi VkRZ QRTl DlZb QyAd SiXv XpTR XlWX ZDCv ZtCF ZCFx GmTk GnAG ElEz WCFW EuZo RBBk QvWc BjTA VAZy BSSQ DfRW GAXo EWRc XfSc BnCZ RTSl TnAu WmEw SoXd XtDQ WlTy EAWZ RABn RESy BnFf ElQz FtGz EGDm CqGf GDCr ZaRE SXRb XDCu EmQX ExCj EiZA ZiFd RrDj CuDj WWSF WhTl RnFG CcGD DzGE VrDG CQTQ VSCW CxQm DXWm ZDVF VoRy TSDh XaWZ GxVs RyAZ SwTX TaEV
  BxXj ZxVf GZWb GVAr ErAp QEEh QBVA","mode":"text","instructions":"Keep practicing these jumbles."},{"text":"CrVb FVTx DbRr BWGB FdTQ DTRA CXXC QQSn VrCV EAGR RwTl ToFZ SyXW AEWT WpGt EuFb QzBF GBXt GZQn GESb WTEd QmXZ FWWZ CGXS DQDT CuDo QhWx ThSb GTAl DXXV EoDs WtFq EWSD RoQg DcWo XfWF GrQf FtEd WjXQ StTl XeXQ VtVc CBGm RQVf QvXf DjTR EtSr EXWs DQVa FeFZ GtDR ZaVT GVDT SBAR CjXQ WeGE GaGl WfEG SpFW XDWi VfVw TdDA FFDz SWVR AQBj ZzSo TdTs DgFg EdBu GdSr FlXj EbAA VtQl GcFu RBFZ ESAx GxSr GnRy FpZp QhAA CyZn BzCX VrQQ GWEo RRZQ AzFo SXSk QcRx WZZT AWEs SyEl VqRb XfCh WgQE ESDW ZDWy ZRSk CVTw CgBc QrCS","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"Left Hand Capitals","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson teaches you the CAPITAL letters which are
  typed by your left hand.\nThese are Q, W, E, R, T, A, S, D, F, G, Z, X, C, V and B."}
\ No newline at end of file
diff --git a/lessons/en_US/rightcapital.lesson b/lessons/en_US/rightcapital.lesson
index da6c1ed..ba80ebf 100644
--- a/lessons/en_US/rightcapital.lesson
+++ b/lessons/en_US/rightcapital.lesson
@@ -1 +1 @@
-{"order":4,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the Right Hand Capitals lesson!\n\nIn this lesson, you will learn the YU, I, O, P, H, J, K, L, B, N and M keys.  Press the Enter key when you are ready to begin!"},{"text":"Y","mode":"key","instructions":"Press and hold the SHIFT key with your left pinky finger, then press the Y key with your right index finger."},{"text":"U","mode":"key","instructions":"Press and hold the SHIFT key with your left pinky finger, then press the U key with your right index finger."},{"text":"I","mode":"key","instructions":"Press and hold the SHIFT key with your left pinky finger, then press the I key with your right middle finger."},{"text":"O","mode":"key","instructions":"Press and hold the SHIFT key with your left pinky finger, then press the O key with your right ring finger."},{"text":"P","mode":"key","instructions":"Press and hold the SHIFT key with your left pinky finger, then press the P key with your right pinky fi
 nger."},{"text":"H","mode":"key","instructions":"Press and hold the SHIFT key with your left pinky finger, then press the H key with your right index finger."},{"text":"J","mode":"key","instructions":"Press and hold the SHIFT key with your left pinky finger, then press the J key with your right index finger."},{"text":"K","mode":"key","instructions":"Press and hold the SHIFT key with your left pinky finger, then press the K key with your right middle finger."},{"text":"L","mode":"key","instructions":"Press and hold the SHIFT key with your left pinky finger, then press the L key with your right ring finger."},{"text":"B","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the B key with your left index finger."},{"text":"N","mode":"key","instructions":"Press and hold the SHIFT key with your left pinky finger, then press the N key with your right index finger."},{"text":"M","mode":"key","instructions":"Press and hold the SHIFT key
  with your left pinky finger, then press the M key with your right index finger."},{"text":"JJ KK HH KK PP II II MM JJ HH KK JJ PP BB KK LL II LL YY YY JJ UU MM II BB JJ HH NN YY BB JJ YY II MM II BB LL JJ NN LL","mode":"text","instructions":"Practice typing the keys you just learned."},{"text":"UU BB HH YY YY UU HH JJ II MM BB II MM OO NN OO II OO UU NN YY LL KK UU KK PP BB PP HH NN MM II HH BB NN HH PP BB YY KK","mode":"text","instructions":"Keep practicing the new keys."},{"text":"HY HN PP YY MK MI MO PU MJ UB IU KL KJ PM BB JO OP IO PN MP UH LK KH MU YO BY UY KO JB ML LJ NM NP PN JI OI NU JJ KL IK KO UO HI JP HJ NH PP HM YK KK","mode":"text","instructions":"Now put the keys together into pairs."},{"text":"NB UM II IB HY NH NL JP NO YO IH LP OO JY NB UL JU HJ IU KL OO OO LH NK PP UM YI KM JH LP LL YJ YY BL YO PK NJ LU UM UB BJ IK PH LJ LO KY BB UH PB MH","mode":"text","instructions":"Keep practicing key pairs."},{"text":"lJ HJ Jx HP OR pH Yx cJ Ma uM JW iK bP KV UX aH SH 
 KV Nu Ns iH Bs In LQ uI zN Jc Pw UB Lt wU iJ Lp tI tU vI kO iO Ba Ig La BF oO rM KT Mr YY Ur SI uP","mode":"text","instructions":"Now practice all the keys you know."},{"text":"MU Jh Ps UN Pf Lg CI YD pM Uy lO hU XI Ur Kv OB Pd TJ RJ qO Hk NL Pg nN LL NO sY Us iL Mh Pf qO Py EH bJ Ir Lc gB IO Mu ZP KF IR OP UJ Jr Oe kN Nq LL","mode":"text","instructions":"Almost done.  Keep practicing all the keys you know."},{"text":"JgLW NwLx HDKx MJMD IPOU POOY PvUf NwUL LuBj YRLE NnNa HzHd PCBH UKUs LYJy UDUS IPUl BKOS HgOW NBHk KNBu YqNe NaJj JIOW UYPO BYKS INUw KJPG IFNV UWUq NKHu MqKX MNYu HcOZ JxKh NnNx JnPF OHIU YNKW LyBb NxPN HrHT UJUE KGUv OxLj YDLD KWBm KTKq JVOa OFPG BxOb HUOA NYBJ PFKM PsJm UMBj NTYC LAIt UCKb JXUP YBLB JtNy KbBs BBHq YrHw PFIh LXLD MPMZ LZMU UBNd BZJv JsPt MjKq IaMN KYJX HvOE HKLN JuKw YILM UvIT OBKl UPOX PFUn IYMs NyIX IQJi OrIm YuYa PeIg YHOM BAIN MeKH BzOO OqBq YuUl PrYk IEYd KzBV YTHs BTYc","mode":"text","instructions":"Time to type real words."},{"text":"
 NhUS YePx KmPe OsYz LGMP HgLe JtIx IGBs NeHs HGHN BcKq UhBc PyNI BAPN JpKa BLMg BdMq IbHT BqKt KwMq UXID LgJK YUUr NtBH MaMx UOHK YZHe BmJM NfUm BKNS HIIm NTJH BQUF LANd UBLP IrPz HbJO JlHn BWNH IuOe HYHt BEJB UZBD OMHH NPIX YTPO HaKF YJJN UVYK LONh UiNL OgID NkNt MGUT KCOZ LbOK OeNT NJUw KCNc HVIp HuMc KlNr OrOY LHJc YuLg UQNY BMNo PQKG KyJh KOBR OpOF OjUh KBKn KgBa BqMe MUIL HWPh BTLT UXNJ YOJK BrJK KGYA YUNk JJPS PENc UDNF BBJu PNMM KsMK JaJB HBYR UqBD HvPW UGOL NXJg YmOn MKPD BxPB UJOr UbHm","mode":"text","instructions":"Keep practicing these words."},{"text":"OUPB YlJe NUIt BeKb KRNy OVNe JtNg BYBM HjYt KHMm HwKr KdOc YlLH IiKP NXID NwNI MeYN KCHX JhLf IuMY LxKv KYMN IxHB IaPF MFOJ YfME JQJz MiMW PmML ODHG JXMF KmYJ IuMF OEYz LlOF KKYd BKBh UgOn HTHU MaMB LEIh LBPG JqPM HMJC HBKp PFJv HIJo YePa LBYG KeOA KJKU PCYo KYPP UOBf OpHc KqOC JZUU UEOQ MFMx JQUQ NZPx NTKS OiBT MaNc OLLn IOKJ KlKk PBBh YIPw BSUE HABy YIBn PCUW MmBw UrPu JzNN UsHh LkUq IVKM OYBx YVPZ UpIh JzNG JrI
 l YxIs NNBX UlJC UIYr LqUe YGJN KNJP YEKc MIPU HpBz UFMg PcIp OLHC PLPV PyYr IAUw HTYs PFBb OmKl OzJB NGBs PHHj NNIw PWLw NeUA KmIV YcOa MCOS BFHn NzJR PxOW BeYj JKLo IqKu BvBe LuNN KLId LALf JxOJ UPPt IyBv LuNc LYIH JULB JWYt LsKX UZUf YeBS OQIv IqUE LsOG JeIx NhLG OnLB KEYO YcPT MIUm MrIJ UqHm PdHp IRYc NNKg BEHB YkMd HjKz YRKt LWLw PRIw MrNO YEOx YKHy LsIE KOId BABn NgPL KNKn PHOa JPMH PMMo PrMJ KGJk HSIB IoLd HPOa MMYK NCUS KQJs PCYD PGNl NFMd BMNb ByUX JPMY MWMD JKIT MVJa YwMX JYHX NzJK BQOT OkIJ LuUB ODHR KXPE IXUM IUKW MvKn YfMj JtNB MQOg OFJV JOYa HMID LaJh MXMx ONLl","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"Right Hand Capitals","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson teaches you the CAPITAL letters which are typed by your right hand.
 \nThese are Y, U, I, O, P, H, J, K, L, B, N, and M."}
\ No newline at end of file
+{"order":5,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the Right Hand Capitals lesson!\n\nIn this lesson, you will learn the Y, U, I, O, P, H, J, K, L, B, N and M keys.  Press the ENTER key when you are ready to begin!"},{"text":"Y","mode":"key","instructions":"Press and hold the SHIFT key with your left little finger, then press the Y key with your right index finger."},{"text":"U","mode":"key","instructions":"Press and hold the SHIFT key with your left little finger, then press the U key with your right index finger."},{"text":"I","mode":"key","instructions":"Press and hold the SHIFT key with your left little finger, then press the I key with your right middle finger."},{"text":"O","mode":"key","instructions":"Press and hold the SHIFT key with your left little finger, then press the O key with your right ring finger."},{"text":"P","mode":"key","instructions":"Press and hold the SHIFT key with your left little finger, then press the P key with your right l
 ittle finger."},{"text":"H","mode":"key","instructions":"Press and hold the SHIFT key with your left little finger, then press the H key with your right index finger."},{"text":"J","mode":"key","instructions":"Press and hold the SHIFT key with your left little finger, then press the J key with your right index finger."},{"text":"K","mode":"key","instructions":"Press and hold the SHIFT key with your left little finger, then press the K key with your right middle finger."},{"text":"L","mode":"key","instructions":"Press and hold the SHIFT key with your left little finger, then press the L key with your right ring finger."},{"text":"B","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the B key with your left index finger."},{"text":"N","mode":"key","instructions":"Press and hold the SHIFT key with your left little finger, then press the N key with your right index finger."},{"text":"M","mode":"key","instructions":"Press and hold
  the SHIFT key with your left little finger, then press the M key with your right index finger."},{"text":"II BB LL OO NN NN MM NN LL YY KK PP UU MM JJ YY PP OO II YY HH HH NN JJ OO PP PP UU YY UU JJ II LL NN JJ HH NN OO YY UU","mode":"text","instructions":"You did it! Practice typing the keys you just learned."},{"text":"NN KK HH BB HH LL UU BB LL KK HH II HH HH MM OO HH HH MM HH BB BB KK OO MM PP BB HH MM YY MM BB LL NN PP JJ II YY YY KK","mode":"text","instructions":"Keep practicing the new keys."},{"text":"MM UP HY PP BM UH LL IN UP NL UU IM BY UB BB JU HO JL IU JN YM BN BU BU KK HB KN NY OI IH JL JP KJ IH OL YP LJ BH YK LO UL IB LK KK LL NU BI MU IO IO","mode":"text","instructions":"Nice work. Now put the keys together into pairs."},{"text":"HB MY IU OU MO BY NB II BH LP OJ IH JP BL KO OP YU NM HN LI PJ LH BL OI MN MK NN LP KK IH UB IN NO UY MB UO NL NO UJ OK NB LB OP LY NU KH UO JB YP KI","mode":"text","instructions":"Keep practicing key pairs."},{"text":"Np DI RY zP S
 K PB CL UK Mx oB IM mJ OY YM QN BU LL Yi vH IL OA rN PT jI WO iY Kz UA BP Kz Bj OK Kw Iw YV Io KV Ky yL BG tO LJ NI gP LP NL sJ TO UO Uh","mode":"text","instructions":"Good job. Now practice all the keys you know."},{"text":"aB Bt OO OS IY bN Hx Hc uH yJ PP aO RB Px KN Ob ZO Mo YC rU Uj PQ JI rI Pr JW UO Mi Pp WK AU gM UO yO Bk UO EJ BI QL Hf qK Oh Bq GL IY Le UC LK yO ZO","mode":"text","instructions":"Almost done.  Keep practicing all the keys you know."},{"text":"LsIB KUHa OYNb LbNN MfIm ONIw MpPf PZUv LxYP UoHx PCMh UrMG JMNJ KLYy IPHF BNLx BjBD UfJB LGYS MXNu YWJv KLBc HcHU HABV HwNz PrOD UaMB KqLO UCKq LfNP JcOQ YaPP YfHd IAJF KOJk NJKb OwHg LhKS JKIf KHLc YmOu UUMi PUKZ YcYu BANY YCUT BqMo OOOd KqJD JLIa OrBy HhBs IBUy ISLd KJJZ BIBu YSBe IaBL JaOy KEKB KDLq IzIw MrYf UbYt KNLv BtLQ YYLP IdLS KhLh IvUE IbII BnJy JZUL NqBe YSUC MwLR YDOj HUPK NmYt KBNB OxLy HYOT HdBv LbOP HJYg YUHS UJJw KaPk OWJl MVIz OEKR PHYA POOR OuKs PkNz LpIW LCIo KoMf YYBT YBYG","mode":"text","ins
 tructions":"Well done! Time to type jumbles."},{"text":"OmMg IAHO PNYA KiIm BRIf UQUp UrNG KxBD JbLn YdHV PbLq PFBI UCKq JVYJ OQOz KpKU OAPw PgPu BOJs NEPw MpOc OeBR OwNU LKPq LVBe KXYs NuIb YPOv JvLi YCPl HsBG BQOH BvUd LBNG LSNN LdKX KxOu KzPa UwUB UdJU IDLQ IgMu YFYk MuOJ NJLV MLHY HpOI KJBz UIIk BoHl MzBb IJHv OzPF UxUZ HzBm BSHU YvOV IJUb IKMy IOHC MyJo UwYB KSKB IMJx NEKp KBNT LhIO PcIj BNBD UxYc UXBu IrLK LrJl ITHu BDJu YIHN UrOw IyKa NlKB JVKI MRJa NYOY MKNU NCYy JcYy LBNM MQIV OLHr BhUb KXMA IVPb HZOd OiUf MCBt LXNo KaYj KfPR UTPW YOIq YhNK","mode":"text","instructions":"Keep practicing these jumbles."},{"text":"NTNj JfOX HiIT MUKh JlOY HHIK NdBe YYPz NRBf IKKO IZOv OQKb HCBU PIUJ UQKS UDKj YBMN KgBS KbYz KOHj UHUl YxBc JUUa BMBL HYJH NDHQ YqUC OrHj KJPw HcBe UzHA YSJE UUHB IQYp JkUz BoUM KRYo JSUl UtBY HDOw BmBY MSNk BgKx OYNo YGBo JtOH UDHT IcUA JYNi JmJb KSHP LiMH KfHJ HhPP BtLY UmKO KhKv UoIM HQJU LNUs NoNZ OlJJ JMJB HINP PYMt LVPQ OlOA HqKq ImMD KmHT JvBt UjPK 
 MSYv KkKD OhJb IBPX KXHT KyOC KWLW YqPK NVLz MBBd NRYY KIIz IPLY PBJz HdHv YlIC UbLH PIUA HVUw NRIj BnNq UpYO ILHI LBYV LPHv BgOZ BpMl YRNL","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"Right Hand Capitals","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson teaches you the CAPITAL letters which are typed by your right hand.\nThese are Y, U, I, O, P, H, J, K, L, B, N, and M."}
\ No newline at end of file
diff --git a/lessons/en_US/test.lesson b/lessons/en_US/test.lesson
index 6f04933..65a8138 100644
--- a/lessons/en_US/test.lesson
+++ b/lessons/en_US/test.lesson
@@ -1 +1 @@
-{"order":-1,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the Test lesson!\n\nIn this lesson, you will learn the Aæ and Ω keys.  Press the Enter key when you are ready to begin!"},{"text":"A","mode":"key","instructions":"Press and hold the SHIFT key with your right pinky finger, then press the A key with your left pinky finger."},{"text":"æ","mode":"key","instructions":"Press and hold the ALTGR key, then press the æ key with your left pinky finger."},{"text":"Ω","mode":"key","instructions":"Press and hold the ALTGR and SHIFT keys, then press the Ω key with your left pinky finger."},{"text":"ΩΩ ææ ΩΩ ΩΩ ΩΩ ΩΩ ΩΩ AA ΩΩ AA ææ ææ ΩΩ AA ΩΩ AA AA AA AA AA AA ΩΩ ææ ææ ææ ΩΩ ææ ææ ææ AA ΩΩ ææ AA ΩΩ AA AA AA ΩΩ AA AA","mode":"text","instructions":"Practice typing the keys you just learned."},{"text":"ΩΩ AA ææ ΩΩ ææ AA ΩΩ AA ææ ΩΩ AA AA ΩΩ ææ ΩΩ ææ AA ææ AA AA ææ AA AA AA AA AA ΩΩ ææ Ω
 Ω AA ΩΩ ΩΩ ΩΩ AA ææ ææ ΩΩ ΩΩ ææ ææ","mode":"text","instructions":"Keep practicing the new keys."},{"text":"ΩA Aæ ΩA AA ææ Ωæ æΩ æΩ ΩΩ æΩ AΩ æA Aæ Ωæ æΩ æΩ AA AA æΩ æA AΩ AA æΩ æΩ ΩA æA ΩA ææ ΩA ΩA Aæ AA AΩ ææ æΩ AA AΩ ΩΩ AA ΩA æΩ AA Ωæ Aæ Aæ æA ææ æΩ Aæ æΩ","mode":"text","instructions":"Now put the keys together into pairs."},{"text":"ΩA Ωæ Aæ ΩΩ ΩΩ æA ææ æA ΩA AΩ æΩ æΩ Aæ æΩ ææ ΩA ΩA Ωæ ΩA æA ææ æΩ ææ Ωæ ææ ææ æA AA ææ ΩΩ ΩΩ ΩA ææ æΩ AΩ æA æA ææ ΩA ΩΩ ΩA ΩA Aæ Ωæ Ωæ Aæ AΩ Ωæ ææ æΩ","mode":"text","instructions":"Keep practicing key pairs."},{"text":"æA ææ AA æA ææ ΩΩ ΩA AA AΩ ΩΩ ΩA ΩΩ Aæ æA Ωæ ΩΩ Ωæ ΩA ΩA æA Aæ ΩΩ AA AΩ ææ AA AΩ AΩ ææ æA æA AΩ AA AΩ AΩ Ωæ AA AΩ ΩA æA AΩ AA ææ ææ æΩ ΩA Aæ ææ ΩA AA æΩ AA ææ Aæ æA ΩΩ Ωæ AΩ AΩ Aæ æA Aæ Ωæ ΩΩ æΩ A
 æ ΩΩ AA Aæ Ωæ AA ææ æA ΩΩ Ωæ Ωæ ΩA æΩ ΩA æA AΩ AA AA æA ΩA ææ AA Aæ ΩΩ ΩΩ Ωæ AΩ AΩ ææ AA Ωæ AA ΩΩ AA Aæ","mode":"text","instructions":"Almost done.  Keep practicing key pairs."},{"text":"Aæææ AææA AAæA æAAæ AAAA ææAA AAAΩ ΩæAæ ææAΩ ΩΩΩA æAæΩ æΩæA AΩæA ΩΩAΩ æΩΩæ æAæΩ ΩAΩΩ ææΩæ æΩAæ AΩAæ ΩæAA AΩæA ΩææΩ æΩΩA ΩææΩ AΩAæ æΩΩA æAΩA ΩΩæΩ AΩΩæ ææææ ΩΩAA ΩææΩ ææΩA æΩΩæ ææAA AAΩΩ ΩAæΩ ΩæAA AææA æAAæ ΩAAΩ æAAA AΩΩΩ AΩΩæ AæΩæ ΩæAA ΩæΩA AAΩΩ AAææ ΩæΩΩ AæΩæ AæΩæ AAæA AAæΩ AΩææ AΩΩA ΩAæΩ æAæA æAΩæ ææΩæ Aæææ ΩAæA ΩAææ AAΩæ AAΩΩ æΩAA æææA æAæΩ ΩΩææ ΩΩAΩ ææΩA ΩææΩ ææææ AAΩæ ΩæAæ æΩææ æΩAΩ ΩæAæ AΩAæ AæAΩ AææA æAΩæ ΩAæΩ ΩΩΩæ æAAA ΩæΩæ æAΩæ æAAæ æΩæA æææΩ AAAæ æAææ æAAΩ ææææ ΩAΩA AΩæA AAæA AAΩA æΩ
 ΩΩ","mode":"text","instructions":"Time to type real words."},{"text":"ΩΩAA æææA AAAA ΩΩΩA AææΩ ΩAΩΩ AæΩΩ ææAæ ΩæAæ ææΩΩ AæAΩ æΩΩΩ æAAΩ ΩAΩA æAææ ΩææA æΩAΩ AΩΩA ΩAAΩ æΩAA æΩΩA ææAΩ æAΩæ ΩΩAæ AΩææ æΩææ ΩΩΩA AAΩæ ΩæAæ æΩAΩ ΩAΩA ΩæΩA AΩæA AææA ΩææΩ æΩAæ AæΩA Aæææ æΩAA æΩΩA ΩAΩA AæAæ ΩΩAA ææΩΩ Ωæææ ΩΩAæ AΩæA ΩΩΩæ AΩAΩ ΩAΩA æΩΩA AΩAA AæΩA AΩΩA AΩAΩ ΩææA ΩΩAA AAAA AææΩ AæΩæ ΩæΩA ΩΩææ ΩΩæΩ æAΩæ ΩææA æææA æΩææ æΩAæ AΩæΩ æAΩΩ AææΩ ΩææA ææAΩ AæAΩ Aæææ AæAΩ AΩAΩ æΩΩA æΩΩΩ æAæΩ ΩAAæ æΩΩA æAAæ ΩæAΩ AæΩA æææA AΩAA ΩΩAA ΩΩAΩ AΩΩΩ ΩAΩΩ ΩææA AΩæA ΩAΩΩ ΩAææ AAææ ΩæAA AAAΩ AΩAA ΩæAæ","mode":"text","instructions":"Keep practicing these words."},{"text":"ΩΩæΩ æAAA ΩææΩ æAæΩ AAΩæ AæΩΩ AAæA AAΩA AAææ æΩæA ææΩA 
 AææΩ Ωæææ ΩΩæΩ ΩæΩA AΩæA AAææ AæAæ AææA ΩΩΩΩ AΩææ ΩAAA æææΩ AAΩA AæΩA AΩAA ΩΩΩæ AæΩA æΩææ ææAΩ ΩAææ ΩΩAæ AAææ AΩAæ ΩAΩΩ AΩAæ ææΩΩ AΩæΩ ΩΩæA Aæææ ΩAAΩ æAæΩ AΩAA æAΩA æAAΩ ΩΩAΩ AæΩæ ΩæAA AΩæA AΩæA æΩæΩ AæAæ AΩæΩ æAæΩ ΩΩΩæ æΩΩæ æAAA æAææ ΩΩΩA æAΩæ ΩΩææ AAΩæ ææΩA AæΩA AΩAA AΩææ ææΩΩ æAAæ æAΩΩ AæΩæ ΩææΩ æAΩA ΩæΩA ΩAæΩ ΩAAΩ ææææ ΩææΩ ææΩA ææAA ΩΩAA æΩAA æAAæ ææΩæ ΩΩæΩ æAΩΩ ΩAΩA AAAΩ AAAΩ ΩAAæ ææAæ Ωæææ Aæææ æææA AAΩA ææææ AAææ ΩΩæΩ ΩAæΩ ΩæAA æΩæA AΩΩA AæAΩ ΩææΩ æΩæΩ AæΩæ ΩææΩ AAæA ΩΩΩæ AAAΩ AΩAΩ ΩæΩΩ ΩæΩΩ AæAæ æAΩA ææAA ΩAææ AææΩ ΩææA AΩæΩ ΩææΩ ΩAΩæ ΩæAΩ AæΩæ AæAA AæΩæ AΩAæ Ωæææ æAæΩ ΩAAA ææAæ AAΩæ æAæΩ AAΩA ΩAΩæ AΩΩæ æææA æææA AæΩæ ΩAΩæ Ω
 æAΩ ΩΩΩæ æΩΩΩ AæΩΩ ææΩA ææAΩ ΩæAA æΩΩA AΩΩΩ æΩææ æAAΩ AAΩæ ΩΩΩA ΩæAæ AAAA æΩæΩ ΩΩæΩ æΩææ AæΩΩ AΩAA ΩΩΩΩ æAæA ΩAAΩ AææA AæΩæ ΩAΩA AΩAΩ AΩAΩ AæΩæ AΩAæ ΩΩAΩ æAææ æΩææ æææA ææΩA ΩΩΩæ æAAA AæΩA AææΩ ææAA ææΩæ AΩAæ AææA æAΩA AæAA ΩAΩA æAΩA AAΩΩ æΩΩæ ΩAææ ΩæΩæ æΩAΩ AΩAΩ AæΩΩ æΩAΩ AΩΩΩ ΩææΩ Ωæææ AAææ AæAΩ AΩΩA","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"Test","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"Quick dummy lesson"}
\ No newline at end of file
+{"order":-1,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the Test lesson lesson!\n\nIn this lesson, you will learn the æ, Ω, A, B, bb and B keys.  Press the Enter key when you are ready to begin!"},{"text":"æ","mode":"key","instructions":"Press and hold the ALTGR key, then press the æ key with your left little finger."},{"text":"Ω","mode":"key","instructions":"Press and hold the ALTGR and SHIFT keys, then press the Ω key with your left little finger."},{"text":"A","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the A key with your left little finger."},{"text":"B","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press the B key with your left index finger."},{"text":"b","mode":"key","instructions":"Press the b key with your left index finger."},{"text":"B","mode":"key","instructions":"Press and hold the SHIFT key with your right little finger, then press th
 e B key with your left index finger."},{"text":"ΩΩ bb bb ΩΩ BB BB BB BB bb ææ BB AA ææ BB BB ææ AA ΩΩ ΩΩ ææ AA AA BB BB ΩΩ AA AA ææ ææ ææ BB ΩΩ bb BB BB AA BB ΩΩ ææ ææ","mode":"text","instructions":"You did it! Practice typing the keys you just learned."},{"text":"BB BB AA bb AA bb ææ bb bb BB AA ΩΩ AA AA BB ΩΩ AA AA BB AA bb bb BB ΩΩ BB AA bb AA BB ææ BB bb bb BB AA BB ΩΩ ææ ææ BB","mode":"text","instructions":"Keep practicing the new keys."},{"text":"bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb","mode":"text","instructions":"Nice work. Now put the keys together into pairs."},{"text":"bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb","mode":"text","instructions":"Keep practicing key pairs."},{"text":"bb bb bb bb bb bb bb bb 
 bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb","mode":"text","instructions":"Almost done.  Keep practicing key pairs."},{"text":"BBΩA BΩΩb BBAB bAæb bBΩΩ æBBA BBAB BΩbA ABBB ΩAΩæ bæΩB æΩBB ææAb BBΩæ bBbæ ΩBbB æbΩB AbBB bbAA Ωbæb bBææ ABbæ ΩæBb AæAA BΩΩΩ BBAΩ BBæb BAbB BBBA ΩΩbB BBæB BbAb ABBæ BBAB Ωæææ ΩΩBb bbæΩ bæBæ AæAB BbæB ΩbAB BbAb æΩAB ΩbBæ AbBb AæbA bæAB bAbA ABæB BBæΩ BææB æΩBΩ BBæB bΩbb BbBA ΩBbB æBBæ AAAb AæBb ΩBBB bΩbB Ωæbæ AΩbΩ BbBA ΩæAΩ Bæææ BBΩb ABΩA ΩΩAB bBbB AææΩ Ωbbb BAbA BæBΩ ΩAΩB BBBæ æBΩæ BBæA ΩAbA ΩæbΩ BbAB æBbæ ææΩB AΩAB æBbB æbBB ABΩæ BΩbB bAAΩ æbBb BΩBB bbBA ΩABB bΩAæ bBæb BBΩæ AbΩæ æBæB æBΩb bÎ
 ©BB","mode":"text","instructions":"Good job. Time to type jumbles."},{"text":"æbBΩ BBæA ΩΩæB ΩbΩB ΩBΩΩ AΩΩΩ BBBA ΩABæ Bbbæ ææAA BABB AæBB BBΩB æBææ bΩæA BbΩb bbAb BæAB BbBæ bBBB BæbB BBæb ΩAΩA æAbb BABB bABΩ BæΩB BBBb ææBB BbAB æBΩΩ bæΩA ææΩA ΩΩbB BBæB ABæB ΩΩBA AbAB BBæΩ ΩBæb ΩæAΩ BææB AAæB BæΩæ BbbB ææBæ bbBB BΩæΩ ΩBBB BBæΩ ΩΩBb bAAb BΩBæ bΩBb ΩBæB Bbæb BæBb ΩΩΩb æBΩΩ bBbB BBBb BΩbΩ BBBæ ΩæΩæ BBΩb BbBb bææb æΩΩb bBAb AΩBæ bΩΩΩ æbAB bBBæ æBBb ΩæBæ BBBb bæBΩ AAæA æBAæ BBΩB ΩΩBb bAæΩ bAΩb BbΩΩ æAææ AææA BææB BBΩA AΩbB ABBΩ bΩbB bAææ bAæΩ bΩBB BAAB bbBΩ bbBΩ ABBB Ωææb bæBæ","mode":"text","instructions":"Keep practicing these jumbles."},{"text":"BΩAB AΩbA æAΩæ bBAΩ AbbΩ Ωæbæ BæBB BBbb BBΩb AæΩA BAΩb BABb ææBB BBBæ æΩbΩ bBBB æΩbA BAAA BbæB BBbA BBBΩ ΩΩΩb bΩBB æbæA BbBb ΩBBæ BBBΩ ΩææΩ BBBb AæBA
  AABb BbbΩ æbBæ ΩbΩB BbbB ΩbΩB BBBΩ BBbA ΩæBæ BæΩB æΩBb bΩAB BæBæ ABBΩ æBæb BBæA æABΩ æBæb bææΩ AbAA ABbb ΩΩæA BΩbA Bæbæ BAbb AbbA ææBΩ BΩææ ΩΩæB bΩæA BBbB BæBæ BBBB BΩΩB bBbB BBΩB bbAΩ æAΩΩ AbΩb Bæbæ ΩæBb BΩBb æbBB AΩbA BbBB BææA ΩæBΩ BΩbB ΩBAB ΩBBB æBbB ΩBæΩ æBæB æBBæ bBΩæ bbΩB ΩBbΩ BΩæA BbAæ ΩBBB bΩBA ΩABΩ ΩΩAæ ΩBBb BbBB ABΩæ ABΩA bæbA bææΩ BæAB","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"Test lesson","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson exists to test out obscure Typing Turtle features.\nPlease skip it by pressing the arrow button to the right."}
\ No newline at end of file
diff --git a/lessons/en_US/toprow.lesson b/lessons/en_US/toprow.lesson
index d774f8a..f099a38 100644
--- a/lessons/en_US/toprow.lesson
+++ b/lessons/en_US/toprow.lesson
@@ -1 +1 @@
-{"order":1,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the The Top Row lesson!\n\nIn this lesson, you will learn the qw, e, r, t, y, u, i, o and p keys.  Press the Enter key when you are ready to begin!"},{"text":"q","mode":"key","instructions":"Press the q key with your left pinky finger."},{"text":"w","mode":"key","instructions":"Press the w key with your left ring finger."},{"text":"e","mode":"key","instructions":"Press the e key with your left middle finger."},{"text":"r","mode":"key","instructions":"Press the r key with your left index finger."},{"text":"t","mode":"key","instructions":"Press the t key with your left index finger."},{"text":"y","mode":"key","instructions":"Press the y key with your right index finger."},{"text":"u","mode":"key","instructions":"Press the u key with your right index finger."},{"text":"i","mode":"key","instructions":"Press the i key with your right middle finger."},{"text":"o","mode":"key","instructions":"Press the o key w
 ith your right ring finger."},{"text":"p","mode":"key","instructions":"Press the p key with your right pinky finger."},{"text":"pp rr oo oo oo rr ee ee ee pp pp yy ii yy oo ee pp uu ii rr pp ii qq oo oo oo oo uu uu uu yy rr uu tt tt rr ww rr ii oo","mode":"text","instructions":"Practice typing the keys you just learned."},{"text":"ee oo uu ii yy uu tt ww oo uu uu pp qq uu tt uu tt yy yy ee qq tt pp ee qq ee oo tt uu pp oo ww uu ii rr tt qq ii pp tt","mode":"text","instructions":"Keep practicing the new keys."},{"text":"rp rw wy ip it or wr ii wo oq rp pu eu pw ou wr iw ro ro yp rp et po ru te or pe wp ru iw py ri tw yi iw ri ty tt qw oy ow oq or ry iu ee yt ti wo ey","mode":"text","instructions":"Now put the keys together into pairs."},{"text":"yr ip yi io wp yw pt yu uo tt eu wu wy yt ty yu pt ry tt wi yt yr pp wp yp ye uq po rw uq uu iu oy ur re ru tp iq yw pt iq et yt pw ti po qu oo yp oi","mode":"text","instructions":"Keep practicing key pairs."},{"text":"gi oe ta go ap 
 oq oa og oi ti ts aw pe tu rt ek ri hq uo od au dq tr wr it eg jo ey dq kw ij ek rq yh ey ge ef ku qw ii io iq gr tr yh yo rw tg ud tl","mode":"text","instructions":"Now practice all the keys you know."},{"text":"ji pg rw yl go di pu ef to yr yt sr ly ao io wk yg gi eo wh so fe go pw de tg rk is ra ey tt sw lq il ut tj so gt st eo iu ek we we tj ou th pa kw fy","mode":"text","instructions":"Almost done.  Keep practicing all the keys you know."},{"text":"strode error detailed petty hawser footfall flesh porosity flyer realty washy radius alias artsy ado studded piss selfish toity pup guise hearsay sweat stylist oho slight width fluorite alkali straggly spite talkie shutout waste outtake repute strafe peak topper groggy pelt dot widow haft ogle sage diehard keepsake desirous flyleaf page deity toed woodpile twisty gristle rudder straddle seashore twirly wilful tipsily airdrop plash stale fiesta splash lady lite worsted seeder stag workday affray list spurge farthest prowess wa
 ttle joy leftward truffle setter goop tootle solely fleshy dopa selfless sold drought supplies splashy hotfoot yea group feeder trash stepped widow","mode":"text","instructions":"Time to type real words."},{"text":"rope edgy garote augur williwaw full lope slithery after poesy diskette ore he oddity outstrip ledger dispel groupie hardly fearless spider hooky shrewish loftily toasty strata parasite tailor raggedy loyalist trike shuffler ti sorely glossily sliest soar steed sister paid alloy age whereto titlist hasty fi radiator jihad thru silo sturdy gleeful spillway prayer serous wire squealer pulsate thou hogshead tester sore sparkle park jaw spire gyrator ardor goad fie pore ordeal astir terraria outsider hookup pollute fiftieth drool dodder willow terry retell welsher otter shyster hairdo legit feta apology woodsy florist aphid dot pride hoof sally hightail largo loiter","mode":"text","instructions":"Keep practicing these words."},{"text":"egad quill warhead shekel patell
 a ligate soupy steerage pope idly prorate heliport kola glade peskily freaky usurper gawk sleigh rigor yurt epaulet outdid direly kowtow dialog legal hirsute wired ferrous pukka flake shiest write disallow tippler preset afforest three torpidly firetrap whisk wattled sordidly rugged how easterly shelf fogyish floppily workday torrid good soup leaflet plead pride led freeware pithily lord tweeds daddy fury pigtail prewar legate fistula starer purge reappear retarded gluey foe fathers strep tripe porgy presser slope eraser lite retrofit girdle update studio supple goshawk regrew tourist ruse leisure apishly art woe pratfall stairs goodwill thither jell fielder guide eatery gayly upside slutty weekday tarp slothful due flaw lid rely doll repose relay perkily walrus waggery turtle kaddish appeal treelike keeper girdle shatter guard flatfeet halite thwart edged tither tiller faithful defraud spay sulfate rejudge hated artery wisp prelude laurel lot sharpie headway rode lid lessee
  fuhrer poly rosewood soppy testes drupe rigidly troy palsy stipple huh weepy testis payoff putout yuppie esquire halloo relegate dilly odorless peppery girder shroud potted seaweed shorty gruff hydro heresy drollery gripper saute adage fishy flaw outgo rust talks jagged foolery pus spree lustily stodgily dike wife doors torpor rooted yep","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"The Top Row","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson teaches you the q, w, e, r, t, y, u, i, o and p keys \non the top row of the keyboard."}
\ No newline at end of file
+{"order":2,"steps":[{"text":"\n","mode":"key","instructions":"Welcome to the The Top Row lesson!\n\nIn this lesson, you will learn the q, w, e, r, t, y, u, i, o and p keys.  Press the ENTER key when you are ready to begin!"},{"text":"q","mode":"key","instructions":"Press the q key with your left little finger."},{"text":"w","mode":"key","instructions":"Press the w key with your left ring finger."},{"text":"e","mode":"key","instructions":"Press the e key with your left middle finger."},{"text":"r","mode":"key","instructions":"Press the r key with your left index finger."},{"text":"t","mode":"key","instructions":"Press the t key with your left index finger."},{"text":"y","mode":"key","instructions":"Press the y key with your right index finger."},{"text":"u","mode":"key","instructions":"Press the u key with your right index finger."},{"text":"i","mode":"key","instructions":"Press the i key with your right middle finger."},{"text":"o","mode":"key","instructions":"Press the o ke
 y with your right ring finger."},{"text":"p","mode":"key","instructions":"Press the p key with your right little finger."},{"text":"ee oo ii ee oo oo pp oo ii qq uu rr ww pp yy qq rr ee ww qq tt tt pp yy rr rr tt ww qq ww yy ww uu oo yy tt oo rr qq ww","mode":"text","instructions":"You did it! Practice typing the keys you just learned."},{"text":"pp uu tt ii tt ii ww ii ii uu tt ee tt tt pp ee tt tt pp tt ii ii yy ee pp rr ii tt pp qq pp oo ii pp rr yy ee qq qq uu","mode":"text","instructions":"Keep practicing the new keys."},{"text":"or te uq eu uy ur iy ei ip iu tw yr ut re eq ew pw wi pi pi wr yw to oy oe wp ut pe ry iu iw uy rr ti yu ty ut ww py iw po uw po pr ye wo iw tw oi py","mode":"text","instructions":"Nice work. Now put the keys together into pairs."},{"text":"uq pp ry rw yw wt tw pp ou yo ii te uw to rt tu pr rq oy ty wy pt qu ip ei ee oi ti pe ru ot tr iy oi yt wr ru pt yt pe oo ui rt iu wi rr ui ip ot ei","mode":"text","instructions":"Keep practicing key pairs.
 "},{"text":"ef tu lp rg fw py uy ow ew ik ft po le qu dq ro yi do up kp tt yf gt pa wd tt eg oh qu up yp wa gi ik ol oj yj sr ir ap rq ti fr yg tp eh dt iq dw ok","mode":"text","instructions":"Good job. Now practice all the keys you know."},{"text":"ia pf pj is ug yg rj ae yr pw yo ar yi pw pg id ri rt il ge wf uk gp ft ap rg eq og id hy tp og aq hr tp rf ug ot ry pa ig fo ji uk yd je pk uw iw lw","mode":"text","instructions":"Almost done.  Keep practicing all the keys you know."},{"text":"surefire solely fiat fed flukey testify atrial suppose drolly lawyer koala wall washer ugly legwork rigged killjoy firer flay southpaw hula quietly those sagely diaper ethyl lipread tattler superior hod reap tidy lopsided letup thyself degree works fatality shay relight dishes soda furor twirly spurge taper horde wrath hay jest draft trooper stuffy sure keg aloft pleura retool addle lee pa aside edgewise august shuffle tortured yaw leafage roadster powder are fraught ego jut daddy drill pa
 yer literary headrest quart jeweled wow dowdy tarsus stopple tither steal roguery jostle solute superego folder guy shit keepsake fretsaw hallowed yippee swatter spottily","mode":"text","instructions":"You did it! Time to type real words."},{"text":"pesky supply fetish tread hadst rust oh thereof wrestle yodeler fillip aerator riotous distort gorily flukey high settle wide papal futility firth grayish protege aspire digital draft laetrile palette slug stuff derriere willow polarity wail await fig staid ref theorist odious watt glister stylist torpor hasp prey result parfait shorty pule pail grout hardly roster fifty gutter your sport people garde pusher upshot applier sully parlous freeware jilt tepee titled psst fleurs equator whisky west housetop agitator stet soapy eyeteeth jaws you pathos target pshaw plead tailpipe distrust fretful fitful airport field reroute wastes adopter drowsily kirk waterway whew purpose","mode":"text","instructions":"Keep practicing these words."
 },{"text":"jotter wheels far wright edit footwear ligate aerator paralyse trellis lard settle filter ole fury pj liftoff upshot foppish fruit risotto doter whoreish settee sashay phase altruist foot plethora oop aquaria polestar dippy skill graduate fakir fearless spate peat fireside epithet stead wordage lettered defy austral payoff keyword wiles wight press yak witless paltry route direly qua doggedly life grafter ploy rapper pothead desolate douse letterer hots slight graduate epithet leg propose weep fellatio whoso whale larkspur kelp diffuse aft steal treasury greedily error troupe steeple toiler liaise loggia straw rudely testator rattler rap defray studies outpost waffler raggedy goodwill skylark sigh sled stoker williwaw situated sapwood lifter whose leery praise wailer golly rightful op piffle swat ridged physique rehouse allude diarist esthete tripodal putout ate shirker strudel towhead dado plaid lethargy greeter fluidity slipway pulp hydra ate distil satiety roug
 e prophesy progress depth utility greatly sell rootlet puttee tassel raggedly squire wisp porous poster walkaway flirt rearrest wishy altar prate irate appeal sheepdog hippie saggy tete largish lope floe trike doer sheet ghost glassed salaried kaiser party awoke quietly steeply outlaw skewed odyssey otiose ratifier goitre diereses earthy squiggly filthily repute wapiti prudery wittily lollypop disguise stuffy slog tertiary","mode":"text","instructions":"Almost finished. Try to type as quickly and accurately as you can!"},{"text":"\n","mode":"key","instructions":"$report"}],"name":"The Top Row","medals":[{"wpm":5,"name":"bronze","accuracy":60},{"wpm":10,"name":"silver","accuracy":75},{"wpm":20,"name":"gold","accuracy":90}],"description":"This lesson teaches you the q, w, e, r, t, y, u, i, o and p keys \non the top row of the keyboard."}
\ No newline at end of file
diff --git a/mainscreen.py b/mainscreen.py
index f3db6eb..63e4d04 100644
--- a/mainscreen.py
+++ b/mainscreen.py
@@ -143,7 +143,8 @@ class MainScreen(gtk.VBox):
         """Returns the index of the first lesson without a medal."""
         index = len(self.lessons)-1
         for i in xrange(0, len(self.lessons)):
-            if not self.activity.data['medals'].has_key(self.lessons[i]['name']):
+            if self.lessons[i]['order'] >= 0 and \
+               not self.activity.data['medals'].has_key(self.lessons[i]['name']):
                 index = min(index, i)
         return index
     
diff --git a/po/TypingTurtle.pot b/po/TypingTurtle.pot
index 94081ed..13f744d 100644
--- a/po/TypingTurtle.pot
+++ b/po/TypingTurtle.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-21 23:11+0000\n"
+"POT-Creation-Date: 2009-01-02 16:44+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -16,48 +16,46 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: activity/activity.info:2 typingturtle.py:49 mainscreen.py:39
+#: activity/activity.info:2 typingturtle.py:56 mainscreen.py:48
 msgid "Typing Turtle"
 msgstr ""
 
-#: lessonscreen.py:57 medalscreen.py:56
+#: lessonscreen.py:59
 msgid "Go Back"
 msgstr ""
 
-#: lessonscreen.py:150
+#: lessonscreen.py:167
 #, python-format
 msgid "<b>WPM:</b> %(wpm)d"
 msgstr ""
 
-#: lessonscreen.py:155 medalscreen.py:49
+#: lessonscreen.py:175 medalscreen.py:49
 #, python-format
 msgid "<b>Accuracy:</b> %(accuracy)d%%"
 msgstr ""
 
-#: lessonscreen.py:433
+#: lessonscreen.py:528
 msgid "Good job!"
 msgstr ""
 
-#: lessonscreen.py:434
+#: lessonscreen.py:529
 msgid "Well done!"
 msgstr ""
 
-#: lessonscreen.py:435
+#: lessonscreen.py:530
 msgid "Nice work!"
 msgstr ""
 
-#: lessonscreen.py:436
+#: lessonscreen.py:531
 msgid "Way to go!"
 msgstr ""
 
-#: lessonscreen.py:440
+#: lessonscreen.py:536
 #, python-format
-msgid ""
-"You finished the lesson in %(time)d seconds, with %(errors)d errors.\n"
-"\n"
+msgid "You finished the lesson in %(time)d seconds, with %(errors)d errors.\n"
 msgstr ""
 
-#: lessonscreen.py:442
+#: lessonscreen.py:538
 #, python-format
 msgid ""
 "Your words per minute (WPM) was %(wpm)d, and your accuracy was %(accuracy)d%"
@@ -65,15 +63,24 @@ msgid ""
 "\n"
 msgstr ""
 
-#: lessonscreen.py:448
+#: lessonscreen.py:541
+#, python-format
+msgid "You finished the lesson with %(errors)d errors.\n"
+msgstr ""
+
+#: lessonscreen.py:543
 #, python-format
 msgid ""
-"Congratulations!  You earned a %(type)s medal!\n"
+"Your accuracy was %(accuracy)d%%.\n"
 "\n"
-"Press Enter to see your certificate."
 msgstr ""
 
-#: lessonscreen.py:457
+#: lessonscreen.py:549
+#, python-format
+msgid "Congratulations!  You earned a %(type)s medal!"
+msgstr ""
+
+#: lessonscreen.py:557
 msgid ""
 "You need to practice this lesson more before moving on.  If you are having a "
 "hard time, repeat the earlier lessons until you have mastered them "
@@ -81,22 +88,18 @@ msgid ""
 "\n"
 msgstr ""
 
-#: lessonscreen.py:462
+#: lessonscreen.py:562
 msgid ""
-"You almost got a medal!  Next time, try not to make as many errors!\n"
+"You almost got a medal!  Next time, try not to make as many errors.\n"
 "\n"
 msgstr ""
 
-#: lessonscreen.py:465
+#: lessonscreen.py:565
 msgid ""
-"You almost got a medal!  Next time, try to type a little faster!\n"
+"You almost got a medal!  Next time, try to type a little faster.\n"
 "\n"
 msgstr ""
 
-#: lessonscreen.py:467
-msgid "Press Enter to return to the main screen."
-msgstr ""
-
 #: medalscreen.py:38
 msgid ""
 "Certificate of\n"
@@ -116,11 +119,28 @@ msgstr ""
 msgid "<b>Words Per Minute:</b> %(wpm)d"
 msgstr ""
 
-#: mainscreen.py:42
+#: medalscreen.py:56
+msgid "Ok"
+msgstr ""
+
+#: mainscreen.py:179
 msgid ""
-"Welcome to Typing Turtle! To begin, select a lesson from the list below."
+"You earned a medal in this lesson!  Advance to the next one\n"
+"by clicking the arrow button to the right."
+msgstr ""
+
+#: mainscreen.py:210
+msgid "No Medal Yet"
+msgstr ""
+
+#: mainscreen.py:211
+msgid "Bronze Medal"
+msgstr ""
+
+#: mainscreen.py:212
+msgid "Silver Medal"
 msgstr ""
 
-#: mainscreen.py:50
-msgid "Available Lessons"
+#: mainscreen.py:213
+msgid "Gold Medal"
 msgstr ""

commit b277a042162d77a1310575dc3183079ed68cde9d
Author: Wade Brainerd <wadetb at gmail.com>
Date:   Fri Jan 2 15:54:52 2009 +0000

    Rename lessonbuilder.py as lessonbuilder to improve discoverability.

diff --git a/lessonbuilder.py b/lessonbuilder
old mode 100644
new mode 100755
similarity index 100%
rename from lessonbuilder.py
rename to lessonbuilder

commit a26cfaec4cd4f3e707585bf32697370f5691c789
Author: Wade Brainerd <wadetb at gmail.com>
Date:   Fri Jan 2 15:53:23 2009 +0000

    Bug fixes and improvements to lessonbuilder.

diff --git a/lessonbuilder.py b/lessonbuilder.py
index 218f4ee..01fc08a 100644
--- a/lessonbuilder.py
+++ b/lessonbuilder.py
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+# vi: sw=4 et
 # Copyright 2008 by Kate Scheppke and Wade Brainerd.  
 # This file is part of Typing Turtle.
 #
@@ -13,8 +15,6 @@
 # 
 # You should have received a copy of the GNU General Public License
 # along with Typing Turtle.  If not, see <http://www.gnu.org/licenses/>.
-#!/usr/bin/env python
-# vi:sw=4 et
 
 import os, sys, random, json, locale, re
 from gettext import gettext as _
@@ -42,18 +42,24 @@ CONGRATS = [
     _('You did it!'),
 ]
 
+def get_congrats():
+    return random.choice(CONGRATS) + ' '
+
 HINTS = [
     _('Be careful to use the correct finger to press each key.  Look at the keyboard below if you need help remembering.'),
     _('Try to type at the same speed, all the time.  As you get more comfortable you can increase the speed a little.')
 ]
 
+def get_hint():
+    return random.choice(HINTS)
+
 FINGERS = {
-    'LP': _('left pinky'),
+    'LP': _('left little'),
     'LR': _('left ring'),
     'LM': _('left middle'),
     'LI': _('left index'),
     'LT': _('left thumb'),
-    'RP': _('right pinky'),
+    'RP': _('right little'),
     'RR': _('right ring'),
     'RM': _('right middle'),
     'RI': _('right index'),
@@ -258,9 +264,6 @@ def filter_wordlist(words, all_keys, req_keys, minlen, maxlen, bad_words):
     return good_words
 
 def make_random_words(words, required_keys, keys, count):
-    if len(words) == 0:
-        return make_jumbles(required_keys, keys, count, 5)
-    
     text = ''
     for x in range(0, count):
         text += random.choice(words) + ' '
@@ -308,12 +311,15 @@ def build_lesson(
 
     keynames = new_keys[0]
     if len(new_keys) >= 2:
-        for k in new_keys[1:-2]:
-            keynames += k + ', '
+        for k in new_keys[1:-1]:
+            keynames += ', ' + k
         keynames += new_keys[-2] + ' and ' + new_keys[-1]
+        keynames += _(' keys')
+    else:
+        keynames += _(' key')
 
     add_step(lesson,
-        _('Welcome to the %(name)s lesson!\n\nIn this lesson, you will learn the %(keynames)s keys.  Press the Enter key when you are ready to begin!') \
+        _('Welcome to the %(name)s lesson!\n\nIn this lesson, you will learn the %(keynames)s.  Press the Enter key when you are ready to begin!') \
             % { 'name': name, 'keynames': keynames },
         'key', '\n')
 
@@ -346,7 +352,7 @@ def build_lesson(
         add_step(lesson, instructions, 'key', letter)
 
     add_step(lesson,
-        _('Practice typing the keys you just learned.'),
+        get_congrats() + _('Practice typing the keys you just learned.'),
         'text', make_random_doubles(new_keys, count=40))
     
     add_step(lesson,
@@ -354,7 +360,7 @@ def build_lesson(
         'text', make_random_doubles(new_keys, count=40))
     
     add_step(lesson,
-        _('Now put the keys together into pairs.'),
+        get_congrats() + _('Now put the keys together into pairs.'),
         'text', make_weighted_wordlist_pairs(pairs, new_keys, new_keys, count=50))
     
     add_step(lesson,
@@ -363,7 +369,7 @@ def build_lesson(
     
     if base_keys != '':
         add_step(lesson,
-            _('Now practice all the keys you know.'),
+            get_congrats() + _('Now practice all the keys you know.'),
             'text', make_weighted_wordlist_pairs(pairs, new_keys, all_keys, count=50))
     
         add_step(lesson,
@@ -375,17 +381,31 @@ def build_lesson(
             _('Almost done.  Keep practicing key pairs.'),
             'text', make_weighted_wordlist_pairs(pairs, new_keys, new_keys, count=100))
 
-    add_step(lesson,
-        _('Time to type real words.'),
-        'text', make_random_words(good_words, new_keys, all_keys, count=100))
-    
-    add_step(lesson,
-        _('Keep practicing these words.'),
-        'text', make_random_words(good_words, new_keys, all_keys, count=100))
+    if len(good_words) == 0:
+        add_step(lesson,
+            get_congrats() + _('Time to type jumbles.'),
+            'text', make_jumbles(new_keys, all_keys, 100, 5))
+        
+        add_step(lesson,
+            _('Keep practicing these jumbles.'),
+            'text', make_jumbles(new_keys, all_keys, 100, 5))
+        
+        add_step(lesson,
+            _('Almost finished. Try to type as quickly and accurately as you can!'),
+            'text', make_jumbles(new_keys, all_keys, 100, 5))
     
-    add_step(lesson,
-        _('Almost finished. Try to type as quickly and accurately as you can!'),
-        'text', make_random_words(good_words, new_keys, all_keys, count=200))
+    else:
+        add_step(lesson,
+            get_congrats() + _('Time to type real words.'),
+            'text', make_random_words(good_words, new_keys, all_keys, count=100))
+        
+        add_step(lesson,
+            _('Keep practicing these words.'),
+            'text', make_random_words(good_words, new_keys, all_keys, count=100))
+        
+        add_step(lesson,
+            _('Almost finished. Try to type as quickly and accurately as you can!'),
+            'text', make_random_words(good_words, new_keys, all_keys, count=200))
     
     text = '$report'
     add_step(lesson, text, 'key', '\n')
@@ -537,10 +557,14 @@ if __name__ == "__main__":
     bad_words = []
     if options.badwordlist:
         bad_words = load_wordlist(options.badwordlist)
+
+    # Convert string arguments to Unicode.
+    options.name = unicode(options.name)
+    options.keys = unicode(options.keys)
+    options.base_keys = unicode(options.base_keys)
+    options.desc = unicode(options.desc.replace('\\n', '\n'))
     
-    options.desc = options.desc.replace('\\n', '\n')
-    
-	random.seed(options.seed)
+    random.seed(options.seed)
 
     if options.make_intro_lesson:
         lesson = build_intro_lesson()

commit 1c4b5e78f042c226d7d2b672acfb67b9791d4952
Author: Wade Brainerd <wadetb at gmail.com>
Date:   Fri Jan 2 14:48:31 2009 +0000

    Add --seed parameter to lessonbulder.

diff --git a/lessonbuilder.py b/lessonbuilder.py
index af918f2..218f4ee 100644
--- a/lessonbuilder.py
+++ b/lessonbuilder.py
@@ -521,6 +521,8 @@ if __name__ == "__main__":
                       help="Text file containing words to use.")
     parser.add_option("--badwordlist", dest="badwordlist", metavar="FILE",
                       help="Text file containing words *not* to use.")
+    parser.add_option("--seed", dest="seed", type="int", metavar="N", default=0x12345678,
+                      help="Random seed.")
     
     (options, args) = parser.parse_args()
     
@@ -538,6 +540,8 @@ if __name__ == "__main__":
     
     options.desc = options.desc.replace('\\n', '\n')
     
+	random.seed(options.seed)
+
     if options.make_intro_lesson:
         lesson = build_intro_lesson()
         open(options.output, 'w').write(json.write(lesson))
-----------------------------------------------------------------------


--
/home/olpc-code/git/activities/typing-turtle


More information about the Commits mailing list