Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWade Brainerd <wadetb@gmail.com>2009-09-17 01:15:34 (GMT)
committer Wade Brainerd <wadetb@gmail.com>2009-09-17 01:15:34 (GMT)
commita8cb4c620f0558c6ff7729a67cf64c03a9555f94 (patch)
tree38a3ff579813ac247c558dc7266c2cea4712199d
parent8bafd0a23447054fa1a17727ea3e59041ca16bd2 (diff)
Fix English keymap to include space.
Pick the key which requires the fewest modifiers. Font tweaks.
-rw-r--r--keyboard.py23
-rw-r--r--lessons/en_US.key100
-rw-r--r--lessons/en_US/en_US.key188
-rw-r--r--lessonscreen.py14
-rw-r--r--mainscreen.py10
5 files changed, 127 insertions, 208 deletions
diff --git a/keyboard.py b/keyboard.py
index c3bfb96..f347790 100644
--- a/keyboard.py
+++ b/keyboard.py
@@ -370,13 +370,26 @@ class KeyboardData:
if letter == '\n' or letter == PARAGRAPH_CODE:
return self.find_key_by_label('enter'), 0, 0
- # Look up the key in the letter map.
+ # Look up the key in the letter map.
+ # Find the one with the fewest modifier keys.
+ best_score = 3
+ best_result = None
+
for sig, l in self.letter_map.items():
- if l == letter:
+ if unicode(l) == unicode(letter):
scan, state, group = self.parse_key_sig(sig)
- for k in self.keys:
- if k['key-scan'] == scan:
- return k, state, group
+
+ score = 0
+ if state & gtk.gdk.SHIFT_MASK: score += 1
+ if state & gtk.gdk.MOD5_MASK: score += 1
+ if score < best_score:
+ best_score = score
+ best_result = scan, state, group
+
+ if best_result is not None:
+ for k in self.keys:
+ if k['key-scan'] == best_result[0]:
+ return k, best_result[1], best_result[2]
return None, None, None
diff --git a/lessons/en_US.key b/lessons/en_US.key
new file mode 100644
index 0000000..06b9d7f
--- /dev/null
+++ b/lessons/en_US.key
@@ -0,0 +1,100 @@
+{
+ "scan10": "1",
+ "scan10 shift": "!",
+ "scan11": "2",
+ "scan11 shift": "@",
+ "scan12": "3",
+ "scan12 shift": "#",
+ "scan13": "4",
+ "scan13 shift": "$",
+ "scan14": "5",
+ "scan14 shift": "%",
+ "scan15": "6",
+ "scan15 shift": "^",
+ "scan16": "7",
+ "scan16 shift": "&",
+ "scan17": "8",
+ "scan17 shift": "*",
+ "scan18": "9",
+ "scan18 shift": "(",
+ "scan19": "0",
+ "scan19 shift": ")",
+ "scan20": "-",
+ "scan20 shift": "_",
+ "scan21": "=",
+ "scan21 shift": "+",
+ "scan24": "q",
+ "scan24 shift": "Q",
+ "scan25": "w",
+ "scan25 shift": "W",
+ "scan26": "e",
+ "scan26 shift": "E",
+ "scan27": "r",
+ "scan27 shift": "R",
+ "scan28": "t",
+ "scan28 shift": "T",
+ "scan29": "y",
+ "scan29 shift": "Y",
+ "scan30": "u",
+ "scan30 shift": "U",
+ "scan31": "i",
+ "scan31 shift": "I",
+ "scan32": "o",
+ "scan32 shift": "O",
+ "scan33": "p",
+ "scan33 shift": "P",
+ "scan34": "[",
+ "scan34 shift": "{",
+ "scan35": "]",
+ "scan35 shift": "}",
+ "scan36": "\r",
+ "scan36 shift": "\r",
+ "scan38": "a",
+ "scan38 shift": "A",
+ "scan39": "s",
+ "scan39 shift": "S",
+ "scan40": "d",
+ "scan40 shift": "D",
+ "scan41": "f",
+ "scan41 shift": "F",
+ "scan42": "g",
+ "scan42 shift": "G",
+ "scan43": "h",
+ "scan43 shift": "H",
+ "scan44": "j",
+ "scan44 shift": "J",
+ "scan45": "k",
+ "scan45 shift": "K",
+ "scan46": "l",
+ "scan46 shift": "L",
+ "scan47": ";",
+ "scan47 shift": ":",
+ "scan48": "'",
+ "scan48 shift": "\"",
+ "scan49": "`",
+ "scan49 shift": "~",
+ "scan51": "\\",
+ "scan51 shift": "|",
+ "scan52": "z",
+ "scan52 shift": "Z",
+ "scan53": "x",
+ "scan53 shift": "X",
+ "scan54": "c",
+ "scan54 shift": "C",
+ "scan55": "v",
+ "scan55 shift": "V",
+ "scan56": "b",
+ "scan56 shift": "B",
+ "scan57": "n",
+ "scan57 shift": "N",
+ "scan58": "m",
+ "scan58 shift": "M",
+ "scan59": ",",
+ "scan59 shift": "<",
+ "scan60": ".",
+ "scan60 shift": ">",
+ "scan61": "/",
+ "scan61 shift": "?",
+ "scan65": " ",
+ "scan65 shift": " "
+} \ No newline at end of file
diff --git a/lessons/en_US/en_US.key b/lessons/en_US/en_US.key
deleted file mode 100644
index efc320d..0000000
--- a/lessons/en_US/en_US.key
+++ /dev/null
@@ -1,188 +0,0 @@
-{
- "scan10": "1",
- "scan10 altgr": "¡",
- "scan10 shift": "!",
- "scan10 shift altgr": "¡",
- "scan11": "2",
- "scan11 altgr": "¬",
- "scan11 shift": "@",
- "scan11 shift altgr": "¬",
- "scan12": "3",
- "scan12 altgr": "̀",
- "scan12 shift": "#",
- "scan12 shift altgr": "̀",
- "scan13": "4",
- "scan13 altgr": "́",
- "scan13 shift": "$",
- "scan13 shift altgr": "́",
- "scan14": "5",
- "scan14 altgr": "̆",
- "scan14 shift": "%",
- "scan14 shift altgr": "̆",
- "scan15": "6",
- "scan15 altgr": "̊",
- "scan15 shift": "^",
- "scan15 shift altgr": "̊",
- "scan16": "7",
- "scan16 altgr": "̂",
- "scan16 shift": "&",
- "scan16 shift altgr": "̂",
- "scan17": "8",
- "scan17 altgr": "̌",
- "scan17 shift": "*",
- "scan17 shift altgr": "̌",
- "scan18": "9",
- "scan18 altgr": "̇",
- "scan18 shift": "(",
- "scan18 shift altgr": "̇",
- "scan19": "0",
- "scan19 altgr": "̈",
- "scan19 shift": ")",
- "scan19 shift altgr": "̈",
- "scan20": "-",
- "scan20 altgr": "̄",
- "scan20 shift": "_",
- "scan20 shift altgr": "̄",
- "scan21": "=",
- "scan21 altgr": "̃",
- "scan21 shift": "+",
- "scan21 shift altgr": "̃",
- "scan24": "q",
- "scan24 altgr": "ω",
- "scan24 shift": "Q",
- "scan24 shift altgr": "Ω",
- "scan25": "w",
- "scan25 altgr": "ø",
- "scan25 shift": "W",
- "scan25 shift altgr": "Ø",
- "scan26": "e",
- "scan26 altgr": "œ",
- "scan26 shift": "E",
- "scan26 shift altgr": "Œ",
- "scan27": "r",
- "scan27 altgr": "̧",
- "scan27 shift": "R",
- "scan27 shift altgr": "̧",
- "scan28": "t",
- "scan28 altgr": "̮",
- "scan28 shift": "T",
- "scan28 shift altgr": "̮",
- "scan29": "y",
- "scan29 altgr": "̥",
- "scan29 shift": "Y",
- "scan29 shift altgr": "̥",
- "scan30": "u",
- "scan30 altgr": "̭",
- "scan30 shift": "U",
- "scan30 shift altgr": "̭",
- "scan31": "i",
- "scan31 altgr": "̬",
- "scan31 shift": "I",
- "scan31 shift altgr": "̬",
- "scan32": "o",
- "scan32 altgr": "̣",
- "scan32 shift altgr": "̣",
- "scan33": "p",
- "scan33 altgr": "̤",
- "scan33 shift": "P",
- "scan33 shift altgr": "̤",
- "scan34": "[",
- "scan34 altgr": "̱",
- "scan34 shift": "{",
- "scan34 shift altgr": "̱",
- "scan35": "]",
- "scan35 altgr": "̰",
- "scan35 shift": "}",
- "scan35 shift altgr": "̰",
- "scan36 altgr": "\r",
- "scan38": "a",
- "scan38 altgr": "æ",
- "scan38 shift": "A",
- "scan38 shift altgr": "Æ",
- "scan39": "s",
- "scan39 altgr": "ß",
- "scan39 shift": "S",
- "scan39 shift altgr": "ẜ",
- "scan40": "d",
- "scan40 altgr": "ð",
- "scan40 shift": "D",
- "scan40 shift altgr": "Ð",
- "scan41": "f",
- "scan41 altgr": "þ",
- "scan41 shift": "F",
- "scan41 shift altgr": "Þ",
- "scan42": "g",
- "scan42 altgr": "g",
- "scan42 shift": "G",
- "scan42 shift altgr": "G",
- "scan43": "h",
- "scan43 altgr": "£",
- "scan43 shift": "H",
- "scan43 shift altgr": "£",
- "scan44": "j",
- "scan44 altgr": "€",
- "scan44 shift": "J",
- "scan44 shift altgr": "€",
- "scan45": "k",
- "scan45 altgr": "k",
- "scan45 shift": "K",
- "scan45 shift altgr": "K",
- "scan46": "l",
- "scan46 altgr": "l",
- "scan46 shift": "L",
- "scan46 shift altgr": "L",
- "scan47": ";",
- "scan47 altgr": "º",
- "scan47 shift": ":",
- "scan47 shift altgr": "ª",
- "scan48": "'",
- "scan48 altgr": "¤",
- "scan48 shift": "\"",
- "scan48 shift altgr": "¤",
- "scan49": "`",
- "scan49 shift": "~",
- "scan51": "\\",
- "scan51 altgr": "§",
- "scan51 shift": "|",
- "scan51 shift altgr": "§",
- "scan52": "z",
- "scan52 altgr": "z",
- "scan52 shift": "Z",
- "scan52 shift altgr": "Z",
- "scan53": "x",
- "scan53 altgr": "x",
- "scan53 shift": "X",
- "scan53 shift altgr": "X",
- "scan54": "c",
- "scan54 altgr": "ç",
- "scan54 shift": "C",
- "scan54 shift altgr": "Ç",
- "scan55": "v",
- "scan55 altgr": "v",
- "scan55 shift": "V",
- "scan55 shift altgr": "V",
- "scan56": "b",
- "scan56 altgr": "b",
- "scan56 shift": "B",
- "scan56 shift altgr": "B",
- "scan57": "n",
- "scan57 altgr": "ñ",
- "scan57 shift": "N",
- "scan57 shift altgr": "Ñ",
- "scan58": "m",
- "scan58 altgr": "µ",
- "scan58 shift": "M",
- "scan58 shift altgr": "µ",
- "scan59": ",",
- "scan59 altgr": "«",
- "scan59 shift": "<",
- "scan59 shift altgr": "«",
- "scan60": ".",
- "scan60 altgr": "»",
- "scan60 shift": ">",
- "scan60 shift altgr": "»",
- "scan61": "/",
- "scan61 altgr": "¿",
- "scan61 shift": "?",
- "scan61 shift altgr": "¿"
-} \ No newline at end of file
diff --git a/lessonscreen.py b/lessonscreen.py
index 1f3a188..5ae66fd 100644
--- a/lessonscreen.py
+++ b/lessonscreen.py
@@ -121,9 +121,9 @@ class LessonScreen(gtk.VBox):
# Attempt to load a letter map for the current locale.
code = locale.getdefaultlocale()[0] or 'en_US'
try:
- self.keyboard.load_letter_map('lessons/%s/%s.key' % (code, code))
+ self.keyboard.load_letter_map('lessons/%s.key' % code)
except:
- self.keyboard.load_letter_map('lessons/en_US/en_US.key')
+ self.keyboard.load_letter_map('lessons/en_US.key')
self.keyboard.set_layout(keyboard.OLPC_LAYOUT)
@@ -277,7 +277,7 @@ class LessonScreen(gtk.VBox):
# Determine what modifier keys are needed.
key, state, group = self.keyboard.get_key_state_group_for_letter(self.text[0])
-
+
if key:
if state & gtk.gdk.SHIFT_MASK:
shift_key = self.keyboard.find_key_by_label('shift')
@@ -358,8 +358,6 @@ class LessonScreen(gtk.VBox):
if not event.string:
return True
- #print 'key_cb: ' + event.string
-
# Ignore either press or release events, depending on mode.
if self.mode == 'key' and event.type == gtk.gdk.KEY_PRESS:
return True
@@ -372,16 +370,12 @@ class LessonScreen(gtk.VBox):
# Extract information about the key pressed.
key = event.string
- #key = gtk.gdk.keyval_to_unicode(event.keyval)
- #if key != 0: key = unichr(key)
key_name = gtk.gdk.keyval_name(event.keyval)
# Convert Return keys to paragraph symbols.
if key_name == 'Return':
key = PARAGRAPH_CODE
-
- #print "key_press_cb: key=%s key_name=%s event.keyval=%d" % (key, key_name, event.keyval)
-
+
if self.mode == 'key':
# Check to see if they pressed the correct key.
if key == self.line[0]:
diff --git a/mainscreen.py b/mainscreen.py
index 71657ea..259a747 100644
--- a/mainscreen.py
+++ b/mainscreen.py
@@ -53,7 +53,7 @@ class MainScreen(gtk.VBox):
#nexticon = sugar.graphics.icon.Icon(icon_name='go-next')
#self.nextlessonbtn.add(nexticon)
nextlabel = gtk.Label()
- nextlabel.set_markup("<span size='8000'>" + _('Next') + "</span>")
+ nextlabel.set_markup("<span size='large'>" + _('Next') + "</span>")
self.nextlessonbtn = gtk.Button()
self.nextlessonbtn.add(nextlabel)
@@ -62,14 +62,14 @@ class MainScreen(gtk.VBox):
#previcon = sugar.graphics.icon.Icon(icon_name='go-previous')
#self.prevlessonbtn.add(previcon)
prevlabel = gtk.Label()
- prevlabel.set_markup("<span size='8000'>" + _('Previous') + "</span>")
+ prevlabel.set_markup("<span size='large'>" + _('Previous') + "</span>")
self.prevlessonbtn = gtk.Button()
self.prevlessonbtn.add(prevlabel)
self.prevlessonbtn.connect('clicked', self.prev_lesson_clicked_cb)
lessonlabel = gtk.Label()
- lessonlabel.set_markup("<span size='12000'>" + _('Start Lesson') + "</span>")
+ lessonlabel.set_markup("<span size='x-large' weight='bold'>" + _('Start Lesson') + "</span>")
lessonbtn = gtk.Button()
lessonbtn.add(lessonlabel)
@@ -160,10 +160,10 @@ class MainScreen(gtk.VBox):
# Create the lesson button.
namelabel = gtk.Label()
namelabel.set_alignment(0.5, 0.5)
- namelabel.set_markup("<span size='20000'><b>" + lesson['name'] + "</b></span>")
+ namelabel.set_markup("<span size='x-large' weight='bold'>" + lesson['name'] + "</span>")
desclabel = gtk.Label()
desclabel.set_alignment(0.5, 0.5)
- desclabel.set_markup("<span size='10000' color='#606060'>" + lesson['description'] + "</span>")
+ desclabel.set_markup("<span size='large' color='#606060'>" + lesson['description'] + "</span>")
if medal_type != 'none':
hint = _('You earned a medal in this lesson! Advance to the next one\nby clicking the Next button.')