Použití Autohotkey funguje docela dobře.
#IfWinActive ahk_class NotebookFrame
Enter::Send {blind}{shift down}{enter}{shift up}
Shift & Enter::Send {enter}
#IfWinActive
V případě, že se někdy změní interní, můžete k získání interní třídy použít následující.
Return::
WinGetClass, class, A
MsgBox, The active window's class is "%class%".
return
Tento kus kódu by měl stačit. Účinkuje okamžitě.
SetOptions[$FrontEnd,
FrontEndEventActions:>{{"MenuCommand", "HandleShiftReturn"} :>
FrontEndTokenExecute["Linebreak"], "ReturnKeyDown" :>
FrontEndTokenExecute["EvaluateCells"]}]
(Testováno na ArchLinux/MacOS_Sierra/Win10Server2016 s MMA 11. Doufejme, že to bude fungovat i na Ubuntu)
Pokud jej chcete spouštět automaticky při každém otevření MMA, můžete upravit kód a vložit jej do konfiguračního souboru frontendu $UserBaseDirectory/FrontEnd/init.m
A moc děkuji Kubovi. Komentář pod jeho odpovědí mě hodně inspiroval. Bez jeho nápadu bych nebyl schopen tuto odpověď vytvořit.
První tah KeyEventTranslations.tr
soubor do vašeho $UserBaseDirectory
aby nedošlo k poškození instalačních souborů. (Znovu svázání kláves pro definování nových klávesových zkratek)
Otevřete soubor a najděte tyto řádky:
...
(* Hodnocení *)
...
Item[KeyEvent["Return", Modifiers -> {Shift}], "HandleShiftReturn"]
...
(* Vstup *)
Item[KeyEvent["Return"], "Linebreak"]
...
a vyměňte "HandleShiftReturn"
s "Linebreak"
.
Funguje v systému Windows.