fakevim is based on eventFilters installed on a QTextEdit or a QPlainTextEdit. It basically catches all keystrokes and modifies some internal state that make the resulting text in the editor look like it was using vim. There are only a few files in here: fakevimplugin.{h,cpp} - interaction with the rest of Creator fakevimactions.{h,cpp} - settings fakevimhandler.{h,cpp} - the "real" event There are some more hints for developers in fakevimhandler.cpp