further work on new config system
diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py
index 6b9a146..753a1fc 100644
--- a/Lib/idlelib/configDialog.py
+++ b/Lib/idlelib/configDialog.py
@@ -463,7 +463,10 @@
     def VarChanged_themeIsBuiltin(self,*params):
         value=self.themeIsBuiltin.get()
         self.AddChangedItem('main','Theme','default',value)
-        self.PaintThemeSample()
+        if value:
+            self.VarChanged_builtinTheme()
+        else:
+            self.VarChanged_customTheme()
 
     def VarChanged_highlightTarget(self,*params):
         self.SetHighlightTarget()
@@ -495,9 +498,9 @@
         value=self.keysAreBuiltin.get() 
         self.AddChangedItem('main','Keys','default',value)
         if value: 
-            self.LoadKeysList(self.builtinKeys.get())
+            self.VarChanged_builtinKeys()
         else:
-            self.LoadKeysList(self.customKeys.get())
+            self.VarChanged_customKeys()
 
     def VarChanged_winWidth(self,*params):
         value=self.winWidth.get()
@@ -936,24 +939,31 @@
             type='bool',default=1))
         ##currently set theme
         currentOption=idleConf.CurrentTheme()
+        print 'current option',currentOption
         ##load available theme option menus
         if self.themeIsBuiltin.get(): #default theme selected
+            print 'builtin theme'
             itemList=idleConf.GetSectionList('default','highlight')
             itemList.sort()
+            print 'builtin items:',itemList
             self.optMenuThemeBuiltin.SetMenu(itemList,currentOption)
             itemList=idleConf.GetSectionList('user','highlight')
             itemList.sort()
+            print 'user items:',itemList
             if not itemList:
                 self.radioThemeCustom.config(state=DISABLED)
                 self.customTheme.set('- no custom themes -')    
             else:
                 self.optMenuThemeCustom.SetMenu(itemList,itemList[0])
         else: #user theme selected
+            print 'user theme'
             itemList=idleConf.GetSectionList('user','highlight')
             itemList.sort()
+            print 'user items:',itemList
             self.optMenuThemeCustom.SetMenu(itemList,currentOption)
             itemList=idleConf.GetSectionList('default','highlight')
             itemList.sort()
+            print 'builtin items:',itemList
             self.optMenuThemeBuiltin.SetMenu(itemList,itemList[0])
         self.SetThemeType()
         ##load theme element option menu
@@ -1112,4 +1122,5 @@
     root=Tk()
     Button(root,text='Dialog',
             command=lambda:ConfigDialog(root,'Settings')).pack()
+    root.instanceDict={}
     root.mainloop()
diff --git a/Lib/idlelib/keybindingDialog.py b/Lib/idlelib/keybindingDialog.py
index 3b1ddba..f99e452 100644
--- a/Lib/idlelib/keybindingDialog.py
+++ b/Lib/idlelib/keybindingDialog.py
@@ -142,7 +142,8 @@
         if modifiers: modifiers[0]='<'+modifiers[0]
         keyList=keyList+modifiers
         if finalKey: 
-            if (not modifiers) and (finalKey in self.functionKeys):
+            if (not modifiers) and (finalKey not 
+                    in self.alphanumKeys+self.punctuationKeys):
                 finalKey='<'+self.TranslateKey(finalKey)
             else:
                 finalKey=self.TranslateKey(finalKey)
@@ -225,16 +226,18 @@
             tkMessageBox.showerror(title='Key Sequence Error',
                     message='No final key specified.')
             keysOk=0
-        elif (not modifiers) and (finalKey not in self.functionKeys):
-            #modifier required if not a function key
+        elif (not modifiers) and (finalKey in 
+                self.alphanumKeys+self.punctuationKeys):
+            #modifier required
             tkMessageBox.showerror(title='Key Sequence Error',
                     message='No modifier key(s) specified.')
             keysOk=0
-        elif (modifiers==['Shift']) and (finalKey not in self.functionKeys):
+        elif (modifiers==['Shift']) and (finalKey not 
+                in self.functionKeys+('Tab',)):
             #shift alone is only a useful modifier with a function key
             tkMessageBox.showerror(title='Key Sequence Error',
-                    message='Shift alone is only a useful modifier '+
-                            'when used with a function key.')
+                    message='Shift alone is not a useful modifier '+
+                            'when used with this final key key.')
             keysOk=0
         elif keySequence in self.currentKeySequences: #keys combo already in use
             tkMessageBox.showerror(title='Key Sequence Error',