Some xkb layouts have moved, consolidated or simply disappeared in newest xkb version. For example, the name of the file containing description of Swiss German keyboard layout has been changed from 'de_CH' to 'ch'.
NoMachine, in order to keep its software aligned with the new standard, has updated the keyboard definitions used by NX Client 3.1.x for Windows. This grants proper keyboard support when the NX server side is on a machine running recent Linux distributions.
If your NX Server and Node are instead installed on a machine running a earlier Linux distribution, depending on which is your local keyboard layout, you may get an unexpected keyboard layout inside your NX session. In effect, when local and remote keyboard layouts don't match, NX always falls back to the default US layout.
If this is your case, you could try to modify the symbols file corresponding to your local keyboard layout. To do this, you should modify the '%Program Files%\NX Client for Windows\share\keyboards' file by changing the line that describes a particular keyboard layout.
I want to use Swiss German keyboard but layout is US inside my NX session
Change from: ch,0x0807,Swiss German
to: de_CH,0x0807,Swiss German
I want to use Swiss French keyboard but layout is US inside my NX session
Change from: ch(fr),0x100c,Swiss French
to: fr_CH,0x100c,Swiss French
I want to use Arabic keyboard but layout is US keyboard inside my NX session
Change from: ara,0x0401,Arabic
I want to use Bosnian keyboard but layout is US inside my NX session
Change from: ba,0x101a,Bosnian
I want to use Great Britain keyboard but layout is US inside my NX session
Change from: gb,0x0809,English (United Kingdom)
to: en_GB,0x0809,English (United Kingdom)