Question: I want to define some key bindings for my new found usage of helm, amazing mode btw, and I want to do it without overwriting the usage of other keys. I realize that the number of different key combinations is infinite, but is there some way to see all *undefined* key bindings for say 1 level deep? 

For example, I want to know what key bindings are available after hitting `C-c`, and then get a buffer with a listing of `C-c some_keys`. 

Assuming this feature doesn't currently exist?

Answer: 
Check out the [`free-keys`](https://github.com/Fuco1/free-keys) package, which gives you a function of the same name that shows you all your currently unused key-bindings.

[`bind-key`](https://github.com/jwiegley/use-package/blob/master/bind-key.el) is also a helpful tool which gives you a cleaner syntax for defining your own bindings, i.e.:

```
(bind-key "C-h C-k" 'free-keys)

```

`bind-key` also comes with a handy defun called `describe-personal-keybindings` to see all the key-bindings you've set as well as if and what bindings you've overridden.
You can hit `C-c C-h` to know all bindings that start with `C-c`. This works for any key sequence that is "incomplete": hit that key sequence and then `C-h` to see all the keybindings that start with that sequence. You can then pick something not in the list.

To know whether a particular keybinding is defined (to avoid overwriting it), you can use `C-h c` or `M-x describe-key-briefly` (or `C-h k` or `M-x describe-key`) to see what it is defined to, in the current mode.