Привык менять раскладку клавишей меню, т.к. нажимать аж две клавишы для такой частой операции слишком расточительно. Выставлял через убунтовый настройщик, все приложения понимали это переназначение. Началось все с того что начиная с какой-то версии в хроме стали брать коды клавиш не от xmodmap и xkb, а в обход. В результате когда в строке урла жал кнопку меню, то вместе со сменой раскладки срабатывал и их идиотский попап в менюшке (кому он там нужен?). Забил на это и с год так и пользовался, нажимая эскейп чтоб закрыть этот попап.
Нервы не железные, пришло время порешать это. Делать экстеншн под хром не особо хотелось, да и не факт что API позволит слушателей нажатий менять. Решил маппинг клавиши меню сменить на что-то другое. Настройки xmodmap и xkb ничего не дали, как уже говорил выше нагуглил что хром в обход работает https://askubuntu.com/questions/668853/google-chrome-ignores-xmodmap-key-mapping Там же посоветовали через setkeycode выставлять скан->keycode, ядро хром уже будет не в силах обойти) Назначил никому ненужный keycode MSDOS (серьезно? бывает и такая кнопка?), работает: раскладка меняется, хрому пофиг на ДОС, супер!
Думал уже успокоиться, но вычитал здесь что «чем то правильнее» через udev чем через setkeycode https://wiki.archlinux.org/index.php/Map_scancodes_to_keycodes Довольно долго промучавшись, методом проб и ошибок нашел заветный рецепт для udev моего лаптопа Asus M50SA: /lib/udev/hwdb.d/60-keyboard.hwdb
# Asus M50SA
keyboard:name:AT Translated Set 2 keyboard:dmi:*
KEYBOARD_KEY_dd=msdos # Menu to MSDOS
sudo udevadm hwdb --update && sudo udevadm trigger
Надеюсь кому-то рецепт скоротает похожую задачу в переназначении клавишь.