Changeset 1580

Show
Ignore:
Timestamp:
01/30/09 12:59:37 (4 years ago)
Author:
martin_r
Message:

Bugfix: Ebenen werden jetzt richtig sortiert
Dokumentation: Bilder aufgenommen

Location:
yaml
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • yaml/parse_neo.py

    r1560 r1580  
    5050    make_option('-f', '--key-level-delimiter-filler', metavar = 'char',default = " ", help = 'default = %default'), 
    5151    make_option('-D', '--key-level-delimiter', metavar = 'char'), 
    52     make_option('-l', '--key-levels-per-line', type = 'int', metavar = 'int', default = 3, help = 'default = %default') 
     52    make_option('-l', '--key-levels-per-line', type = 'int', metavar = 'int', default = 3, help = 'default = %default'), 
     53    make_option('-L', '--no-level-disorder',dest = 'level_disorder', action = 'store_false', default = True, help = 'Level 4 and 5 are not swapped') 
    5354    ]).parse_args()[0] 
    5455if options.destination_file == None: 
     
    8081    ''' 
    8182    return_model = []; return_view = []; key_row = []; key_row_index = 0 # initialization 
    82     for row in [row[:key_panel.index(box_drawings[3])] for row in key_panel.splitlines()[1:]]: # omit beginning and ending box drawings 
    83         if row[0] in (box_drawings[12], box_drawings[14]): # if row begins with ├ or │, 
    84             return_model.append([]); return_view.append([]) # create key row list 
    85             key_lines = [] 
     83    for row in [row[:key_panel.index(box_drawings[3])] for row in key_panel.splitlines()[1:]]: # omit the first line and from closing box drawings 
     84        if row[0] not in (box_drawings[12], box_drawings[14]): # if row begins not with “├” or “└”: 
     85            key_lines = []; key_row.append(row) # push line (sic) 
     86        else: 
     87            return_model.append([]); return_view.append([]) # create key row lists 
    8688            for key_line_index, key_line in enumerate(key_row[:: - 1]): # reverse lines 
    87                 for key_index, key in enumerate(key_line[1:].split(box_drawings[10])): # split key line into keys 
     89                for key_index, key in enumerate(key_line[1:].split(box_drawings[10])): # omit beginning key delimiter and split key line into key lines: 
    8890                    if key_line_index == 0: # if bottom line, 
    89                         return_model[key_row_index].append([]); key_lines.append([]); return_view[key_row_index].append([]) # create key list 
    90                     if len(key) == key_width: # if default key, parse line levels: 
    91                         if options.key_level_width == 1 and key_width == 7: # if Neo 2 keypad key: 
    92                             if key[1] == key[5] == options.key_level_delimiter: 
    93                                 key_lines[key_index].extend([key[0], key[2:5], key[6]]) 
    94                             elif key[::2] == options.key_level_delimiter * 4: 
    95                                 key_lines[key_index].extend(key[1::2]) 
     91                        if key_width == 5 or key_width == 7: 
     92                            key_lines.append([]) 
     93                        return_model[key_row_index].append([]); return_view[key_row_index].append([]) # create key lists 
     94                    if len(key) == key_width: # if standard key, parse line levels: 
     95                        if key_width == options.key_level_width * options.key_levels_per_line + (options.key_levels_per_line - 1) * options.key_level_delimiter_width and key[1::options.key_level_width + options.key_level_delimiter_width] == options.key_level_delimiter * (options.key_levels_per_line - 1): # else if standard key: 
     96                            key_lines[key_index].append([key[key_level_start:key_level_start + options.key_level_width] for key_level_start in range(0, len(key), options.key_level_width + options.key_level_delimiter_width)]) 
     97                        elif key_width == options.key_level_width: # else if standard miniature key: 
     98                            return_model[key_row_index][key_index].append(key) 
     99                        elif options.key_level_width == 1 and key_width == 7: # if Neo 2 keypad key: 
     100                            if key[1] == key[5] == options.key_level_delimiter: # if long middle line level: 
     101                                key_lines[key_index].append([key[0], key[2:5], key[6]]) 
     102                            elif key[::2] == options.key_level_delimiter * 4: # else if spaced levels: 
     103                                key_lines[key_index].append(list(key[1::2])) 
    96104                            else: 
    97105                                return_view[key_row_index][key_index].append(key) 
    98                         elif key_width == options.key_level_width * options.key_levels_per_line + (options.key_levels_per_line - 1) * options.key_level_delimiter_width: 
    99                             key_lines[key_index].extend([key[:options.key_level_width] for key in key[:key_width:options.key_level_width + options.key_level_delimiter_width]]) 
    100                         elif key_width == options.key_level_width: 
    101                             key_lines[key_index].append(key) 
    102                     else: 
     106                    else: # else non-standard key: 
    103107                        if options.key_level_width == 1 and key_width == 7 and len(key) == 15: # if Neo 2 keypad key: 
    104                             key_lines[key_index].extend([key[2], key[6:9], key[12]]) 
    105                         else: 
     108                            key_lines[key_index].append([key[2], key[6:9], key[12]]) 
     109                        else: # else special key: 
    106110                            return_view[key_row_index][key_index].append(key) 
    107                     if key_lines != []: 
    108                         for key_level_index, level in enumerate(key_lines[0]): 
    109                             for key_line_index, line_index in enumerate(key_lines): 
    110                                 return_model[key_row_index][key_index].append(key_lines[key_line_index][key_level_index]) 
     111            if key_lines != []: 
     112                for key_index, key in enumerate(key_lines): #sort key levels: 
     113                    if key_lines[key_index] != []: 
     114                        for key_level_index, level in enumerate(key_lines[key_index][0]): 
     115                            for key_line_index, line_index in enumerate(key_lines[key_index]): 
     116                                if len(key_lines[key_index]) != 0: 
     117                                    return_model[key_row_index][key_index].append(key_lines[key_index][key_line_index][key_level_index]) 
     118                        if options.level_disorder and len(return_model[key_row_index][key_index]) == 6: 
     119                            return_model[key_row_index][key_index].insert(3, return_model[key_row_index][key_index].pop(4)) 
    111120            key_row_index += 1; key_row = [] 
    112         else: 
    113             key_row.append(row) 
    114121    return return_model, return_view 
     122     
    115123 
    116124def compare_model(model, miniature_model): 
     
    141149miniature_models = [] 
    142150for miniature_models_index in range(6): 
    143     miniature_models.append([parse_key_panel(key_panels[10 + miniature_models_index], 1), parse_key_panel(key_panels[21 + miniature_models_index], 7)]) 
     151    miniature_models.append([parse_key_panel(key_panels[10 + miniature_models_index], 1), parse_key_panel(key_panels[21 + miniature_models_index], 3)]) 
    144152view = compare_model(model, miniature_models) # complete views via comparing key widths 
    145153model = [model[0] for model in model] # strip views 
  • yaml/readme.txt

    r1560 r1580  
    3939schreiben. Dann soll ein Skript zur Umwandlung des Models in xkbmap, xmodmap,  
    4040ahk und kbdneo folgen, unter berücksichtigung der verwendeten Tastatur (Qwertz,  
    41 Qwerty, Plum, Kbdneo). 
     41Qwerty, Plum, Kbdneo). Danach nehme ich die Erzeugung der svgs und odss in  
     42Angriff. 
    4243 
    4344Abriss: 
    4445neo_import.py 
    45 neo_parse.py 
    46 neo_edit.py 
    47 neo_make.py 
    48 ahk_make.py 
    49 ahk_parse.py 
     46parse_neo.py 
     47edit_neo.py 
     48make_neo.py 
     49make_ahk.py 
     50parse_ahk.py 
    5051hex_parse.py 
    5152kbd_parse.py