Раскладка клавиатуры в Acrobat.

  • Автор темы Автор темы bsi
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
В VB раскладку клавиатуры меняю так:
В модуле
Public Const vKF1 = &H70
Public Const KEYEVENTF_KEYDOWN = &H0
Public Const KEYEVENTF_KEYUP = &H2
Public Const HKL_NEXT As Long = 1
Public Const HKL_PREV As Long = 0

Public Enum enmKeybordLayout ' Раскладки клавиатуры
kbrdEnglish = 67699721
kbrdRussian = 68748313
End Enum

' Пример: keybd_event vKF1, 0, KEYEVENTF_KEYUP, 0
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Integer, ByVal bScan As Integer, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long


' Пример: SetLayout kbrdEnglish
Public Sub SetLayout(ByVal myLayout As enmKeybordLayout) ' Включить выбранную раскладку клавы
On Error Resume Next
Dim lngReturn As Long
Dim lngCodeKeybord As Long
lngReturn = GetKeyboardLayout(lngCodeKeybord) 'Получить текущую раскладку
If lngReturn <> CLng(myLayout) Then 'Если раскладки не совпадают, значит, надо переключиться
Call ActivateKeyboardLayout(HKL_NEXT, 0)
End If
End Sub
в свойствах полей:
Private Sub Ing_GotFocus()
SetLayout kbrdEnglish
End Sub
Private Sub Rus_GotFocus()
SetLayout kbrdRussian
End Sub

На WEB странице делаю так (маппинг раскладки) :
<input id="en" type="text"/>
<script>
var type = {
1081: "q", 1094: "w", 1091: "e", 1082: "r", 1077: "t", 1085: "y",
1075: "u", 1096: "i", 1097: "o", 1079: "p", 1093: "[", 1098: "]",
1092: "a", 1099: "s", 1074: "d", 1072: "f", 1087: "g", 1088: "h",
1083: "k", 1076: "l", 1078: ";", 1101: "'", 1103: "z", 1095: "x",
1089: "c", 1084: "v", 1080: "b", 1090: "n", 1100: "m", 1073: ",",
1102: ".", 1049: "Q", 1062: "W", 1059: "E", 1050: "R", 1045: "T",
1053: "Y", 1043: "U", 1064: "I", 1065: "O", 1047: "P", 1061: "{",
1066: "}", 1060: "A", 1067: "S", 1042: "D", 1040: "F", 1055: "G",
1056: "H", 1054: "J", 1051: "K", 1044: "L", 1046: ":", 1069: "\"",
1071: "Z", 1063: "X", 1057: "C", 1052: "V", 1048: "B", 1058: "N",
1068: "M", 1041: "<", 1070: ">", 1105: "`", 1025: "~", 8470: "#",
1086: "j"
};
document.getElementById("en").onkeypress = function (e) {
console.log(e.which);
if (e.which > 126) {
this.value += type[e.which];
return false;
}
}
</script>
Как этот маппинг сделать в Acrobat, если можно пример.
Всем спасибо.
 
Вызов функции:
Код:
form1.#subform[0].en::change - (JavaScript, client)

  if (xfa.event.newText.length > xfa.event.prevText.length && xfa.event.change.length == 1)
{
     xfa.event.change = xfa.form.form1.variables.Validation.Decode(xfa.event.change);
}
else
{
    xfa.event.change = "";
}

Функция
Код:
var rusAdditional = {
'А': 70 , 'Б' : 60, 'В' : 68, 'Г' : 85, 'Д' : 76, 'Е' : 84, 'Ё' : 126, 'Ж' : 58, 'З' : 80, 'И' : 66,
'Й' : 81, 'К' : 82, 'Л' : 75, 'М' : 86, 'Н' : 89, 'О' : 74, 'П' : 71, 'Р' : 72, 'С' : 67, 'Т' : 78,
'У' : 69, 'Ф' : 65, 'Х' : 123, 'Ц' : 87, 'Ч' : 88, 'Ш' : 73, 'Щ' : 79, 'Ъ' : 125, 'Ы' : 83, 'Ь' : 77,
'Э' : 34, 'Ю' : 62, 'Я' : 90, 'а' : 102, 'б' : 44, 'в' : 100, 'г' : 117, 'д' : 108, 'е' : 116, 'ё' : 39,
'ж' : 59, 'з' : 112, 'и' : 98, 'й' : 113, 'к' : 114, 'л' : 107, 'м' : 118, 'н' : 121, 'о' : 106, 'п' : 113,
'р' : 104, 'с' : 99, 'т' : 110, 'у' : 101, 'ф' : 97, 'х' : 91, 'ц' : 119, 'ч' : 120, 'ш' : 105, 'щ' : 111,
'ъ' : 93, 'ы' : 115, 'ь' : 109, 'э' : 96, 'ю' : 46, 'я' : 122,'0':48,'1':49,'2':50,'3':51,'4':52,'5':53,
'6':54,'7':55,'8':56,'9':57,'!':33,'?':63,'@':64,'#':35,'%':37,'$':36
             }  
       function Decode(utftext) {
       var c = c2 = string = "";
       var i = 0;

           while ( i < utftext.length ) {
               c = utftext.charAt(i);
               i++;
               c2 = String.fromCharCode(rusAdditional[c]);
               if (c2 == ""){c2 = c};
               string += c2;
               //string += "'"+String.fromCharCode(c)+"' : "+ c + "," + '\n';
           }
           return string;
       }
 
  • Спасибо
Реакции: III
Статус
Закрыто для дальнейших ответов.