Отправляет email-рассылки с помощью сервиса Sendsay

[prg] Отладчик для дополнений NVDA Поправка

mylist = [abc, defg, 12345, wxyz]

Ну да, только кавычки забыл, ночь однако. Но сути в моём случае это не
меняет.

Короче вот и нужен отладчик чтоб можно было переместиться на
определённую строку кода и посмотреть что чему равно на данном этапе.

И ещё, есть ли что-нибудь такое, чтобы когда запускаешь дополнение по
горячей клавише, в случае возникновения ошибки или исключения, это
показывалось бы?

     ответов: 0   2021-01-09 21:51:07 (#3663543)

[prg] работают ли у кого эти функции?

Здравствуйте.

посылал вчера письмо, но в полученных сообщениях его нет. прошу прощения повторю его еще. так-как скорей всего оно не прошло.
при тестировании скрипта, в jaws выяснил, что функции
LoWord
HiWord
не работают. сообщается, что вызвана неизвестная функция. хотя в справочнике fsdn справке по шифт+ф1, а также в списке функций по контрол+ i все есть. это у меня такое или и у других тоже не работает, эти функции были заявлены с 6.0 jaws.. проверял на 2019 и 2020 версиях.

     ответов: 7   2020-11-16 20:03:08 (#3660768)

[prg] В скрипте Джоз сконвертить текст строковой переменной из ANSI в UTF-8.

Здравствуйте, уважаемые учыастники.

Собственно сабж, как-то не нашёл во встроенных функциях Джоза средств
для этого, нужен внешний инструмент, доступный из скрипта. Или плохо
искал?
Всем спасибо и всех благ.

     ответов: 1   2020-11-16 17:17:12 (#3660668)

[prg] Удобное приложения для работы с кодом на Python.

Здравствуйте, все.

Попробовал Notepad++, вроде хвалили за автоустановку отступов и пр. но
под Джоз эти отступы не произносятся, ни пробелами, ни табами,
несмотря на включённую соответствующую опцию Джоз. Код читать
неудобно.
Подскажите плиз что-то хорошо подходящее под язык, с теми же
удобствами, но без таких траблов с Джозом. Речь о Python 3.8x.
Всем спасибо и всего доброго.

     ответов: 1   2020-10-15 16:45:23 (#3659299)

[prg] Внимание! Смена адреса для писем мод. группе

Здравствуйте!

Обратите, пожалуйста, внимание: у нас сменился адрес для писем
модерирующей группе. Теперь все ваши комментарии, предложения, замечания,
критику и благодарности по поводу функционирования рассылки можно и
нужно отправлять на адрес:

TC-Mode***@g*****.io

Этот адрес теперь указан в подвале каждого письма в рассылке.
Пишите!

     ответов: 0   2020-10-12 04:12:26 (#3659237)

[prg] Редактор для Python

Здравствуйте Посоветуйте мне пожалуйста редактор для работы в Python
Windows 7 скринридер nvda

     ответов: 1   2020-09-30 16:28:16 (#3658691)

[prg] не выводит в консоль сообщения о результате Python

?изучаю Python написал программку не вижу результата
Вот сам код

def privet_roman():
print("roman")
privet_roman()
privet_roman()
privet_roman()

кто знает подскажите пожалуйста заранее спасибо

     ответов: 2   2020-08-28 16:44:33 (#3656985)

[prg] go-библиотека для речевого сервера speech-dispatcher

здравствуйте.

рад сообщить, что выпущена клиентская библиотека речевого сервера
speech-dispatcher для языка программирования go.

она доступна по ссылке:

https://github.com/ilyapashuk/go-speechd

     ответов: 1   2020-08-26 20:18:29 (#3656877)

[prg] http запросы в скриптах jaws

Здравствуйте!

Не могу найти информацию как можно посылать http запросы в скриптах jaws.
У кого есть опыт, поделитесь пожалуйста.
Хочу попробовать сделать скрипт переводчик, до этого пользовался
GTranslator-ом, но все сервисы бесплатные и условно бесплатные там
перестали работать.

     ответов: 1   2020-08-23 22:33:32 (#3656699)

[prg] Android. Следует ли стремиться к тому,чтобы кастомные кнопки определялись

Приветствую всех.

Вопрос состоит в том, следует ли заставить Talkback считать кастомную
кнопку обычной нативной кнопкой? То есть нужно ли подменить реальное
имя класса именем класса нативной кнопки, чтобы talkback называл её кнопкой?

Если бы мы говорили про HTML, я бы был уверен, что да, что для кастомной
кнопки нужно установить role="button", но с Android все как-то менее
очевидно.

С одной стороны, вроде бы следует, т.к. WCAG утверждает, что должна быть
программно определимая роль, и для элементов управления существует
специальный способ навигации, который не будет работать, если кнопка не
определяется как кнопка, а с другой стороны, вроде бы существует
довольно много вариантов, когда элементы управления не кнопки и это
выглядит вполне органично, к примеру, список контактов или список настроек.

Кроме того, в этом вопросе:

android - How to tell TalkBack a custom view is being used as a button -
Stack Overflow
<https://stackoverflow.com/questions/47716961/how-to-tell-talkback-a-custom-view-is-being-used-as-a-button>

Отвечающий утверждает, что обьявление кнопки, что она кнопка является
устаревшей функцией.

     ответов: 1   2020-08-18 14:22:58 (#3656332)

[prg] узнать что php-скрипт пишет в базу mysql

Приветствую, каким образом можно узнать, что php-скрипт добавил в
базу mysql после того, как я нажал кнопку на сайте или отправил какую-то
форму? Есть ли какие-то методы определения, какие данные были добавлены
в базу?

Спасибо!

     ответов: 1   2020-08-06 14:39:32 (#3655935)

[prg] mysql-запрос

Приветствую, помогите сформировать mysql запрос на php.

Нужно одним запросом сделать два.
Суть такая:
В первом запросе мы получаем список вопросов.
Вторым запросом нужно получить ответы к вопросам. В каждом ответе есть
id вопроса.
То есть ответы на сайте выводятся по id вопроса.
Как мне одним mysql запросом получить список вопросов и ответов к ним?
Спасибо!

     ответов: 5   2020-08-03 19:47:15 (#3655758)

[prg] получить строку от пользователя

Добрый вечер

Как получить строку от пользователя из скрипта в nvda?

Подскажите где копать.

Или кусочек кода, пожалуйста.

     ответов: 3   2020-07-30 22:17:40 (#3655536)

[prg] Не добавляется виртуальное view к реальному view в android

Всех приветствую. У меня не получилось добавить одно виртуальное view к
реальному view. Я видел в исходниках telegram,что это делается,но там
добавляются виртуальные view для разных ситуаций,а у меня задача пока
что просто добавить одно виртуальное view к реальному view. Самое
непонятное,что когда я стал использовать класс
accessibilityNodeProvider,talkback не видит даже реальное view,хотя если
мы возвращаем null в методе класса View getAccessibilityNodeProvider.
Это и неудивительно,поскольку,судя по исходникам android,вроде метод
класса View onInitializeAccessibilityNodeInfo использует метод
createAccessibilityNodeInfo класса accessibilityNodeProvider,т.е как раз
тот метод,который я переопределяю,а значит я что-то делаю неправильно.
Вопрос в том,что же я делаю неправильно,т.е почему не реального,не
виртуального view talkback не видит. Я создал репозиторий,чтобы те,кто
захочет мне помочь,смогли посмотреть мой код. Вы можете сделать это на
https://github.com/AlexandrKozlovskiy/test. Заранее всем огромное
спасибо за помощь.

     ответов: 2   2020-07-22 18:29:40 (#3654828)

[prg] Нужна утилита для сбора и просмотра всех Send/PostMessage.

Здравствуйте все.

Хочу через скрипты Джоз реализовать некоторый функционал, но обычными
средствами не выходит. Хочу попробовать перехватить весь поток
сообщений при использовании предоставляемых прогой не очень удобных
средств для задействования нужной функции, затем сделать скрипт,
делающий то же самое быстрее и удобнее с помощью отслеженных
SendMessage. Нужна утилита для отслеживания, помогите плиз.
Всем всего доброго.

     ответов: 1   2020-07-08 20:30:55 (#3654608)

[prg] Как добавить виртуальные view к view и изменить виртуальную структуру одно

Всех приветствую. Ранее я уже задавал этот вопрос здесь,хоть и нашёл
другое решение,но я решил переделать работу со ссылками,поскольку
имеющийся у меня вариант замедляет работу со ссылками из-за того,что в
данный момент чтобы на них кликать,нужно делать угловой жест
talkback,добираться до пункта ссылки,а потом кликать на них,но ведь
можно просто добавить эти ссылки как виртуальные view. К тому же я
попытался сам реализовать добавление хотя бы одного виртуального узла,но
у меня ничего не вышло. Мне нужно создать виртуальную структуру view для
ссылок,т.е чтобы зрячие люди вообще не видели эти view. Лучше всего,на
мой взгляд,сделать это с использованием accessibilitynodeinfo,но я не
особо нашёл примеров,как это сделать. Для примера сойдёт такой вариант:
У меня есть два view. В одном view есть какой-нибудь текст,к примеру
Мама мыла раму. При клике по второму view должны появляться виртуальные
view с отдельными словами,т.е в данном случае 3 view с текстами
мама,мыла и раму. Если мы ещё раз кликнем по этому view,оно должно
исчезнуть. При клике по одному из виртуальных view это view должно
исчезать. Вообще по моей задумке при клике по одному из элементов
listview текст у textview должен меняться,вместе с ним должно меняться
количество виртуальных view. Как раз этот пример о котором я писал
вначале,поможет мне понять,как это сделать. Повторяю,что мне нужна
именно виртуальная структура view и очень хотелось бы,если это конечно
возможно,чтобы это работало на android 4.4 (api 19),хотя это не очень
важное условие. Главное для меня,чтобы создавалась виртуальная
структура,т.е структура с использованием accessibilitynodeinfo. Как я
уже писал,я попытался сам добавить одно виртуальное view для проверки,но
у меня ничего не вышло. Может это issue,которое я должен отправить в
google? Если это так,подскажите пожалуйста,куда нужно отправлять
информацию об этом баге в android sdk. Ниже будет код тестового
приложения,чтобы показать,как я это делаю. Заранее всем огромное спасибо
за помощь.

manifest:

<?xml version="1.0" encoding="utf-8"?> <manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="ru.alexandrkozlovskiy.test">

<application android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:label="test"
android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView android:layout_width="match_parent"
android:layout_height="match_parent" android:contentDescription="Hello
World!" android:id="@+id/tv"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java:
package ru.alexandrkozlovskiy.test;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.TextView;

public class MainActivityextends AppCompatActivity {
public TextViewtv;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tv);
tv.setAccessibilityDelegate(new View.AccessibilityDelegate() {
@Override public void onInitializeAccessibilityNodeInfo(View host,
AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(host, info);
TextView v=new TextView(MainActivity.this);
v.setText("test of virtual views");
v.setLayoutParams(new
ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
v.setVisibility(View.VISIBLE);
info.addChild(v,1);
}
});
}
}

     ответов: 0   2020-06-26 01:11:01 (#3653999)

[prg] Улучшение доступности smartgit

Всем доброго времени суток!

Я долго и успешно пользовался указанной в теме программой с помощью
jaws. Да, озвучивалось не все. Но того, что было, вполне хватало для
продуктивной работы. Но с течением времени моим основным скринридером
стал nvda. И он smartgit озвучивает совсем плохо. В частности, список
репозиториев совершенно молчит. Я написал об этом в техподдержку. И
получил очень быструю реакцию.

Hello Vadim,

We don't have experience with screen readers, yet. Do you think, it's a
problem in our GUI libraries (SWT, Eclipse) which fails to work with
NVDA screen reader?

Может кто-нибудь более компетентный подсказать, в чем тут, собственно,
дело? Почему jaws некоторые элементы озвучивает, а nvda - нет? Куда
можно направить ребят? Документация, гайды и т.д.

     ответов: 0   2020-06-04 15:39:13 (#3652890)

[prg] доступный графический интерфейс в скриптах на python

Приветствую, подскажите, каким образом можно сделать доступный для
скринридеров графический интерфейс в скрипте на python? Пробовал
использовать PySimpleGUI, но ни jaws, ни nvda ничего в окне запущенного
скрипта не видят.

Спасибо!

     ответов: 2   2020-05-21 23:06:13 (#3652067)

[prg] accessible QtGui4

Здравствуйте, industry.
Требуется подключить спецвозможности к приложению содержащее
библиотеки QtGui4.
Есть аналогичное приложение "sp flashTool" и вот там в папке с
программой создаётся папка "accessible" и там есть файлы, которые
позволяют включить возможность озвучки приложения.
А в другом приложении при копировании даной папки возможность
отсутствует.

     ответов: 0   2020-05-15 22:18:42 (#3651819)

[prg] C# и framework wpf

всем привет.
пишет ли кто на C# используя этот фреймворк, как я читал windows forms
по сути мертв уже.
в Visual Studio 2019 не очень всё доступно с этой технологией, то джоз
озвучивает элементы то нет, как кто с этим работает?

     ответов: 0   2020-04-30 11:43:29 (#3651057)

[prg] Re: Docker и WSL2 (Промежуточные результаты)

Mai omentaina, Вадим Шмаков!

ВШ> вполне терпимо. Еще visual studio code по слухам имеет какой-то
ВШ> волшебный плагин, позволяющий работать через wsl2 вообще бесшовно. Но я
ВШ> лично не пробовал.

Советую сюиту расширений, называется что-то типа Remote Suite. Там
есть не только расширение для WSL, но и для работы по SSH. И это, что
самый прикол, работает! У меня есть нарекания к работе в VS Code с
помощью JAWS (а щёлкать скринридерами постоянно, как и полностью
перейти на NVDA, лично у меня никаких нервов не хватит), но расширение
работает отлично в целом.

     ответов: 1   2020-04-19 14:03:38 (#3650470)

[prg] профилировщик для c# кода

Приветствую всех.

Возникла потребность в профилировании приложения, но профилировка во
время отладки в visual studio кажется недоступной. Т.е. хочется понять
как грузиться процессор, потребляется память и пр. между двумя
брекпоинтами, но в VS я такой информации не вижу, возникает впечатление,
что там просто отображается график, где все это показано. Существуют ли
какие-нибудь альтернативные способы это сделать? Или может быть это все
в VS реализуется, но нужно это как-то по особому делать? К примеру я,
просто ставлю несколько брекпоинтов и нажимаю ctrl+alt+f2, где надеюсь
выбрать нужное событие прерывания и посмотреть, что происходило до него.

В общем буду безмерно благодарен за советы.

С уважением, Константин.

     ответов: 0   2020-04-11 13:01:02 (#3650008)

[prg] изучение pithon для начинающих

Здравствуйте
Помогите пожалуйста начать изучать pithon человеку, который не занимался
программированием. Понимаю, что много ресурсов в сети, но меня интересует
информация для незрячего.
Что сделано:
нашел курс на stepik, зарегистрировался, начал проходить уроки.
Проблемы:
В какой консоли лучше работать, и как видеть результат выполнения команд?
Я работаю с NVDA, там в пункте "сервис" есть пункт "консоль pithon", но я не
могу понять как прочитать результат выполнения команды? с брайлевского
дисплея ничего нет, да и NVDA читает результат только после его выполнения
один раз.
Может какие-то плагины надо поставить или найти другую консоль?
Помогите пожалуйста.

С уважением, Андрей.
Санкт-Петербург, Россия

     ответов: 6   2020-04-05 01:45:50 (#3649089)

[prg] Опрос от Yandex для пользователей с нарушением зрения.

Доброго времени суток!

Просим принять участие в исследовании Яндекса, посвященном
техническимпредпочтениям русскоговорящих пользователей с нарушением зрения.
Компания Яндекс стремится сделать свои сервисы максимально доступными для
всех пользователей. Чтобы лучше понимать потребности и интересы людей
снарушением зрения, Яндекс проводит регулярный опрос. В этом году опрос
пройдет в четвертый раз.
Анкета поможет узнать, какие сервисы наиболее интересны пользователям с
нарушением зрения, и какие вспомогательные технологии они используют в
работе. Полученные ответы позволят более эффективно тестировать доступность
продуктов и обрабатывать обращения в службу поддержки. Результаты
исследования будут опубликованы, чтобы другие технологические компании также
могли с ними ознакомиться.
Заполнение анкеты занимает в среднем не более десяти-пятнадцати минут. После
завершения опроса каждый десятый участник, выбранный случайным образом,
получит фирменный сувенир. Для участия в розыгрыше и получения сувенира
необходимо указать аккаунт на Яндекс.Почте.
Заполнить анкету можно по ссылке
https://forms.yandex.ru/u/5e442c2fadefba0052aeb704/
Условия участия в розыгрыше сувениров доступны по ссылке
https://yandex.ru/legal/opros_polzovatelej_s_narusheniyami_zreniya/?lang=ru
Опрос проводится до 26 апреля 2020 года включительно. Каждый пользователь
может заполнить анкету один раз, повторные ответы учитываться не будут.

С уважением, комодератор Александр Зеленов
industry.comp.tiflocomp.moders-list@subscribe.ru

     ответов: 0   2020-03-31 05:40:03 (#3648880)

[prg] Группа в телеграмм для обсуждения разработки программного обеспечения с по

Доброе утро.

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

телеграмм это все-таки мгновенный мессенджер и там можно оперативно
просматривать и отвечать на сообщения, чем в электронной почте.

если кому-то это интересно, добро пожаловать в группу.
https://t.me/blind_devs

спасибо.

     ответов: 0   2020-03-16 06:18:34 (#3647468)

[prg] Docker и WSL2

Всем доброго времени суток!

Имеется ли у кого-нибудь опыт работы с докером через wsl2? Если я
правильно понимаю, docker desctop for windows уже умеет использовать его
вместо Hyper-V. Насколько повышается скорость работы контейнеров?
Возникают ли какие-то сложности с кодировкой, окончанием строк?

     ответов: 3   2020-03-05 23:21:58 (#3646548)

[prg] ios simulator: управление voice over

Добрый день.

недавно стал осваивать разработку приложений для ios.

если кто имел дело с симулятором ios в xcode, подскажите пожалуйста, как
можно управлять voice over-ом?
я его включил с помощью siri, можно перемещаться по элементам стрелками,
трекпад не работает, активировать элементы невозможно никак теми способами
которые я знаю.

подскажите пожалуйста если есть способ как-то с этим взоимодействовать?

     ответов: 0   2020-02-21 11:33:05 (#3645579)

[prg] язык c# и уведомления в системный трей

всем привет, подскажите пожалуйста в чем может быть дело.
создал форму где есть кнопка при нажатии на которую надо выводить
уведомления в трей, все вроде делаю как в примере с
https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.forms.notifyicon.showballoontip?view=netframework-4.8
но у меня ничего не работает.
вот кусочек кода с обработчиком кнопки
private void button1_Click(object sender, EventArgs e)
{
notifyIcon1.Visible = true;
notifyIcon1.ShowBalloonTip(500, "Сообщение", "Я работаю!",
ToolTipIcon.Info);
}

     ответов: 0   2020-02-03 14:05:47 (#3643507)

[prg] не могу создать объект.

Здравствуйте, industry.

мне нужно создать com_объект (MSFlexGridLib.MSFlexGrid программа
C:\Windows\System32\msflxgrd.ocx
она предназначена для работы с таблицами.).

я не совсем правильно написал, программа использует класс окна из
этого файла.

в скриптах джавса.перепробовал разные способы, но ничего не получилось.
в программе в VBSEdit он нормально создается.
кто сможет подсказать, может в скриптах джавса его нельзя создать?

     ответов: 6   2020-01-30 06:48:52 (#3642633)

[prg] не могу создать объект.

Здравствуйте, industry.

мне нужно создать com_объект (MSFlexGridLib.MSFlexGrid программа
C:\Windows\System32\msflxgrd.ocx
она предназначена для работы с таблицами.).
в скриптах джавса.перепробовал разные способы, но ничего не получилось.
в программе в VBSEdit он нормально создается.
кто сможет подсказать, может в скриптах джавса его нельзя создать?

     ответов: 0   2020-01-26 03:03:33 (#3642632)

[prg] Улучшина доступность telegram под android

Всех приветствую. Как-то я просил поддержать мой pull request по
улучшению доступности telegram для android. 31 декабря прошлого года
telegramm обновился очередной раз,но мой pull request был
проигнорирован. После этого я написал комментарий к этому коммиту с
вопросом,почему они проигнорировали мой pull request,после чего я не
получил ответа но,как я заметил вчера очень поздно вечером,появился
новый коммит
https://github.com/DrKLO/Telegram/commit/1eea3ab6f7fa8ff5b90282a2bb0e919aabea7d35,в
котором мои изменения были внесены с поправками от разработчиков.
Установив последнюю версию telegram для android с плеймаркета я
заметил,что проблемы с ответом на звонок и неправильным
contentDescription были решены. Поэтому я сделал для себя такой вывод:
Если ваш pull rrequest проигнорировали в новом коммите,пишите об этом в
коментарии к новому коммиту и на Ваш pull request скорее всего обратят
внимание.

     ответов: 0   2020-01-09 04:56:57 (#3641018)

[prg] программы на C# под Microsoft .NET Framework 4.8

всем привет, кто подскажет в чем проблема, стоял пакет Microsoft .NET
Framework 4.7.2, писал под него приложения на c# все прекрасно работало.
поставил пакет Microsoft .NET Framework 4.8, все мои приложения запускаться
не хотят с первого раза, хотя в диспетчере процессов они появляются, стал
писать под Microsoft .NET Framework 4.8, такая же фигня.
хотя приложения написанные другим разработчиком запускается без проблем,
например GozalMusicMini.
у меня windows 7, jaws 2019 и Visual Studio 2013, может студию надо 2019?
как вообще у тех кто пишет на C# и использует Microsoft .NET Framework 4.8,
проблем с запуском готовых приложений?

     ответов: 1   2019-12-31 16:30:00 (#3640491)

[prg] Вопрос по mysql administration and development.

Привет, ребята. Может вопрос не со всем по теме листа. Подскажите пожалуста
как хорошо работает в плане доступности и mysql work bench pod ubuntu
linux ? Можем ли мы вообще пользоваться этим? Всем за ранее спасибо.

     ответов: 0   2019-12-25 15:36:07 (#3639977)

[prg] visual studio 2019 и применение исправлений

Приветствую всех.

В списке предупреждений и ошибок, открывающемся по ctrl+backslash+e,
visual studio предлагает различные исправления, которые можно
автоматически применить. Каким образом их можно применить используя
клавиатуру?

     ответов: 0   2019-11-20 19:49:19 (#3636958)

[prg] Клавиатурный хук на c#

Приветствую всех. Недавно начал осваивать c#. Раньше писал автоматизации
на autoit, но из-за багов и необщительного разработчика, пришлось
переезжать на c#.

Прикрутил dll autoitX себе, и всё бы хорошо, но добрался я до хуков
клавиатуры.

Нашёл код хука, разобрался, прикрутил к форме, и всё работает, и даже
при сворачивании формы. Но как реализовать Клавиатурный хук без формы?

Что я пытался делать:

Создал делегат.

public delegate void D_Window();

Создал событие на основе делегата.

public static event D_Window L_Window;

Создал метод в котором вызываю событие по условию.

public static void M_Window()
{
if (AutoItX.WinActive("[TITLE:Яндекс диск;CLASS:#32770]", "") == 1)
{
L_Window();
}
}

Связал событие с методом хука в точке входа.

AutoSoft.L_Window += AutoSoft.SetHook;

Вызвал метод M_Window в цикле, и клавиши не перехватываются. Если
связываю событие с любым другим методом не связанным с хуком, то всё
работает.

Пробовал добавлять Application.Run() без аргументов, цикл обработки
сообщений без формы запускается, но до моего метода в точке входа не
доходит. Код хука ниже, он точно рабочий, если его назначить на событие
загрузки формы, то всё перехватывается.

namespace AutoSoft
{
public partial class AutoSoft
{
[DllImport("kernel32.dll")]
private static extern IntPtr LoadLibrary(string lpFileName);
[DllImport("user32.dll")]
private static extern IntPtr SetWindowsHookEx( int idHook,
LowLevelKeyboardProcDelegate lpfn, IntPtr hMod, int dwThreadId);
[DllImport("user32.dll")]
private static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode,
int wParam, IntPtr lParam);
[DllImport("user32.dll")]
private static extern bool UnhookWindowsHookEx(IntPtr hInstance);
[StructLayout(LayoutKind.Sequential)]
private struct KeyboardHookStruct
{
public readonly int VirtualKeyCode;
public readonly int ScanCode;
public readonly int Flags;
public readonly int Time;
public readonly IntPtr ExtraInfo;
}
private static LowLevelKeyboardProcDelegate m_callback;
private static IntPtr m_hHook;
private delegate IntPtr LowLevelKeyboardProcDelegate(int nCode, IntPtr
wParam, IntPtr lParam);
public static void SetHook()
{
m_callback = LowLevelKeyboardHookProc;
var hInstance = LoadLibrary("User32");
m_hHook = SetWindowsHookEx(13, m_callback, hInstance, 0);
}
public static void UnHook()
{
UnhookWindowsHookEx(m_hHook);
}
public static IntPtr LowLevelKeyboardHookProc(int code, IntPtr wParam,
IntPtr lParam)
{
if (code == 0)
{
var khs = (KeyboardHookStruct) Marshal.PtrToStructure(lParam, typeof
(KeyboardHookStruct));
Debug.Print("Hook: Code: {0}, WParam: {1},{2},{3},{4} ", code, wParam,
lParam, khs.VirtualKeyCode, khs.ScanCode, khs.Flags, khs.Time);
Debug.Print(khs.VirtualKeyCode.ToString());
if (khs.VirtualKeyCode == 9 && wParam.ToInt32() == 260 && khs.ScanCode
== 15)
{
SoundPlay(@"Sounds\ok.wav");
return (IntPtr)1;
}
}
return CallNextHookEx(m_hHook, code, (int)wParam, lParam);
}
}
}

Привожу код точки входа.

using System;
using System.Threading;
using System.Runtime.InteropServices;
using Un4seen.Bass;
using AutoIt;
using System.Windows.Forms;
using System.Linq;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Collections;
namespace AutoSoft
{
public partial class AutoSoft
{
static void Main(string[] args)
{
bool Instance;
Mutex MTX = new Mutex(true, "AutoSoftMTX", out Instance);
if (Instance==false)
{
MessageBox.Show(
"Внимание",
"Программа уже запущенна",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1,
MessageBoxOptions.DefaultDesktopOnly);
return;
}
AutoItX.AutoItSetOption("WinTitleMatchMode", 2);
AutoSoft.L_Window += AutoSoft.SetHook;
while(true)
{
M_Window();
}
}
}
}

И код события с методом проверки условия.

namespace AutoSoft
{
public partial class AutoSoft
{
public delegate void D_Window();
public static event D_Window L_Window;
public static void M_Window()
{
if (AutoItX.WinActive("[TITLE:Яндекс диск;CLASS:#32770]", "") == 1)
{
L_Window();
}
}
}
}

Ещё где-то читал про метод GetMessage, но что-то не проникся как это
может помочь сделать хук без формы.

Помогите пожалуйста разобраться. Спасибо.

     ответов: 0   2019-11-16 16:30:48 (#3636803)

[prg] Pull request,улучшающий доступность официального telegram клиента для andr

Всех приветствую. Заранее прошу прощение за оффтопик,но на мой взгляд
тема очень важная. Если у кого-то будут комментарии по этой теме,я очень
прошу вас отвечать мне лично,поскольку это оффтопик. На седьмом android
и ниже есть проблема с ответом и отклонением звонка,т.к двойной тап по
этим view не работает. Также в telegram,когда один пользователь
отклоняет звонок,а другой пользователь нажимает кнопку завершить,то
вместо закрытия окна звонка,telegram перезванивает пользователю,т.к у
кнопки не изменили contentDescription. Меня эта ситуация не
устроила,учитывая то,что несколько месяцев назад я написал в поддержку
telegram об этих проблемах,но они мне ничего не ответили,поэтому я
собрал telegram под android в android studio и,модифицировав исходники
telegram,отправил pull request разработчикам telegram. Поскольку вроде
разработчики telegram принимают очень редко pull requestы,я прошу всех
неравнодушных людей написать в комментариях к pull request,что мои
изменения действительно нужны для незрячих. Вы можете переслать это
сообщение своим друзьям и знакомым,чтобы они тоже написали комментарии к
моему pull request. Для того,чтобы написать комментарий,нужна
регистрация на github. Вы можете найти мой pull request по ссылке
https://github.com/DrKLO/Telegram/pull/1541 Заранее всем огромное
спасибо за помощь.

     ответов: 0   2019-11-14 19:32:06 (#3636649)

[prg] python - ctypes унифицированные классы для c_char_p/c_wchar_p и c_char/c_w

Здравствуйте.

есть кросс-платформенная библиотека которая на windows использует юникодовые
строки, тоесть wchar, а в остальных случаях char.

в python3 - ctypes такая проблемма, что c_char принимает байты, а c_wchar
строки.

каким образом можно сделать класс, в который передаватся и возвращаться
будут строковые данные?

я сделал custom класс и в качестве from_param указал закодированную строку в
байты, и также метод _check_retval возвращает декодированные байты в строку,
но это не везьде работает.

например, если я в структуре в качестве типа поля указываю свой кастомный
тип выше созданный, то декодирование не происходит, также если я в argtypes
передаю char_array данные не кодируються в байты.

может быть есть какой-то путь это решить, и получить кроссплатформенный клас
для c_char/c_wchar и c_char_p/c_wchar_p который принимал бы простые строки и
уже внутри решал по условиям операционной системы, если linux
c_char/c_char_p где и надо при входных параметрах кодировать в байты, и при
возврате на оборот декодировать байты в строки.

спасибо

     ответов: 1   2019-11-10 15:11:07 (#3636102)

[prg] Re: Обработка клика в костомном view в android

Здравствуйте Илья. Да,телеграмм с открытыми исходниками,поэтому я и
решил заняться этим и отправить разработчикам pull request,только,как я
ранее писал,мне нужен совет,как более правильно обрабатывать клик в
костомном view. Ваш вариант мне не подходит,т.к зачем создавать
дополнительное view,если оно уже есть и нужно только правильно
обработать двойной тап,т.е клик по нему.

     ответов: 0   2019-11-08 23:28:56 (#3635993)

[prg] Обработка клика в костомном view в android

Всех приветствую. В telegramm под android есть проблема,т.е в android 7
и раньше незрячим невозможно отвечать или отклонять звонки,т.е двойной
таб по view не работает. Поскольку техподдержка не отреагировала на мою
проблему,я решил самостоятельно собрать официальный telegramm под
android,чтобы попытаться исправить эту проблему,и у меня это вроде
получилось. Но прежде чем заливать это на github и отправлять pull
request,я хочу проконсультироваться с более опытными разработчиками под
android,как более правильно обрабатывать клик по костомному view,чтобы
это работало на всех андроидах. Я делал только модификацию костомного
view CallSwipeView.java.

1. У меня почему-то не отрабатывает action click в методе
PerformAccessibilityAction,когда перед этим при вызове метода
onInitializeAccessibilityNodeInfo добавляется action click. Поэтому я в
конструкторе использовал метод setClickable true и переопределил метод
performClick,или вместо переопределения этого метода мне лучше
переопределить метод onPopulateAccessibilityEvent и проверять тип
события на clicked?

2. в ontouchEvent я вместо переменной

dragging возвращаю super.onTouchEvent,т.к без этого клик тоже не
отрабатывается. Но в этом случае,возможно,утрачивается
функциональность,которая была написана для зрячих? Метод,который
позволяет принять/отклонить звонок и который должен вызваться при
двойном тапе по view - listener.onDragComplete(). Как мне стоит
поступить в этих двух случаях,чтобы увеличить вероятность того,что
разработчики telegramm примут мой pull request? Далее будет код
костомного view,чтобы людям не нужно было заходить в исходники telegramm
и искать этот класс. Заранее всем огромное спасибо за помощь. package
org.telegram.ui.Components.voip;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo;

import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.BuildVars;
import org.telegram.messenger.FileLog;

import java.util.ArrayList;

public class CallSwipeViewextends View {

private PaintarrowsPaint,pullBgPaint;
private int[]arrowAlphas = {64,64,64};
private ViewviewToDrag;
private boolean dragging =false,dragFromRight;
private float dragStartX;
private RectFtmpRect =new RectF();
private Listenerlistener;
private Patharrow =new Path();
private AnimatorSetarrowAnim;
private boolean animatingArrows =false;
private boolean canceled =false;

public CallSwipeView(Context context) {
super(context);
init();
}

private void init() {
//Эта строка добавлена мной.
setClickable(true);
arrowsPaint =new Paint(Paint.ANTI_ALIAS_FLAG);
arrowsPaint.setColor(0xFFFFFFFF);
arrowsPaint.setStyle(Paint.Style.STROKE);
arrowsPaint.setStrokeWidth(AndroidUtilities.dp(2.5f));
pullBgPaint =new Paint(Paint.ANTI_ALIAS_FLAG);

ArrayList<Animator> anims =new ArrayList<>();
for (int i =0; i <arrowAlphas.length; i++) {
ArrowAnimWrapper aaw =new ArrowAnimWrapper(i);
ObjectAnimator anim =
ObjectAnimator.ofInt(aaw,"arrowAlpha",64,255,64);
anim.setDuration(700);
anim.setStartDelay(200 * i);
//anim.setRepeatCount(ValueAnimator.INFINITE); anims.add(anim);
}
arrowAnim =new AnimatorSet();
arrowAnim.playTogether(anims);
arrowAnim.addListener(new AnimatorListenerAdapter() {
private long startTime;
private Runnablerestarter =new Runnable() {
@Override public void run() {
if (arrowAnim !=null) {
arrowAnim.start();
}
}
};

@Override public void onAnimationEnd(Animator animation) {
if (System.currentTimeMillis() -startTime <
animation.getDuration() /4) {
if (BuildVars.LOGS_ENABLED) {
FileLog.w("Not repeating animation because previous loop
was too fast");
}
return;
}
if (!canceled &&animatingArrows)
post(restarter);
}

@Override public void onAnimationCancel(Animator animation) {
canceled =true;
}

@Override public void onAnimationStart(Animator animation) {
startTime = System.currentTimeMillis();
}
});
}

@Override protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (arrowAnim !=null) {
canceled =true;
arrowAnim.cancel();
arrowAnim =null;
}
}

public void setColor(int color) {
pullBgPaint.setColor(color);
pullBgPaint.setAlpha(0xB2);
}

public void setViewToDrag(View viewToDrag,boolean dragFromRight) {
this.viewToDrag = viewToDrag;
this.dragFromRight = dragFromRight;
updateArrowPath();
}

public void setListener(Listener listener) {
this.listener = listener;
}

private int getDraggedViewWidth() {
return getHeight();
}

@Override public boolean onTouchEvent(MotionEvent ev) {
if (!isEnabled())
return false;
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if ((!dragFromRight && ev.getX() < getDraggedViewWidth()) ||
(dragFromRight && ev.getX() > getWidth() - getDraggedViewWidth())) {
dragging =true;
dragStartX = ev.getX();
getParent().requestDisallowInterceptTouchEvent(true);
listener.onDragStart();
stopAnimatingArrows();
}
}else if (ev.getAction() == MotionEvent.ACTION_MOVE) {
viewToDrag.setTranslationX(Math.max(dragFromRight ? -(getWidth() -
getDraggedViewWidth()) :0, Math.min(ev.getX() -dragStartX,dragFromRight ?0 :
(getWidth() - getDraggedViewWidth()))));
invalidate();
}else if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction()
== MotionEvent.ACTION_CANCEL) {
if (Math.abs(viewToDrag.getTranslationX()) >= getWidth() -
getDraggedViewWidth() && ev.getAction() == MotionEvent.ACTION_UP) {
listener.onDragComplete();
}else {
listener.onDragCancel();
viewToDrag.animate().translationX(0).setDuration(200).start();
invalidate();
startAnimatingArrows();
dragging =false;
}
}
//Здесь должно возвращаться значение переменнойdragging,но это вроде
блокирует двойной тап.
return super.onTouchEvent(ev);
}

public void stopAnimatingArrows() {
animatingArrows =false;
}

public void startAnimatingArrows() {
if (animatingArrows ||arrowAnim ==null)
return;
animatingArrows =true;
if (arrowAnim !=null) {
arrowAnim.start();
}
}

public void reset() {
if (arrowAnim ==null ||canceled) {
return;
}
listener.onDragCancel();
viewToDrag.animate().translationX(0).setDuration(200).start();
invalidate();
startAnimatingArrows();
dragging =false;
}

@Override protected void onDraw(Canvas canvas) {
if (viewToDrag.getTranslationX() !=0) {
if (dragFromRight) {
tmpRect.set(getWidth() +viewToDrag.getTranslationX() -
getDraggedViewWidth(),0, getWidth(), getHeight());
}else {
tmpRect.set(0,0,viewToDrag.getTranslationX() +
getDraggedViewWidth(), getHeight());
}
canvas.drawRoundRect(tmpRect, getHeight() /2, getHeight()
/2,pullBgPaint);
}
canvas.save();
if (dragFromRight) {
canvas.translate(getWidth() - getHeight() - AndroidUtilities.dp(12
+6), getHeight() /2);
}else {
canvas.translate(getHeight() + AndroidUtilities.dp(12),
getHeight() /2);
}
float offsetX = Math.abs(viewToDrag.getTranslationX());
for (int i =0; i <3; i++) {
float masterAlpha =1;
if (offsetX > AndroidUtilities.dp(16 * i)) {
masterAlpha =1 - Math.min(1, Math.max(0, (offsetX - i *
AndroidUtilities.dp(16)) / AndroidUtilities.dp(16)));
}
arrowsPaint.setAlpha(Math.round(arrowAlphas[i] * masterAlpha));
canvas.drawPath(arrow,arrowsPaint);
canvas.translate(AndroidUtilities.dp(dragFromRight ? -16 :16),0);
}
canvas.restore();
invalidate();
}

private void updateArrowPath() {
arrow.reset();
int size = AndroidUtilities.dp(6);
if (dragFromRight) {
arrow.moveTo(size, -size);
arrow.lineTo(0,0);
arrow.lineTo(size, size);
}else {
arrow.moveTo(0, -size);
arrow.lineTo(size,0);
arrow.lineTo(0, size);
}
}

@Override public void
onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info){
super.onInitializeAccessibilityNodeInfo(info);
info.addAction(AccessibilityNodeInfo.ACTION_CLICK) ;
}
//action click почему-то не возникает.
@Override public boolean performAccessibilityAction(int action, Bundle
arguments){
if(action==AccessibilityNodeInfo.ACTION_CLICK && isEnabled()){
listener.onDragComplete();
}
return super.performAccessibilityAction(action, arguments);
}
//Этот метод был добавлен мной.
@Override public boolean performClick() {
if(isEnabled()) {
listener.onDragComplete();
}
return super.performClick();
}
public interface Listener {
void onDragComplete();
void onDragStart();
void onDragCancel();
}

private class ArrowAnimWrapper {

private int index;

public ArrowAnimWrapper(int value) {
index = value;
}

public int getArrowAlpha() {
return arrowAlphas[index];
}

public void setArrowAlpha(int value) {
arrowAlphas[index] = value;
}
}
}

     ответов: 0   2019-11-08 17:39:23 (#3635962)

[prg] Имитация повторения групп в lua

Всех приветствую. Мой вопрос не про тифлопрограммирование,а про
алгоритм,хотя работа,которую мы делаем,сможет помочь незрячим
пользователям. Мне понадобилось заменить в lualatex $$ на \[\] и $ на
\(\). Я решил делать это средствами lua,используя соответствующий вызов.
Поскольку на вход я могу получить только одну строку,мне легче делать по
одной замене в цикле. $$ и $ мне нужно заменять,если он вначале строки
или перед ним есть n символов \,где n чётное и больше либо равно нулю.
Замену нужно делать до тех пор,пока мы не встретим комментарий,т.е
символ %,перед которым тоже может быть чётное количество \\,большее либо
равное нулю. Чётное количество здесь нужно потому,что \\ в latex это
новая строка,а вот просто \ - это экранирование символа,замену которого
делать не нужно. Я написал алгоритм,но он работает корректно,только если
перед $$ или перед $ есть максимум три символа \ и то,если компилировать
очень большой документ без этого алгоритма,он компилируется где-то за
2-3 минуты,а вот если компилировать этот документ с моим алгоритмом,то
компиляция будет проходить где-то 6-7 минут. В python,к примеру,для того
же $$ я мог бы написать примерно такую регулярку (\\)*$\$ и работать с
ней,но в lua очень сильно ограничены регулярные выражения,поэтому и
называются в lua шаблоны или patterns. Я видел на github библиотеку для
lua,которая использует питоновский синтаксис регулярных выражений,но
во-первых она требует apolo (название написано не точно),которой нет в
lualatex,во-вторых мой код выкладывается на github,поэтому я не
уверен,что не возникнет проблем с авторскими правами,а в-третьих я не
уверен,что в ней будут все возможности регулярок в python
(https://github.com/NexusInstruments/RegExpUtils). Я читал,что для
регулярок вроде есть модуль библиотеки lpag (lpag.re),но я не могу с
помощью этой библиотеки делать по одной замене,т.е я только могу делать
замены сразу всех совпадений в тексте а,как я ранее писал,для моего
алгоритма нужно делать одну замену,т.к может получиться так,что $$ или $
может начинаться в одной строке и заканчиваться в другой строке. На
форуме tex.stackexchange.com мне предложили вариант замены двух \ на
какую-то подстроку,которой нет в исходной строке,а потом,после
проделанных операций,делать обратную замену,но тогда мне надо будет
искать,есть ли,к примеру,в строке один пробел,потом два пробела и т.д,я
имею ввиду реализовывать алгоритм поиска уникальной подстроки,но тогда у
меня ухудшиться быстродействие,а у меня с ним,как я ранее писал,уже есть
проблемы. В общем помогите пожалуйста мне решить проблему с поиском и
заменой $$ и $ если перед ним есть чётное количество символов \,большее
либо равное нулю и если перед ним нету комментария,т.е символа %,перед
которым есть чётное количество символов \,большее либо равное нулю.
Вообще суть проблемы,как я понимаю,сводится к нахождению
алгоритма,который возвращал бы и заменял бы подстроку,к примеру тот же
$$,перед которой есть чётное количество символов \. Заранее всем
огромное спасибо за помощь.

     ответов: 0   2019-09-16 21:02:25 (#3630887)

[prg] направить текст в talkback и отловить нажатие ввод на вирт. клавиотуре

здравствуйте.

задача такова:

сделать под android что-то вроде удалённого терминала:

textView, EditText и кнопка

когда от удалённого сервера приходит сообщение, оно добавляется к TextView

когда нажимают кнопку, содержимое редактора идёт на сервер, редактор
очищается.

это всё реализовать не проблема, но хотелось бы ещё следующего:

1. когда приходит новый фрагмент текста, его нужно передать в talkback
так, чтобы он был немедленно произнесён, не выводя на скрин
дополнительных элементов типа всплывающих окон.

2. когда на вирт. клаве нажимают ввод, совершить действие, эквивалентное
кнопке

пишу в xamarin android на C#, но, так как android api везде один, если
можете предоставить примеры на java, буду только рад.

заранее спасибо за ответ.

     ответов: 4   2019-08-14 20:34:36 (#3626656)

[prg] Получение текста из редактора в аддоне NVDA

Всем доброго времени суток!

Подскажите, пожалуйста, как в аддоне NVDA можно получить текущее
смещение позиции каретки относительно начала текстового редактора под
курсором?

Это нужно для вычлинения слова/предложения/абзаца на котором стоит
курсор. Но, если это можно сделать проще и красивее, я буду только рад!

P.S. Если по этому или любому другому моменту разработки аддонов NVDA
есть документация/статья, то дайте на нее ссылку, пожалуйста. Т.к.
начальный гайд
https://github.com/nvdaaddons/DevGuide/wiki/NVDA-Add-on-Development-Guide
и функция help в python консоли несут очень ограниченную информацию.

     ответов: 1   2019-08-07 04:09:09 (#3626137)

[prg] Некорректная работа Visual Studio в связке с JAWS

Приветствую всех,

При работе в Visual studio 2017 JAWS постоянно произносит:
JAWS не удалось включить озвучивание мастеров проектов, пожалуйста
обратитесь в техподдержку элитагрупп.

В чем причина такого поведения JAWS?

У меня JAWS 2019.
Тоже было и в JAWS 18

     ответов: 0   2019-07-07 14:14:47 (#3622923)

[prg] javascript. горячие Клавиши работают за исключением...

Здравствуйте, Никита и другие участники!

Воспользовался вашим советом и использовал функцию addEventListener().
Теперь в любом месте веб-страницы горячие клавиши срабатывают, ну,
конечно, если включен режим виртуального курсора Insert + Space.
Однако обнаружил один единственный элемент, который чихать хотел на мою
функцию, когда фокус находится на нём. Это кнопка "Воспроизведение"
которую создает элемент
<audio autoplay controls>
Спускаешься чуть ниже, там где ползунки, минуты и секунды - все работает
как часы!
Вот код:

<script>
// функция приведена в сокращенном виде
function GoTo(event) {
// нажатие английской k или русской л
if (event.keyCode == 75) alert("Вы слушаете текущий фрагмент");
}
document.addEventListener("keydown", GoTo);
</script>

<p><audio AUTOPLAY CONTROLS>
<SOURCE SRC='track.mp3' TYPE='audio/mp3'>
Тег audio не поддерживается вашим браузером!
</audio></p>

Вопрос:
С уважением
Грызунов Александр

     ответов: 0   2019-06-19 12:33:30 (#3621577)

[prg] javascript. Как назначить гор.клавиши на нажатие клавиатурных клавиш

Здравствуйте, уважаемые!

Вот код, который не работает с элементом div, но отлично работает с
применением поля редактирования input, что мне очень не нравится.
Может как-то можно с использованием div, чтобы в любом месте нажал
горячие клавиши и получил какой-то результат?

<html>
<head>
<title>тест2 горячих клавиш</title>
<script>
function press(event) {
if (event.keyCode == 74) {
alert("нажата клавиша английская j или русская о");
}
if (event.keyCode == 75) {
alert("нажата клавиша английская k или русская л");
}
if (event.keyCode == 76) {
alert("нажата клавиша английская l или русская д");
}
}
</script>
</head>
<body>

<div onkeydown="press(event)">
<p>Здесь нажимаем клавиши:</p>
<p>Английские: j, k, l</p>
<p>или</p>
<p>русские: о, л, д!</p>
</div>
</body></html>

с уважением
Грызунов Александр

     ответов: 3   2019-06-19 08:55:36 (#3621532)

[prg] Как работают java среды под линукс?

Всем привет. Может ли кто-нибудь подсказать как работают среды для
развития ява приложений под линукс_ С оркой как работают а я имею в виду
прежде всего eclipse и net beans?

     ответов: 0   2019-06-19 05:42:09 (#3621547)

[prg] Програмирование в html i css под линукс

Всем привет. Вопрос такой, можем ли мы как незрячие заниматся
програмированием в html i css под линукс? Если да какое приложение
ллучше всего использовать для этого?

     ответов: 0   2019-06-10 12:01:23 (#3620844)

[prg] sql i oracle

Всум привет. Подскажите ребята на сколько реально, что бы слепой человек
работал с Высше упомянутыми базами даных. Желательно, что бы работа
осуществлялась через линукс, а если это невозможно пригодится и винда.

Поделитесь опытом ребята. За ранее всем большое спасибо.

     ответов: 7   2019-06-09 13:40:40 (#3619784)

[prg] Как реализовать перемещение по структурным частям view в talkback при свай

Всех приветствую. Обычно,когда мы свайпаем влево или вправо,talkback
переходит на предыдущее или следующее view. Подскажите пожалуйста,можно
ли реализовать и если да,то как,чтобы при попытке перейти на следующее
или предыдущее view,я попадал бы на следующую или предыдущую часть
структурной единицы view. К примеру у меня в textView записана формула
a+b/c. Как мне реализовать поведение,чтобы когда фокус стоит на этом
view и я свайпаю вправо,talkback читал мне знаменатель,т.е c и чтобы
если я буду свайпать влево,talkback прочитал мне числитель a+b.
Естественно,где числитель и знаменатель и другие части в формуле,я буду
определять сам,просто мне нужна помощь в реализации этой идеи на уровне
android api,т.е как это реализовать,какое view мне лучше для этого
использовать - TextView или WebView и т.д. В общем я хочу реализовать
это так,как это делает mathjax и mathplayer с nvda,только с помощью того
же mathjax я могу перемещаться по структурным элементам формулы вроде
только стрелками,а я хочу реализовать эту возможность на сенсоре. Я
хотел посмотреть в сторону AccessibilityEvent,но когда я сделал тестовый
пример с onPopulateAccessibilityEvent,никакого события не
приходило,когда моё view теряло фокус. Конечно,можно использовать
onFocusChangeListener но тогда,наверное,если у пользователя включены
звуки talkback,он услышит звук перемещения фокуса на следующее view,а
потом он услышит этот же звук,поскольку фокус вернётся к текущему view.
В общем мне нужно как-то вклинится в процесс перед тем,как talkback
поймёт,что текущее view должно потерять фокус,при этом это должно
работать только при свайпах,а не в том случае,когда я нахожу другое view
ощупыванием экрана. Заранее всем огромное спасибо за помощь.

     ответов: 10   2019-05-28 23:35:56 (#3619561)

[prg] Перенаправить ошибку nvda

Доброго всем.

Хочу при возникновении ошибки в nvda перенаправить её в диалог.

Подскажите название события которое возникает при ошибке в nvda?

При наступлении этого события сработает мой код который откроет диалог с
текстом ошибки.

Спасибо.

     ответов: 0   2019-05-25 22:23:58 (#3619543)

[prg] JAWS Перестает озвучивать редактор кода Visual Studio 2017

Приветствую всех!

Проблема такая,
при работе в Visual Studio 2017,
когда появляется меню Intelly Sense, и при выходе из этого меню
в 50 на 50 случаях JAWS перестаёт озвучивать текст в редакторе кода,
при перемещении стрелками только говорит заголовок окна Visual Studio, или
пусто.
Приходится альт-табом передергивать на другое приложение и обратно, после
чего
всё восстанавливается.

у меня JAWS 18 и 2019, без каких либо дополнительных скриптов к Visual
Studio

     ответов: 2   2019-05-13 22:59:52 (#3617822)

[prg] изменить надпись кнопки или ссылки после нажатия

Здравствуйте, уважаемые!

Задача такая: На странице start.php имеется либо кнопка формы либо
ссылка с надписью "Запустить!", которые обращаются к файлу finish.php
При нажатии кнопки или ссылки "Запустить" начинает работать файл
finish.php, в котором запускается продолжительный процесс, но на экране
попрежнему отображается кнопка или ссылка с первоначальной надписью. Так
вот задача каким-то понятным и простым способом уведомить пользователя,
что кнопка или ссылка "Запустить!" нажата и результат нужно ожидать в
ближайшее время.
Каким способом это можно проделать?

пробовал файл start.php с таким кодом:

<!DOCTYPE html>
<html>
<head>
<title>Изменяем надпись кнопки или ссылки</title>
</head>
<body>

<form action="finish.php" method="POST">
<input name="sec" type="hidden" value="30" />
<input type="submit" value="Запустить первым способом!" onclick="return
change(this);" />
</form>
<div id="download">
<a href="finish.php?sec=30" onclick="this.innerHTML='Подождите пока
запускается внешнее приложение';return true">Запустить вторым способом</a>
</div>
<script type="text/javascript">
function change( elem) {
if (elem.value "Начинаем!") elem.value ="Подождите немного!";
else elem.value ="Начинаем!";
}
</script>
</body></html>

Файл finish.php для тестирования содержит такой код:

<?php
set_time_limit(90);
$sec =10;
if (!empty($_GET['sec'])) $sec =$_GET['sec'];
if (!empty($_POST['sec'])) $sec =$_POST['sec'];
sleep($sec);
echo "Работа выполнена!<br />";
?>

Одним словом, перед переходом к файлу finish.php нужно чтобы надпись
кнопки или ссылки изменилась на поясняющую.

С уважением Грызунов Александр

     ответов: 3   2019-05-11 10:07:54 (#3617676)

[prg] нужен исходник lkf2mp3 конвертера

здравствуйте.

в интернете я нашёл уже 3 конвертера из lkf в mp3 и наоборот.

два из них - графические (lkf2mp3.exe и ещё одна программа, названия
которой я не помню), а третий - консольный LkfCoder.

такое разнообразие решений, на мой взгляд, должно указывать на наличие
какого-то исходного кода или алгоритма, на котором основаны эти приложения.

поэтому, если у кого есть такие коды, прошу поделиться.

     ответов: 2   2019-05-06 10:02:18 (#3610920)

[prg] о серверном коде для daisy online delivery protocol

здравствуйте.

вопрос такой:

есть ли у кого серверный код, или его части, для daisy online протокола?

если есть, просьба поделиться.

если нет, вопрос другой:

как перевезти в php-классы содержимое этого wsdl:

http://www.daisy.org/projects/daisy-online-delivery/2-0/do-wsdl-20.wsdl

или одну из прошлых версий

вобход возникающих при попытке это сделать с помощью соответствующих php
скриптов ошибок?

     ответов: 1   2019-03-31 20:55:23 (#3611152)

[prg] использование нюфон в проекте делфи

Здравствуйте, industry.
Может кто-то когда-нибудь это проделывал.
Можно ли с файлов dll нюфона вытащить функции, а потом с делфи
обращаться к ним?

     ответов: 0   2019-02-25 21:51:06 (#3606323)

[prg] реализация функции DateAdd в сценариях Jaws.

Здравствуйте, industry.comp.tiflocomp.programming!
Стоит задача перевести с гринвича день и час на местное время. Она была
решена средствами сценариев Jaws, но хотелось бы ее оптимизировать
посредством функции DateAdd из jscript или vbscript.
У меня не получается создать соответствующий объект с помощью
CreateObject ("Scripting....").

Спасибо за рекомендации!

     ответов: 9   2019-02-24 06:17:16 (#3602421)

[prg] К программистам PL/sql среда разработки

Доброго времени суток: есть такой вопрос. Есть необходимость доработать бд
oracle , следовательно, систему нужно сначала поставить. Помню со времени
обучения проблем в озвучке oracle 11j почти не было. Сейчас пробую ставить
oracle 18c - последнюю версию, но даже на этапе установки столкнулся с тем,
что установщик не озвучивается. Дополню, что jabswitch активирован как
глобальный (установлен пакет java) так и локальный (находящийся в папке с
установочником oracle. Теперь собственно вопросы:

1) Если поставлю oracle 18 c с подглядом, установленные продукты будут
озвучены или нет? Может это только установочник глухой, а у приложений
озвучка нормальная будет? Просто не хотелось бы ставить, потом удалять,
другую версию ставить - вообщем, разводить мусор.

2) Какая версия oracle все-таки лучше всего озвучивается?

3) Что вообще известно о спец-возможностях oracle?

С уважением Константин Петухов

     ответов: 0   2019-01-28 20:22:53 (#3602573)

[prg] порядок чтения view talkback на экране при свайпе

Всех приветствую. Подскажите пожалуйста,какие значения и каких xml
атрибутов или свойств view мне нужно ставить,чтобы talkback при свайпе
читал их в таком порядке,в каком они прописаны в xml макете. Для
клавиатуры есть атрибуты nextFocusUp,Down и т.д,а вот как сделать,чтобы
talkback при свайпе читал view в таком порядке,в котором они есть в xml
макете,я вообще не понимаю. Единственное,что я понимаю,что это зависит
от расположения view на экране,но мне бы хотелось получить более точную
информацию чтобы не мучиться часами,подбирая наугад параметры для xml
атрибутов. Если тип макета имеет значение,то очень хотелось бы
узнать,как располагать view в
ConstraintLayout,RelativeLayout,LinearLayout и FrameLayout. Заранее всем
огромное спасибо за помощь и за советы.

     ответов: 0   2019-01-23 04:07:42 (#3601824)

Рекомендуем подписаться: