I was trying to write a program that needed to output characters in Cyrillic, and someone (Fordy?) suggested unicode. What I intend to do with this program is to "rekey" a keyboard so that on keypress the output to the screen would be according to my own layout (ex: when 'H' is pressed the output would be Cyrillic letter 'X' and so on).

first, I'm not sure whether I'm doing this right, but as I understand, Unicode would be in hex (0x0000), right? Here's my code:
Code:
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <tchar.h>

#define UNICODE
#define _UNICODE
#define EscKey 0x001B

int _tmain(void){
  int a_key;       //key being interpreted to Cyrillic

  do{
    a_key = getch();

//The characters output to the screen are based on 
//the unicode table (see attachment).
    switch(a_key){
      case 'A': putchar(0x0410); break;
      case 'B': putchar(0x0411); break;
      case 'C': putchar(0x0426); break;
      case 'D': putchar(0x0414); break;
      case 'E': putchar(0x0415); break;
      case 'F': putchar(0x0424); break;
      case 'G': putchar(0x0413); break;

//... this is done for all letters and any other keys I 
//want reassigned according to the Unicode Standard 3.2 table.
      case 'X': putchar(0x0425); break;
      case 'Y': putchar(0x042B); break;
      case 'Z': putchar(0x0417); break;

//other keys I reassign
      case '~': putchar(0x042E); break;
      case '{': putchar(0x0428); break;
      case '}': putchar(0x0429); break;
      case '+': putchar(0x042C); break;
      case '|': putchar(0x042D); break;

      case '`': putchar(0x044E); break;
      case '[': putchar(0x0448); break;
      case ']': putchar(0x0449); break;
      case '=': putchar(0x044C); break;
      case '\\': putchar(0x044D); break;
      
//this takes care of backspace
      case '\b': //backspace
        putchar('\b');
        putchar(' ');
//everything else gets printed "as is".
      default: putchar(a_key);
    }
  }while(a_key != EscKey);

  rewind (stdin);
  getchar();

  return (0);
}
Now, for some reason I am unable to get anything displayed this way in Cyrillic, while if I did the same for Latin characters (according to the same table) it works just fine. My guess that the problem lies not in my use of the table but in putchar();

Is it correct to guess that putchar() simply doesn't have the capability to print out non-ASCII characters?