event.key. Дуже все легко і зрозуміло, робиш if (event.key == ‘s’ and event.ctrlKey) і знаєш, що натиснули ctrl-s. Ну дуже легко.З мінусів — перемикання на іншу розкладку, скажімо, українську, — і прилітає
і. Ну і все, всі хоткеї не працюють. Але є вихід! Коли я писав keymage — я використав event.keyCode. MDN каже numerical code identifying the unmodified value of the pressed key. Ну тобто тиснеш ту кнопку, де s чи i, і прилітає 83 — ASCII-код літери S. Зроби собі один раз мапінг всіх кнопок — і шорткати починають працювати нормально в різних розкладках. Так працює система шорткатів у ProseMirror, він всередині використовує пакет w3c-keyname, який власне мапить keyCode на ім’я (приблизно те саме, що й по посиланню).АЄОА! Кнопочка біля правого шифта, яка слеш, в англійській розкладці генерує 191, а в українській 190 — точку! Я це якось взагалі не пам’ятав з тих днів, коли писав keymage — можливо не помітив — але в Nounry команд-бар висить саме на
cmd-/, і в українській розкладці не працює! 😠Гарна новина, що з тих часів пройшло вже 10 років (чи гарна це новина, правда?..) і всі браузери поробили собі
event.code, який represents a physical key on the keyboard. Йуху! Там прилітає щось на кшталт KeyS чи AltRight чи Slash — і тому можна без проблем робити шорткати, які реагують на натискання однієї і тієї самої фізичної кнопки на клаві!Тож я взяв до рук
patch-package і переробив prosemirror-keymap так, щоби в мене був кльовий модерновий спосіб хендлити шорткати. 😁 Єдине, що цікаво — чи люди, які використовують Dvorak чи там Colemak, що очікують, коли написано cmd-/? Але вони звикші до страждань, тож якось розберуться. :-)Єдине, з чим залишилося якось розібратися — макосний хоткей на
ctrl-k, який видаляє до кінця рядка, перестає працювати в українській розкладці. Не певен, що це питання до мене, правда. :-)