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.
Here are few ideas. They don't answer your question directly but they can help you figure out which key bindings are available for use.

Get a list of all key bindings starting with a prefix
=====================================================

The [`guide-key`](https://github.com/kai2nenobu/guide-key) package can be used to show, in alphabetical order, all the key bindings that begin with the entered prefix.

The below screen capture shows `guide-key` showing me all my key-bindings beginning with `C-x r`. As the available bindings are listed alphabetically, it's easy to figure out which bindings are available.

The screen capture also shows what other key prefixes I use `guide-key` for.

![My key bindings that begin with C-x r](https://i.stack.imgur.com/nDWbF.png)

Get a list of what bindings you overrode
========================================

The `describe-personal-keybindings` function that comes with the [`use-package`](https://github.com/jwiegley/use-package) package shows what key bindings you overrode as shown in below screen capture. You can review the results of this function to check if you overrode a binding unintentionally. The cool thing is that this function shows the bindings for all minor modes too.

![Sample of what the output of describe-personal-keybindings looks like](https://i.stack.imgur.com/l5xiD.png)