nedoPC.org

Community for electronics hobbyists, established in 2002
Last visit was: 10 Nov 2024 12:50
It is currently 10 Nov 2024 12:50



 [ 24 posts ]  Go to page Previous  1, 2
Раскладка клавиатуры в окне DOS 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Post 
HardWareMan wrote:
Lavr wrote:
То есть FAR четко переключает раскладку по [RU/EN] Венды из трея?

Тока что проверил в ХР - да. Все четко, даже если переключать мышей.

Видимо я борюсь с родимыми глюками Венды_98... :(

Хардыч, ну чтоб уж закрыть тему - посмотри у себя, как реагирует на
консольное WIN32 приложение и DOS приложение, работающее под
сеансом MS-DOS
вот эта виртуальная клава:
http://romb.hut2.ru/MOSK_Keyboard.zip
из
http://romb.hut2.ru/virt_k.htm#4
возможно, это её глюки? Если тебя сильно не затруднит...

Она должна выставлять на себе раскладку, соответствующую раскладке активного окна.


15 Jul 2011 04:06
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Post 
В общем итог всех "танцев с бубнами" для Венды_98 следующий:

Для DOS приложение, работающего под "Сеансом MS-DOS", Венда_98 выставляет язык и раскладку, назначенные в системе по умолчанию.
Изменить это через [RU/EN] Венды из трея невозможно.

Для консольного WIN32 приложения Венда_98 также выставляет язык и раскладку, назначенные в системе по умолчанию.
Но тут есть отличие: реальный ввод с клавиатуры зависит от того, из какого приложения само консольное WIN32 приложение было запущено.

Если у него раскладка [RU] - у консольного весь реальный ввод идёт в RU переключиться ничем не заставишь...и наоборот, если - [EN], так EN будет у консольного окна, и никакого RU...

Изменить это через [RU/EN] Венды из трея также невозможно.

Так что я частично решил свою проблему - выставил раскладку по умолчанию в [EN] и в "Сеансах MS-DOS" теперь виртуальная клавиатура сугубо с английским раскладом.
Но так работать можно...
:wink:

Блин, Венда до того недокументированная система, особенно сам "Сеанс MS-DOS", что поковыряться было даже интересно...
Но вопросов всегда остаётся больше, чем ответов.


15 Jul 2011 07:29
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Post 
Я знаю, что консоль MS-DOS в венде, это какое-то очень специальное окно, которое чуть ли не в ядре реализовано. Но и всё же, а нельзя ли просто отправлять этому окну то, что хочется, и не париться? Ну, русские буквы, вперемешку с английскими. Каким-нибудь там SendMessage, с параметром, например, WM_CHAR...

А, хм, нельзя. Загуглил в мсдн, там есть WM_CHAR -- это key-release-event декодированный в char, чего маловато, поскольку хочется, как я думаю, и keyup, и keydown эвенты отсылать. А WM_KEYUP/KEYDOWN -- это именно коды клавиш, и коды клавиши в русской раскладке ничем не отличаются от кода той же клавиши в английской. Это коды физических клавиш. То есть тупо перехватить весь клавиатурный ввод и перекодировать его в последовательность событий той раскладки какой хочется -- не выйдет. То есть вся эта груда кода, начиная с драйвера клавиатуры и выше вплоть до win32api, весь этот код, который избавляет прикладное приложение от работы с портами ввода/вывода и обработки исключений, на самом деле абсолютно бесполезная груда кода, которая нихрена не делает. Эта груда кода не повышает уровень абстракции от железа. В скан-кодах физических клавиш я мыслил о клавиатуре когда программы под дос на ассемблере писал. Во всех остальных местах, если я и имел дело с кодами клавиш, то коды эти были уже проявлением более высокого уровня абстракции, речь шла о "виртуальных" клавишах, и если посчитать количество разных кодов, которые прилетают с клавиатуры, то запросто можно было бы придти к выводу, что на клавиатуре сотни клавиш. Если учесть японский и китайских "алфавиты", то может быть даже и тысячи.
Нет, ну вот каждый взгляд на венду, обязательно ставит передо мной вопрос: как можно было написать такую дебильную систему?

Quote:
Блин, Венда до того недокументированная система, особенно сам "Сеанс MS-DOS", что поковыряться было даже интересно...
Но вопросов всегда остаётся больше, чем ответов.

Я бы на месте MS, тоже бы постыдился такое документировать. Я бы даже msdn, в котором я только что выяснил про вендовые сообщения с клавиатуры, даже msdn я бы постыдился создавать.


15 Jul 2011 12:23
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Post 
bar wrote:
Я знаю, что консоль MS-DOS в венде, это какое-то очень специальное окно, которое чуть ли не в ядре реализовано.
...
Quote:
Блин, Венда до того недокументированная система, особенно сам "Сеанс MS-DOS", что поковыряться было даже интересно...
Но вопросов всегда остаётся больше, чем ответов.

Я бы на месте MS, тоже бы постыдился такое документировать. Я бы даже msdn, в котором я только что выяснил про вендовые сообщения с клавиатуры, даже msdn я бы постыдился создавать.

Да нет - окно вобщем-то обычное, я здесь уже писАл, что это за окно...
Другое дело, что на уровне ядра может работать ЭМУЛЯТОР MS-DOS!
Вот это интересно - свойства этого эмулятора замазаны и упрятаны... и даже слово ЭМУЛЯТОР не произносится...

А когда мы в этом ЭМУЛЯТОРе запускаем ЭМУЛЯТОР i8080 или Z80 так это ж ЭМУЛЯТОР^2 ! И работает ведь! :lol:
И потом, Билл один из первых эмуляторщиков - он свой первый Васюк писал под эмулятором i8080 на PDP.

Так что, я думаю, стесняться тут особо нечего, а вот убрать "тень с плетеня" было бы весьма неплохо...
Ну подумаешь - ЭМУЛЯТОР MS-DOS в составе Венды, что такого...

PS. А вот насчёт msdn - я, пожалуй, соглашусь. Это очень хороший пример, как люди обленились сделать внятный хелп и решили заработать денег на слабоупорядоченной кучке... информации.

PPS. А так 2 дня приходится ковырять интернет, чтобы найти то, что надо, хорошо, что он есть... :wink:


15 Jul 2011 13:03
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Post 
А всякие-там dosbox'ы в win'9x медленнее чем встроенный эмулятор, или нет?


15 Jul 2011 13:50
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Post 
bar wrote:
А всякие-там dosbox'ы в win'9x медленнее чем встроенный эмулятор, или нет?

Извини, я ни разу не пользовался dosbox под win'9x. На работе - использую под ХР вынужденно - но там Коре Дуо 2Гиг - быстрая машина. Наоборот тормозить приходится...

bar wrote:
А, хм, нельзя. Загуглил в мсдн, там есть WM_CHAR -- это key-release-event декодированный в char, чего маловато, поскольку хочется, как я думаю, и keyup, и keydown эвенты отсылать. А WM_KEYUP/KEYDOWN -- это именно коды клавиш, и коды клавиши в русской раскладке ничем не отличаются от кода той же клавиши в английской. Это коды физических клавиш. То есть тупо перехватить весь клавиатурный ввод и перекодировать его в последовательность событий той раскладки какой хочется -- не выйдет. То есть вся эта груда кода, начиная с драйвера клавиатуры и выше вплоть до win32api, весь этот код, который избавляет прикладное приложение от работы с портами ввода/вывода и обработки исключений, на самом деле абсолютно бесполезная груда кода, которая нихрена не делает. Эта груда кода не повышает уровень абстракции от железа. В скан-кодах физических клавиш я мыслил о клавиатуре когда программы под дос на ассемблере писал. Во всех остальных местах, если я и имел дело с кодами клавиш, то коды эти были уже проявлением более высокого уровня абстракции, речь шла о "виртуальных" клавишах, и если посчитать количество разных кодов, которые прилетают с клавиатуры, то запросто можно было бы придти к выводу, что на клавиатуре сотни клавиш. Если учесть японский и китайских "алфавиты", то может быть даже и тысячи.
Нет, ну вот каждый взгляд на венду, обязательно ставит передо мной вопрос: как можно было написать такую дебильную систему?


Я вспомнил одну забавную реплику:
http://www.nedopc.org/forum/viewtopic.php?t=9554
bar wrote:
Но я вот не могу даже предположить, что собственно мне надо. По-моему, ничего.
Я встрял в разговор, исключительно из любви к бесцельному флуду.

Ну шутки у меня такие... :D

http://tmp.misa.ac.ru/w95exit.html wrote:
Отец Выньдоуз подговорил Комманда Кома, чтобы он всегда его
приводил, а сам уходил. Только Командир Нортон не сдавался. Уви-
дит отца Выньдоуза и говорит ему: "А я тебя не пущу, оболочка де-
шевая!" И остаются вдвоем с Коммандом Комом, пока Командир Нортон
не уйдет. А когда отец Выньдоуз видел Командира Нортона, он гнусно
ругался. В ответ на это Командир Нортон спокойно отвечал: "Опера-
ционная система - это DOS 7.0. А ты, отец Выньдоуз, - оболочка де-
шевая!"


15 Jul 2011 14:24
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Post 
Lavr wrote:
Я вспомнил одну забавную реплику:
http://www.nedopc.org/forum/viewtopic.php?t=9554
bar wrote:
Но я вот не могу даже предположить, что собственно мне надо. По-моему, ничего.
Я встрял в разговор, исключительно из любви к бесцельному флуду.

Ну шутки у меня такие... :D

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


15 Jul 2011 22:06
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Post 
bar wrote:
Не, сейчас я встрял просто потому, что подумал: если переключатель раскладок в венде такой тупой, почему бы не написать более умный. Но беглое исследование родило устойчивое подозрение, что вендовый переключатель -- самая умная из возможных реализаций переключателя в венде.

Ну совсем тупым его не назвать, поскольку некоторая логика просматривается... Да и в ХР команда БГ логику свою подправила, судя по всему... Ну а потом основная мысль была понятна сразу - зацепить всех на крючок Венды, подсунув какой-никакой но эмулятор MS-DOS, а потом без шума от MS-DOS избавиться.

Говорят, что и слово ЭМУЛЯТОР сначала звучало
http://tmp.misa.ac.ru/w95exit.html
но потом незаметно сошло на нет...

Ну а докопаться до мотиваций M$ порой даже весьма интересно: вывод получается иногда такой - да ведь они не виноваты... они "хотели как лучше"... они потворствовали нашим многочисленным "гнусным" привычкам - вот и получилось то, что есть... :wink:

Другое дело, что они норовят всё упрятать под сурдинку... :(


16 Jul 2011 04:12
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
bar wrote:
Я знаю, что консоль MS-DOS в венде, это какое-то очень специальное окно, которое чуть ли не в ядре реализовано.
... ну вот каждый взгляд на венду, обязательно ставит передо мной вопрос: как можно было написать такую дебильную систему?
В очередной раз я попытался узнать побольше информации про "консоль MS-DOS в венде" особенно
про её специфику в полнооконном режиме.
Этот наш топик тоже Гугл мне вываливает... но есть и кое-что интересное:
Какую роль играла MS-DOS в составе Windows? (дубликат есть на Хабре) - весьма подробная и интересная статья.
Хотя, в основном просто познаватльная, без прикладных моментов...

И вот еще: Почему Spy ++ не работает с консольными окнами
Quote:
Окно консоли относится к процессу CSRSS, а не к процессу CMD.EXE. CSRSS - это критически важная системная служба, которая защищена и не может быть подключена без специальных привилегий для отладки.

"Когда процесс пользовательского режима вызывает функцию с участием окна консоли, создание процессов/потоков, или бок о боке поддержки, вместо выдачи системного вызова, библиотек Win32 (kernel32.dll, user32.dll, gdi32.dll) отправить вызов межпроцессного процессу CSRSS, который делает большую часть фактической работы без ущерба для ядра. "
Коряво несколько... но хоть что-то... :wink:

_________________
iLavr


20 Dec 2019 15:24
 [ 24 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 1 guest


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 post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.