Usando Autohotkey quanto segue funziona piuttosto bene.
#IfWinActive ahk_class NotebookFrame
Enter::Send {blind}{shift down}{enter}{shift up}
Shift & Enter::Send {enter}
#IfWinActive
Nel caso in cui gli interni vengano mai modificati, puoi utilizzare quanto segue per ottenere la classe interna.
Return::
WinGetClass, class, A
MsgBox, The active window's class is "%class%".
return
Questo pezzo di codice dovrebbe fare il trucco. Ha effetto immediato.
SetOptions[$FrontEnd,
FrontEndEventActions:>{{"MenuCommand", "HandleShiftReturn"} :>
FrontEndTokenExecute["Linebreak"], "ReturnKeyDown" :>
FrontEndTokenExecute["EvaluateCells"]}]
(Testato su ArchLinux/MacOS_Sierra/Win10Server2016 con MMA 11. Si spera che funzioni anche su Ubuntu)
Se vuoi eseguirlo automaticamente ogni volta che apri MMA, puoi modificare il codice e inserirlo nel file di configurazione del frontend $UserBaseDirectory/FrontEnd/init.m
E molte grazie a Kuba. Il commento sotto la sua risposta mi ha ispirato molto. Senza la sua idea non sarei in grado di fornire questa risposta.
Prima mossa KeyEventTranslations.tr
file al tuo $UserBaseDirectory
per non danneggiare i file di installazione. (Riassociazione dei tasti per definire nuove scorciatoie da tastiera)
Apri il file e trova quelle righe:
...
(* Valutazione *)
...
Item[KeyEvent["Return", Modifiers -> {Shift}], "HandleShiftReturn"]
...
(*Inserimento*)
Item[KeyEvent["Return"], "Linebreak"]
...
e scambia "HandleShiftReturn"
con "Linebreak"
.
Funziona su Windows.