У меня на теле в JVM нет ввода русских букв.
Сделайте плиз либу, чтобы был програмнный ввод символов.
Я на MP программку писал, может чем поможет.
Вот код:
program Programniy_vvod_russkimi_bukvami;
var ok:command;
n,k,nl,kl,nn,kn,tim,np:integer;
rd,ru,ed,eu,td,tu,txt,s:string;
upc,lng:string;
begin
ok:=createcommand('OK',CM_OK,2);
addcommand(ok);
rd:='.,?!0: _1=+-абвг2 деёжз3ийкл4 мно5 прс6 туфх7 цчшщъ8ыьэюя9';
ru:='.,?!0: _1=+-АБВГ2 ДЕЁЖЗ3ИЙКЛ4 МНО5 ПРС6 ТУФХ7 ЦЧШЩЪ8ЫЬЭЮЯ9';
ed:='.,?!0: _1=+-abc2 def3 ghi4 jkl5 mno6 pqrs7 tuv8 wxyz9 ';
eu:='.,?!0: _1=+-ABC2 DEF3 GHI4 JKL5 MNO6 PQRS7 TUV8 WXYZ9 ';
tu:=ru;td:=rd;
upc:='UPCASE';
lng:='rus';
repeat
k:=getkeyclicked;
if (k<>0) then kl:=k
if (kl=42) then begin
if (upc='UPCASE') then upc:='downcase' else upc:='UPCASE';
kl:=0;
end;
if (kl=-7) then begin
if (lng='rus') then lng:='eng' else lng:='rus';
kl:=0;
end;
if (kl>47) and (nl>47) then if (nl=kl) then nn:=nn+1;
if (nn>6) then nn:=1;
if (nl>42) and (kl<>nl) and (nn>0) and (kl<>0)then begin
kn:=nn+(nl-48)*6+4;
nn:=0;
end;
if (nn>=1) then kl:=0 else nl:=kl;
if (lng='rus') then
begin
td:=rd;
tu:=ru;
end
else
begin
td:=ed;
tu:=eu;
end;
if (np<>nn) then tim:=0;
if (tim>30) then begin kn:=nn+(nl-48)*6+4; tim:=0; nn:=0; end;
np:=nn;
tim:=tim+1;
if (kn>4) then
begin
if upc='UPCASE' then
txt:=txt+getchar(tu,kn-5)
else
txt:=txt+getchar(td,kn-5);
kn:=0;
end
if (kl=-8) and (length(txt)>0) then begin
txt:=copy(txt, 0, length(txt)-1);
kl:=0;
end;
kn:=nn+(nl-48)*6+4;
if upc='UPCASE' then
s:=getchar(tu,kn-5)
else
s:=getchar(td,kn-5);
kn:=0;
setColor(200, 255, 255);
fillrect(0,0,240,320);
setColor(0, 0, 0);
drawtext(''+nl,10,10);
setColor(0, 255, 0);
drawtext(s,10,30);
drawtext(upc,50,50);
drawtext(lng,10,50);
setColor(0, 0, 255);
drawtext(txt,10,70);
drawtext(''+tim,10,90);
repaint;
until (kl=-6 ) or (getclickedcommand=ok);
end.