Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: xNeur - Punto Switcher for Linux (Архив)  (Прочитано 653143 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Crew

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1384
  • xneur 0.20.0
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3210 : 25 Ноября 2010, 15:29:32 »
Поставьте в настройках уровень выводимых сообщений в "Трассировка" и запускайте xneur в консоли и смотрите лог.
PPA cо стабильными сборками xneur: ppa:andrew-crew-kuznetsov/xneur-stable
PPA c "ночными" сборками xneur: ppa:andrew-crew-kuznetsov/xneur-unstable

Оффлайн rozalex

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3211 : 25 Ноября 2010, 15:49:23 »
[LOG] 15:34:44 Уровень подробности выводимых сообщений установлен в значение Trace
[DBG] 15:34:44 Конфигурационный файл успешно загружен
[LOG] 15:34:44 Системные клавиатурные раскладки:
[LOG] 15:34:44    Используется группа XKB 'USA', раскладка 'us', группа '0'
[DBG] 15:34:44       Словарь USA содержит 7 записи
[DBG] 15:34:44       Прото-язык USA содержит 69 записи
[DBG] 15:34:44       Большой прото-язык USA содержит 8990 записи
[DBG] 15:34:44       Обертка для словарей enchant USA загружена
[LOG] 15:34:44    Используется группа XKB 'Russia', раскладка 'ru', группа '1'
[DBG] 15:34:44       Словарь Russia содержит 8 записи
[DBG] 15:34:44       Прото-язык Russia содержит 203 записи
[DBG] 15:34:44       Большой прото-язык Russia содержит 19141 записи
[DBG] 15:34:44       Обертка для словарей enchant Russia загружена
[LOG] 15:34:44 Всего найдено 2 раскладок клавиатуры
[LOG] 15:34:44 Клавиатурная группа по умолчанию для всех новых окон установлена в значение 0
[LOG] 15:34:44 Ручной режим установлен в значение No
[LOG] 15:34:44 Режим самообучения установлен в значение Yes
[LOG] 15:34:44 Режим запоминания раскладки установлен в значение No
[LOG] 15:34:44 Режим сохранения выделения установлен в значение Yes
[LOG] 15:34:44 Режим переключения раскладки после изменения выделенного текста установлен в значение No
[LOG] 15:34:44 Режим проигрывания звука установлен в значение Yes
[LOG] 15:34:44 Уровень громкости звука установлен в значение 15 процентов
[LOG] 15:34:44 Режим сохранения набираемого пользователем текста установлен в значение No
[LOG] 15:34:44 Максимальный размер пользовательского журнала 1048576 байт
[LOG] 15:34:44 Пользовательский журнал будет отправлен на  через хост :25
[LOG] 15:34:44 Режим игнорирования раскладки для сокращений установлен в значение Yes
[LOG] 15:34:44 Режим исправления сЛУЧАЙНОГО CapsLock установлен в значение Yes
[LOG] 15:34:44 Режим исправления двух ПРописных букв установлен в значение No
[LOG] 15:34:44 Режим исправления пробелов со знаками препинания установлен в значение Yes
[LOG] 15:34:44 Режим отключения CapsLock установлен в значение No
[LOG] 15:34:44 Режим сброса внутреннего буфера при нажатии Ввод или Таб установлен в значение No
[LOG] 15:34:44 Режим необрабатывания слов при нажатии Ввод или Таб установлен в значение No
[LOG] 15:34:44 Режим показа OSD установлен в значение No
[LOG] 15:34:44 Режим показа всплывающих сообщений установлен в значение Yes
[LOG] 15:34:44 Режим проверки языка при вводе установлен в значение Yes                                                                                   
[LOG] 15:34:44 Режим автодополнения установлен в значение No                                                                                             
[LOG] 15:34:44 Режим вставки пробела после автодополнения установлен в значение No                                                                       
[LOG] 15:34:44 Отключение автопереключения, если нажат backspace, установлено в значение No                                                               
[LOG] 15:34:44 Отключение автопереключения, если нажата стрелка влево, установлено в значение No                                                         
[LOG] 15:34:44 Отключение автопереключения, если нажата стрелка вправо, установлено в значение No                                                         
[LOG] 15:34:44 Отключение автопереключения, если нажата стрелка вверх, установлено в значение No                                                         
[LOG] 15:34:44 Отключение автопереключения, если нажата стрелка вниз, установлено в значение No                                                           
[LOG] 15:34:44 Отключение автопереключения, если нажат delete, установлено в значение No                                                                 
[LOG] 15:34:44 Отключение автопереключения, если переключена раскладка, установлено в значение Yes                                                       
[LOG] 15:34:44 Отключение отправки события KeyRelease установлено в значение No                                                                           
[LOG] 15:34:44 Задержка перед отправкой событий приложению (в миллисекундах) установлена в 0                                                             
[TRA] 15:34:44  Идентефикатор процесса Xneur равен 10827 с приоритетом 0                                                                                 
[LOG] 15:34:44 Создано основное окно с id 77594625                                                                                                       
[DBG] 15:34:44 Используется локаль ru_RU.UTF-8                                                                                                           
[DBG] 15:34:44 Установлены горячие клавиши:                                                                                                               
[DBG] 15:34:44    Действие "Change Last Word" с клавишей "Break"                                                                                         
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Translit Last Word"                                                                             
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Changecase Last Word"                                                                           
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Preview Change Last Word"                                                                       
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Change Last String"                                                                             
[DBG] 15:34:44    Действие "Change Mode" с клавишей "Control+Print"                                                                                       
[DBG] 15:34:44    Действие "Change Selected" с клавишей "Shift+Break"                                                                                     
[DBG] 15:34:44    Действие "Translit Selected" с клавишей "Alt+Scroll_Lock"                                                                               
[DBG] 15:34:44    Действие "Changecase Selected" с клавишей "Shift+Alt+Break"
[DBG] 15:34:44    Действие "Preview Change Selected" с клавишей "correction"
[DBG] 15:34:44    Действие "Change Clipboard" с клавишей "Control+Scroll_Lock"
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Translit Clipboard"
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Changecase Clipboard"
[DBG] 15:34:44    Действие "Preview Change Clipboard" с клавишей "correction"
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Enable Layout 1"
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Enable Layout 2"
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Enable Layout 3"
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Enable Layout 4"
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Rotate Layouts"
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Rotate Layouts Back"
[DBG] 15:34:44    Действие "Replace Abbreviation" с клавишей "Control+Tab"
[DBG] 15:34:44    Действие "Autocomplementation Confirmation" с клавишей "Tab"
[DBG] 15:34:44    Не заданы горячие клавиши для действия "Block Keyboard And Mouse Events"
[DBG] 15:34:44 Установлены горячие клавиши пользовательских действий:
[DBG] 15:34:44 Инициализация програмной структуры выполнена
[DBG] 15:34:44 Показывается всплывающее сообщение "X Neural Switcher started" с текстом "(null)"
[DBG] 15:34:44 Сфокусировано окно 113246233
[DBG] 15:34:44 Обрабатывается новое окно (ID 113246233) с именем 'Konsole' (статус Processed, режим Default)
А потом при попытке набора слова мама на англ. раскладке:
[TRA] 15:47:59 Получено KeyPress 'v' (тип события 2)
[TRA] 15:47:59 Проигрывается звуковой клип /usr/share/xneur/sounds/layout1type.wav (используется движок Gstreamer)
[ERR] 15:47:59 Ошибка создания контекста gstreamer
[TRA] 15:47:59 Получено KeyRelease 'v' (тип события 3)
v[TRA] 15:47:59 Получено KeyPress 'f' (тип события 2)
[TRA] 15:47:59 Проигрывается звуковой клип /usr/share/xneur/sounds/layout1type.wav (используется движок Gstreamer)
[ERR] 15:47:59 Ошибка создания контекста gstreamer
f[TRA] 15:47:59 Получено KeyRelease 'f' (тип события 3)
[TRA] 15:47:59 Получено KeyPress 'v' (тип события 2)
[TRA] 15:47:59 Проигрывается звуковой клип /usr/share/xneur/sounds/layout1type.wav (используется движок Gstreamer)
[ERR] 15:47:59 Ошибка создания контекста gstreamer
[DBG] 15:47:59 Обработка слова:
[DBG] 15:47:59    'vfv' в раскладке 'us'
[DBG] 15:47:59    'мам' в раскладке 'ru'
[DBG] 15:47:59 Начало обработки слова...
[DBG] 15:47:59    [-] Это слово не найдено во всех словарях
[DBG] 15:47:59    [+] Это слово найдено в обертке словарей enchant Russia
[DBG] 15:47:59 Конец обработки слова.
[DBG] 15:47:59 Смена языка с USA на Russia
[DBG] 15:47:59 Обработка строки 'vfv'
м[TRA] 15:47:59 Получено KeyRelease 'v' (тип события 3)
[TRA] 15:47:59 Проигрывается звуковой клип /usr/share/xneur/sounds/itemback.wav (используется движок Gstreamer)
[ERR] 15:47:59 Ошибка создания контекста gstreamer
ам[TRA] 15:48:00 Получено KeyPress 'f' (тип события 2)
[TRA] 15:48:00 Проигрывается звуковой клип /usr/share/xneur/sounds/layout2type.wav (используется движок Gstreamer)
[ERR] 15:48:00 Ошибка создания контекста gstreamer
[DBG] 15:48:00 Обработка слова:
[DBG] 15:48:00    'vfvf' в раскладке 'us'
[DBG] 15:48:00    'мама' в раскладке 'ru'
[DBG] 15:48:00 Начало обработки слова...
[DBG] 15:48:00    [-] Это слово не найдено во всех словарях
[DBG] 15:48:00    [+] Это слово найдено в обертке словарей enchant Russia
[DBG] 15:48:00 Конец обработки слова.
[TRA] 15:48:00 Получено KeyRelease 'f' (тип события 3)
а[TRA] 15:48:12 Получено ButtonPress в окне 28972722  (тип события 4)
Алексей
(Kubuntu 11.10x64 на Acer Aspire 8930G)

Оффлайн Crew

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1384
  • xneur 0.20.0
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3212 : 25 Ноября 2010, 19:45:04 »
Ну так я ясно вижу, что после "мам" уже поперло по русски.
PPA cо стабильными сборками xneur: ppa:andrew-crew-kuznetsov/xneur-stable
PPA c "ночными" сборками xneur: ppa:andrew-crew-kuznetsov/xneur-unstable

Оффлайн rozalex

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3213 : 25 Ноября 2010, 20:48:24 »
Поперло-то поперло, но не переключалось.
М-да... Мистика!
Только после перезагрузки заработало!
Спасибо!
Алексей
(Kubuntu 11.10x64 на Acer Aspire 8930G)

Оффлайн stmc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1713
  • Arch Linux
    • Просмотр профиля
    • Моя страница на Launchpad
Re: xneur - Punto Switcher for Linux
« Ответ #3214 : 25 Ноября 2010, 20:55:47 »
Crew, как насчет при сборке добавить myspell-en -ru и т.д. как зависимость? многие пока на сайт или на форум не залезут, так и не знают что они нужны

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3215 : 25 Ноября 2010, 21:02:45 »
Crew, как насчет при сборке добавить myspell-en -ru и т.д. как зависимость? многие пока на сайт или на форум не залезут, так и не знают что они нужны

Тогда уж как рекомендации. Не у всех стоит, скажем, русский.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Crew

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1384
  • xneur 0.20.0
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3216 : 25 Ноября 2010, 22:40:12 »
Crew, как насчет при сборке добавить myspell-en -ru и т.д. как зависимость? многие пока на сайт или на форум не залезут, так и не знают что они нужны

Вообще, в Ubuntu эти словари ставятся если в настройке языков системы поставить полную локализацию. Система -> Администрирование -> Язык Системы. Далее кнопка "Установка/удаление языков..."

Пользователь решил продолжить мысль 26 Ноября 2010, 22:14:24:
Выпущена новая версия Xneur и Gxneur 0.11.1!

Скачать исходные тексты можно тут:
http://dists.xneur.ru/release-0.11.1/tgz/xneur-0.11.1.tar.bz2
http://dists.xneur.ru/release-0.11.1/tgz/gxneur-0.11.1.tar.bz2
http://dists.xneur.ru/xneurchecker/xneurchecker-0.3.tar.bz2 - консольная утилита, использующая библиотеку xneur для проверки принадлежности слова определенной раскладке.

Что нового в этой версии:
  • Использование библиотеки Enchant для словарей вместо Aspell. Теперь Вы можете ставить словари myspell, aspell или другое - xneur будет уметь все, что умеет обертка для словарей Enchant.
  • Новый формат файлов для пользовательских словарей. Теперь вы можете создавать словари, используя мастер.
  • По возможности, xneur применяет мультипоточность (OpenMP).
  • Добавлены новые хоткеи - блокировка клавиатуры и мыши, изменение раскладки после конвертирования выделенного текста, переключение раскладки в обратном порядке
  • У Gxneur появились собственные настройки - текст или картинки в трее, темы значков для gxneur, автостарт и другое.


Для удобства пользователей Ubuntu я предлагаю два новых репозитория:
xneur-stable (sudo add-apt-repository ppa:andrew-crew-kuznetsov/xneur-stable)
xneur-unstable (sudo add-apt-repository ppa:andrew-crew-kuznetsov/xneur-unstable)

Первый - только релизы. Второй - исправление багов он-лайн и добавки из svn. Я, как разработчик, рекомендую unstable, потому что все выявленные баги исправляются d этом репозитории очень быстро.
« Последнее редактирование: 26 Ноября 2010, 22:17:37 от Crew »
PPA cо стабильными сборками xneur: ppa:andrew-crew-kuznetsov/xneur-stable
PPA c "ночными" сборками xneur: ppa:andrew-crew-kuznetsov/xneur-unstable

Оффлайн VlaoMao

  • Активист
  • *
  • Сообщений: 308
  • ArchLinux - eMachines e725 && Nokia N950
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3217 : 27 Ноября 2010, 13:03:15 »
Здравствуйте. Проблема - не всегда корректно изменяет раскладку текста
Что делаю - сижу в аське, или в браузере текст набираю в английской раскладке, потом выделяю весь текст, что набрал, и жму shift+break, и в итоге получаются какие-то кракозябры. Вот сейчас для примера зашёл на яндекс, ввёл в строку Djn nfrbt gbhjub (в русской раскладке это выглядит как "Вот такие пироги"), выделил весь текст и нажал кнопки для коррекции. В итоге получилось
http:ююforum.ubuntu.ruюindex.phpбtopic=126078.0Откуда он это взял, я не понимаю
Вот лог
(Нажмите, чтобы показать/скрыть)
Ну это для примера, если удастся отловить момент некорректной коррекции в других приложениях, отпишусь

Пользователь решил продолжить мысль 27 Ноября 2010, 13:08:57:
Во. Выловил ещё
Набираю те же "Вот такие пироги" в английской раскладке в QutIm, выделяю весь текст, жму shift+break, и вместо "Вот такие пироги" получаю всего лишь "пироги"
Вот лог
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 27 Ноября 2010, 13:08:57 от VlaoMao »

Оффлайн assistent

  • Активист
  • *
  • Сообщений: 682
    • Просмотр профиля
    • Caйт плеера foobnix
Re: xneur - Punto Switcher for Linux
« Ответ #3218 : 27 Ноября 2010, 15:59:08 »
Кстати, уже не первый раз замечаю, что при смене раскладки выделенного текста по Shift+Break прямые слеши заменяются русской буквой "ю".

И еще, после длительной работы программы частенько бывает, что смена раскладки просто перестает работать (что авто, что по брейку), хотя демон при этом активен. Также не знаю, как отловить ошибки недоочистки буфера, которые также обычно возникают  после довольно длительной работы.
Foobnix - наше всё.

Оффлайн rotozeev

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
    • Блог Ротозеев НЕТ
Re: xneur - Punto Switcher for Linux
« Ответ #3219 : 28 Ноября 2010, 12:47:06 »
Извиняюсь, что не прочитал 215 страниц темы, может проблему уже описывали, но у меня на Ubuntu 10.10 xneur иногда зависал, начиная мигать индикатором Scroll Lock на клавиатуре и значком в панели, меняя раскладки несколько раз в секунду. Это у кого то было?

Оффлайн stmc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1713
  • Arch Linux
    • Просмотр профиля
    • Моя страница на Launchpad
Re: xneur - Punto Switcher for Linux
« Ответ #3220 : 28 Ноября 2010, 16:11:17 »
было, но в самых первых версиях ветки 0.10.0
в 0.11.1 все в порядке

Оффлайн Кунни

  • Активист
  • *
  • Сообщений: 418
  • мил и пушист
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3221 : 28 Ноября 2010, 17:34:19 »
Господа, у меня последняя версия данной программы, но окошко насттроек занимает полтора рабочих стола. Я что-то пропустил? Как это исправляется?
Заранее спасибо за советы.
З.Ы. Всегда хотел спросить. Прав. кнопкой по иконке в трее - ПОЛЬЗОВАТЕЛЬСКОЕ ДЕЙСТВИЕ - пусто
это что такое, для чего и как им пользоваться?
Пытаюсь отучить людей использовать фразу "не суть важно" (вместо "не суть", "не важно" или "не столь важно")

Оффлайн Crew

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1384
  • xneur 0.20.0
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3222 : 28 Ноября 2010, 19:23:57 »
Если растянуло - проверьте пути к звукам в настройках.

По второй части вопроса - это пользовательские действия на горячие клавиши

У меня это вот такая секция конфига

# This option add user action when pressed key bind
# Example:
#AddAction Control Alt f Firefox Browser <cmd>firefox</cmd>
AddAction Alt t Вызов терминала <cmd>gnome-terminal -x mc</cmd>
AddAction Alt g Открыть Gedit <cmd>gedit</cmd>
AddAction Super_L Открыть Nautilus <cmd>nautilus ~/</cmd>
AddAction Super f Открыть ссылку в Firefox <cmd>xsel -o | xargs firefox --new-tab</cmd>
AddAction Super g Google - Искать <cmd>xsel -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "http://www.google.ru/search?hl=ru&q=" $1}' | xargs firefox -new-tab</cmd>
AddAction Super r Google - Перевести на русский <cmd>xsel -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "translate.google.com/translate_t?hl=ru#auto|ru|" $1}' | xargs firefox -new-tab</cmd>
AddAction Super a Google - Перевести на английский <cmd>xsel -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "translate.google.com/translate_t?hl=ru#auto|en|" $1}' | xargs firefox -new-tab</cmd>
« Последнее редактирование: 28 Ноября 2010, 19:30:13 от Crew »
PPA cо стабильными сборками xneur: ppa:andrew-crew-kuznetsov/xneur-stable
PPA c "ночными" сборками xneur: ppa:andrew-crew-kuznetsov/xneur-unstable

Оффлайн krengels

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3223 : 28 Ноября 2010, 19:58:48 »
Здравствуйте!
Я только учусь, и идёт трудно.
Помогите разобраться, пожалуйста, вот с чем - сам не смог.
Поставил версию 0.9.9. , добавив предварительно репозиторий http://gq.net.ru/ubuntu
Работает пожалуй без нареканий, однако, хочется иметь флажок не американский, а английский в трее. По этому поводу  нашёл-скачал архив@bob@, но как воспользоваться не  понял. В этой теме предлагали распаковать архив в каталог xneur, но по указанному адресу такого каталога нет у меня (xununtu licid) . Нужно было его там создать что ли и скопировать флажки туда? А дальше как?
Ещё не получается разобраться, как добавить другую раскладку, кроме рус-амер.

Вопросы:
будет ли xneur обновляться самостоятельно до версии 11?
нужно ли добавить новый репозиторий от CREW
xneur-stable (sudo add-apt-repository ppa:andrew-crew-kuznetsov/xneur-stable)и удалить старый?
нужно ли в автозагрузку помещать и gxneur, и xneur?
Xubuntu 10.10 AMD HP Pavilion zv6100

Оффлайн Crew

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1384
  • xneur 0.20.0
    • Просмотр профиля
Re: xneur - Punto Switcher for Linux
« Ответ #3224 : 28 Ноября 2010, 20:12:57 »
Удалить старый репозиторий GQ, поставить мой репозиторий (sudo add-apt-repository ppa:andrew-crew-kuznetsov/xneur-unstable).
Оно обновится само по команде Синаптика.

Распаковать тему можно куда угодно, потом в новой версии 0.11.1 в параметрах gxneur можно указать, откуда брать тему.

Добавить язык можно в Параметрах клавиатуры (это тоже можно запустить через меню gxneur).
PPA cо стабильными сборками xneur: ppa:andrew-crew-kuznetsov/xneur-stable
PPA c "ночными" сборками xneur: ppa:andrew-crew-kuznetsov/xneur-unstable

 

Страница сгенерирована за 0.167 секунд. Запросов: 23.