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):
         """ 
