tl;dr: On Linux, you should be using the
evdev rules. As it says in the XKB guide you link:
On Linux systems, the evdev rules are most commonly used, on other systems the base rules are used.
The difference is largely historical.
evdev is the modern Linux kernel input subsystem and did not exist when XKB was first written. If you look into the source code for xkeyboard-config, you'll find that both
base rules are generated from (mostly) the same templates. Compare the generated files in your system XKB database with
diff, though. You'll see many entries where the
base rules loads
inet symbols for specific keyboard models, while the
evdev rules do away with most of those model-specific entries and load a more generalized set:
! model = symbols
a4techKB21 = +inet(media_nav_common)
asus_laptop = +inet(media_common)
acer_tm_800 = +inet(acer_laptop)
benqx730 = +inet(benqx)
btc9116u = +inet(btc9019u)
chromebook = +inet(chromebook)
dellsk8125 = +inet(dell)
// and about 50 more lines
// generated from xkeyboard-config/rules/base.m_s.part
! model = symbols
$evdevkbds = +inet(evdev)+inet(%m)
chromebook = +inet(evdev)+inet(chromebook)
applealu_jis = +inet(evdev)+macintosh_vndr/jp(alujiskeys)
* = +inet(evdev)
// ...that's all.
// generated from xkeyboard-config/rules/evdev.m_s.part
No really, that's the whole model-to-symbols section from the
evdev rules, whereas the
base version is 60-odd lines long. The
evdev.m_s.part file is the source template for that section of the rules; it's a model-to-symbol mapping (the
!model = symbol line at the start of that section; hence the
m_s in the filename). The only other evdev-specific section of the rules comes from the
evdev.m_k.part file, which is a model-to-keycodes mapping (the
!model = keycodes section of the rules), and the differences there are similar.
For further details, consult the keycodes and symbols files referenced by those rules (especially
/usr/share/X11/xkb/symbols/inet). You may be interested in this writeup of the XKB rules format.