I press the Russian key, and keyCode does not change

When using the Russian keyboard layout, not all letters have their own keyCode, such as: Б Ю Ж Э Х Ъ.
On the English keyboard layout they are in the punctuation areas.
However key displays them fine.
the problem with obtaining the keyCode can be corrected through the key, but what I see is that Processing is not working properly and my decision will be considered a “crutch”.
Is it possible to solve this problem at the level of the keyCode operation through your own project so as not to use “crutches” in the code?!

image
enable this option in preferences. It should work

set enable it, not work

try to restart processing

Unfortunately, restarted Processing and computer, but this did not affect the problem.

you could map english keys to russian ones (a solution found on the old forum)
so you can use

char[] from = ("abcdefgh").toCharArray();
char[] to = ("БЮЖЭХЪ.").toCharArray();
void keyPressed() {
    int keyID = -1;
    for(int i = 0; i < from.length; i++) if(key == from[i]) keyID = i;
    if(keyID != -1) {
         char newKey = char[keyID];
         <code using newKey instead of key>
    }
}

(don’t know the characters so I just copied the ones from above)

and don’t russian keys belong under “key” instead of “keycode” category?

As far as I understand, the key and the key code duplicate each other and all keyboard keys should be perceived by them. If Russian keys do not belong to the key code, then why are most of them still perceived as a key code?
Okay, I suppose you cannot solve the problem otherwise than with a “crutch”. There is no point in wasting your time and mine. Thanks for answers.

the keyCode and key solution:

void setup() {
  
}
void draw() {
  println(keyCode,key);
}

keyCode returns the ascii number, key returns a char

both are good for some things.
keyCode is good for things like backspace,enter,shift,…
key is good for characters not in ascii

from what I found out,
the keyboard returns an ascii value, but the OS interprets it with a char. No matter the language set, “keyCode” (ascii) values are the same, but the “key” values change.