Actually the problem is not the translation: if you had bound the key that you meant to bind, it would have precedence over the translation. The problem is that you didn't bind Ctrl+Shift+S.
There are several syntaxes for keyboard events and it can occasionally get confusing. You can use modifier prefixes like C-
for Control and S-
for Shift with function keys, but not with characters. Your binding is for a function key whose name is C-S-s
, and has no practical effect since there is no such key on your keyboard. For a character, even with modifiers, you need to use a character literal.
(global-set-key [?\C-\S-s] 'isearch-forward-symbol-at-point)
Some modifier+character combinations can be expressed with a string instead of an array of characters, e.g. (global-set-key "\C-s" 'isearch-forward)
. But strings can only store characters with modifiers that result in another string character: the result has to be an ASCII character, or Meta plus an ASCII character, or a member of an extended character set such as Unicode. Other modifier combinations can be expressed through character constants, but these characters can't be put in strings.
Instead of using a character literal, you can build the key chord using a list containing the modifiers and, at the end, the base key.
(global-set-key [(control shift ?s)] 'isearch-forward-symbol-at-point)
Alternatively, you can use the kbd
macro and let it build the key sequence from the usual user-visible syntax. It will figure out that C-S-s
means a modified character S and not a function key.
(global-set-key (kbd "C-S-s") 'isearch-forward-symbol-at-point)