class_docstr: Hold config parsers for all idle config files in singleton instance.
  
  Default config files, self.defaultCfg --
      for config_type in self.config_types:
          (idle install dir)/config-{config-type}.def
  
  User config files, self.userCfg --
      for config_type in self.config_types:
      (user home dir)/.idlerc/config-{config-type}.cfg
class_docstr_tok: ["Hold","config","parsers","for","all","idle","config","files","in","singleton","instance",".","Default","config","files",",","self.defaultCfg","--","for","config_type","in","self.config_types",":","(","idle","install","dir",")","\/config-","{","config-type","}",".def","User","config","files",",","self.userCfg","--","for","config_type","in","self.config_types",":","(","user","home","dir",")","\/.idlerc\/config-","{","config-type","}",".cfg"]
docstr: Return dict of core virtual-key keybindings for keySetName.
  
  The default keySetName None corresponds to the keyBindings base
  dict. If keySetName is not None, bindings from the config
  file(s) are loaded _over_ these defaults, so if there is a
  problem getting any core binding there will be an 'ultimate last
  resort fallback' to the CUA-ish bindings defined here.
docstr_tok: ["Return","dict","of","core","virtual-key","keybindings","for","keySetName",".","The","default","keySetName","None","corresponds","to","the","keyBindings","base","dict",".","If","keySetName","is","not","None",",","bindings","from","the","config","file","(","s",")","are","loaded","_over_","these","defaults",",","so","if","there","is","a","problem","getting","any","core","binding","there","will","be","an","'ultimate","last","resort","fallback","'","to","the","CUA-ish","bindings","defined","here","."]
code: def GetCoreKeys(self, keySetName=None):
      """Return dict of core virtual-key keybindings for keySetName.
  
      The default keySetName None corresponds to the keyBindings base
      dict. If keySetName is not None, bindings from the config
      file(s) are loaded _over_ these defaults, so if there is a
      problem getting any core binding there will be an 'ultimate last
      resort fallback' to the CUA-ish bindings defined here.
      """
      # TODO: = dict(sorted([(v-event, keys), ...]))?
      keyBindings = {
          # vitual-event: list of key events.
          "<<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>"],
          "<<do-nothing>>": ["<Control-x>"],
          "<<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>"],
          "<<view-restart>>": ["<F6>"],
          "<<restart-shell>>": ["<Control-F6>"],
          "<<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>"],
          "<<print-window>>": ["<Control-p>"],
          "<<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>"],
          "<<find-again>>": ["<Control-g>", "<F3>"],
          "<<find-in-files>>": ["<Alt-F3>"],
          "<<find-selection>>": ["<Control-F3>"],
          "<<find>>": ["<Control-f>"],
          "<<replace>>": ["<Control-h>"],
          "<<goto-line>>": ["<Alt-g>"],
          "<<smart-backspace>>": ["<Key-BackSpace>"],
          "<<newline-and-indent>>": ["<Key-Return>", "<Key-KP_Enter>"],
          "<<smart-indent>>": ["<Key-Tab>"],
          "<<indent-region>>": ["<Control-Key-bracketright>"],
          "<<dedent-region>>": ["<Control-Key-bracketleft>"],
          "<<comment-region>>": ["<Alt-Key-3>"],
          "<<uncomment-region>>": ["<Alt-Key-4>"],
          "<<tabify-region>>": ["<Alt-Key-5>"],
          "<<untabify-region>>": ["<Alt-Key-6>"],
          "<<toggle-tabs>>": ["<Alt-Key-t>"],
          "<<change-indentwidth>>": ["<Alt-Key-u>"],
          "<<del-word-left>>": ["<Control-Key-BackSpace>"],
          "<<del-word-right>>": ["<Control-Key-Delete>"],
          "<<force-open-completions>>": ["<Control-Key-space>"],
          "<<expand-word>>": ["<Alt-Key-slash>"],
          "<<force-open-calltip>>": ["<Control-Key-backslash>"],
          "<<flash-paren>>": ["<Control-Key-0>"],
          "<<format-paragraph>>": ["<Alt-Key-q>"],
          "<<run-module>>": ["<Key-F5>"],
          "<<run-custom>>": ["<Shift-Key-F5>"],
          "<<check-module>>": ["<Alt-Key-x>"],
          "<<zoom-height>>": ["<Alt-Key-2>"],
      }
  
      if keySetName:
          if not (
              self.userCfg["keys"].has_section(keySetName)
              or self.defaultCfg["keys"].has_section(keySetName)
          ):
              warning = (
                  "\n Warning: config.py - IdleConf.GetCoreKeys -\n"
                  " key set %r is not defined, using default bindings."
                  % (keySetName,)
              )
              _warn(warning, "keys", keySetName)
          else:
              for event in keyBindings:
                  binding = self.GetKeyBinding(keySetName, event)
                  if binding:
                      keyBindings[event] = binding
                  # Otherwise return default in keyBindings.
                  elif event not in self.former_extension_events:
                      warning = (
                          "\n Warning: config.py - IdleConf.GetCoreKeys -\n"
                          " problem retrieving key binding for event %r\n"
                          " from key set %r.\n"
                          " returning default value: %r"
                          % (event, keySetName, keyBindings[event])
                      )
                      _warn(warning, "keys", keySetName, event)
      return keyBindings
  
imports: from configparser import ConfigParser
  import os
  import sys
  from tkinter.font import Font
  import idlelib
label_desc: Use image node_id 23 for calling the IdleConf obj's underlying member method code with example usage: obj.GetCoreKeys(keySetName) and returns: keyBindings