ckbcomp is a perl script, its copyright line stating the years 2005-2006, so it's not new at all. It has existed even back then when I made my first observations here.
As for the "keycode" lines it generates, it properly generates up to F24 (and beyond for other modifiers), with off-by-12 semantics as we've already established. That is, physical keypresses Shift+F9..Shift+F12 are mapped to the logical symbols F21..F24. So far this is what I'm looking for. The problem is that the corresponding "string" lines are missing, which would define the escape sequence belonging to F21..F24. They can be installed with a script like sudo loadkeys <<EOF string F21 = "\033[35~" string F22 = "\033[36~" string F23 = "\033[37~" string F24 = "\033[38~" EOF and then taught to mc using its "Learn keys" dialog. This way even Shift+F9 and Shift+10 will work as intended. Note that I'm not certain what are the "best" escape sequences to choose, it's always been a mistery to me why and where some numbers are skipped. But as for someone's local fix, it doesn't matter. ckbcomp doesn't emit such individual "string" commands, but emits a magical "strings as usual" line to be processed with loadkeys. This command reverts F1..F20 to their defaults, but luckily leaves the unset-by-default F21..F24 at the values we've set manually. So, subsequent "loadkeys xx" commands won't override them.

