From a8cb4c620f0558c6ff7729a67cf64c03a9555f94 Mon Sep 17 00:00:00 2001 From: Wade Brainerd Date: Thu, 17 Sep 2009 01:15:34 +0000 Subject: Fix English keymap to include space. Pick the key which requires the fewest modifiers. Font tweaks. --- 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("" + _('Next') + "") + nextlabel.set_markup("" + _('Next') + "") 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("" + _('Previous') + "") + prevlabel.set_markup("" + _('Previous') + "") self.prevlessonbtn = gtk.Button() self.prevlessonbtn.add(prevlabel) self.prevlessonbtn.connect('clicked', self.prev_lesson_clicked_cb) lessonlabel = gtk.Label() - lessonlabel.set_markup("" + _('Start Lesson') + "") + lessonlabel.set_markup("" + _('Start Lesson') + "") 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("" + lesson['name'] + "") + namelabel.set_markup("" + lesson['name'] + "") desclabel = gtk.Label() desclabel.set_alignment(0.5, 0.5) - desclabel.set_markup("" + lesson['description'] + "") + desclabel.set_markup("" + lesson['description'] + "") if medal_type != 'none': hint = _('You earned a medal in this lesson! Advance to the next one\nby clicking the Next button.') -- cgit v0.9.1