2020 answer:
I'm using Karabiner
It used to be called KeyBindingsEdit which the other answer links to
It comes with a UI, you can import rules that other people have uploaded, and you can make your own through JSON format file
Here are my configs for moving cursor forward/backwards a word:
(I didn't check if the parenthesis are matching properly, confirm that the format is correct on your file)
{
"title": "personal rules",
"rules": [
{
"description": "cmd + arrow to ctrl + arrow",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "right_arrow",
"modifiers": {
"mandatory": [ "command" ],
"optional": [ "any" ]
}
},
"to": [
{
"key_code": "right_arrow",
"modifiers": [ "control" ]
}
]
},
{
"type": "basic",
"from": {
"key_code": "left_arrow",
"modifiers": {
"mandatory": [ "command" ],
"optional": [ "any" ]
}
},
"to": [
{
"key_code": "left_arrow",
"modifiers": [ "control" ]
}
]
}
]
}
]
}
You would add it to ~/.config/karabiner/assets/complex_modifications/<customname>.json