Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Virtual Keyboard [Обсуждение] (Юрий Насретдинов)
Goto page 1, 2, 3  Next
Author Message
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9986
   поощрить/наказать


PostPosted: Sat Jul 15, 2006 3:40 pm ()
   Post subject:
Reply with quote


М

Выделено из темы «Virtual Keyboard»,
расположенной в форуме Склад готовых решений :: JavaScript (18 Ноября 2008, 22:08).
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sat Jul 15, 2006 3:40 pm (спустя 1 секунду; написано за 46 секунд)
   Post subject:
Reply with quote

phprus
Еще было бы неплохо сделать такую ;е штуку, как на Яндексе - автоматическая перекодировка в русскую раскладку набираемого на английском языке текста. (пример работы смотрите тут - yandex.ru/index_engl_qwerty.html). Правда, на Яндексе она тормозит, ;елательно сделать, чтобы она работала пошустрее :)
Back to top
View user's profile Send private message Send e-mail
phprus
Участник форума



Joined: 25 Jul 2003
Posts: 162
Карма: 8
   поощрить/наказать

Location: Пермь

PostPosted: Sat Jul 15, 2006 4:35 pm (спустя 55 минут; написано за 1 минуту 13 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
ИМХО это не имеет отношения к виртуальной клавиатуре, но, если будет время, то может быть сделаю в качестве отдельного скрипта.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sat Jul 15, 2006 6:13 pm (спустя 1 час 37 минут; написано за 49 секунд)
   Post subject:
Reply with quote

phprus
Jxtyn ohz? nfr rfr nt? rnj gjkmpet.ncz dbhnefkmyjq rkfdbfnehjq? vjuen yfvyjuj ,scnhtt b elj,ytt ddjlbnm ntrcn c gjvjom. rkfdbfnehs j,sxyjq? b Dfv yt ghbl`ncz gthtrjlbhjdfnm 'njn ntrcn? xnj,s tuj ghjxbnfnm
Back to top
View user's profile Send private message Send e-mail
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Sun Jul 16, 2006 6:39 am (спустя 12 часов 26 минут; написано за 1 минуту 24 секунды)
   Post subject:
Reply with quote

phprus
Классно!
Вопрос у меня еще вчера появился, т.к. заинтересовался работой сценария. Вы заметили, как в IE при нажатии bksp курсор иногда перепрыгивает на начало? Интересно, можно ли поправить или бесполезно? Спрашиваю потому, что вчера здорово помучался в надежде самостоятельно разобраться - ничего у меня не получилось...
Back to top
View user's profile Send private message Send e-mail
phprus
Участник форума



Joined: 25 Jul 2003
Posts: 162
Карма: 8
   поощрить/наказать

Location: Пермь

PostPosted: Thu Jul 20, 2006 10:39 am (спустя 4 дня 4 часа 4 секунды; написано за 1 минуту 40 секунд)
   Post subject:
Reply with quote

AKS
Заметил. Но пока причину не нашел. Если найду то выложу исправленную версию. Если нет то придется надеяться на то, что кто либо из сдесь присутствующих поможет в поиске причины этого глюка.
Back to top
View user's profile Send private message Send e-mail
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Thu Jul 20, 2006 10:45 am (спустя 5 минут; написано за 1 минуту 56 секунд)
   Post subject:
Reply with quote

phprus
Да, хоть бы подсказал кто-нибудь, возможно ли вообще исправить. А то у меня быстро желание возиться пропало, когда не знаешь, с чем имеешь дело. Там ведь все из-за фокуса, который время от времени сбрасывается на начало строки. Вот сохранить бы позицию курсора...
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Thu Jul 27, 2006 7:19 pm (спустя 7 дней 8 часов 34 минуты; написано за 55 секунд)
   Post subject:
Reply with quote

phprus
Ещё один маленький баг - надо сделать, чтобы окно нельзя было перемещать кнопкой «Закрыть».
Back to top
View user's profile Send private message Send e-mail
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Thu Jul 27, 2006 7:47 pm (спустя 27 минут; написано за 1 минуту 48 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
А я на кнопке заменил onclick на onmousedown - вроде все, как надо получается...
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Thu Jul 27, 2006 7:50 pm (спустя 3 минуты; написано за 32 секунды)
   Post subject:
Reply with quote

AKS
Не, это плохо - лучше просто запретить перетаскивать за эту кнопку (посмотрите внимательно, как в Винде сделано :) )
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Sat Jul 29, 2006 3:38 pm (спустя 1 день 19 часов 48 минут; написано за 2 минуты 19 секунд)
   Post subject:
Reply with quote

phprus
Этот баг не лечится.
select и iframe в IE являются стандартными виндовыми объектами и ноги бага растут из тех же мест, что и бесконечный z-index.
Если хочется чтобы таскалось красиво, надо либо прикрутить эмулятор селекта, либо просто прятать его.
Back to top
View user's profile Send private message
phprus
Участник форума



Joined: 25 Jul 2003
Posts: 162
Карма: 8
   поощрить/наказать

Location: Пермь

PostPosted: Mon Jul 31, 2006 8:46 pm (спустя 2 дня 5 часов 8 минут; написано за 1 минуту 53 секунды)
   Post subject:
Reply with quote

WingedFox
Ваша версия не работает в Opera 7.21. А именно некоторые кнопки находятся не на своих местах, и все надписи находящиеся в верхнем ряду съезжают куда-то вправо.
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Tue Aug 01, 2006 12:03 am (спустя 3 часа 17 минут; написано за 1 минуту 31 секунду)
   Post subject:
Reply with quote

phprus
Вполне возможно 8*)
Я эту версию не тестировал в Опере.
Сие - есть просто альфа.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Aug 02, 2006 7:43 pm (спустя 1 день 19 часов 40 минут; написано за 1 секунду)
   Post subject:
Reply with quote

У меня в опере 8.60 (для смартфона) клавиатура не работает (вообще говоря, просто не нажимаются кнопки). При этом на Яндексе все пашет просто замечательно.
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Aug 02, 2006 7:48 pm (спустя 4 минуты; написано за 18 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Какая именно?
Старая или новая?

В консоли оно кажет чего?
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Aug 02, 2006 8:42 pm (спустя 54 минуты; написано за 1 секунду)
   Post subject:
Reply with quote

Новая. Да и фиг с ним, на самом деле. Там слишком много нареканий, чтобы ей можно было нормально на телефоне пользоваться.
Back to top
View user's profile Send private message Send e-mail
kernel32
Участник форума



Joined: 18 Mar 2006
Posts: 256
Карма: 24
   поощрить/наказать

Location: Москва

PostPosted: Fri Aug 04, 2006 12:12 pm (спустя 1 день 15 часов 29 минут; написано за 1 минуту 16 секунд)
   Post subject:
Reply with quote

phprus, хорошая штука, да!

Last edited by kernel32 on Mon Apr 02, 2007 5:52 pm; edited 1 time in total
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Fri Aug 04, 2006 1:06 pm (спустя 54 минуты; написано за 11 секунд)
   Post subject:
Reply with quote

kernel32
Посмотрите третье сообщение в теме.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sat Aug 05, 2006 11:20 am (спустя 22 часа 13 минут; написано за 45 секунд)
   Post subject:
Reply with quote

WingedFox
Ещё один баг - после нажатия на клавишу с буквой, шифт не «разлипает» - чем он тогда отличается от CAPS LOCK?
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Sat Aug 05, 2006 2:59 pm (спустя 3 часа 38 минут; написано за 1 минуту 31 секунду)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Тем, что он переключает символы 1->!, 2->@ и т.п. и регистр букв
А CAPS - только регистр букв.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sat Aug 05, 2006 9:02 pm (спустя 6 часов 3 минуты; написано за 42 секунды)
   Post subject:
Reply with quote

WingedFox
Я думаю, логично, что при нажатии на букву шифт должен отпускаться.
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Tue Sep 05, 2006 4:44 pm (спустя 30 дней 19 часов 41 минуту; написано за 3 минуты 9 секунд)
   Post subject:
Reply with quote

интересная фича
когда кликаешь мышкой на левый "шифт", и не отпуская мышки ведешь курсором на нужную буквенную клавишу, а потом отпускаешь - получаешь то же самое что и последовательное нажатие "шифт-буква-шифт"

но работает только с левым шифтом и только с буквами
в остальных случаях (правый "шифт" и левый "шифт" с цифрами и символами справа) - "шифт" залипает
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Tue Sep 05, 2006 5:02 pm (спустя 17 минут; написано за 1 минуту 13 секунд)
   Post subject:
Reply with quote

Забавно. Пусть это будет "сурпризом" =)

Добавил к клаве position: fixed и соответствующий .htc скрипт.
Соотв. почистил код, отвязал от onscroll.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Sep 05, 2006 5:02 pm (спустя 32 секунды)
   Post subject:
Reply with quote

WingedFox
А я попытался "разобраться" с клавишей Caps Lock, но не смог...
При смене раскладки эта клавиша, имея вид нажатого состояния, примет дефолтный className (будет "ненажатый" вид), при этом буквы останутся в верхнем регистре. Хотелось "докопаться", но код уже настолько специфичный, что мне не "по зубам". А вообще, можно ли сделать так, чтобы она сохраняла "нажатый" вид?
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Sep 06, 2006 7:24 pm (спустя 1 день 2 часа 21 минуту; написано за 36 секунд)
   Post subject:
Reply with quote

WingedFox
В IE не работает флажок "A->Z" (кстати, что он вообще должен делать???), пишет, обращение к неизвестному методу.
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Sep 06, 2006 7:50 pm (спустя 25 минут; написано за 2 минуты 40 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
В каком браузере оно не работат?
Это попытка выразить функционал "при вводе с клавиатуры трансляция нажатий включена/отключена".

Делает следующее:
При наборе текста на физической клаве, нажатия конпок отлавливаются и символы транслируются из реальных в виртуальные.
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Sep 06, 2006 10:39 pm (спустя 2 часа 48 минут; написано за 1 минуту 13 секунд)
   Post subject:
Reply with quote

Нашел. Бага в IE и MSDN - не указано, на каких типах инпутов можно создать выделение.
Back to top
View user's profile Send private message
K.Wiolowan
Участник форума



Joined: 22 Feb 2006
Posts: 53
Карма: 11
   поощрить/наказать


PostPosted: Mon Oct 30, 2006 8:52 pm (спустя 1 месяц 23 дня 22 часа 13 минут; написано за 19 минут 14 секунд)
   Post subject:
Reply with quote

Мог бы попробовать закодировать корейские и японские раскладки, если Вы мне объясните "входы" и "выходы" скрипта.
У корейцев и японцев слоговые азбуки (хангыль, катакана/хирагана), и драйверы клавиатуры требуют анализа последовательности keystrokes.
Например, символ (хан) "состоит" из (х), (а), (н)
Насколько я представляю, "корейская клавиатура" -это таблица клавишных кодов ПЛЮС "буфер введенных компонентов слога" ПЛЮС функция, строящая слог исходя из текущего буфера и текущего keystroke
Например, как строится слово 한국 (Корея):
буфер==[] клавиша: 'm' = ㅎ-
буфер==[ㅎ] клавиша: 'f' = ㅏ
буфер==[하] клавиша: 'n' = -ㄴ
буфер==[한] клавиша: 'k' = ㄱ-
한 буфер==[ㄱ] клавиша: 'b' = ㅜ
한 буфер==[구] клавиша: 'x' = -ㄱ
한 буфер==[국] клавиша: ',' = ,
한국, буфер==[] итп

Особенность такого "слогового" ввода в том, что содержимое буфера не попадает сразу в поле ввода, оно высвечивается как "выделенный символ", и с помощью бэкспейса можно "удалить" предыдущую "часть слога":
буфер==[한] клавиша: BACKSPACE
буфер==[하] клавиша: BACKSPACE
буфер==[ㅎ] клавиша: BACKSPACE
буфер==[]

Разложить символ-"слог" на символы-"буквы" несложно (11К корейских символов в Юникоде очень регулярны).
Но, очевидно, одной простой таблицей соответствий типа
VirtualKeyboard.addLayout('kr','Korean 3 Beolsik 390-final',
[1105,49,50,51 итп. - не обойтись
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon Oct 30, 2006 11:05 pm (спустя 2 часа 13 минут; написано за 9 минут 35 секунд)
   Post subject:
Reply with quote

K.Wiolowan
Я проверял на арабском, там ввод работает хорошо, т.е. последовательности букв правильно объединяются в "слоги" на уровне браузера.
Думаю, с японским и корейским будет работать аналогично.

Для ввода спец. символов, которые представимы только последовательностью есть поддержка т.н. "лигатур" - ligatures.

Что реально надо доделать, это
1. ввод символов с нажатым Alt (оказывается, таких раскладок достаточно много).
2. "dead keys", т.е. символы, сами по себе не дающие печатных эквивалентов. Например - ввод акцентированных букв и самих акцентов.
3. интерактивное редактирование раскладок.
?. Возможно, надо будет перевести мёртвые кнопки и лигатуры в раскладко-зависимый вид.

Входы и выходы просты:
за всю работу с виртуальными символами отвечает метод _keyClicker_, конкретно вот этот код:
Code (JavaScript): скопировать код в буфер обмена
      default:
        var el = document.getElementById(idPrefix+key);
        chr = el.firstChild.firstChild.firstChild.nodeValue;
        /*
        *  do uppercase if either caps or shift clicked, not both
        */

        if (flags.shift ^ flags.caps && el.firstChild.firstChild==el.firstChild.lastChild) chr = chr.toUpperCase();
        /*
        *  reset shift state, if clicked on the letter button
        */

        if (!flags.kbd_shift && flags.shift && el.firstChild.firstChild == el.firstChild.lastChild) {
          /*
          *  we need firstChild here and on other places to be sure that we point to 'a' node
          */

          document.getElementById(idPrefix+'shift_left').firstChild.fireEvent('onmousedown');
        }
        break;
Если нужны более точные подробности - задавайте конкретные вопросы, пожалуйста.
Чем могу - помогу.

PS: если планируете вести работу по модификации - вытащите проект из SVN.
Back to top
View user's profile Send private message
K.Wiolowan
Участник форума



Joined: 22 Feb 2006
Posts: 53
Карма: 11
   поощрить/наказать


PostPosted: Tue Oct 31, 2006 10:00 pm (спустя 22 часа 54 минуты; написано за 38 минут 25 секунд)
   Post subject:
Reply with quote

В случае арабского там другой случай: у каждого символа, Юникода есть несколько разновидностей, которые реализуются в зависимости от положения в слове.
Вот пример: два символа слитно, два символа раздельно, и их юникоды:
عه , ع ه
ع ه عه
В случае корейского без буфера клавиатуры не обойтись. Вот аналогичный пример:
한 ㅎㅏㄴ
한 ㅎ ㅏ ㄴ
Комбинация ㅎㅏㄴ получается просто сдвигом вправо-влево после набора каждого символа (буфер клавиатуры т.обр. "забывает", что вводилось ранее).
Введение буфера клавиатуры позволяет решать и проблемы с deadkeys, и с заменами типа 'a = á
Нужно сделать FIFO-буфер
Для корейского достаточно емкости буфера вообще в один символ. Здесь могут быть две ситуации:
а) новый keystroke не образует "лигатуру" с символом в буфере и просто замещает его. Если новый символ сам может образовать лигатуры с последующими символами, он выделяется (светлая буква на темном фоне). Символы типа цифр, а тж. LeftArro, PgDown etc. - естественно не выделяются
б) новый keystroke образует "лигатуру" с символом в буфере и объединяется с ним, например, [하] + ㄴ = [한]
[하] + BackSp = [ㅎ]
Число подобных "лигатур" - ок. 12000, и одна такая таблица будет превышать по размеру нынешний размер файла virtualkeyboard.js. Программно описать такое поведение - дюжина строк.

Поэтому я предлагаю следующий вариант:

1. я добавляю "стартовый набор" VirtualKeyboard.addLayout('kr', 'Beolsik...',...
для двух стандартных корейских клавиатур

(объясните, что означают доп. ассоциативный массив в лейаутах, напр. здесь:
Code (JavaScript): скопировать код в буфер обмена
VirtualKeyboard.addLayout('hu', 'Hungarian',
[48,49,50,51,52,53,54,55,56,57,246,252,243......],
{'0': [167,39,34,43,33,37,47,61,40,41],
'44': [63,58,95]});
2. предоставляю функцию, формата
Code (JavaScript): скопировать код в буфер обмена
var kbdBuffer=''
function PrintKorean(inputChar){
        if( //
        {
                //
                kbdBuffer = resultingChar
                return resultingChar
        }else{
                kbdBuffer = inputChar
                return inputChar
        }
}
--А Вы уже вставляете эту функцию там, где нужно.
Таким же образом можно обеспечить и поддержку deadkey - загоняйте его в буфер, и фильтруйте инпут дополнительной функцией, распознающей комбинации deadkey + realkey например:
Code (JavaScript): скопировать код в буфер обмена
var kbdBuffer=''

FrenchDeadKeysHash={
"'": { 'e': 'é', 'a': 'á' },
'`': { 'e': 'è', 'a': 'à' }
}
function filterFrenchDeadKeys(inputChar){
        var resultChar
        if(FrenchDeadKeysHash[kbdBuffer] && (resultChar = FrenchDeadKeysHash[kbdBuffer][inputChar])){
                return (kbdBuffer = resultChar)
        }else{
                return (kbdBuffer = inputChar)
        }
}
Такие функции-фильтры можно стандартно добавять в качестве аргумента для VirtualKeyboard.addLayout()
соответственно, для б-ва клавиатур это будет function(input){return input}
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Nov 01, 2006 2:06 pm (спустя 16 часов 6 минут; написано за 28 минут 44 секунды)
   Post subject:
Reply with quote

K.Wiolowan
Кажется зарождается непонимание...
Давайте, я начну с начала, чтобы объяснить как и что сам понимаю.

Поскольку я с Арабским игрался достаточно много, я увидел следующее: винды понимают, как именно надо менять написание букв при появлении "комбинируемых" символов.
Но есть и "фиксированные" символы, в таблицах именуемые "isolated form"
Например, символ с арабской клавиатуры вводится либо
1. в виде слога: \u0644\0625, لإ <= ل إ и может удаляться по частям, без необходимости доп. буферов.
2. в виде единого символа: \ufef9, ﻹ, который вводится и удаляется целиком.

Так вот, я предполагаю, что надо отталкиваться от следующего:
Сделать простую раскладку, для того же Корейского языка и посмотреть, будет ли автоматически формироваться нужный символ из последовательности. Имхо, будет. 8*)
en.wikipedia.org/wiki/Keyboard_layout#Hangul_.28for_Korean.29
Если нет - тогда уже и будет иметь смысл заморачиваться с буферами ввода.

Лигатуры в текущем виде я зря ввёл, просто мне дали неправильную информацию... =\
Оказалось, что на той же Арабской клавиатуре символ из примера специально вынесен на отдельную кнопку, т.к. оперировать с ним надо в т.ч. как с буквой, а не слогом.
Вот статья о том, что есть настоящие лигатуры: en.wikipedia.org/wiki/Ligature_%28typography%29

С dead keys разговор отдельный, тут без буфера не обойтись, т.к. винды не понимают последовательный ввод модификатора и буквы.
Для них я буду делать ввод аналогичный тому, что реализовано на Маке:
1. при нажатии на кнопку символ вводится и выделяется.
2а. Если со следующим символом он комбинируем, то вводится комбинированный символ.
2б. Если не комбинируется - новый символ затирает введённый (так вводятся и сами символы с dead keys)

Формат раскладки:
Code (JavaScript): скопировать код в буфер обмена
VirtualKeyboard.addLayout(
'ar',     //группа раскладок
'Arabic', //название раскладки
[],       //массив базовых символов, в который автоматически подставляются "управляющие" при добавлении раскладки
{}        //хэш с "диффом" клавиатуры в при нажатом шифте, тут присутствуют только те символы,
          //которые нельзя получить через преобразование базового символа к верхнему регистру например 1 => !
          //ключ массива означает стартовую позицию, массив значений - последовательность замены
          //например, '44': [63,58,95] приведёт к добавлению 3 "шифтуемых" символов,
          //начиная с 45й кнопки на виртуальной клавиатуре
          //кнопки отсчитываются построчно, начиная с левого верхнего угла.
);
Позиции управляющих кнопок:
14 - 'backspace'
15 - 'tab'
28 - 'enter'
29 - 'caps'
41 - 'shift_left'
52 - 'shift_right'
53 - 'del'
54 - 'space'
Back to top
View user's profile Send private message
K.Wiolowan
Участник форума



Joined: 22 Feb 2006
Posts: 53
Карма: 11
   поощрить/наказать


PostPosted: Wed Nov 01, 2006 4:33 pm (спустя 2 часа 26 минут; написано за 13 минут 53 секунды)
   Post subject:
Reply with quote

Нет, все же корейские драйверы клавиатуры работают не так, как арабские. Насколько я помню, в случае арабского у каждого _глифа_ Юникода, с одним и тем же кодом, есть несколько "синонимических" представлений, которые как бы "спрятаны" в шрифте, и реализуются при представлении "картинки".

Одну из корейских клавиатур я вбил, и в витртуальной клавиатере там ничего не заменяется на лету:
Code (JavaScript): скопировать код в буфер обмена
VirtualKeyboard.addLayout('kr', '2 Beolsik',
[96,49,50,51,52,53,54,55,56,57,48,45,61,92,
        12610,12616,12599,12593,12613,12635,12629,12625,12624,12628,91,93,
        12609,12596,12615,12601,12622,12631,12627,12623,12643,59,39,
        12619,12620,12618,12621,12640,12636,12641,44,46,47],
{'0': [126,33,64,35,36,37,94,38,42,40,41,95,43,124,
        12611,12617,12600,12594,12614,12635,12629,12625,12626,12630,123,125],
'35': [58,34],
'44': [60,62,63]});
В принципе, видно, что к клавишам "цепляются" символы с дес. кодами 12ххх ([\u3131-\u318E]), это т.н. "джамо", "обломки" корейских слогов. Сами же слоги имеют в Юникоде диапазон в районе 44ххх-55ххх ([\uAC00-\uD7A3])
При вводе последовательности символов ㅎㅏㄴㄱㅜㄱ у меня получается ㅎㅏㄴㄱㅜㄱ, а должно быть 한국.

В случае раскладки "3 Beolsik" cитуация усложняется еще тем, что в ней есть "синонимичееские" клавиши, например, y(ㄹ), w(ㄹ) которые служат для ввода начальных и конечных гласных слога:
랄난  = yfwhfs
Кстати, поле ввода текст в демо-версии перехватывает большую часть движений курсора и мыши, так что выделить текст не просто, причем периодически появляется надпись
Строка 80: Ошибка: __currentTarget.__onMoveStart есть null или не является объектом

Так что без буфера клавиатуры не обойтись. В принципе, вы написали о буфере и его обработке практически то же, что и я.
Мне всего-то нужно: глобальную переменную kbdBuffer, и формат функции-фильтра - на входе - код клавиши-символа, на выходе - что должно появиться на экране, функция должна также изменить соотв. обр. буфер, и, возможно, сигнализировать о необходимости выделения символа на экране.
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Nov 01, 2006 10:34 pm (спустя 6 часов 1 минуту; написано за 3 минуты 57 секунд)
   Post subject:
Reply with quote

Вижу. К сожалению, не заменяется.
Сегодня я весь день угробил на игрища с TextArea, по счастью удалось решить сию проблему глобально.
До сегодняшнего дня я видел решения (частично работающие) только для одного текстового поля. Теперь есть нормальная библиотека =)

Дему обновил, вроде бы проблемы ушли эти.

Буфером займусь "asap", принимать он будет 2 значения:
1. текущий символ
2. предыдущий буфер
Отдавать должен массив:
1. новый символ
2. флаг возможна дальнейшая модификация или нет
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Nov 01, 2006 10:37 pm (спустя 3 минуты; написано за 1 минуту 12 секунд)
   Post subject:
Reply with quote

Пока писал, уже есть изменения =)

Спасибо за помощь и разъяснения. Думаю, вместе мы Корейцев поборем 8*)
Back to top
View user's profile Send private message
K.Wiolowan
Участник форума



Joined: 22 Feb 2006
Posts: 53
Карма: 11
   поощрить/наказать


PostPosted: Sat Nov 04, 2006 11:24 am (спустя 2 дня 12 часов 46 минут; написано за 5 минут 7 секунд)
   Post subject:
Reply with quote

WingedFox wrote:
Буфером займусь "asap"
--Когда наступит asap, телеграфируйте мне, пожалуйста, на wablenica at mail dot ru :)
Back to top
View user's profile Send private message
K.Wiolowan
Участник форума



Joined: 22 Feb 2006
Posts: 53
Карма: 11
   поощрить/наказать


PostPosted: Sun Nov 05, 2006 10:52 am (спустя 23 часа 28 минут; написано за 6 минут 39 секунд)
   Post subject:
Reply with quote

WingedFox wrote:
PS: приветствуется спонсорская поддерка моих усилий =)
--Подал сорокоуст о здравiи Крылатой Лисы.
Back to top
View user's profile Send private message
phprus
Участник форума



Joined: 25 Jul 2003
Posts: 162
Карма: 8
   поощрить/наказать

Location: Пермь

PostPosted: Mon Nov 06, 2006 6:48 pm (спустя 1 день 7 часов 55 минут; написано за 1 минуту 9 секунд)
   Post subject:
Reply with quote

WingedFox
При выборе языка RU при попытке выбрать чтонибуть в выпадающем списке справа возникает ошибка:
layout[layout.indexOf(code)] has no properties
на 325-й строке. Браузер FF 1.5.0.7
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon Nov 06, 2006 7:15 pm (спустя 26 минут)
   Post subject:
Reply with quote

phprus
Спасибо, исправлено.
Back to top
View user's profile Send private message
гость
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Nov 30, 2006 1:03 am (спустя 23 дня 5 часов 48 минут; написано за 3 минуты 3 секунды)
   Post subject:
Reply with quote

1. если слишком быстро нажимать на кнопки, то некоторые клавиши залипают, то есть выглядят как нажатые.
2. при перетаскивании элемент select выглядит не очень красиво
3. жрет много ресурсов, долго загружается в начале, если быстро понажимать много кнопок на физической клаве, то она еще долгобудет печатать символы
Back to top
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Thu Nov 30, 2006 10:29 am (спустя 9 часов 25 минут; написано за 28 секунд)
   Post subject:
Reply with quote

гость
Это давно известные проблемы.
Можете предложить решения?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page 1, 2, 3  Next
Page 1 of 3    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML