further work on new configuration system, specifically,
on keybinding configuration
diff --git a/Lib/idlelib/Bindings.py b/Lib/idlelib/Bindings.py
index 7baa913..1a8374b 100644
--- a/Lib/idlelib/Bindings.py
+++ b/Lib/idlelib/Bindings.py
@@ -14,7 +14,8 @@
 
 import sys
 import string
-from keydefs import *
+#from keydefs import *
+from configHandler import idleConf
 
 menudefs = [
  # underscore prefixes character to underscore
@@ -65,9 +66,11 @@
   ]),
 ]
 
-if sys.platform == 'win32':
-    default_keydefs = windows_keydefs
-else:
-    default_keydefs = unix_keydefs
+#if sys.platform == 'win32':
+#    default_keydefs = windows_keydefs
+#else:
+#    default_keydefs = unix_keydefs
+
+default_keydefs = idleConf.GetKeys(keySetName=None)
 
 del sys
diff --git a/Lib/idlelib/config-keys.def b/Lib/idlelib/config-keys.def
index cae0301..feec31c 100644
--- a/Lib/idlelib/config-keys.def
+++ b/Lib/idlelib/config-keys.def
@@ -1,58 +1,64 @@
 # IDLE reads several config files to determine user preferences.  This 
 # file is the default config file for idle key binding settings.  
+# Where multiple keys are specified for an action: if they are separated
+# by a space (eg. action=<key1> <key2>) then the keys are altenatives, if
+# there is no space (eg. action=<key1>key2>) then the keys comprise a
+# single 'emacs style' multi-keystoke binding.
 
-[IDLE Classic - windows]
-Copy= '<Control-c> <Control-C>'
-Cut= '<Control-x> <Control-X>'
-Paste= '<Control-v> <Control-V>'
-beginning-of-line= '<Control-a> <Home>'
-center-insert= '<Control-l>'
-close-all-windows= '<Control-q>'
-close-window= '<Alt-F4>'
-dump-undo-state= '<Control-backslash>'
-end-of-file= '<Control-d>'
-python-docs= '<F1>'
-history-next= '<Alt-n>'
-history-previous= '<Alt-p>'
-interrupt-execution= '<Control-c>'
-open-class-browser= '<Alt-c>'
-open-module= '<Alt-m>'
-open-new-window= '<Control-n>'
-open-window-from-file= '<Control-o>'
-plain-newline-and-indent= '<Control-j>'
-redo= '<Control-y>'
-remove-selection= '<Escape>'
-save-copy-of-window-as-file= '<Alt-Shift-s>'
-save-window-as-file= '<Alt-s>'
-save-window= '<Control-s>'
-select-all= '<Alt-a>'
-toggle-auto-coloring= '<Control-slash>'
-undo= '<Control-z>'
+[IDLE CUA-ish]
+Copy=<Control-c> <Control-C>
+Cut=<Control-x> <Control-X>
+Paste=<Control-v> <Control-V>
+beginning-of-line=<Control-a> <Home>
+center-insert=<Control-l>
+close-all-windows=<Control-q>
+close-window=<Alt-F4>
+dump-undo-state=<Control-backslash>
+end-of-file=<Control-d>
+python-docs=<F1>
+python-context-help=<Shift-F1> 
+history-next=<Alt-n>
+history-previous=<Alt-p>
+interrupt-execution=<Control-c>
+open-class-browser=<Alt-c>
+open-module=<Alt-m>
+open-new-window=<Control-n>
+open-window-from-file=<Control-o>
+plain-newline-and-indent=<Control-j>
+redo=<Control-Shift-z>
+remove-selection=<Escape>
+save-copy-of-window-as-file=<Alt-Shift-s>
+save-window-as-file=<Alt-s>
+save-window=<Control-s>
+select-all=<Alt-a>
+toggle-auto-coloring=<Control-slash>
+undo=<Control-z>
 
-[IDLE Classic - posix]
-Copy= '<Alt-w> <Meta-w>'
-Cut= '<Control-w>'
-Paste= '<Control-y>'
-beginning-of-line= '<Control-a> <Home>'
-center-insert= '<Control-l>'
-close-all-windows= '<Control-x><Control-c>'
-close-window= '<Control-x><Control-0> <Control-x><Key-0>'
-do-nothing= '<Control-x>'
-dump-undo-state= '<Control-backslash>'
-end-of-file= '<Control-d>'
-help= '<F1>'
-history-next= '<Alt-n> <Meta-n>'
-history-previous= '<Alt-p> <Meta-p>'
-interrupt-execution= '<Control-c>'
-open-class-browser= '<Control-x><Control-b>'
-open-module= '<Control-x><Control-m>'
-open-new-window= '<Control-x><Control-n>'
-open-window-from-file= '<Control-x><Control-f>'
-plain-newline-and-indent= '<Control-j>'
-redo= '<Alt-z> <Meta-z>'
-save-copy-of-window-as-file= '<Control-x><w>'
-save-window-as-file= '<Control-x><Control-w>'
-save-window= '<Control-x><Control-s>'
-select-all= '<Alt-a> <Meta-a>'
-toggle-auto-coloring= '<Control-slash>'
-undo= '<Control-z>'
+[IDLE Emacs-ish]
+Copy=<Alt-w> <Meta-w>
+Cut=<Control-w>
+Paste=<Control-y>
+beginning-of-line=<Control-a> <Home>
+center-insert=<Control-l>
+close-all-windows=<Control-x><Control-c>
+close-window=<Control-x><Control-0> <Control-x><Key-0>
+do-nothing=<Control-x>
+dump-undo-state=<Control-backslash>
+end-of-file=<Control-d>
+history-next=<Alt-n> <Meta-n>
+history-previous=<Alt-p> <Meta-p>
+interrupt-execution=<Control-c>
+open-class-browser=<Control-x><Control-b>
+open-module=<Control-x><Control-m>
+open-new-window=<Control-x><Control-n>
+open-window-from-file=<Control-x><Control-f>
+plain-newline-and-indent=<Control-j>
+python-docs=<Control-h> 
+python-context-help=<Control-Shift-h> 
+redo=<Alt-z> <Meta-z>
+save-copy-of-window-as-file=<Control-x><w>
+save-window-as-file=<Control-x><Control-w>
+save-window=<Control-x><Control-s>
+select-all=<Alt-a> <Meta-a>
+toggle-auto-coloring=<Control-slash>
+undo=<Control-z>
diff --git a/Lib/idlelib/configHandler.py b/Lib/idlelib/configHandler.py
index 4539627..f1fbd8d 100644
--- a/Lib/idlelib/configHandler.py
+++ b/Lib/idlelib/configHandler.py
@@ -174,13 +174,48 @@
         """
         pass
     
-    def GetKeys(self, name=None):
+    def GetKeys(self, keySetName=None):
         """
-        Gets the requested keybindings or returns a final fallback keybinding 
-        set in case one can't be obtained from either the user or default 
-        config files.
+        returns the requested keybindings, with fallbacks if required.
         """
-        pass
+        #default keybindings.
+        #keybindings loaded from the config file(s) are loaded _over_ these
+        #defaults, so if there is a problem getting any binding there will
+        #be an 'ultimate last resort fallback' to the CUA-ish bindings
+        #defined here.
+        keyBindings={
+            '<<Copy>>': ['<Control-c>', '<Control-C>'],
+            '<<Cut>>': ['<Control-x>', '<Control-X>'],
+            '<<Paste>>': ['<Control-v>', '<Control-V>'],
+            '<<beginning-of-line>>': ['<Control-a>', '<Home>'],
+            '<<center-insert>>': ['<Control-l>'],
+            '<<close-all-windows>>': ['<Control-q>'],
+            '<<close-window>>': ['<Alt-F4>'],
+            '<<dump-undo-state>>': ['<Control-backslash>'],
+            '<<end-of-file>>': ['<Control-d>'],
+            '<<python-docs>>': ['<F1>'],
+            '<<python-context-help>>': ['<Shift-F1>'], 
+            '<<history-next>>': ['<Alt-n>'],
+            '<<history-previous>>': ['<Alt-p>'],
+            '<<interrupt-execution>>': ['<Control-c>'],
+            '<<open-class-browser>>': ['<Alt-c>'],
+            '<<open-module>>': ['<Alt-m>'],
+            '<<open-new-window>>': ['<Control-n>'],
+            '<<open-window-from-file>>': ['<Control-o>'],
+            '<<plain-newline-and-indent>>': ['<Control-j>'],
+            '<<redo>>': ['<Control-y>'],
+            '<<remove-selection>>': ['<Escape>'],
+            '<<save-copy-of-window-as-file>>': ['<Alt-Shift-s>'],
+            '<<save-window-as-file>>': ['<Alt-s>'],
+            '<<save-window>>': ['<Control-s>'],
+            '<<select-all>>': ['<Alt-a>'],
+            '<<toggle-auto-coloring>>': ['<Control-slash>'],
+            '<<undo>>': ['<Control-z>']}
+        if keySetName:
+            pass
+            
+        return keyBindings
+
     
     def LoadCfgFiles(self):
         """