From 5da8b6c00f6c16f8657da7adac69f6ac617cc4ce Mon Sep 17 00:00:00 2001 From: Wade Brainerd Date: Thu, 12 Mar 2009 03:19:03 +0000 Subject: Changed letter map format to be simpler. Regenerated letter maps using keybuilder.py. --- diff --git a/keyboard.py b/keyboard.py index 2ebb452..ae7f93a 100644 --- a/keyboard.py +++ b/keyboard.py @@ -372,7 +372,7 @@ class KeyboardWidget(KeyboardData, gtk.DrawingArea): """A GTK widget which implements an interactive visual keyboard, with support for custom data driven layouts.""" - def __init__(self, image, root_window, poll_keys=False, record_map=False): + def __init__(self, image, root_window, poll_keys=False): KeyboardData.__init__(self) gtk.DrawingArea.__init__(self) @@ -398,9 +398,7 @@ class KeyboardWidget(KeyboardData, gtk.DrawingArea): self.modify_bg(gtk.STATE_NORMAL, self.get_colormap().alloc_color('#d0d0d0')) - self.record_map = record_map - - self.letter_map = [] + self.letter_map = {} # Connect keyboard grabbing and releasing callbacks. if poll_keys: @@ -417,11 +415,24 @@ class KeyboardWidget(KeyboardData, gtk.DrawingArea): self.root_window.disconnect(self.key_press_cb_id) self.root_window.disconnect(self.key_release_cb_id) - def load_key_map(self, filename): - try: - self.letter_map = simplejson.loads(open(filename, 'r').read()) - except: - pass + def load_letter_map(self, filename): + self.letter_map = simplejson.loads(open(filename, 'r').read()) + + def save_letter_map(self, filename): + text = simplejson.dumps(self.letter_map, ensure_ascii=False, sort_keys=True, indent=4) + f = open(filename, 'w') + f.write(text) + f.close() + + def get_key_sig(self, scan, state, group): + sig = 'scan%d' % scan + if state & gtk.gdk.SHIFT_MASK: + sig += ' shift' + if state & gtk.gdk.MOD5_MASK: + sig += ' altgr' + if group != 0: + sig += ' group%d' % group + return sig def set_layout(self, layout): """Sets the keyboard's layout from a layout description.""" @@ -478,24 +489,19 @@ class KeyboardWidget(KeyboardData, gtk.DrawingArea): text = k['key-label'] else: - for l in self.letter_map: - if l['scan'] == k['key-scan'] and \ - l['state'] == self.active_state & (gtk.gdk.SHIFT_MASK|gtk.gdk.MOD5_MASK) and \ - l['group'] == self.active_group: - text = l['letter'] - - if text == '' and self.record_map: - text = k['key-scan'] - - # else: - # info = self.keymap.translate_keyboard_state( - # k['key-scan'], self.active_state, self.active_group) - # if info: - # key = gtk.gdk.keyval_to_unicode(info[0]) - # try: - # text = unichr(key).encode('utf-8') - # except: - # pass + sig = self.get_key_sig(k['key-scan'], self.active_state, self.active_group) + if self.letter_map.has_key(sig): + text = self.letter_map[sig] + + #else: + # info = self.keymap.translate_keyboard_state( + # k['key-scan'], self.active_state, self.active_group) + # if info: + # key = gtk.gdk.keyval_to_unicode(info[0]) + # try: + # text = unichr(key).encode('utf-8') + # except: + # pass try: layout = self.create_pango_layout(unicode(text)) @@ -578,26 +584,15 @@ class KeyboardWidget(KeyboardData, gtk.DrawingArea): self.queue_draw() - if self.record_map and event.string: - l = { - 'scan': event.hardware_keycode, - 'state': int(event.state) & (gtk.gdk.SHIFT_MASK|gtk.gdk.MOD5_MASK), - 'group': event.group, - 'letter': unicode(event.string) - } - print '%r' % l - self.letter_map.append(l) - self._make_key_images(key) - self.queue_draw() + if event.string: + sig = self.get_key_sig(event.hardware_keycode, event.state, event.group) + if not self.letter_map.has_key(sig): + self.letter_map[sig] = event.string + self._make_key_images(key) + self.queue_draw() return False - def save_letter_map(self, filename): - text = simplejson.dumps(self.letter_map, sort_keys=True, indent=4) - f = open(filename, 'w') - f.write(text) - f.close() - def _keys_changed_cb(self, keymap): self._make_key_images() diff --git a/keybuilder.py b/keybuilder.py index 9d32161..38ec6d1 100755 --- a/keybuilder.py +++ b/keybuilder.py @@ -30,9 +30,12 @@ window.realize() image = keyboard.KeyboardImages(800,400) image.load_images() -k = keyboard.KeyboardWidget(image, window, True, record_map=True) +k = keyboard.KeyboardWidget(image, window, poll_keys=True) +try: + k.load_letter_map(sys.argv[1]) +except: + pass k.set_layout(keyboard.OLPC_LAYOUT) -k.load_key_map(sys.argv[1]) savebtn = gtk.Button() savebtn.add(gtk.Label('Save Keys')) diff --git a/lessons/en_US/en_US.key b/lessons/en_US/en_US.key index 9fa37cc..efc320d 100644 --- a/lessons/en_US/en_US.key +++ b/lessons/en_US/en_US.key @@ -1,2234 +1,188 @@ -[ - { - "group": 0, - "letter": "z", - "scan": 52, - "state": 0 - }, - { - "group": 0, - "letter": "z", - "scan": 52, - "state": 0 - }, - { - "group": 0, - "letter": "x", - "scan": 53, - "state": 0 - }, - { - "group": 0, - "letter": "x", - "scan": 53, - "state": 0 - }, - { - "group": 0, - "letter": "c", - "scan": 54, - "state": 0 - }, - { - "group": 0, - "letter": "c", - "scan": 54, - "state": 0 - }, - { - "group": 0, - "letter": "v", - "scan": 55, - "state": 0 - }, - { - "group": 0, - "letter": "v", - "scan": 55, - "state": 0 - }, - { - "group": 0, - "letter": "b", - "scan": 56, - "state": 0 - }, - { - "group": 0, - "letter": "b", - "scan": 56, - "state": 0 - }, - { - "group": 0, - "letter": "n", - "scan": 57, - "state": 0 - }, - { - "group": 0, - "letter": "n", - "scan": 57, - "state": 0 - }, - { - "group": 0, - "letter": "m", - "scan": 58, - "state": 0 - }, - { - "group": 0, - "letter": "m", - "scan": 58, - "state": 0 - }, - { - "group": 0, - "letter": ",", - "scan": 59, - "state": 0 - }, - { - "group": 0, - "letter": ",", - "scan": 59, - "state": 0 - }, - { - "group": 0, - "letter": ".", - "scan": 60, - "state": 0 - }, - { - "group": 0, - "letter": ".", - "scan": 60, - "state": 0 - }, - { - "group": 0, - "letter": "/", - "scan": 61, - "state": 0 - }, - { - "group": 0, - "letter": "/", - "scan": 61, - "state": 0 - }, - { - "group": 0, - "letter": "a", - "scan": 38, - "state": 0 - }, - { - "group": 0, - "letter": "a", - "scan": 38, - "state": 0 - }, - { - "group": 0, - "letter": "s", - "scan": 39, - "state": 0 - }, - { - "group": 0, - "letter": "s", - "scan": 39, - "state": 0 - }, - { - "group": 0, - "letter": "d", - "scan": 40, - "state": 0 - }, - { - "group": 0, - "letter": "d", - "scan": 40, - "state": 0 - }, - { - "group": 0, - "letter": "f", - "scan": 41, - "state": 0 - }, - { - "group": 0, - "letter": "f", - "scan": 41, - "state": 0 - }, - { - "group": 0, - "letter": "g", - "scan": 42, - "state": 0 - }, - { - "group": 0, - "letter": "g", - "scan": 42, - "state": 0 - }, - { - "group": 0, - "letter": "h", - "scan": 43, - "state": 0 - }, - { - "group": 0, - "letter": "h", - "scan": 43, - "state": 0 - }, - { - "group": 0, - "letter": "j", - "scan": 44, - "state": 0 - }, - { - "group": 0, - "letter": "j", - "scan": 44, - "state": 0 - }, - { - "group": 0, - "letter": "k", - "scan": 45, - "state": 0 - }, - { - "group": 0, - "letter": "k", - "scan": 45, - "state": 0 - }, - { - "group": 0, - "letter": "l", - "scan": 46, - "state": 0 - }, - { - "group": 0, - "letter": "l", - "scan": 46, - "state": 0 - }, - { - "group": 0, - "letter": ";", - "scan": 47, - "state": 0 - }, - { - "group": 0, - "letter": ";", - "scan": 47, - "state": 0 - }, - { - "group": 0, - "letter": "'", - "scan": 48, - "state": 0 - }, - { - "group": 0, - "letter": "'", - "scan": 48, - "state": 0 - }, - { - "group": 0, - "letter": "\\", - "scan": 51, - "state": 0 - }, - { - "group": 0, - "letter": "\\", - "scan": 51, - "state": 0 - }, - { - "group": 0, - "letter": "q", - "scan": 24, - "state": 0 - }, - { - "group": 0, - "letter": "q", - "scan": 24, - "state": 0 - }, - { - "group": 0, - "letter": "w", - "scan": 25, - "state": 0 - }, - { - "group": 0, - "letter": "w", - "scan": 25, - "state": 0 - }, - { - "group": 0, - "letter": "e", - "scan": 26, - "state": 0 - }, - { - "group": 0, - "letter": "e", - "scan": 26, - "state": 0 - }, - { - "group": 0, - "letter": "r", - "scan": 27, - "state": 0 - }, - { - "group": 0, - "letter": "r", - "scan": 27, - "state": 0 - }, - { - "group": 0, - "letter": "t", - "scan": 28, - "state": 0 - }, - { - "group": 0, - "letter": "t", - "scan": 28, - "state": 0 - }, - { - "group": 0, - "letter": "y", - "scan": 29, - "state": 0 - }, - { - "group": 0, - "letter": "y", - "scan": 29, - "state": 0 - }, - { - "group": 0, - "letter": "u", - "scan": 30, - "state": 0 - }, - { - "group": 0, - "letter": "u", - "scan": 30, - "state": 0 - }, - { - "group": 0, - "letter": "i", - "scan": 31, - "state": 0 - }, - { - "group": 0, - "letter": "i", - "scan": 31, - "state": 0 - }, - { - "group": 0, - "letter": "o", - "scan": 32, - "state": 0 - }, - { - "group": 0, - "letter": "o", - "scan": 32, - "state": 0 - }, - { - "group": 0, - "letter": "p", - "scan": 33, - "state": 0 - }, - { - "group": 0, - "letter": "p", - "scan": 33, - "state": 0 - }, - { - "group": 0, - "letter": "[", - "scan": 34, - "state": 0 - }, - { - "group": 0, - "letter": "[", - "scan": 34, - "state": 0 - }, - { - "group": 0, - "letter": "]", - "scan": 35, - "state": 0 - }, - { - "group": 0, - "letter": "]", - "scan": 35, - "state": 0 - }, - { - "group": 0, - "letter": "`", - "scan": 49, - "state": 0 - }, - { - "group": 0, - "letter": "`", - "scan": 49, - "state": 0 - }, - { - "group": 0, - "letter": "1", - "scan": 10, - "state": 0 - }, - { - "group": 0, - "letter": "1", - "scan": 10, - "state": 0 - }, - { - "group": 0, - "letter": "2", - "scan": 11, - "state": 0 - }, - { - "group": 0, - "letter": "2", - "scan": 11, - "state": 0 - }, - { - "group": 0, - "letter": "3", - "scan": 12, - "state": 0 - }, - { - "group": 0, - "letter": "3", - "scan": 12, - "state": 0 - }, - { - "group": 0, - "letter": "4", - "scan": 13, - "state": 0 - }, - { - "group": 0, - "letter": "4", - "scan": 13, - "state": 0 - }, - { - "group": 0, - "letter": "5", - "scan": 14, - "state": 0 - }, - { - "group": 0, - "letter": "5", - "scan": 14, - "state": 0 - }, - { - "group": 0, - "letter": "6", - "scan": 15, - "state": 0 - }, - { - "group": 0, - "letter": "6", - "scan": 15, - "state": 0 - }, - { - "group": 0, - "letter": "7", - "scan": 16, - "state": 0 - }, - { - "group": 0, - "letter": "7", - "scan": 16, - "state": 0 - }, - { - "group": 0, - "letter": "8", - "scan": 17, - "state": 0 - }, - { - "group": 0, - "letter": "8", - "scan": 17, - "state": 0 - }, - { - "group": 0, - "letter": "9", - "scan": 18, - "state": 0 - }, - { - "group": 0, - "letter": "9", - "scan": 18, - "state": 0 - }, - { - "group": 0, - "letter": "0", - "scan": 19, - "state": 0 - }, - { - "group": 0, - "letter": "0", - "scan": 19, - "state": 0 - }, - { - "group": 0, - "letter": "-", - "scan": 20, - "state": 0 - }, - { - "group": 0, - "letter": "-", - "scan": 20, - "state": 0 - }, - { - "group": 0, - "letter": "=", - "scan": 21, - "state": 0 - }, - { - "group": 0, - "letter": "=", - "scan": 21, - "state": 0 - }, - { - "group": 0, - "letter": "~", - "scan": 49, - "state": 1 - }, - { - "group": 0, - "letter": "~", - "scan": 49, - "state": 1 - }, - { - "group": 0, - "letter": "!", - "scan": 10, - "state": 1 - }, - { - "group": 0, - "letter": "!", - "scan": 10, - "state": 1 - }, - { - "group": 0, - "letter": "@", - "scan": 11, - "state": 1 - }, - { - "group": 0, - "letter": "@", - "scan": 11, - "state": 1 - }, - { - "group": 0, - "letter": "#", - "scan": 12, - "state": 1 - }, - { - "group": 0, - "letter": "#", - "scan": 12, - "state": 1 - }, - { - "group": 0, - "letter": "$", - "scan": 13, - "state": 1 - }, - { - "group": 0, - "letter": "$", - "scan": 13, - "state": 1 - }, - { - "group": 0, - "letter": "%", - "scan": 14, - "state": 1 - }, - { - "group": 0, - "letter": "%", - "scan": 14, - "state": 1 - }, - { - "group": 0, - "letter": "^", - "scan": 15, - "state": 1 - }, - { - "group": 0, - "letter": "^", - "scan": 15, - "state": 1 - }, - { - "group": 0, - "letter": "&", - "scan": 16, - "state": 1 - }, - { - "group": 0, - "letter": "&", - "scan": 16, - "state": 1 - }, - { - "group": 0, - "letter": "*", - "scan": 17, - "state": 1 - }, - { - "group": 0, - "letter": "*", - "scan": 17, - "state": 1 - }, - { - "group": 0, - "letter": "(", - "scan": 18, - "state": 1 - }, - { - "group": 0, - "letter": "(", - "scan": 18, - "state": 1 - }, - { - "group": 0, - "letter": ")", - "scan": 19, - "state": 1 - }, - { - "group": 0, - "letter": ")", - "scan": 19, - "state": 1 - }, - { - "group": 0, - "letter": "_", - "scan": 20, - "state": 1 - }, - { - "group": 0, - "letter": "_", - "scan": 20, - "state": 1 - }, - { - "group": 0, - "letter": "+", - "scan": 21, - "state": 1 - }, - { - "group": 0, - "letter": "+", - "scan": 21, - "state": 1 - }, - { - "group": 0, - "letter": "Q", - "scan": 24, - "state": 1 - }, - { - "group": 0, - "letter": "Q", - "scan": 24, - "state": 1 - }, - { - "group": 0, - "letter": "W", - "scan": 25, - "state": 1 - }, - { - "group": 0, - "letter": "W", - "scan": 25, - "state": 1 - }, - { - "group": 0, - "letter": "E", - "scan": 26, - "state": 1 - }, - { - "group": 0, - "letter": "E", - "scan": 26, - "state": 1 - }, - { - "group": 0, - "letter": "R", - "scan": 27, - "state": 1 - }, - { - "group": 0, - "letter": "R", - "scan": 27, - "state": 1 - }, - { - "group": 0, - "letter": "T", - "scan": 28, - "state": 1 - }, - { - "group": 0, - "letter": "T", - "scan": 28, - "state": 1 - }, - { - "group": 0, - "letter": "Y", - "scan": 29, - "state": 1 - }, - { - "group": 0, - "letter": "Y", - "scan": 29, - "state": 1 - }, - { - "group": 0, - "letter": "U", - "scan": 30, - "state": 1 - }, - { - "group": 0, - "letter": "U", - "scan": 30, - "state": 1 - }, - { - "group": 0, - "letter": "I", - "scan": 31, - "state": 1 - }, - { - "group": 0, - "letter": "I", - "scan": 31, - "state": 1 - }, - { - "group": 0, - "letter": "O", - "scan": 32, - "state": 1 - }, - { - "group": 0, - "letter": "O", - "scan": 32, - "state": 1 - }, - { - "group": 0, - "letter": "P", - "scan": 33, - "state": 1 - }, - { - "group": 0, - "letter": "P", - "scan": 33, - "state": 1 - }, - { - "group": 0, - "letter": "{", - "scan": 34, - "state": 1 - }, - { - "group": 0, - "letter": "{", - "scan": 34, - "state": 1 - }, - { - "group": 0, - "letter": "}", - "scan": 35, - "state": 1 - }, - { - "group": 0, - "letter": "}", - "scan": 35, - "state": 1 - }, - { - "group": 0, - "letter": "A", - "scan": 38, - "state": 1 - }, - { - "group": 0, - "letter": "A", - "scan": 38, - "state": 1 - }, - { - "group": 0, - "letter": "S", - "scan": 39, - "state": 1 - }, - { - "group": 0, - "letter": "S", - "scan": 39, - "state": 1 - }, - { - "group": 0, - "letter": "D", - "scan": 40, - "state": 1 - }, - { - "group": 0, - "letter": "D", - "scan": 40, - "state": 1 - }, - { - "group": 0, - "letter": "F", - "scan": 41, - "state": 1 - }, - { - "group": 0, - "letter": "F", - "scan": 41, - "state": 1 - }, - { - "group": 0, - "letter": "G", - "scan": 42, - "state": 1 - }, - { - "group": 0, - "letter": "G", - "scan": 42, - "state": 1 - }, - { - "group": 0, - "letter": "H", - "scan": 43, - "state": 1 - }, - { - "group": 0, - "letter": "H", - "scan": 43, - "state": 1 - }, - { - "group": 0, - "letter": "J", - "scan": 44, - "state": 1 - }, - { - "group": 0, - "letter": "J", - "scan": 44, - "state": 1 - }, - { - "group": 0, - "letter": "K", - "scan": 45, - "state": 1 - }, - { - "group": 0, - "letter": "K", - "scan": 45, - "state": 1 - }, - { - "group": 0, - "letter": "L", - "scan": 46, - "state": 1 - }, - { - "group": 0, - "letter": "L", - "scan": 46, - "state": 1 - }, - { - "group": 0, - "letter": ":", - "scan": 47, - "state": 1 - }, - { - "group": 0, - "letter": ":", - "scan": 47, - "state": 1 - }, - { - "group": 0, - "letter": "\"", - "scan": 48, - "state": 1 - }, - { - "group": 0, - "letter": "\"", - "scan": 48, - "state": 1 - }, - { - "group": 0, - "letter": "|", - "scan": 51, - "state": 1 - }, - { - "group": 0, - "letter": "|", - "scan": 51, - "state": 1 - }, - { - "group": 0, - "letter": "Z", - "scan": 52, - "state": 1 - }, - { - "group": 0, - "letter": "Z", - "scan": 52, - "state": 1 - }, - { - "group": 0, - "letter": "X", - "scan": 53, - "state": 1 - }, - { - "group": 0, - "letter": "X", - "scan": 53, - "state": 1 - }, - { - "group": 0, - "letter": "C", - "scan": 54, - "state": 1 - }, - { - "group": 0, - "letter": "C", - "scan": 54, - "state": 1 - }, - { - "group": 0, - "letter": "V", - "scan": 55, - "state": 1 - }, - { - "group": 0, - "letter": "V", - "scan": 55, - "state": 1 - }, - { - "group": 0, - "letter": "B", - "scan": 56, - "state": 1 - }, - { - "group": 0, - "letter": "B", - "scan": 56, - "state": 1 - }, - { - "group": 0, - "letter": "N", - "scan": 57, - "state": 1 - }, - { - "group": 0, - "letter": "N", - "scan": 57, - "state": 1 - }, - { - "group": 0, - "letter": "M", - "scan": 58, - "state": 1 - }, - { - "group": 0, - "letter": "M", - "scan": 58, - "state": 1 - }, - { - "group": 0, - "letter": "<", - "scan": 59, - "state": 1 - }, - { - "group": 0, - "letter": "<", - "scan": 59, - "state": 1 - }, - { - "group": 0, - "letter": ">", - "scan": 60, - "state": 1 - }, - { - "group": 0, - "letter": ">", - "scan": 60, - "state": 1 - }, - { - "group": 0, - "letter": "?", - "scan": 61, - "state": 1 - }, - { - "group": 0, - "letter": "?", - "scan": 61, - "state": 1 - }, - { - "group": 0, - "letter": "\u00a1", - "scan": 10, - "state": 128 - }, - { - "group": 0, - "letter": "\u00a1", - "scan": 10, - "state": 128 - }, - { - "group": 0, - "letter": "\u00ac", - "scan": 11, - "state": 128 - }, - { - "group": 0, - "letter": "\u00ac", - "scan": 11, - "state": 128 - }, - { - "group": 0, - "letter": "\u0300", - "scan": 12, - "state": 128 - }, - { - "group": 0, - "letter": "\u0300", - "scan": 12, - "state": 128 - }, - { - "group": 0, - "letter": "\u0301", - "scan": 13, - "state": 128 - }, - { - "group": 0, - "letter": "\u0301", - "scan": 13, - "state": 128 - }, - { - "group": 0, - "letter": "\u0306", - "scan": 14, - "state": 128 - }, - { - "group": 0, - "letter": "\u0306", - "scan": 14, - "state": 128 - }, - { - "group": 0, - "letter": "\u030a", - "scan": 15, - "state": 128 - }, - { - "group": 0, - "letter": "\u030a", - "scan": 15, - "state": 128 - }, - { - "group": 0, - "letter": "\u0302", - "scan": 16, - "state": 128 - }, - { - "group": 0, - "letter": "\u0302", - "scan": 16, - "state": 128 - }, - { - "group": 0, - "letter": "\u030c", - "scan": 17, - "state": 128 - }, - { - "group": 0, - "letter": "\u030c", - "scan": 17, - "state": 128 - }, - { - "group": 0, - "letter": "\u0307", - "scan": 18, - "state": 128 - }, - { - "group": 0, - "letter": "\u0307", - "scan": 18, - "state": 128 - }, - { - "group": 0, - "letter": "\u0308", - "scan": 19, - "state": 128 - }, - { - "group": 0, - "letter": "\u0308", - "scan": 19, - "state": 128 - }, - { - "group": 0, - "letter": "\u0304", - "scan": 20, - "state": 128 - }, - { - "group": 0, - "letter": "\u0304", - "scan": 20, - "state": 128 - }, - { - "group": 0, - "letter": "\u0303", - "scan": 21, - "state": 128 - }, - { - "group": 0, - "letter": "\u0303", - "scan": 21, - "state": 128 - }, - { - "group": 0, - "letter": "\u03c9", - "scan": 24, - "state": 128 - }, - { - "group": 0, - "letter": "\u03c9", - "scan": 24, - "state": 128 - }, - { - "group": 0, - "letter": "\u00f8", - "scan": 25, - "state": 128 - }, - { - "group": 0, - "letter": "\u00f8", - "scan": 25, - "state": 128 - }, - { - "group": 0, - "letter": "\u0153", - "scan": 26, - "state": 128 - }, - { - "group": 0, - "letter": "\u0153", - "scan": 26, - "state": 128 - }, - { - "group": 0, - "letter": "\u0327", - "scan": 27, - "state": 128 - }, - { - "group": 0, - "letter": "\u0327", - "scan": 27, - "state": 128 - }, - { - "group": 0, - "letter": "\u032e", - "scan": 28, - "state": 128 - }, - { - "group": 0, - "letter": "\u032e", - "scan": 28, - "state": 128 - }, - { - "group": 0, - "letter": "\u0325", - "scan": 29, - "state": 128 - }, - { - "group": 0, - "letter": "\u0325", - "scan": 29, - "state": 128 - }, - { - "group": 0, - "letter": "\u032d", - "scan": 30, - "state": 128 - }, - { - "group": 0, - "letter": "\u032d", - "scan": 30, - "state": 128 - }, - { - "group": 0, - "letter": "\u032c", - "scan": 31, - "state": 128 - }, - { - "group": 0, - "letter": "\u032c", - "scan": 31, - "state": 128 - }, - { - "group": 0, - "letter": "\u0323", - "scan": 32, - "state": 128 - }, - { - "group": 0, - "letter": "\u0323", - "scan": 32, - "state": 128 - }, - { - "group": 0, - "letter": "\u0324", - "scan": 33, - "state": 128 - }, - { - "group": 0, - "letter": "\u0324", - "scan": 33, - "state": 128 - }, - { - "group": 0, - "letter": "\u0331", - "scan": 34, - "state": 128 - }, - { - "group": 0, - "letter": "\u0331", - "scan": 34, - "state": 128 - }, - { - "group": 0, - "letter": "\u0330", - "scan": 35, - "state": 128 - }, - { - "group": 0, - "letter": "\u0330", - "scan": 35, - "state": 128 - }, - { - "group": 0, - "letter": "\u00e6", - "scan": 38, - "state": 128 - }, - { - "group": 0, - "letter": "\u00e6", - "scan": 38, - "state": 128 - }, - { - "group": 0, - "letter": "\u00df", - "scan": 39, - "state": 128 - }, - { - "group": 0, - "letter": "\u00df", - "scan": 39, - "state": 128 - }, - { - "group": 0, - "letter": "\u00f0", - "scan": 40, - "state": 128 - }, - { - "group": 0, - "letter": "\u00f0", - "scan": 40, - "state": 128 - }, - { - "group": 0, - "letter": "\u00fe", - "scan": 41, - "state": 128 - }, - { - "group": 0, - "letter": "\u00fe", - "scan": 41, - "state": 128 - }, - { - "group": 0, - "letter": "g", - "scan": 42, - "state": 128 - }, - { - "group": 0, - "letter": "g", - "scan": 42, - "state": 128 - }, - { - "group": 0, - "letter": "\u00a3", - "scan": 43, - "state": 128 - }, - { - "group": 0, - "letter": "\u00a3", - "scan": 43, - "state": 128 - }, - { - "group": 0, - "letter": "\u20ac", - "scan": 44, - "state": 128 - }, - { - "group": 0, - "letter": "\u20ac", - "scan": 44, - "state": 128 - }, - { - "group": 0, - "letter": "k", - "scan": 45, - "state": 128 - }, - { - "group": 0, - "letter": "k", - "scan": 45, - "state": 128 - }, - { - "group": 0, - "letter": "l", - "scan": 46, - "state": 128 - }, - { - "group": 0, - "letter": "l", - "scan": 46, - "state": 128 - }, - { - "group": 0, - "letter": "\u00ba", - "scan": 47, - "state": 128 - }, - { - "group": 0, - "letter": "\u00ba", - "scan": 47, - "state": 128 - }, - { - "group": 0, - "letter": "\u00a4", - "scan": 48, - "state": 128 - }, - { - "group": 0, - "letter": "\u00a4", - "scan": 48, - "state": 128 - }, - { - "group": 0, - "letter": "\u00a7", - "scan": 51, - "state": 128 - }, - { - "group": 0, - "letter": "\u00a7", - "scan": 51, - "state": 128 - }, - { - "group": 0, - "letter": "z", - "scan": 52, - "state": 128 - }, - { - "group": 0, - "letter": "z", - "scan": 52, - "state": 128 - }, - { - "group": 0, - "letter": "x", - "scan": 53, - "state": 128 - }, - { - "group": 0, - "letter": "x", - "scan": 53, - "state": 128 - }, - { - "group": 0, - "letter": "\u00e7", - "scan": 54, - "state": 128 - }, - { - "group": 0, - "letter": "\u00e7", - "scan": 54, - "state": 128 - }, - { - "group": 0, - "letter": "v", - "scan": 55, - "state": 128 - }, - { - "group": 0, - "letter": "v", - "scan": 55, - "state": 128 - }, - { - "group": 0, - "letter": "b", - "scan": 56, - "state": 128 - }, - { - "group": 0, - "letter": "b", - "scan": 56, - "state": 128 - }, - { - "group": 0, - "letter": "\u00f1", - "scan": 57, - "state": 128 - }, - { - "group": 0, - "letter": "\u00f1", - "scan": 57, - "state": 128 - }, - { - "group": 0, - "letter": "\u00b5", - "scan": 58, - "state": 128 - }, - { - "group": 0, - "letter": "\u00b5", - "scan": 58, - "state": 128 - }, - { - "group": 0, - "letter": "\u00ab", - "scan": 59, - "state": 128 - }, - { - "group": 0, - "letter": "\u00ab", - "scan": 59, - "state": 128 - }, - { - "group": 0, - "letter": "\u00bb", - "scan": 60, - "state": 128 - }, - { - "group": 0, - "letter": "\u00bb", - "scan": 60, - "state": 128 - }, - { - "group": 0, - "letter": "\u00bf", - "scan": 61, - "state": 128 - }, - { - "group": 0, - "letter": "\u00bf", - "scan": 61, - "state": 128 - }, - { - "group": 0, - "letter": "\u00a1", - "scan": 10, - "state": 129 - }, - { - "group": 0, - "letter": "\u00a1", - "scan": 10, - "state": 129 - }, - { - "group": 0, - "letter": "\u00ac", - "scan": 11, - "state": 129 - }, - { - "group": 0, - "letter": "\u00ac", - "scan": 11, - "state": 129 - }, - { - "group": 0, - "letter": "\u0300", - "scan": 12, - "state": 129 - }, - { - "group": 0, - "letter": "\u0300", - "scan": 12, - "state": 129 - }, - { - "group": 0, - "letter": "\u0301", - "scan": 13, - "state": 129 - }, - { - "group": 0, - "letter": "\u0301", - "scan": 13, - "state": 129 - }, - { - "group": 0, - "letter": "\u0306", - "scan": 14, - "state": 129 - }, - { - "group": 0, - "letter": "\u0306", - "scan": 14, - "state": 129 - }, - { - "group": 0, - "letter": "\u030a", - "scan": 15, - "state": 129 - }, - { - "group": 0, - "letter": "\u030a", - "scan": 15, - "state": 129 - }, - { - "group": 0, - "letter": "\u0302", - "scan": 16, - "state": 129 - }, - { - "group": 0, - "letter": "\u0302", - "scan": 16, - "state": 129 - }, - { - "group": 0, - "letter": "\u030c", - "scan": 17, - "state": 129 - }, - { - "group": 0, - "letter": "\u030c", - "scan": 17, - "state": 129 - }, - { - "group": 0, - "letter": "\u0307", - "scan": 18, - "state": 129 - }, - { - "group": 0, - "letter": "\u0307", - "scan": 18, - "state": 129 - }, - { - "group": 0, - "letter": "\u0308", - "scan": 19, - "state": 129 - }, - { - "group": 0, - "letter": "\u0308", - "scan": 19, - "state": 129 - }, - { - "group": 0, - "letter": "\u0304", - "scan": 20, - "state": 129 - }, - { - "group": 0, - "letter": "\u0304", - "scan": 20, - "state": 129 - }, - { - "group": 0, - "letter": "\u0303", - "scan": 21, - "state": 129 - }, - { - "group": 0, - "letter": "\u0303", - "scan": 21, - "state": 129 - }, - { - "group": 0, - "letter": "\u03a9", - "scan": 24, - "state": 129 - }, - { - "group": 0, - "letter": "\u03a9", - "scan": 24, - "state": 129 - }, - { - "group": 0, - "letter": "\u00d8", - "scan": 25, - "state": 129 - }, - { - "group": 0, - "letter": "\u00d8", - "scan": 25, - "state": 129 - }, - { - "group": 0, - "letter": "\u0152", - "scan": 26, - "state": 129 - }, - { - "group": 0, - "letter": "\u0152", - "scan": 26, - "state": 129 - }, - { - "group": 0, - "letter": "\u0327", - "scan": 27, - "state": 129 - }, - { - "group": 0, - "letter": "\u0327", - "scan": 27, - "state": 129 - }, - { - "group": 0, - "letter": "\u032e", - "scan": 28, - "state": 129 - }, - { - "group": 0, - "letter": "\u032e", - "scan": 28, - "state": 129 - }, - { - "group": 0, - "letter": "\u0325", - "scan": 29, - "state": 129 - }, - { - "group": 0, - "letter": "\u0325", - "scan": 29, - "state": 129 - }, - { - "group": 0, - "letter": "\u032d", - "scan": 30, - "state": 129 - }, - { - "group": 0, - "letter": "\u032d", - "scan": 30, - "state": 129 - }, - { - "group": 0, - "letter": "\u032c", - "scan": 31, - "state": 129 - }, - { - "group": 0, - "letter": "\u032c", - "scan": 31, - "state": 129 - }, - { - "group": 0, - "letter": "\u0323", - "scan": 32, - "state": 129 - }, - { - "group": 0, - "letter": "\u0323", - "scan": 32, - "state": 129 - }, - { - "group": 0, - "letter": "\u0324", - "scan": 33, - "state": 129 - }, - { - "group": 0, - "letter": "\u0324", - "scan": 33, - "state": 129 - }, - { - "group": 0, - "letter": "\u0331", - "scan": 34, - "state": 129 - }, - { - "group": 0, - "letter": "\u0331", - "scan": 34, - "state": 129 - }, - { - "group": 0, - "letter": "\u0330", - "scan": 35, - "state": 129 - }, - { - "group": 0, - "letter": "\u0330", - "scan": 35, - "state": 129 - }, - { - "group": 0, - "letter": "\u00c6", - "scan": 38, - "state": 129 - }, - { - "group": 0, - "letter": "\u00c6", - "scan": 38, - "state": 129 - }, - { - "group": 0, - "letter": "\u1e9c", - "scan": 39, - "state": 129 - }, - { - "group": 0, - "letter": "\u1e9c", - "scan": 39, - "state": 129 - }, - { - "group": 0, - "letter": "\u00d0", - "scan": 40, - "state": 129 - }, - { - "group": 0, - "letter": "\u00d0", - "scan": 40, - "state": 129 - }, - { - "group": 0, - "letter": "\u00de", - "scan": 41, - "state": 129 - }, - { - "group": 0, - "letter": "\u00de", - "scan": 41, - "state": 129 - }, - { - "group": 0, - "letter": "G", - "scan": 42, - "state": 129 - }, - { - "group": 0, - "letter": "G", - "scan": 42, - "state": 129 - }, - { - "group": 0, - "letter": "\u00a3", - "scan": 43, - "state": 129 - }, - { - "group": 0, - "letter": "\u00a3", - "scan": 43, - "state": 129 - }, - { - "group": 0, - "letter": "\u20ac", - "scan": 44, - "state": 129 - }, - { - "group": 0, - "letter": "\u20ac", - "scan": 44, - "state": 129 - }, - { - "group": 0, - "letter": "K", - "scan": 45, - "state": 129 - }, - { - "group": 0, - "letter": "K", - "scan": 45, - "state": 129 - }, - { - "group": 0, - "letter": "L", - "scan": 46, - "state": 129 - }, - { - "group": 0, - "letter": "L", - "scan": 46, - "state": 129 - }, - { - "group": 0, - "letter": "\u00aa", - "scan": 47, - "state": 129 - }, - { - "group": 0, - "letter": "\u00aa", - "scan": 47, - "state": 129 - }, - { - "group": 0, - "letter": "\u00a4", - "scan": 48, - "state": 129 - }, - { - "group": 0, - "letter": "\u00a4", - "scan": 48, - "state": 129 - }, - { - "group": 0, - "letter": "\u00a7", - "scan": 51, - "state": 129 - }, - { - "group": 0, - "letter": "\u00a7", - "scan": 51, - "state": 129 - }, - { - "group": 0, - "letter": "Z", - "scan": 52, - "state": 129 - }, - { - "group": 0, - "letter": "Z", - "scan": 52, - "state": 129 - }, - { - "group": 0, - "letter": "X", - "scan": 53, - "state": 129 - }, - { - "group": 0, - "letter": "X", - "scan": 53, - "state": 129 - }, - { - "group": 0, - "letter": "\u00c7", - "scan": 54, - "state": 129 - }, - { - "group": 0, - "letter": "\u00c7", - "scan": 54, - "state": 129 - }, - { - "group": 0, - "letter": "V", - "scan": 55, - "state": 129 - }, - { - "group": 0, - "letter": "V", - "scan": 55, - "state": 129 - }, - { - "group": 0, - "letter": "B", - "scan": 56, - "state": 129 - }, - { - "group": 0, - "letter": "B", - "scan": 56, - "state": 129 - }, - { - "group": 0, - "letter": "\u00d1", - "scan": 57, - "state": 129 - }, - { - "group": 0, - "letter": "\u00d1", - "scan": 57, - "state": 129 - }, - { - "group": 0, - "letter": "\u00b5", - "scan": 58, - "state": 129 - }, - { - "group": 0, - "letter": "\u00b5", - "scan": 58, - "state": 129 - }, - { - "group": 0, - "letter": "\u00ab", - "scan": 59, - "state": 129 - }, - { - "group": 0, - "letter": "\u00ab", - "scan": 59, - "state": 129 - }, - { - "group": 0, - "letter": "\u00bb", - "scan": 60, - "state": 129 - }, - { - "group": 0, - "letter": "\u00bb", - "scan": 60, - "state": 129 - }, - { - "group": 0, - "letter": "\u00bf", - "scan": 61, - "state": 129 - }, - { - "group": 0, - "letter": "\u00bf", - "scan": 61, - "state": 129 - } -] \ No newline at end of file +{ + "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/lessons/ne_NP/ne_NP.key b/lessons/ne_NP/ne_NP.key index 4dc84da..e87c51b 100644 --- a/lessons/ne_NP/ne_NP.key +++ b/lessons/ne_NP/ne_NP.key @@ -1,2282 +1,190 @@ -[ - { - "group": 0, - "letter": "`", - "scan": 49, - "state": 0 - }, - { - "group": 0, - "letter": "`", - "scan": 49, - "state": 0 - }, - { - "group": 0, - "letter": "1", - "scan": 10, - "state": 0 - }, - { - "group": 0, - "letter": "1", - "scan": 10, - "state": 0 - }, - { - "group": 0, - "letter": "2", - "scan": 11, - "state": 0 - }, - { - "group": 0, - "letter": "2", - "scan": 11, - "state": 0 - }, - { - "group": 0, - "letter": "3", - "scan": 12, - "state": 0 - }, - { - "group": 0, - "letter": "3", - "scan": 12, - "state": 0 - }, - { - "group": 0, - "letter": "4", - "scan": 13, - "state": 0 - }, - { - "group": 0, - "letter": "4", - "scan": 13, - "state": 0 - }, - { - "group": 0, - "letter": "5", - "scan": 14, - "state": 0 - }, - { - "group": 0, - "letter": "5", - "scan": 14, - "state": 0 - }, - { - "group": 0, - "letter": "6", - "scan": 15, - "state": 0 - }, - { - "group": 0, - "letter": "6", - "scan": 15, - "state": 0 - }, - { - "group": 0, - "letter": "7", - "scan": 16, - "state": 0 - }, - { - "group": 0, - "letter": "7", - "scan": 16, - "state": 0 - }, - { - "group": 0, - "letter": "8", - "scan": 17, - "state": 0 - }, - { - "group": 0, - "letter": "8", - "scan": 17, - "state": 0 - }, - { - "group": 0, - "letter": "9", - "scan": 18, - "state": 0 - }, - { - "group": 0, - "letter": "9", - "scan": 18, - "state": 0 - }, - { - "group": 0, - "letter": "0", - "scan": 19, - "state": 0 - }, - { - "group": 0, - "letter": "0", - "scan": 19, - "state": 0 - }, - { - "group": 0, - "letter": "-", - "scan": 20, - "state": 0 - }, - { - "group": 0, - "letter": "-", - "scan": 20, - "state": 0 - }, - { - "group": 0, - "letter": "=", - "scan": 21, - "state": 0 - }, - { - "group": 0, - "letter": "=", - "scan": 21, - "state": 0 - }, - { - "group": 0, - "letter": "q", - "scan": 24, - "state": 0 - }, - { - "group": 0, - "letter": "q", - "scan": 24, - "state": 0 - }, - { - "group": 0, - "letter": "w", - "scan": 25, - "state": 0 - }, - { - "group": 0, - "letter": "w", - "scan": 25, - "state": 0 - }, - { - "group": 0, - "letter": "e", - "scan": 26, - "state": 0 - }, - { - "group": 0, - "letter": "e", - "scan": 26, - "state": 0 - }, - { - "group": 0, - "letter": "r", - "scan": 27, - "state": 0 - }, - { - "group": 0, - "letter": "r", - "scan": 27, - "state": 0 - }, - { - "group": 0, - "letter": "t", - "scan": 28, - "state": 0 - }, - { - "group": 0, - "letter": "t", - "scan": 28, - "state": 0 - }, - { - "group": 0, - "letter": "y", - "scan": 29, - "state": 0 - }, - { - "group": 0, - "letter": "y", - "scan": 29, - "state": 0 - }, - { - "group": 0, - "letter": "u", - "scan": 30, - "state": 0 - }, - { - "group": 0, - "letter": "u", - "scan": 30, - "state": 0 - }, - { - "group": 0, - "letter": "i", - "scan": 31, - "state": 0 - }, - { - "group": 0, - "letter": "i", - "scan": 31, - "state": 0 - }, - { - "group": 0, - "letter": "o", - "scan": 32, - "state": 0 - }, - { - "group": 0, - "letter": "o", - "scan": 32, - "state": 0 - }, - { - "group": 0, - "letter": "p", - "scan": 33, - "state": 0 - }, - { - "group": 0, - "letter": "p", - "scan": 33, - "state": 0 - }, - { - "group": 0, - "letter": "[", - "scan": 34, - "state": 0 - }, - { - "group": 0, - "letter": "[", - "scan": 34, - "state": 0 - }, - { - "group": 0, - "letter": "]", - "scan": 35, - "state": 0 - }, - { - "group": 0, - "letter": "]", - "scan": 35, - "state": 0 - }, - { - "group": 0, - "letter": "a", - "scan": 38, - "state": 0 - }, - { - "group": 0, - "letter": "a", - "scan": 38, - "state": 0 - }, - { - "group": 0, - "letter": "s", - "scan": 39, - "state": 0 - }, - { - "group": 0, - "letter": "s", - "scan": 39, - "state": 0 - }, - { - "group": 0, - "letter": "d", - "scan": 40, - "state": 0 - }, - { - "group": 0, - "letter": "d", - "scan": 40, - "state": 0 - }, - { - "group": 0, - "letter": "f", - "scan": 41, - "state": 0 - }, - { - "group": 0, - "letter": "f", - "scan": 41, - "state": 0 - }, - { - "group": 0, - "letter": "g", - "scan": 42, - "state": 0 - }, - { - "group": 0, - "letter": "g", - "scan": 42, - "state": 0 - }, - { - "group": 0, - "letter": "h", - "scan": 43, - "state": 0 - }, - { - "group": 0, - "letter": "h", - "scan": 43, - "state": 0 - }, - { - "group": 0, - "letter": "j", - "scan": 44, - "state": 0 - }, - { - "group": 0, - "letter": "j", - "scan": 44, - "state": 0 - }, - { - "group": 0, - "letter": "k", - "scan": 45, - "state": 0 - }, - { - "group": 0, - "letter": "k", - "scan": 45, - "state": 0 - }, - { - "group": 0, - "letter": "l", - "scan": 46, - "state": 0 - }, - { - "group": 0, - "letter": "l", - "scan": 46, - "state": 0 - }, - { - "group": 0, - "letter": ";", - "scan": 47, - "state": 0 - }, - { - "group": 0, - "letter": ";", - "scan": 47, - "state": 0 - }, - { - "group": 0, - "letter": "'", - "scan": 48, - "state": 0 - }, - { - "group": 0, - "letter": "'", - "scan": 48, - "state": 0 - }, - { - "group": 0, - "letter": "\\", - "scan": 51, - "state": 0 - }, - { - "group": 0, - "letter": "\\", - "scan": 51, - "state": 0 - }, - { - "group": 0, - "letter": "z", - "scan": 52, - "state": 0 - }, - { - "group": 0, - "letter": "z", - "scan": 52, - "state": 0 - }, - { - "group": 0, - "letter": "x", - "scan": 53, - "state": 0 - }, - { - "group": 0, - "letter": "x", - "scan": 53, - "state": 0 - }, - { - "group": 0, - "letter": "c", - "scan": 54, - "state": 0 - }, - { - "group": 0, - "letter": "c", - "scan": 54, - "state": 0 - }, - { - "group": 0, - "letter": "v", - "scan": 55, - "state": 0 - }, - { - "group": 0, - "letter": "v", - "scan": 55, - "state": 0 - }, - { - "group": 0, - "letter": "b", - "scan": 56, - "state": 0 - }, - { - "group": 0, - "letter": "b", - "scan": 56, - "state": 0 - }, - { - "group": 0, - "letter": "n", - "scan": 57, - "state": 0 - }, - { - "group": 0, - "letter": "n", - "scan": 57, - "state": 0 - }, - { - "group": 0, - "letter": "m", - "scan": 58, - "state": 0 - }, - { - "group": 0, - "letter": "m", - "scan": 58, - "state": 0 - }, - { - "group": 0, - "letter": ",", - "scan": 59, - "state": 0 - }, - { - "group": 0, - "letter": ",", - "scan": 59, - "state": 0 - }, - { - "group": 0, - "letter": ".", - "scan": 60, - "state": 0 - }, - { - "group": 0, - "letter": ".", - "scan": 60, - "state": 0 - }, - { - "group": 0, - "letter": "/", - "scan": 61, - "state": 0 - }, - { - "group": 0, - "letter": "/", - "scan": 61, - "state": 0 - }, - { - "group": 0, - "letter": "~", - "scan": 49, - "state": 1 - }, - { - "group": 0, - "letter": "~", - "scan": 49, - "state": 1 - }, - { - "group": 0, - "letter": "!", - "scan": 10, - "state": 1 - }, - { - "group": 0, - "letter": "!", - "scan": 10, - "state": 1 - }, - { - "group": 0, - "letter": "@", - "scan": 11, - "state": 1 - }, - { - "group": 0, - "letter": "@", - "scan": 11, - "state": 1 - }, - { - "group": 0, - "letter": "#", - "scan": 12, - "state": 1 - }, - { - "group": 0, - "letter": "#", - "scan": 12, - "state": 1 - }, - { - "group": 0, - "letter": "$", - "scan": 13, - "state": 1 - }, - { - "group": 0, - "letter": "$", - "scan": 13, - "state": 1 - }, - { - "group": 0, - "letter": "%", - "scan": 14, - "state": 1 - }, - { - "group": 0, - "letter": "%", - "scan": 14, - "state": 1 - }, - { - "group": 0, - "letter": "^", - "scan": 15, - "state": 1 - }, - { - "group": 0, - "letter": "^", - "scan": 15, - "state": 1 - }, - { - "group": 0, - "letter": "&", - "scan": 16, - "state": 1 - }, - { - "group": 0, - "letter": "&", - "scan": 16, - "state": 1 - }, - { - "group": 0, - "letter": "*", - "scan": 17, - "state": 1 - }, - { - "group": 0, - "letter": "*", - "scan": 17, - "state": 1 - }, - { - "group": 0, - "letter": ")", - "scan": 19, - "state": 1 - }, - { - "group": 0, - "letter": ")", - "scan": 19, - "state": 1 - }, - { - "group": 0, - "letter": "*", - "scan": 17, - "state": 1 - }, - { - "group": 0, - "letter": "*", - "scan": 17, - "state": 1 - }, - { - "group": 0, - "letter": "(", - "scan": 18, - "state": 1 - }, - { - "group": 0, - "letter": "(", - "scan": 18, - "state": 1 - }, - { - "group": 0, - "letter": "_", - "scan": 20, - "state": 1 - }, - { - "group": 0, - "letter": "_", - "scan": 20, - "state": 1 - }, - { - "group": 0, - "letter": "+", - "scan": 21, - "state": 1 - }, - { - "group": 0, - "letter": "+", - "scan": 21, - "state": 1 - }, - { - "group": 0, - "letter": "Q", - "scan": 24, - "state": 1 - }, - { - "group": 0, - "letter": "Q", - "scan": 24, - "state": 1 - }, - { - "group": 0, - "letter": "W", - "scan": 25, - "state": 1 - }, - { - "group": 0, - "letter": "W", - "scan": 25, - "state": 1 - }, - { - "group": 0, - "letter": "E", - "scan": 26, - "state": 1 - }, - { - "group": 0, - "letter": "E", - "scan": 26, - "state": 1 - }, - { - "group": 0, - "letter": "R", - "scan": 27, - "state": 1 - }, - { - "group": 0, - "letter": "R", - "scan": 27, - "state": 1 - }, - { - "group": 0, - "letter": "T", - "scan": 28, - "state": 1 - }, - { - "group": 0, - "letter": "T", - "scan": 28, - "state": 1 - }, - { - "group": 0, - "letter": "Y", - "scan": 29, - "state": 1 - }, - { - "group": 0, - "letter": "Y", - "scan": 29, - "state": 1 - }, - { - "group": 0, - "letter": "U", - "scan": 30, - "state": 1 - }, - { - "group": 0, - "letter": "U", - "scan": 30, - "state": 1 - }, - { - "group": 0, - "letter": "I", - "scan": 31, - "state": 1 - }, - { - "group": 0, - "letter": "I", - "scan": 31, - "state": 1 - }, - { - "group": 0, - "letter": "O", - "scan": 32, - "state": 1 - }, - { - "group": 0, - "letter": "O", - "scan": 32, - "state": 1 - }, - { - "group": 0, - "letter": "P", - "scan": 33, - "state": 1 - }, - { - "group": 0, - "letter": "P", - "scan": 33, - "state": 1 - }, - { - "group": 0, - "letter": "{", - "scan": 34, - "state": 1 - }, - { - "group": 0, - "letter": "{", - "scan": 34, - "state": 1 - }, - { - "group": 0, - "letter": "}", - "scan": 35, - "state": 1 - }, - { - "group": 0, - "letter": "}", - "scan": 35, - "state": 1 - }, - { - "group": 0, - "letter": "A", - "scan": 38, - "state": 1 - }, - { - "group": 0, - "letter": "A", - "scan": 38, - "state": 1 - }, - { - "group": 0, - "letter": "S", - "scan": 39, - "state": 1 - }, - { - "group": 0, - "letter": "S", - "scan": 39, - "state": 1 - }, - { - "group": 0, - "letter": "D", - "scan": 40, - "state": 1 - }, - { - "group": 0, - "letter": "D", - "scan": 40, - "state": 1 - }, - { - "group": 0, - "letter": "F", - "scan": 41, - "state": 1 - }, - { - "group": 0, - "letter": "F", - "scan": 41, - "state": 1 - }, - { - "group": 0, - "letter": "G", - "scan": 42, - "state": 1 - }, - { - "group": 0, - "letter": "G", - "scan": 42, - "state": 1 - }, - { - "group": 0, - "letter": "H", - "scan": 43, - "state": 1 - }, - { - "group": 0, - "letter": "H", - "scan": 43, - "state": 1 - }, - { - "group": 0, - "letter": "J", - "scan": 44, - "state": 1 - }, - { - "group": 0, - "letter": "J", - "scan": 44, - "state": 1 - }, - { - "group": 0, - "letter": "K", - "scan": 45, - "state": 1 - }, - { - "group": 0, - "letter": "K", - "scan": 45, - "state": 1 - }, - { - "group": 0, - "letter": "L", - "scan": 46, - "state": 1 - }, - { - "group": 0, - "letter": "L", - "scan": 46, - "state": 1 - }, - { - "group": 0, - "letter": ":", - "scan": 47, - "state": 1 - }, - { - "group": 0, - "letter": ":", - "scan": 47, - "state": 1 - }, - { - "group": 0, - "letter": "\"", - "scan": 48, - "state": 1 - }, - { - "group": 0, - "letter": "\"", - "scan": 48, - "state": 1 - }, - { - "group": 0, - "letter": "|", - "scan": 51, - "state": 1 - }, - { - "group": 0, - "letter": "|", - "scan": 51, - "state": 1 - }, - { - "group": 0, - "letter": "Z", - "scan": 52, - "state": 1 - }, - { - "group": 0, - "letter": "Z", - "scan": 52, - "state": 1 - }, - { - "group": 0, - "letter": "X", - "scan": 53, - "state": 1 - }, - { - "group": 0, - "letter": "X", - "scan": 53, - "state": 1 - }, - { - "group": 0, - "letter": "C", - "scan": 54, - "state": 1 - }, - { - "group": 0, - "letter": "C", - "scan": 54, - "state": 1 - }, - { - "group": 0, - "letter": "V", - "scan": 55, - "state": 1 - }, - { - "group": 0, - "letter": "V", - "scan": 55, - "state": 1 - }, - { - "group": 0, - "letter": "B", - "scan": 56, - "state": 1 - }, - { - "group": 0, - "letter": "B", - "scan": 56, - "state": 1 - }, - { - "group": 0, - "letter": "N", - "scan": 57, - "state": 1 - }, - { - "group": 0, - "letter": "N", - "scan": 57, - "state": 1 - }, - { - "group": 0, - "letter": "M", - "scan": 58, - "state": 1 - }, - { - "group": 0, - "letter": "M", - "scan": 58, - "state": 1 - }, - { - "group": 0, - "letter": "<", - "scan": 59, - "state": 1 - }, - { - "group": 0, - "letter": "<", - "scan": 59, - "state": 1 - }, - { - "group": 0, - "letter": ">", - "scan": 60, - "state": 1 - }, - { - "group": 0, - "letter": ">", - "scan": 60, - "state": 1 - }, - { - "group": 0, - "letter": "?", - "scan": 61, - "state": 1 - }, - { - "group": 0, - "letter": "?", - "scan": 61, - "state": 1 - }, - { - "group": 1, - "letter": "\u091e", - "scan": 49, - "state": 0 - }, - { - "group": 1, - "letter": "\u091e", - "scan": 49, - "state": 0 - }, - { - "group": 1, - "letter": "\u0967", - "scan": 10, - "state": 0 - }, - { - "group": 1, - "letter": "\u0967", - "scan": 10, - "state": 0 - }, - { - "group": 1, - "letter": "\u0968", - "scan": 11, - "state": 0 - }, - { - "group": 1, - "letter": "\u0968", - "scan": 11, - "state": 0 - }, - { - "group": 1, - "letter": "\u0969", - "scan": 12, - "state": 0 - }, - { - "group": 1, - "letter": "\u0969", - "scan": 12, - "state": 0 - }, - { - "group": 1, - "letter": "\u096a", - "scan": 13, - "state": 0 - }, - { - "group": 1, - "letter": "\u096a", - "scan": 13, - "state": 0 - }, - { - "group": 1, - "letter": "\u096b", - "scan": 14, - "state": 0 - }, - { - "group": 1, - "letter": "\u096b", - "scan": 14, - "state": 0 - }, - { - "group": 1, - "letter": "\u096c", - "scan": 15, - "state": 0 - }, - { - "group": 1, - "letter": "\u096c", - "scan": 15, - "state": 0 - }, - { - "group": 1, - "letter": "\u096d", - "scan": 16, - "state": 0 - }, - { - "group": 1, - "letter": "\u096d", - "scan": 16, - "state": 0 - }, - { - "group": 1, - "letter": "\u096e", - "scan": 17, - "state": 0 - }, - { - "group": 1, - "letter": "\u096e", - "scan": 17, - "state": 0 - }, - { - "group": 1, - "letter": "\u096f", - "scan": 18, - "state": 0 - }, - { - "group": 1, - "letter": "\u096f", - "scan": 18, - "state": 0 - }, - { - "group": 1, - "letter": "\u0966", - "scan": 19, - "state": 0 - }, - { - "group": 1, - "letter": "\u0966", - "scan": 19, - "state": 0 - }, - { - "group": 1, - "letter": "\u0913", - "scan": 20, - "state": 0 - }, - { - "group": 1, - "letter": "\u0913", - "scan": 20, - "state": 0 - }, - { - "group": 1, - "letter": "\u200c", - "scan": 21, - "state": 0 - }, - { - "group": 1, - "letter": "\u200c", - "scan": 21, - "state": 0 - }, - { - "group": 1, - "letter": "\udbbf\udffb", - "scan": 24, - "state": 0 - }, - { - "group": 1, - "letter": "\udbbf\udffb", - "scan": 24, - "state": 0 - }, - { - "group": 1, - "letter": "\u0927", - "scan": 25, - "state": 0 - }, - { - "group": 1, - "letter": "\u0927", - "scan": 25, - "state": 0 - }, - { - "group": 1, - "letter": "\u092d", - "scan": 26, - "state": 0 - }, - { - "group": 1, - "letter": "\u092d", - "scan": 26, - "state": 0 - }, - { - "group": 1, - "letter": "\u091a", - "scan": 27, - "state": 0 - }, - { - "group": 1, - "letter": "\u091a", - "scan": 27, - "state": 0 - }, - { - "group": 1, - "letter": "\u0924", - "scan": 28, - "state": 0 - }, - { - "group": 1, - "letter": "\u0924", - "scan": 28, - "state": 0 - }, - { - "group": 1, - "letter": "\u0925", - "scan": 29, - "state": 0 - }, - { - "group": 1, - "letter": "\u0925", - "scan": 29, - "state": 0 - }, - { - "group": 1, - "letter": "\u0917", - "scan": 30, - "state": 0 - }, - { - "group": 1, - "letter": "\u0917", - "scan": 30, - "state": 0 - }, - { - "group": 1, - "letter": "\u0937", - "scan": 31, - "state": 0 - }, - { - "group": 1, - "letter": "\u0937", - "scan": 31, - "state": 0 - }, - { - "group": 1, - "letter": "\u092f", - "scan": 32, - "state": 0 - }, - { - "group": 1, - "letter": "\u092f", - "scan": 32, - "state": 0 - }, - { - "group": 1, - "letter": "\u0909", - "scan": 33, - "state": 0 - }, - { - "group": 1, - "letter": "\u0909", - "scan": 33, - "state": 0 - }, - { - "group": 1, - "letter": "\udbbf\udff4", - "scan": 34, - "state": 0 - }, - { - "group": 1, - "letter": "\udbbf\udff4", - "scan": 34, - "state": 0 - }, - { - "group": 1, - "letter": "\u0947", - "scan": 35, - "state": 0 - }, - { - "group": 1, - "letter": "\u0947", - "scan": 35, - "state": 0 - }, - { - "group": 1, - "letter": "\u092c", - "scan": 38, - "state": 0 - }, - { - "group": 1, - "letter": "\u092c", - "scan": 38, - "state": 0 - }, - { - "group": 1, - "letter": "\u0915", - "scan": 39, - "state": 0 - }, - { - "group": 1, - "letter": "\u0915", - "scan": 39, - "state": 0 - }, - { - "group": 1, - "letter": "\u092e", - "scan": 40, - "state": 0 - }, - { - "group": 1, - "letter": "\u092e", - "scan": 40, - "state": 0 - }, - { - "group": 1, - "letter": "\u0901", - "scan": 41, - "state": 0 - }, - { - "group": 1, - "letter": "\u0901", - "scan": 41, - "state": 0 - }, - { - "group": 1, - "letter": "\u0928", - "scan": 42, - "state": 0 - }, - { - "group": 1, - "letter": "\u0928", - "scan": 42, - "state": 0 - }, - { - "group": 1, - "letter": "\u091c", - "scan": 43, - "state": 0 - }, - { - "group": 1, - "letter": "\u091c", - "scan": 43, - "state": 0 - }, - { - "group": 1, - "letter": "\u0935", - "scan": 44, - "state": 0 - }, - { - "group": 1, - "letter": "\u0935", - "scan": 44, - "state": 0 - }, - { - "group": 1, - "letter": "\u092a", - "scan": 45, - "state": 0 - }, - { - "group": 1, - "letter": "\u092a", - "scan": 45, - "state": 0 - }, - { - "group": 1, - "letter": "\u093f", - "scan": 46, - "state": 0 - }, - { - "group": 1, - "letter": "\u093f", - "scan": 46, - "state": 0 - }, - { - "group": 1, - "letter": "\u0938", - "scan": 47, - "state": 0 - }, - { - "group": 1, - "letter": "\u0938", - "scan": 47, - "state": 0 - }, - { - "group": 1, - "letter": "\u0941", - "scan": 48, - "state": 0 - }, - { - "group": 1, - "letter": "\u0941", - "scan": 48, - "state": 0 - }, - { - "group": 1, - "letter": "\u094d", - "scan": 51, - "state": 0 - }, - { - "group": 1, - "letter": "\u094d", - "scan": 51, - "state": 0 - }, - { - "group": 1, - "letter": "\u0936", - "scan": 52, - "state": 0 - }, - { - "group": 1, - "letter": "\u0936", - "scan": 52, - "state": 0 - }, - { - "group": 1, - "letter": "\u0939", - "scan": 53, - "state": 0 - }, - { - "group": 1, - "letter": "\u0939", - "scan": 53, - "state": 0 - }, - { - "group": 1, - "letter": "\u0905", - "scan": 54, - "state": 0 - }, - { - "group": 1, - "letter": "\u0905", - "scan": 54, - "state": 0 - }, - { - "group": 1, - "letter": "\u0916", - "scan": 55, - "state": 0 - }, - { - "group": 1, - "letter": "\u0916", - "scan": 55, - "state": 0 - }, - { - "group": 1, - "letter": "\u0926", - "scan": 56, - "state": 0 - }, - { - "group": 1, - "letter": "\u0926", - "scan": 56, - "state": 0 - }, - { - "group": 1, - "letter": "\u0932", - "scan": 57, - "state": 0 - }, - { - "group": 1, - "letter": "\u0932", - "scan": 57, - "state": 0 - }, - { - "group": 1, - "letter": "\u0903", - "scan": 58, - "state": 0 - }, - { - "group": 1, - "letter": "\u0903", - "scan": 58, - "state": 0 - }, - { - "group": 1, - "letter": "\u093d", - "scan": 59, - "state": 0 - }, - { - "group": 1, - "letter": "\u093d", - "scan": 59, - "state": 0 - }, - { - "group": 1, - "letter": "\u0964", - "scan": 60, - "state": 0 - }, - { - "group": 1, - "letter": "\u0964", - "scan": 60, - "state": 0 - }, - { - "group": 1, - "letter": "\u0930", - "scan": 61, - "state": 0 - }, - { - "group": 1, - "letter": "\u0930", - "scan": 61, - "state": 0 - }, - { - "group": 1, - "letter": "\u0965", - "scan": 49, - "state": 1 - }, - { - "group": 1, - "letter": "\u0965", - "scan": 49, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udffd", - "scan": 10, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udffd", - "scan": 10, - "state": 1 - }, - { - "group": 1, - "letter": "\u0908", - "scan": 11, - "state": 1 - }, - { - "group": 1, - "letter": "\u0908", - "scan": 11, - "state": 1 - }, - { - "group": 1, - "letter": "\u0918", - "scan": 12, - "state": 1 - }, - { - "group": 1, - "letter": "\u0918", - "scan": 12, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udffc", - "scan": 13, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udffc", - "scan": 13, - "state": 1 - }, - { - "group": 1, - "letter": "\u091b", - "scan": 14, - "state": 1 - }, - { - "group": 1, - "letter": "\u091b", - "scan": 14, - "state": 1 - }, - { - "group": 1, - "letter": "\u091f", - "scan": 15, - "state": 1 - }, - { - "group": 1, - "letter": "\u091f", - "scan": 15, - "state": 1 - }, - { - "group": 1, - "letter": "\u0920", - "scan": 16, - "state": 1 - }, - { - "group": 1, - "letter": "\u0920", - "scan": 16, - "state": 1 - }, - { - "group": 1, - "letter": "\u0921", - "scan": 17, - "state": 1 - }, - { - "group": 1, - "letter": "\u0921", - "scan": 17, - "state": 1 - }, - { - "group": 1, - "letter": "\u0922", - "scan": 18, - "state": 1 - }, - { - "group": 1, - "letter": "\u0922", - "scan": 18, - "state": 1 - }, - { - "group": 1, - "letter": "\u0923", - "scan": 19, - "state": 1 - }, - { - "group": 1, - "letter": "\u0923", - "scan": 19, - "state": 1 - }, - { - "group": 1, - "letter": "\u0914", - "scan": 20, - "state": 1 - }, - { - "group": 1, - "letter": "\u0914", - "scan": 20, - "state": 1 - }, - { - "group": 1, - "letter": "\u0902", - "scan": 21, - "state": 1 - }, - { - "group": 1, - "letter": "\u0902", - "scan": 21, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udffa", - "scan": 24, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udffa", - "scan": 24, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff9", - "scan": 25, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff9", - "scan": 25, - "state": 1 - }, - { - "group": 1, - "letter": "\u0910", - "scan": 26, - "state": 1 - }, - { - "group": 1, - "letter": "\u0910", - "scan": 26, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff8", - "scan": 27, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff8", - "scan": 27, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff7", - "scan": 28, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff7", - "scan": 28, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff6", - "scan": 29, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff6", - "scan": 29, - "state": 1 - }, - { - "group": 1, - "letter": "\u090a", - "scan": 30, - "state": 1 - }, - { - "group": 1, - "letter": "\u090a", - "scan": 30, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff5", - "scan": 31, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff5", - "scan": 31, - "state": 1 - }, - { - "group": 1, - "letter": "\u0907", - "scan": 32, - "state": 1 - }, - { - "group": 1, - "letter": "\u0907", - "scan": 32, - "state": 1 - }, - { - "group": 1, - "letter": "\u090f", - "scan": 33, - "state": 1 - }, - { - "group": 1, - "letter": "\u090f", - "scan": 33, - "state": 1 - }, - { - "group": 1, - "letter": "\u0943", - "scan": 34, - "state": 1 - }, - { - "group": 1, - "letter": "\u0943", - "scan": 34, - "state": 1 - }, - { - "group": 1, - "letter": "\u0948", - "scan": 35, - "state": 1 - }, - { - "group": 1, - "letter": "\u0948", - "scan": 35, - "state": 1 - }, - { - "group": 1, - "letter": "\u0906", - "scan": 38, - "state": 1 - }, - { - "group": 1, - "letter": "\u0906", - "scan": 38, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff3", - "scan": 39, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff3", - "scan": 39, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff2", - "scan": 40, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff2", - "scan": 40, - "state": 1 - }, - { - "group": 1, - "letter": "\u093e", - "scan": 41, - "state": 1 - }, - { - "group": 1, - "letter": "\u093e", - "scan": 41, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff1", - "scan": 42, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff1", - "scan": 42, - "state": 1 - }, - { - "group": 1, - "letter": "\u091d", - "scan": 43, - "state": 1 - }, - { - "group": 1, - "letter": "\u091d", - "scan": 43, - "state": 1 - }, - { - "group": 1, - "letter": "\u094b", - "scan": 44, - "state": 1 - }, - { - "group": 1, - "letter": "\u094b", - "scan": 44, - "state": 1 - }, - { - "group": 1, - "letter": "\u092b", - "scan": 45, - "state": 1 - }, - { - "group": 1, - "letter": "\u092b", - "scan": 45, - "state": 1 - }, - { - "group": 1, - "letter": "\u0940", - "scan": 46, - "state": 1 - }, - { - "group": 1, - "letter": "\u0940", - "scan": 46, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff0", - "scan": 47, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udff0", - "scan": 47, - "state": 1 - }, - { - "group": 1, - "letter": "\u0942", - "scan": 48, - "state": 1 - }, - { - "group": 1, - "letter": "\u0942", - "scan": 48, - "state": 1 - }, - { - "group": 1, - "letter": "\u200d", - "scan": 51, - "state": 1 - }, - { - "group": 1, - "letter": "\u200d", - "scan": 51, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfef", - "scan": 52, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfef", - "scan": 52, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfee", - "scan": 53, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfee", - "scan": 53, - "state": 1 - }, - { - "group": 1, - "letter": "\u090b", - "scan": 54, - "state": 1 - }, - { - "group": 1, - "letter": "\u090b", - "scan": 54, - "state": 1 - }, - { - "group": 1, - "letter": "\u0950", - "scan": 55, - "state": 1 - }, - { - "group": 1, - "letter": "\u0950", - "scan": 55, - "state": 1 - }, - { - "group": 1, - "letter": "\u094c", - "scan": 56, - "state": 1 - }, - { - "group": 1, - "letter": "\u094c", - "scan": 56, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfed", - "scan": 57, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfed", - "scan": 57, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfec", - "scan": 58, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfec", - "scan": 58, - "state": 1 - }, - { - "group": 1, - "letter": "\u0919", - "scan": 59, - "state": 1 - }, - { - "group": 1, - "letter": "\u0919", - "scan": 59, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfeb", - "scan": 60, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfeb", - "scan": 60, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfea", - "scan": 61, - "state": 1 - }, - { - "group": 1, - "letter": "\udbbf\udfea", - "scan": 61, - "state": 1 - }, - { - "group": 1, - "letter": "\u200c", - "scan": 21, - "state": 0 - }, - { - "group": 1, - "letter": "\u200c", - "scan": 21, - "state": 0 - } -] \ No newline at end of file +{ + "scan10": "1", + "scan10 group1": "१", + "scan10 shift": "!", + "scan10 shift group1": "󿿽", + "scan11": "2", + "scan11 group1": "२", + "scan11 shift": "@", + "scan11 shift group1": "ई", + "scan12": "3", + "scan12 group1": "३", + "scan12 shift": "#", + "scan12 shift group1": "घ", + "scan13": "4", + "scan13 group1": "४", + "scan13 shift": "$", + "scan13 shift group1": "󿿼", + "scan14": "5", + "scan14 group1": "५", + "scan14 shift": "%", + "scan14 shift group1": "छ", + "scan15": "6", + "scan15 group1": "६", + "scan15 shift": "^", + "scan15 shift group1": "ट", + "scan16": "7", + "scan16 group1": "७", + "scan16 shift": "&", + "scan16 shift group1": "ठ", + "scan17": "8", + "scan17 group1": "८", + "scan17 shift": "*", + "scan17 shift group1": "ड", + "scan18": "9", + "scan18 group1": "९", + "scan18 shift": "(", + "scan18 shift group1": "ढ", + "scan19": "0", + "scan19 group1": "०", + "scan19 shift": ")", + "scan19 shift group1": "ण", + "scan20": "-", + "scan20 group1": "ओ", + "scan20 shift": "_", + "scan20 shift group1": "औ", + "scan21": "=", + "scan21 group1": "‌", + "scan21 shift": "+", + "scan21 shift group1": "ं", + "scan24": "q", + "scan24 group1": "󿿻", + "scan24 shift": "Q", + "scan24 shift group1": "󿿺", + "scan25": "w", + "scan25 group1": "ध", + "scan25 shift": "W", + "scan25 shift group1": "󿿹", + "scan26": "e", + "scan26 group1": "भ", + "scan26 shift": "E", + "scan26 shift group1": "ऐ", + "scan27": "r", + "scan27 group1": "च", + "scan27 shift": "R", + "scan27 shift group1": "󿿸", + "scan28": "t", + "scan28 group1": "त", + "scan28 shift": "T", + "scan28 shift group1": "󿿷", + "scan29": "y", + "scan29 group1": "थ", + "scan29 shift": "Y", + "scan29 shift group1": "󿿶", + "scan30": "u", + "scan30 group1": "ग", + "scan30 shift": "U", + "scan30 shift group1": "ऊ", + "scan31": "i", + "scan31 group1": "ष", + "scan31 shift": "I", + "scan31 shift group1": "󿿵", + "scan32": "o", + "scan32 group1": "य", + "scan32 shift": "O", + "scan32 shift group1": "इ", + "scan33": "p", + "scan33 group1": "उ", + "scan33 shift": "P", + "scan33 shift group1": "ए", + "scan34": "[", + "scan34 group1": "󿿴", + "scan34 shift": "{", + "scan34 shift group1": "ृ", + "scan35": "]", + "scan35 group1": "े", + "scan35 shift": "}", + "scan35 shift group1": "ै", + "scan38": "a", + "scan38 group1": "ब", + "scan38 shift": "A", + "scan38 shift group1": "आ", + "scan39": "s", + "scan39 group1": "क", + "scan39 shift": "S", + "scan39 shift group1": "󿿳", + "scan40": "d", + "scan40 group1": "म", + "scan40 shift": "D", + "scan40 shift group1": "󿿲", + "scan41": "f", + "scan41 group1": "ँ", + "scan41 shift": "F", + "scan41 shift group1": "ा", + "scan42": "g", + "scan42 group1": "न", + "scan42 shift": "G", + "scan42 shift group1": "󿿱", + "scan43": "h", + "scan43 group1": "ज", + "scan43 shift": "H", + "scan43 shift group1": "झ", + "scan44": "j", + "scan44 group1": "व", + "scan44 shift": "J", + "scan44 shift group1": "ो", + "scan45": "k", + "scan45 group1": "प", + "scan45 shift": "K", + "scan45 shift group1": "फ", + "scan46": "l", + "scan46 group1": "ि", + "scan46 shift": "L", + "scan46 shift group1": "ी", + "scan47": ";", + "scan47 group1": "स", + "scan47 shift": ":", + "scan47 shift group1": "󿿰", + "scan48": "'", + "scan48 group1": "ु", + "scan48 shift": "\"", + "scan48 shift group1": "ू", + "scan49": "`", + "scan49 group1": "ञ", + "scan49 shift": "~", + "scan49 shift group1": "॥", + "scan51": "\\", + "scan51 group1": "्", + "scan51 shift": "|", + "scan51 shift group1": "‍", + "scan52": "z", + "scan52 group1": "श", + "scan52 shift": "Z", + "scan52 shift group1": "󿿯", + "scan53": "x", + "scan53 group1": "ह", + "scan53 shift": "X", + "scan53 shift group1": "󿿮", + "scan54": "c", + "scan54 group1": "अ", + "scan54 shift": "C", + "scan54 shift group1": "ऋ", + "scan55": "v", + "scan55 group1": "ख", + "scan55 shift": "V", + "scan55 shift group1": "ॐ", + "scan56": "b", + "scan56 group1": "द", + "scan56 shift": "B", + "scan56 shift group1": "ौ", + "scan57": "n", + "scan57 group1": "ल", + "scan57 shift": "N", + "scan57 shift group1": "󿿭", + "scan58": "m", + "scan58 group1": "ः", + "scan58 shift": "M", + "scan58 shift group1": "󿿬", + "scan59": ",", + "scan59 group1": "ऽ", + "scan59 shift": "<", + "scan59 shift group1": "ङ", + "scan60": ".", + "scan60 group1": "।", + "scan60 shift": ">", + "scan60 shift group1": "󿿫", + "scan61": "/", + "scan61 group1": "र", + "scan61 shift": "?", + "scan61 shift group1": "󿿪" +} \ No newline at end of file diff --git a/lessonscreen.py b/lessonscreen.py index 4e52579..7e16e87 100644 --- a/lessonscreen.py +++ b/lessonscreen.py @@ -125,10 +125,15 @@ class LessonScreen(gtk.VBox): frame.add(self.lessonscroll) self.keyboard = keyboard.KeyboardWidget(self.keyboard_images, self.activity) - self.keyboard.set_layout(keyboard.OLPC_LAYOUT) + # Attempt to load a letter map for the current locale. code = locale.getdefaultlocale()[0] - self.keyboard.load_key_map('lessons/%s/%s.key' % (code, code)) + try: + self.keyboard.load_letter_map('lessons/%s/%s.key' % (code, code)) + except: + self.keyboard.load_letter_map('lessons/en_US/en_US.key' % (code, code)) + + self.keyboard.set_layout(keyboard.OLPC_LAYOUT) self.pack_start(hbox, False, False, 10) self.pack_start(frame, True, True) -- cgit v0.9.1