Usando Autohotkey lo siguiente funciona bastante bien.
#IfWinActive ahk_class NotebookFrame
Enter::Send {blind}{shift down}{enter}{shift up}
Shift & Enter::Send {enter}
#IfWinActive
En caso de que alguna vez se cambien las partes internas, puede usar lo siguiente para obtener la clase interna.
Return::
WinGetClass, class, A
MsgBox, The active window's class is "%class%".
return
Esta pieza de código debería hacer el truco. Entra en vigor inmediatamente.
SetOptions[$FrontEnd,
FrontEndEventActions:>{{"MenuCommand", "HandleShiftReturn"} :>
FrontEndTokenExecute["Linebreak"], "ReturnKeyDown" :>
FrontEndTokenExecute["EvaluateCells"]}]
(Probado en ArchLinux/MacOS_Sierra/Win10Server2016 con MMA 11. Con suerte, también funcionará en Ubuntu)
Si desea ejecutarlo automáticamente cada vez que abre MMA, puede modificar el código e insertarlo en el archivo de configuración de frontend $UserBaseDirectory/FrontEnd/init.m
Y muchas gracias a Kuba. El comentario debajo de su respuesta me inspiró mucho. Sin su idea no podría producir esta respuesta.
Primer movimiento KeyEventTranslations.tr
archivo a su $UserBaseDirectory
para no dañar los archivos de instalación. (Revincular teclas para definir nuevos atajos de teclado)
Abra el archivo y busque esas líneas:
...
(* Evaluación *)
...
Elemento[KeyEvent["Return", Modificadores -> {Shift}], "HandleShiftReturn"]
...
(* Entrada *)
Elemento[EventoClave["Retorno"], "Salto de línea"]
...
e intercambiar "HandleShiftReturn"
con "Linebreak"
.
Funciona en Windows.