Существует ли причина, это должен быть dict dicts? Если нет никакого неопровержимого довода той конкретной структуры, Вы могли бы просто индексировать dict с кортежем:
mydict = {('foo', 'bar', 'baz'):1} # Initializes dict with a key/value pair
mydict[('foo', 'bar', 'baz')] # Returns 1
mydict[('foo', 'unbar')] = 2 # Sets a value for a new key
круглые скобки требуются, если Вы инициализируете dict с ключом кортежа, но можно опустить их при установке/получении использования значений []:
mydict = {} # Initialized the dict
mydict['foo', 'bar', 'baz'] = 1 # Sets a value
mydict['foo', 'bar', 'baz'] # Returns 1
ICSharpCode.TextEditor - это составной элемент управления. Если вы прикрепите обработчики событий к основному текстовому редактору, вы не получите никаких событий. Вместо этого вы должны присоединиться к событиям в textEditor.ActiveTextAreaControl.TextArea.
Кроме того, сам текстовый редактор уже обрабатывает события. Для перехвата нажатий клавиш используйте специальное событие textEditor.ActiveTextAreaControl.TextArea.KeyEventHandler.