Good afternoon!
To use keyboard shortcuts to the user with different from the Latin keyboard layout, must switch it first. It is not too convenient.
Maybe it makes sense to add bindings to the file app/assets/javascripts/discourse/lib/keyboard-shortcuts.js.es6
for the keys that relevant to Latin keys?
Here is implementation for users with a Cyrillic keyboard:
'№': {handler: 'goToPost', anonymous: true}, '\\': {handler: 'toggleSearch', anonymous: true}, '+': {handler: 'toggleHamburgerMenu', anonymous: true}, ',': {handler: 'showHelpModal', anonymous: true}, 'ю': {click: '.alert.alert-info.clickable', anonymous: true}, // show incoming/updated topics 'и': {handler: 'toggleBookmark'}, 'с': {handler: 'createTopic'}, 'ctrl+а': {handler: 'showPageSearch', anonymous: true}, 'command+а': {handler: 'showPageSearch', anonymous: true}, 'ctrl+з': {handler: 'printTopic', anonymous: true}, 'command+з': {handler: 'printTopic', anonymous: true}, 'в': {postAction: 'deletePost'}, 'у': {postAction: 'editPost'}, 'end': {handler: 'goToLastPost', anonymous: true}, 'command+down': {handler: 'goToLastPost', anonymous: true}, 'а': {handler: 'toggleBookmarkTopic'}, 'п р': {path: '/', anonymous: true}, 'п д': {path: '/latest', anonymous: true}, 'п т': {path: '/new'}, 'п г': {path: '/unread'}, 'п с': {path: '/categories', anonymous: true}, 'п е': {path: '/top', anonymous: true}, 'п и': {path: '/bookmarks'}, 'п з': {path: '/my/activity'}, 'п ь': {path: '/my/messages'}, 'home': {handler: 'goToFirstPost', anonymous: true}, 'command+up': {handler: 'goToFirstPost', anonymous: true}, 'о': {handler: 'selectDown', anonymous: true}, 'л': {handler: 'selectUp', anonymous: true}, 'д': {click: '.topic-post.selected button.toggle-like'}, 'ь ь': {handler: 'setTrackingToMuted'}, // mark topic as muted 'ь к': {handler: 'setTrackingToRegular'}, // mark topic as regular 'ь е': {handler: 'setTrackingToTracking'}, // mark topic as tracking 'ь ц': {handler: 'setTrackingToWatching'}, // mark topic as watching 'щ': {click: '.topic-list tr.selected a.title', anonymous: true}, // open selected topic 'з': {handler: 'showCurrentUser'}, 'й': {handler: 'quoteReply'}, 'к': {postAction: 'replyToPost'}, 'ы': {click: '.topic-post.selected a.post-date', anonymous: true}, // share post 'shift+о': {handler: 'nextSection', anonymous: true}, 'shift+л': {handler: 'prevSection', anonymous: true}, 'shift+з': {handler: 'pinUnpinTopic'}, 'shift+к': {handler: 'replyToTopic'}, 'shift+ы': {click: '#topic-footer-buttons button.share', anonymous: true}, // share topic 'shift+я shift+я': {handler: 'logout'}, 'е': {postAction: 'replyAsNewTopic'}, 'г': {handler: 'goBack', anonymous: true}, 'ч к': {click: '#dismiss-new,#dismiss-new-top,#dismiss-posts,#dismiss-posts-top'}, // dismiss new/posts 'ч е': {click: '#dismiss-topics,#dismiss-topics-top'} // dismiss topics