ПРОКРУТКА ИЗОБРАЖЕНИЯ ВИРТУАЛЬНОГО РАБОЧЕГО СТОЛА
VIRTUAL DESKTOP VIEW SCROLLING

УРОВЕНЬ ТЕХНИКИ
Системы удаленной обработки данных дают возможность пользователям осуществлять доступ к ресурсам, для которых ведущим узлом являются удаленные компьютеры. В этих системах существенными компонентами являются клиент и сервер. Сервер в этой системе исполняет программы и передает указывающие пользовательский интерфейс сигналы на клиенты, которые соединяют с использованием протокола связи, такого как протокол TCP/IP (управления передачей/межсетевой). Каждому клиенту соединения предоставляется сеанс, например, среда выполнения, которая включает в себя набор ресурсов. Каждый клиент передает на сервер сигналы, указывающие пользовательский ввод, и сервер применяет пользовательский ввод для соответствующего сеанса.
В целом, когда клиент соединяется с сервером, драйвер(ы) дисплея сервера может формировать пользовательский интерфейс с некоторой разрешающей способностью изображения. В некоторых ситуациях, разрешение изображения сервера может быть выше разрешения экрана клиента. Поскольку в такой архитектуре пользовательский интерфейс для сеанса формируется сервером и просто визуализируется клиентом, клиент должен будет модифицировать настроечные параметры экрана для сервера, чтобы изменить согласно виду сеанса на своем клиенте.
В некоторых ситуациях, однако, модификация настроечных параметров экрана дисплея, чтобы приспособить клиент, может быть нежелательной. Например, дисплей сервера может быть конфигурирован с возможностью визуализировать пользовательский интерфейс, тогда как клиент удаленно соединяется с целью обеспечения технической поддержки пользователю или совместной работы над проектом с пользователем. Если настроечные параметры экрана для сервера были скорректированы, чтобы приспособить к клиентским, то практика работы оператора сервера будет снижена. В другой ситуации оптимальная разрешающая способность для клиента может не поддерживаться драйвером дисплея сервера. В этой ситуации модификация настроечных параметров экрана может потенциально повредить физический дисплей, присоединенный к серверу.
Существующие способы обеспечивают полосы прокрутки, например, графические интерфейсные элементы, для осуществления прокрутки обзорной области пользовательского интерфейса. Если полосу прокрутки перемещают, обзорная область пользовательского интерфейса плавно смещается. Этот способ, однако, является трудоемким и разрывает нормальную последовательность действий. Например, пользователь, который желает «перетаскивать» файл с одного конца пользовательского интерфейса на другой, должен перетащить файл к границе изображенной части пользовательского интерфейса (UI), переместить полосу прокрутки и перетащить файл в требуемую точку. В еще одном примере, пользователь, который работает с пользовательским интерфейсом, который проходит через множество физических мониторов, естественно перемещает свой курсор с одного монитора на другой, если изменяет центр своего внимания. Требование, чтобы пользователь перемещал полосу прокрутки, чтобы видеть различные части пользовательского интерфейса, разрывает эту естественную последовательность действий. Таким образом, будет желательным обеспечить более естественно интуитивный способ навигации по пользовательскому интерфейсу.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Примерный вариант осуществления настоящего раскрытия описывает способ, который включает в себя, но неограничительно, этапы формирования, исходя из информации о геометрии, принятой от удаленного компьютера, виртуальной среды "рабочий стол", содержащей разрешение изображения, соответствующее драйверу дисплея удаленного компьютера; вычерчивания на виртуальном рабочем столе графических данных, принятых от удаленного компьютера; визуализации обзорной области виртуального рабочего стола, причем обзорная область задается границами и изображает часть виртуального рабочего стола; и приема информации относительного перемещения курсора. В дополнение к вышеизложенному, другие аспекты описаны в пунктах формулы изобретения, чертежах и тексте, составляющем часть настоящего раскрытия.
В примерном варианте осуществления настоящего раскрытия описан читаемый компьютером носитель данных, включающий читаемые компьютером команды, которые включают, но без ограничения указанным, команды для визуализации обзорной области виртуального рабочего стола, который изображает графические данные, принятые от удаленного компьютера, причем обзорная область задается диапазоном пикселов, и виртуальный «рабочий стол» задается диапазоном пикселов, соответствующих разрешению дисплея удаленного компьютера; команды для приема информации относительного перемещения курсора; команды для определения, исходя из информации относительного перемещения курсора и диапазона пикселов, задающих обзорную область, что курсор достиг границы обзорной области; команды для прокрутки обзорной области виртуального рабочего стола в направлении относительного перемещения курсора. В дополнение к вышеизложенному, другие аспекты описаны в формуле изобретения, чертежах, и тексте, составляющем часть настоящего раскрытия.
Примерный вариант осуществления настоящего раскрытия описывает вычислительную систему, которая включает в себя, но без ограничения указанным, схему для визуализации обзорной области виртуального рабочего стола, причем виртуальный рабочий стол задается первично первым диапазоном пикселов, который соответствует разрешению дисплея удаленного компьютера, и обзорная область задается вторым диапазоном пикселов; схему для приема информации перемещения курсора; схему для определения исходя из информации перемещения курсора и второго диапазона пикселов, что курсор достиг границы второго диапазона пикселов; и схему для прокрутки обзорной области в направлении движения курсора. В дополнение к вышеизложенному, другие аспекты описаны в формуле изобретения, чертежах, и тексте, составляющем часть настоящего раскрытия.
Специалист в данной области техники может оценить, что один или несколько различных аспектов раскрытия могут включать, но без ограничения указанным, схему и/или программирование для осуществления упомянутых здесь аспектов настоящего раскрытия; схема и/или программирование фактически могут быть любой комбинацией аппаратных средств, программного обеспечения, и/или микропрограммного обеспечения в конфигурации с возможностью осуществлять упомянутые здесь аспекты в зависимости от выборов проектного решения проектировщика системы.
Вышеупомянутое является кратким описанием и таким образом содержит, по необходимости, упрощения, обобщения и опущения подробностей. Специалисты в данной области техники оценят, что краткое описание является лишь иллюстративным и не подразумевает являться ограничительным каким-либо образом.
КРАТКОЕ ОПИСАНИЕ ФИГУР ЧЕРТЕЖЕЙ
Фиг.1 - изображение примерной вычислительной системы, в которой могут быть реализованы аспекты настоящего раскрытия.
Фиг.2 - изображение примерного терминального сервера, в котором могут быть реализованы аспекты настоящего раскрытия.
Фиг.3 - изображение примерного клиента, в котором могут быть реализованы аспекты настоящего раскрытия.
Фиг.4 - изображение примерной блок-схемы последовательности операций для практического осуществления аспектов настоящего раскрытия.
Фиг.5 - изображение альтернативных вариантов осуществления последовательности операций 400 по Фиг.4.
Фиг.6 - иллюстрация альтернативного варианта осуществления последовательности операций 400 по Фиг.5.
Фиг.7 - иллюстрация альтернативного варианта осуществления последовательности операций.
Фиг.8 - изображение примерной блок-схемы последовательности операций для практического осуществления аспектов настоящего раскрытия.
Фиг.9 - изображение альтернативного варианта осуществления последовательности операций 800 по Фиг.8.
Фиг.10 - изображение альтернативного варианта осуществления последовательности операций 800 по Фиг.9.
Фиг.11 - изображение альтернативного варианта осуществления последовательности операций 800 по Фиг.10.
Фиг.12 - изображение примерной блок-схемы последовательности операций для практического осуществления аспектов настоящего раскрытия.
Фиг.13 - изображение альтернативного варианта осуществления последовательности операций 1200 по Фиг.12.
Фиг.14 - изображение альтернативного варианта осуществления последовательности операций 1200 по Фиг.13.
Фиг.15 - изображение альтернативного варианта осуществления последовательности операций 1200 по Фиг.12.
Фиг.16 - изображение альтернативного варианта осуществления последовательности операций 1200 по Фиг.15.
ПОДРОБНОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
Многочисленные варианты осуществления настоящего раскрытия могут исполняться на компьютере. Фиг.1 и последующее описание предназначены, чтобы обеспечить краткое общее описание подходящей вычислительной среды, в которой может быть реализовано раскрытие. Специалист в данной области техники может оценить, что вычислительная система по Фиг.1 в некоторых вариантах осуществления может реализовывать сервер 204 по Фиг.2 и клиент 201 по Фиг.3. В этих примерных вариантах осуществления, сервер 204 и клиент 201 могут включать в себя некоторые или все компоненты, описанные на Фиг.1, и в некоторых вариантах осуществления сервер 204 и клиент 201 могут включать в себя схему, конфигурированную, чтобы проиллюстрировать конкретные аспекты настоящего раскрытия. Например, термин «схема», используемый по всему раскрытию, может включать специализированные аппаратные компоненты, конфигурированные для выполнения функции(ий) посредством микропрограммного обеспечения или коммутаторов. В других примерных вариантах осуществления термин «схема» может включать в себя универсальный блок обработки, запоминающее устройство, и т.д., конфигурируемые согласно программным командам, которые заключают в себе логику, способную выполнять функцию(и). В примерных вариантах осуществления, где схема включает в себя комбинацию аппаратных средств и программного обеспечения, разработчик может написать исходный текст программы, заключающий в себе логику, и исходный текст может быть скомпилирован в машиночитаемый код, который может обрабатываться универсальным блоком обработки. Поскольку специалист в данной области техники может оценить, что уровень техники эволюционировал к стадии развития, где имеется небольшое различие между аппаратными средствами, программным обеспечением или комбинацией аппаратного/программного, выбор аппаратных средств в сравнении с программным обеспечением для реализации конкретной функции, является предметом выбора проектного решения, оставляемого разработчику. Более конкретно, специалист в данной области техники может оценить, что программно реализованный процесс может быть преобразован в эквивалентную аппаратную структуру, и аппаратная структура может быть непосредственно преобразована в эквивалентный программно реализованный процесс. Таким образом, выбор аппаратной реализации против программной реализации является предметом выбора проектного решения и оставлен разработчику.
Теперь со ссылкой на Фиг.1 изображена иллюстративная универсальная вычислительная система. Универсальная вычислительная система может включать в себя обычный персональный компьютер 20 или подобный, включающий в себя блок 21 обработки, системную память 22 и системную шину 23, которая связывает различные системные компоненты, включая системную память, с блоком 21 обработки. Системная шина 23 может быть любой из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину, и локальную шину, использующую любую из разнообразия шинных архитектур. Системная память включает в себя постоянное запоминающее устройство (ПЗУ, ROM) 24 и оперативное запоминающее устройство (ОЗУ, RAM) 25. Базовая система 26 ввода/вывода (БСВВ, BIOS), содержащая базовые процедуры, которые помогают передавать информацию между компонентами в рамках персонального компьютера 20, например, в течение запуска, хранится в ПЗУ 24. Персональный компьютер 20 может дополнительно включать в себя накопитель 27 на жестком диске для считывания с жесткого диска и записи на таковой, не показано, накопитель 28 на магнитом диске для считывания со съемного магнитного диска 29 или записи на таковой, и накопитель 30 на оптическом диске для считывания со съемного оптического диска 31 или записи на таковой, например, ПЗУ на компакт-диске (CD ROM) или другой оптический носитель. В некоторых примерных вариантах осуществления исполнимые компьютером команды, заключающие в себе аспекты настоящего раскрытия, могут храниться в ПЗУ 24, на жестком диске (не показано), в ОЗУ 25, на съемном магнитном диске 29, оптическом диске 31, и/или в кэш-памяти блока 21 обработки. Накопитель 27 на жестком диске, накопитель 28 на магнитном диске, и накопитель 30 на оптическом диске соединяются с системной шиной 23 посредством интерфейса 32 накопителя на жестком диске, интерфейса 33 накопителя на магнитном диске, и интерфейса 34 накопителя на оптическом диске, соответственно. Накопители и связанные с ними читаемые компьютером носители информации обеспечивают для персонального компьютера 20 энергонезависимое хранилище читаемых компьютером команд, структур данных, программных модулей и других данных. Хотя описанная в документе иллюстративная среда использует жесткий диск, съемный магнитный диск 29 и съемный оптический диск 31, специалисты в данной области техники должны оценить, что другие типы читаемых компьютером носителей информации, которые могут хранить данные, к которым может осуществлять доступ компьютер, такие как кассеты магнитной ленты, карты флэш-памяти, цифровые видеодиски, картриджи Бернулли, оперативные запоминающие устройства (ОЗУ, RAM), постоянные запоминающие устройства (ПЗУ, ROM) и подобное, также могут использоваться в иллюстративной среде.
Ряд программных модулей может храниться на жестком диске, магнитном диске 29, оптическом диске 31, в ПЗУ 24 или ОЗУ 25, включая операционную систему 35, одну или несколько прикладных программ 36, другие программные модули 37 и программные данные 38. Пользователь может вводить команды и информацию в персональный компьютер 20 через устройства ввода, такие как клавиатура 40 и указательное устройство 42. Другие устройства ввода (не показано) могут включать в себя микрофон, джойстик, игровую панель, спутниковый диск, сканер или подобное. Эти и другие устройства ввода обычно соединяются с блоком 21 обработки через интерфейс 46 последовательного порта, связанный с системной шиной, но может быть соединен посредством других интерфейсов, таких как параллельного порта, игрового порта или универсальной последовательной шины (USB). Дисплей 47 или другой тип устройства отображения может также быть соединен с системной шиной 23 через интерфейс, такой как видеоадаптер 48. В дополнение к дисплею 47, персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показано), такие как динамики и принтеры. Иллюстративная система по Фиг.1 также включает в себя контроллер 55 сервера, шину 56 интерфейса малых вычислительных систем (SCSI), и внешнее запоминающее устройство 62, соединенное с шиной 56 SCSI.
Персональный компьютер 20 может работать в сетевой среде, используя логические соединения с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 49. Удаленным компьютером 49 может быть другой персональный компьютер, сервер, маршрутизатор, сетевой PC (ПК), одноранговое устройство или другой обычный сетевой узел, и обычно может включать в себя многие или все элементы, описанные выше относительно персонального компьютера 20, хотя на Фиг.1 было проиллюстрировано только запоминающее устройство 50. Логические соединения, изображенные на Фиг.1, могут включать в себя локальную сеть (ЛВС, LAN) 51 и глобальную сеть (ГВС, WAN) 52. Такие сетевые среды являются типичными в учреждениях, сетях масштаба предприятия, интрасетях и сети Internet.
При использовании в сетевой среде LAN, персональный компьютер 20 может быть соединен с LAN 51 через сетевой интерфейс или адаптер 53. При использовании в сетевой среде WAN, персональный компьютер 20 может обычно включать в себя модем 54 или другое средство для установления связи по глобальной сети 52, такой как Internet. Модем 54, который может быть внутренним или внешним, может быть соединен с системной шиной 23 через интерфейс 46 с последовательным портом. В сетевой среде программные модули, изображенные относительно персонального компьютера 20, или частей такового, могут храниться в удаленном запоминающем устройстве. Будет оценено, что показанные сетевые соединения являются иллюстративными, и могут использоваться другие средства установления канала связи между компьютерами. Кроме того, хотя предполагается, что многочисленные варианты осуществления настоящего раскрытия особенно хорошо подходят для систем с применением компьютера, подразумевается, что в этом документе ничто не ограничивает раскрытие такими вариантами осуществления.
Теперь, что касается фигур Фиг.2 и Фиг.3, они в целом иллюстрируют примерные среды, в которых могут быть реализованы аспекты настоящего раскрытия. Специалист в данной области техники может оценить, что примерные элементы, изображенные посредством Фиг.2 и Фиг.3, иллюстрируются, чтобы обеспечить операционную структуру для описания настоящего раскрытия. Соответственно, в некоторых вариантах осуществления физическое размещение каждой среды может быть различным в зависимости от различных схем реализации. Таким образом, примерную операционную структуру следует трактовать в качестве лишь иллюстративной и никоим образом не ограничивающей объем формулы изобретения. Специалист в данной области техники может также оценить, что последующее описание является вводным, и изображенные на Фиг.2 и Фиг.3 элементы описаны более подробно в рамках описания операционных процедур, изображенных посредством Фиг.4 - Фиг.16.
В целом, на Фиг.2 изображено высокоуровневое общее представление среды сервера, которая может быть конфигурирована с возможностью включения аспектов настоящего раскрытия. Со ссылкой на фигуру чертежа, изображен сервер 204, который может включать в себя схему в конфигурации с возможностью выполнения терминального сервера, или в других вариантах осуществления сервер 204 может включать в себя схему, конфигурированную для поддержания удаленных соединений рабочего стола. В изображенном примере, сервер 204 может быть конфигурирован с возможностью формировать одного или нескольких сеансов для клиентов соединения, таких как сеансы 1 - N (где N является целым числом больше 2). Вкратце, сеанс в примерных вариантах осуществления настоящего раскрытия может в целом включать в себя операционную среду, которая приводится в исполнение множеством подсистем, например, программного кода, которые конфигурированы с возможностью взаимодействовать с ядром 214 сервера 204. Например, сеанс может включать в себя процесс, создающий экземпляр пользовательского интерфейса, такого как окно рабочего стола, подсистемы, отслеживающие перемещение мыши внутри окна, подсистемы, переводящие щелчок мыши на пиктограмме в команды, которые приводят в исполнение экземпляр программы, и т.д. Сеанс может формироваться сервером 204 на основе «по каждому пользователю» посредством сервера 204, когда, например, сервер 204 принимает запрос соединения по сетевому соединению от клиента 201. В целом, запрос соединения первично может быть обработан транспортной логикой 210, которая может, например, приводиться в исполнение схемой сервера 204. Транспортная логика 210 в некоторых вариантах осуществления может включать в себя сетевой адаптер; микропрограммное обеспечение и программное обеспечение, которое может быть конфигурировано с возможностью принимать сообщения соединения и пересылать их на процессор 212. Как иллюстрировано посредством Фиг.2, транспортная логика 210 может в некоторых вариантах осуществления включать в себя экземпляры стека протоколов для каждого сеанса. В целом, каждый экземпляр стека протоколов может быть конфигурирован с возможностью маршрутизации на клиент вывода пользовательского интерфейса и маршрутизации пользовательского ввода, принятого от клиента, на базовые средства 244 сеанса, связанные с его сеансом.
В продолжение общего описания по Фиг.2, процессор 212 в некоторых примерных вариантах осуществления настоящего раскрытия может быть конфигурирован с возможностью обрабатывать запросы сеансов; определять функциональность для каждого сеанса; формировать сеансы путем распределения набора физических ресурсов для сеанса; и создания экземпляра стека протоколов для сеанса. В некоторых вариантах осуществления процессор 212 может выполняться посредством компонентов специализированных схем, которые могут реализовывать некоторые из вышеупомянутых операционных процедур. Например, схема в некоторых примерных вариантах осуществления может включать в себя запоминающее устройство и блок обработки, который конфигурирован с возможностью исполнять код, который выполняет процессор 212. Как изображено на Фиг.2, в некоторых случаях процессор 212 может принимать запросы соединения и определять, что, например, имеется лицензия, и может формироваться сеанс для запроса. В ситуации, где сервером 204 является удаленный компьютер, который включает в себя возможности удаленного рабочего стола, процессор 212 может быть конфигурирован с возможностью формирования сеанса в ответ на запрос соединения без проверки лицензии. Как иллюстрируется посредством Фиг.2, сеансовый администратор 216 может быть конфигурирован с возможностью принимать сообщение от процессора 212, и в ответ на сообщение сеансовый администратор 216 может добавлять идентификатор сеанса в таблицу; выделять память для идентификатора сеанса; и формировать переменные системного окружения и экземпляры процессов подсистем в памяти, выделенной для идентификатора сеанса.
Как иллюстрируется посредством Фиг.2, сеансовый администратор 216 может создавать экземпляры подсистем окружения, таких как подсистема 240 времени выполнения, которая может включать в себя часть привилегированного режима (ядра), такую как базовые средства 244 сеанса. Например, подсистемы среды в варианте осуществления конфигурированы с возможностью предоставления прикладным программам некоторого подмножества услуг и обеспечения точки доступа к ядру операционной системы 214. В примерных вариантах осуществления подсистема 240 времени выполнения может управлять исполнением процессов и потоков, и базовые средства 244 сеанса может посылать запросы на исполняющую программу ядра 214 для выделения памяти для потоков и планирования для них времени, чтобы подлежать исполнению. В варианте осуществления базовые средства 244 сеанса могут включать в себя интерфейс 246 (GDI) графических устройств, подсистему 250 обеспечения безопасности, и подсистему 252 ввода. Подсистема 252 ввода может в этих вариантах осуществления быть конфигурирована с возможностью принимать пользовательский ввод от клиента 201 посредством экземпляра стека протоколов, связанного с сеансом, и передавать ввод на базовые средства 244 сеанса для соответствующего сеанса. Пользовательский ввод в некоторых вариантах осуществления может включать в себя сигналы, указывающие команды абсолютного и/или относительного перемещения мыши, координаты мыши, щелчки мышью, сигналы клавиатуры, сигналы перемещения джойстика, и т.д. Пользовательский ввод, например, двойной щелчок мышью на пиктограмме, может приниматься базовыми средствами 244 сеанса, и подсистема 252 ввода может быть конфигурирована с возможностью определять, что пиктограмма находится в координатах, связанных с двойным щелчком. Подсистема 252 ввода затем может быть конфигурирована с возможностью посылать уведомление на подсистему 240 времени выполнения, которая может исполнять процесс для приложения, связанного с пиктограммой.
В дополнение к приему ввода от клиента 201, команды вычерчивания могут приниматься от приложений и/или рабочего стола и обрабатываться посредством GDI 246. GDI 246 в целом может включать в себя процесс, который может формировать команды вычерчивания графических объектов. GDI 246 в этом примерном варианте осуществления может быть конфигурирован с возможностью передать свои выходные данные на подсистему 254 удаленного дисплея, где команды форматируются для драйвера дисплея, присоединенного к сеансу. В некоторых примерных вариантах осуществления один или несколько физических дисплеев могут быть присоединенными к серверу 204, например, в ситуации удаленного рабочего стола. В этих примерных вариантах осуществления подсистема 254 удаленного дисплея может быть конфигурирована с возможностью зеркально дублировать команды вычерчивания, которые визуализируются драйвером(ами) дисплея удаленной вычислительной системы, и передавать зеркально дублированную информацию на клиент 201 через связанный с сеансом экземпляр стека. В другом примерном варианте осуществления, где сервером 204 является терминальный сервер, подсистема 254 удаленного дисплея может быть конфигурирована с возможностью включать в себя драйвер(ы) виртуального дисплея, который может не быть связанным с дисплеями, физически присоединенными к серверу 204, например, сервер 204 может быть автономно исполняющимся. Подсистема 254 удаленного дисплея в этом варианте осуществления может быть конфигурирована с возможностью приема команд вычерчивания для одного или нескольких виртуальных дисплеев и передачи их на клиент 201 через экземпляр стека, связанный с сеансом. В варианте осуществления настоящего раскрытия, подсистема 254 удаленного дисплея может быть конфигурирована с возможностью определять разрешение изображения для каждого драйвера дисплея, например, определять разрешение изображения для драйвера(ов) виртуального дисплея, связанного с виртуальными дисплеями, или разрешение изображения для драйверов дисплея, связанных с физическими дисплеями; и маршрутизировать пакеты на клиент 201 через связанный экземпляр стека протоколов.
В некоторых примерных вариантах осуществления сеансовый администратор 216 может дополнительно создавать экземпляр процесса регистрации пользователя, связанного с идентификатором сеанса для сеанса, который может быть конфигурирован с возможностью обрабатывать для сеанса вход в систему и выход из системы. В этих примерных вариантах осуществления команды вычерчивания, указывающие графический пользовательский интерфейс, связанный с процессом регистрации пользователя, могут передаваться на клиент 201, где пользователь клиента 201 может вводить в экран регистрации идентификатор учетной записи, например, комбинацию имени пользователя/пароля, идентификатор микропроцессорной карточки и/или биометрическую информацию. Информация может передаваться на сервер 204 и направляться на процессор 212 и подсистему 250 безопасности в составе базовых средств 244 сеанса. Например, в некоторых примерных вариантах осуществления процессор 212 может быть конфигурирован с возможностью определять, связана ли учетная запись пользователя с лицензией; и подсистема 250 безопасности может быть конфигурирована с возможностью формировать маркер доступа для сеанса.
Теперь, что касается Фиг.3, показано изображение примерного клиента 201, в котором могут быть реализованы аспекты настоящего раскрытия. В целом, примерный клиент 201 по Фиг.3 может быть с возможностью взаимодействия связан с сервером 204 посредством сети Internet. В варианте осуществления клиентом 201 может быть компьютер, терминал, реализованный аппаратными средствами, конфигурированный с возможностью направлять пользовательский ввод на сервер 204 и визуально отображать информацию пользовательского интерфейса, формируемую сервером 204. В другом варианте осуществления, клиентом 201 может быть компьютер, который включает компоненты, сходные с таковыми для персонального компьютера 20 по Фиг.1. В этом примерном варианте осуществления, клиент 201 может включать в себя схему, конфигурированную для выполнения операционной системы 312, и схему, конфигурированную для эмуляции функциональности терминала. Специалист в данной области техники может оценить, что схема, конфигурированная для выполнения операционной системы 312, также может быть конфигурирована с возможностью эмулировать терминал. Продолжая общее описание Фиг.3, клиент 201 может включать в себя клиентскую подсистему 306, которая может в некоторых вариантах осуществления предоставлять подмножество диспетчерских услуг, и библиотеки (DLL) динамической компоновки связей, которые переводят вызовы интерфейса (API) прикладного программирования в вызовы привилегированного режима для ядра 314. В варианте осуществления клиентская подсистема 306 может включать в себя драйвер дисплея для дисплея, который может быть соединен с клиентом 201. Клиентская подсистема 306 может быть конфигурирована с возможностью приема от сервера 204 команд вычерчивания и управления драйвером дисплея, чтобы вычерчивать изображения на виртуальном рабочем столе 302. Как только виртуальный рабочий стол 302 вычерчен в памяти, драйвер дисплея может быть конфигурирован для визуализации обзорной области виртуального рабочего стола 302 на физическом дисплее, например, клиентская подсистема 306 может дать указание драйверу дисплея выбрать область 304 виртуального рабочего стола 302 и визуализировать ее на дисплее. В продолжение общего описания Фиг.3, изображена подсистема 308 прокрутки, которая в некоторых вариантах осуществления может являться частью клиентской подсистемы 306 или отдельной подсистемой, которая взаимодействует с клиентской подсистемой 306. Подсистема 308 прокрутки в целом может быть конфигурирована с возможностью определять, когда осуществлять прокрутку обзорной области 304 виртуального рабочего стола 302, отслеживая различные переменные.
Нижеследующее представляет ряд блок-схем, изображающих реализации процессов. Для простоты понимания, блок-схемы организованы так, что начальные блок-схемы представляет реализации с точки зрения общей "всей картины". Специалисты в данной области техники оценят, что стиль используемого при этом представления (например, начинающийся с представления блок-схем(ы), представляющих общий вид, и после этого обеспечивающий дополнения к нему и/или дополнительные подробности на последующих блок-схемах) в целом позволяет быстрое и простое понимание различных операционных процедур.
Теперь, что касается Фиг.4, на ней изображена примерная блок-схема для практического осуществления аспектов настоящего раскрытия, включающая операции 400-412. Примерная операция 400 начинает операционную процедуру, и операция 402 изображает формирование, исходя из информации о геометрии, принятой от удаленного компьютера, виртуального рабочего стола, содержащего разрешение изображения, соответствующее драйверу дисплея удаленного компьютера. Например, и со ссылкой на Фиг.2 вместе с Фиг.3, клиент 201 может быть конфигурирован с возможностью принимать от сервера 204 сигнал, например, один или несколько пакетов информации, указывающей информацию о геометрии, и клиентская подсистема 306 по Фиг.3 может быть конфигурирована с возможностью обрабатывать информацию, чтобы формировать виртуальный рабочий стол 302 в памяти. В примерном варианте осуществления информация геометрии может задавать разрешение изображения для драйвера дисплея сервера 204, и клиентская подсистема 306 может формировать виртуальный рабочий стол 302, например, битовый образ, который имеет такое же разрешение изображения, как и сервер 204.
В варианте осуществления настоящего раскрытия подсистема 254 удаленного дисплея для сервера 204 может быть конфигурирована с возможностью формировать информацию о геометрии, например, путем формирования ограничивающего прямоугольника, который включает в себя количество пикселов, равное количеству пикселов изображения, связанных с драйвером(ами) дисплея сервера 204. В конкретном примере, сервером 204 могут быть созданы экземпляры четырех драйверов дисплея, и каждый может иметь разрешение 1280 на 1024 пикселов. В этом примере подсистема 254 удаленного дисплея может формировать ограничивающий прямоугольник, который имеет геометрию в 5120 на 1024 пикселов. Подсистема 254 удаленного дисплея дополнительно может быть конфигурирована с возможностью переводить позицию пиктограмм и т.п. из координат, специфических для каждого драйвера дисплея, в координаты ограничивающего прямоугольника и посылать информацию геометрии на клиент 201 посредством транспортной логики 210. В этом примере клиент 201 может быть конфигурирован с возможностью формировать ограничивающий прямоугольник исходя из информации геометрии. В продолжение конкретного примера, клиентская подсистема 306 может быть конфигурирована с возможностью принимать сигнал и давать указание драйверу дисплея формировать в памяти виртуальный рабочий стол 302 размером 5120 на 1024 пикселов. В этом примере клиентская подсистема 306 может затем конфигурировать драйвер дисплея, чтобы вычерчивать графику в виде битового образа относительно их положения в ограничивающем прямоугольнике. В другом конкретном примере, подсистема 254 удаленного дисплея может быть конфигурирована с возможностью определять, что драйвер дисплея, присоединенный к серверу 204, конфигурирован для вывода с разрешением изображения в 2048 на 1536 пикселов. В этом примере, подсистема 254 удаленного дисплея могла быть конфигурирована с возможностью передавать на клиент 201 информацию геометрии, указывающую разрешение изображения, посредством транспортной логики 210. В этом конкретном примере, клиентская подсистема 306 может быть конфигурирована с возможностью принимать сигнал и формировать в памяти виртуальный рабочий стол 302 размером 2048 на 1536 пикселов, и клиентская подсистема 306 может конфигурировать драйвер дисплея для вычерчивания графических данных в виде битового образа относительно их положения в ограничивающем прямоугольнике.
В продолжение описания Фиг.4, операция 404 изображает вычерчивание принятых от удаленного компьютера графических данных внутри виртуального рабочего стола. Например, и в продолжение предыдущего примера, клиентская подсистема 306 может быть конфигурирована с возможностью принимать от подсистемы 254 удаленного дисплея сигнал, например, один или несколько пакетов, указывающих команды вычерчивания. Команды могут обрабатываться клиентской подсистемой 306, и драйвер дисплея в составе клиента 201 может быть конфигурирован с возможностью вычерчивать изображения внутри виртуального рабочего стола 302. В конкретном примере, от сервера 204 может приниматься сигнал, который задает среду рабочего стола с наличием множества пиктограмм наряду с позиционной информацией для каждой пиктограммы относительно сервера 204. Клиентская подсистема 306 может обрабатывать информацию и давать указание драйверу дисплея вычерчивать рабочий стол и пиктограммы относительно ограничивающего прямоугольника.
В продолжение описания Фиг.4, операция 406 изображает визуализацию обзорной области виртуального рабочего стола, причем обзорная область задается посредством границ и изображает часть виртуального рабочего стола. В продолжение описания примера операционной процедуры, после того, как графические данные приняты от сервера 204 и вычерчены по отношению к виртуальному рабочему столу 302, драйвер дисплея клиентской подсистемы 306 может быть конфигурирован с возможностью визуализировать обзорную область 304 виртуального рабочего стола 302. Например, в одном варианте осуществления настоящего раскрытия, тогда как полный виртуальный рабочий стол 302 может быть вычерчен в памяти, драйвер дисплея может визуализировать только подмножество графических данных на присоединенном к клиенту 201 дисплее на основании того, находится ли подмножество в текущей обзорной области виртуального рабочего стола 302. В варианте осуществления настоящего раскрытия драйвер дисплея клиента 201 может иметь конкретное разрешение изображения, которое меньше разрешения изображения виртуального рабочего стола 302, например, размером виртуального рабочего стола 302 может быть 2048 на 1536 пикселов, тогда как драйвер дисплея клиента 201 может быть способен формировать изображение только с разрешением 800 на 600 пикселов. В этом примере клиентская подсистема 306 может быть конфигурирована с возможностью принимать информацию, которая задает разрешение изображения для обзорной области 304; координаты обзорной области относительно виртуального рабочего стола 302; и конфигурировать драйвер дисплея для визуализации изображений, изображаемых в рамках размеров обзорной области 304.
В продолжение описания Фиг.4, операция 408 изображает прием информации относительного перемещения курсора. Например, и в дополнение к предыдущему примеру подсистема 308 прокрутки может быть конфигурирована с возможностью принимать информацию относительного перемещения мыши от операционной системы 312 клиента 201. Например, в варианте осуществления операционная система 312 может быть конфигурирована с возможностью отслеживать перемещение курсора 310, например, битового образа, в обзорной области 304. Курсор 310 в некоторых вариантах осуществления может содержать однопиксельную точку, называемую активной точкой, например, точку, которую операционная система 312 отслеживает и принимает в качестве позиции курсора 310. В этом примерном варианте осуществления, подсистема 308 прокрутки может быть конфигурирована с возможностью принимать, например, входные сообщения в заранее заданных привязках, которые идентифицируют направление, в котором перемещалось физическое устройство ввода, например, сенсорная панель или мышь. Например, в варианте осуществления операционная система 312 клиента 201 может быть конфигурирована с возможностью отслеживать всякий раз, когда физически перемещалось устройство ввода, например, мыши или сенсорной панели. Входные сообщения в этом примере могут включать информацию типа (+1,+1) в случае, если устройство ввода было перемещено вверх и вправо. В альтернативном варианте осуществления подсистема прокрутки 308 может быть конфигурирована с возможностью отслеживать информацию абсолютного перемещения курсора, которая идентифицирует координаты курсора 310 относительно виртуального рабочего стола 302. В этом примере подсистема 308 прокрутки может быть конфигурирована с возможностью вычислять их исходя из позиционной информации.
В продолжение описания Фиг.4 операция 410 изображает определение, исходя из информации относительного перемещения курсора и границ обзорной области, что курсор достиг границы обзорной области. Например, в варианте осуществления настоящего раскрытия подсистема 308 прокрутки может быть конфигурирована с возможностью принимать информацию, которая идентифицирует диапазоны значений пикселов для обзорной области 304 относительно виртуального рабочего стола 302, и текущее положение курсора 310. Подсистема 308 прокрутки дополнительно может быть конфигурирована с возможностью принимать сообщения, которые, например, могут включать информацию абсолютного перемещения мыши и/или информацию относительного перемещения мыши. Подсистема 308 прокрутки может определять, достиг ли курсор 310 границы обзорной области 304, путем определения позиции курсора 310 относительно виртуального рабочего стола 302 и сравнения позиции с диапазонами значений пикселов, которые задают обзорную область 304 относительно виртуального рабочего стола 302, например, путем сравнения координат x и y курсора 310 относительно виртуального рабочего стола 302 с координатами x и y, которые задают границы обзорной области 304 относительно виртуального рабочего стола 302, при каждом приеме сообщения перемещения мыши. В конкретном примере подсистема 308 прокрутки может включать в себя таблицу, которая включает координаты курсора 310 внутри виртуального рабочего стола, например, 400 на 300 пикселов, и пикселы, которые задают визуальное отображение виртуального рабочего стола, например, пикселы 0-800 по оси x и 0-600 по оси y. Если пользователь перемещает мышь, курсор 310 может перемещаться, например, слева направо через обзорную область 304. Подсистема 308 прокрутки может увеличивать пиксельную позицию курсора 310 и для каждого приращения проверять, чтобы понять, достиг ли пиксел границы, например, пикселов 800 по оси x в этом примере. В случае, если подсистема 308 прокрутки определяет, что достигнута граница по оси x, например, курсор 310 расположен в пиксельной точке 800 на 300, подсистема 308 прокрутки может быть сконфигурирована, чтобы послать сообщение на клиентскую подсистему 306.
В продолжение описания по Фиг.4 операция 412 изображает прокрутку обзорной области виртуального рабочего стола в направлении относительного перемещения курсора. Например, и в дополнение к предыдущему примеру в случае, если подсистема 308 прокрутки определяет, что была достигнута граница обзорной области 304, подсистема 308 прокрутки может быть конфигурирована с возможностью посылать сигнал на клиентскую подсистему 306 смещать обзорную область 304 в направлении относительного перемещения мыши. Например, в конкретном варианте осуществления подсистема 308 прокрутки может принимать сигнал, который указывает, что мышь перемещалась +1 в направлении x, когда курсор 310 находился на правой границе обзорной области 304. Подсистема 308 прокрутки может быть конфигурирована с возможностью посылать сообщение на клиентскую подсистему 306, чтобы смещать обзорную область на +1 пикселов по оси x. В этом примере курсор 310 может перемещаться на другие +1 пикселов в направлении x и подсистема 308 прокрутки может определить, что курсор 310 находится на новой границе. Таким образом, если мышь снова перемещается направо, подсистема 308 прокрутки может быть конфигурирована с возможностью посылать сигнал на клиентскую подсистему 306, чтобы снова смещать обзорную область 304.
Теперь, что касается Фиг.5-7, на них изображены альтернативные варианты осуществления операционной процедуры 400 по Фиг.4. На Фиг.5 изображен альтернативный вариант осуществления по Фиг.4, включающий дополнительные операционные процедуры 514 и 516 и уточнение 518 операционной процедуры 400 по Фиг.4. Что касается операции 514, она иллюстрирует применение коэффициента линейного ускорения к информации относительного перемещения курсора. Например, в варианте осуществления настоящего раскрытия подсистема 308 прокрутки может быть конфигурирована с возможностью принимать информацию относительного перемещения курсора; умножать информацию относительного перемещения курсора на значение коэффициента масштабирования; и передавать сигнал на клиентскую подсистему 306, чтобы осуществлять прокрутку обзорной области 304 на величину, задаваемую масштабированным значением. Например, в примерном варианте осуществления может быть желательным смещать обзорную область 304 на большее число пикселов, чем величина, равная относительному перемещению мыши, например, в примерных вариантах осуществления, где клиент 201 включает в состав сенсорную панель, пользователю возможно придется прокручивать пальцем по сенсорной панели чрезмерное число раз, чтобы переместить обзорную область 304 с одной стороны виртуального рабочего стола 302 на другую. Таким образом, в варианте осуществления подсистема 308 прокрутки может быть конфигурирована с возможностью умножать информацию относительного перемещения на фиксированное значение и давать указание клиентской подсистеме 306 переместить обзорную область 304 на масштабированную величину. В конкретном примере подсистема 308 прокрутки может быть конфигурирована с возможностью определять, что позиция курсора находится на пикселе, который задает правую границу обзорной области 304. В этом примере, если пользователь перемещает мышь на +1 в направлении x, подсистема 308 прокрутки может умножать перемещение в пикселах на фиксированное число, например, 50 и посылать сообщение на клиентскую подсистему 306, чтобы переместить смещение обзорной области 304 на +50 пикселов в направлении x.
В продолжение описания Фиг.5, на ней дополнительно изображена операция 516, которая иллюстрирует определение скорости курсора; формирование динамического коэффициента ускорения, причем динамический коэффициент ускорения является функцией скорости курсора; и применение динамического коэффициента ускорения к информации относительного перемещения курсора. Например, в варианте осуществления настоящего раскрытия подсистема 308 прокрутки может быть конфигурирована с возможностью принимать информацию относительного перемещения курсора; умножать ее на значение динамического коэффициента масштабирования; и передавать сигнал на клиентскую подсистему 306, чтобы осуществлять прокрутку обзорной области 304 на величину, определяемую масштабированным значением. Например, в варианте осуществления может быть желательным смещать обзорную область 304 на большое число пикселов в случае, если курсор 310 быстро перемещается через обзорную область 304. Например, если пользователь перемещает курсор 310 через обзорную область 304, можно сделать вывод, что пользователь заинтересован манипулированием чем-то на дальнем конце виртуального рабочего стола 302. В этом примере, подсистема 308 прокрутки может быть конфигурирована с возможностью вывода, что намерением пользователя является сместить обзорную область 304 на большое число пикселов. В этих ситуациях подсистема 308 прокрутки может быть конфигурирована с возможностью формировать значение коэффициента масштабирования, которое зависит от скорости курсора 310 по мере его перемещения через обзорную область 304. Например, подсистема 308 прокрутки может быть конфигурирована с возможностью отслеживать координаты курсора 310 в течение последних 64 выборок. Частота выборки может быть постоянной, и подсистема 308 прокрутки может быть конфигурирована с возможностью определять среднюю скорость курсора 310. В этом примере подсистема 308 прокрутки может быть конфигурирована с возможностью повышать значение коэффициента масштабирования на основании средней скорости курсора 310 и давать указание клиентской подсистеме 306 смещать обзорную область 304 на масштабированную величину. В конкретном примере значение коэффициента масштабирования может увеличиваться экспоненциально в зависимости от скорости. Таким образом, чем быстрее курсор 310 перемещается в обзорной области 304, тем на более большую величину будет прокручиваться обзорная область 304 клиентской подсистемой 306. В конкретном варианте осуществления, курсор 310 может перемещаться через обзорную область 304 слева направо. В этом конкретном примере подсистема 308 прокрутки может принимать множество сообщений, которые указывают, что координаты курсора 310 изменяются в направлении x на +10 за одну выборку. В этом конкретном примере, подсистема 308 прокрутки может быть конфигурирована с возможностью определить динамический коэффициент ускорения путем взятия e^10 и выдачи указания клиентской подсистеме 306 переместить обзорную область 304 на 22026 пикселов в направлении x. В том же или других вариантах осуществления подсистема 308 прокрутки может быть конфигурирована с возможностью установить максимальное динамическое значение, например, 403, таким образом, в этой ситуации клиентская подсистема 306 может не осуществлять массово изменения обзорной области 304 путем прокрутки на тысячи пикселов.
В альтернативном варианте осуществления подсистема 308 прокрутки может быть конфигурирована с возможностью определять скорость курсора 310 и изменять диапазон значений пикселов, который подсистема 308 прокрутки рассматривает в качестве границ обзорной области 304. В этом примере подсистема 308 прокрутки может выявлять скорость курсора 310 и формировать ограничивающий прямоугольник, который действует в качестве границ внутри обзорной области 304, которое сжимается (по размерам), если скорость курсора увеличивается. Например, в обзорной области 304, которая включает 800 на 600 пикселов, границами обзорной области 304 могут быть пикселы 0 и 800 в направлении x и от 0 до 600 в направлении y. Если скорость курсора 310 выявлена как +1 для границ, то подсистема 308 прокрутки может поддерживать границы теми же. Если, однако, скорость выявлена в виде +10 в направлении x, подсистема 308 прокрутки может конфигурировать границы, чтобы были 0 и 720 пикселов в направлении x и от 0 до 540 в направлении y. Хотя размером обзорной области 304 в этом примере остается 800 на 600, может быть сконфигурировано, чтобы операция прокрутки происходила прежде, чем достигнута физическая граница обзорной области 304. В этом примере, если курсор 310 перемещается быстро, клиентская подсистема 306 может конфигурировать драйвер дисплея, чтобы смещать обзорную область прежде, чем курсор 310 дойдет до физической границы обзорной области 304. Это альтернативная реализация может использоваться вместе с другими способами ускорения, чтобы конфигурировать клиентскую подсистему 306 для более быстрого смещения обзорной области 304.
В продолжение описания Фиг.5, на ней дополнительно изображено уточнение операции 402. Уточнение 518 является иллюстрацией формирования, исходя из информации о геометрии, принятой от удаленного компьютера, виртуального рабочего стола, причем информация о геометрии включает ограничивающий прямоугольник и информацию, которая задает макет экрана дисплея удаленного компьютера, дополнительно при этом разрешение изображения для ограничивающего прямоугольника вычисляется исходя из информации разрешения экрана от первого и второго драйвера дисплея удаленного компьютера. Например, в варианте осуществления настоящего раскрытия подсистема 254 удаленного дисплея сервера 204 может быть конфигурирована, чтобы формировать ограничивающий прямоугольник, который задает диапазон пикселов, равный сумме диапазонов пикселов, связанных с первым драйвером дисплея и вторым драйвером дисплея. В этих примерных вариантах осуществления подсистема 254 удаленного дисплея может быть конфигурирована с возможностью повторно отобразить координаты, например, для второго драйвера дисплея на ограничивающий прямоугольник, например, пиксел (0,0) на втором изображении, который имеет диапазон 800 на 600 пикселов, может быть повторно отображен на пиксел (1280,0) в случае, если первый драйвер дисплея имеет разрешение изображения 1280 на 1024. Подсистема 254 удаленного дисплея в этом примере может быть конфигурирована с возможностью формировать ограничивающий прямоугольник, который включает сумму пикселов для каждого драйвера дисплея в соответствии с логической схемой размещения драйверов дисплея на сервере 204. Например, если первый драйвер дисплея конфигурирован, чтобы визуализировать изображение логически слева от второго, то формируемый подсистемой 254 удаленного дисплея ограничивающий прямоугольник может иметь разрешение 2080 на 1024 пикселов. В другом примере, если первый драйвер дисплея конфигурирован с возможностью визуализировать изображение логически выше второго, то формируемый подсистемой 254 удаленного дисплея ограничивающий прямоугольник может иметь разрешение в 1280 на 1624 пикселов. В этих ситуациях, подсистема 254 удаленного дисплея может быть конфигурирована, чтобы передать на клиент 201 посредством транспортной логики 210 сигнал, указывающий размерности. В этом примере клиентская подсистема 306 может быть конфигурирована с возможностью формировать виртуальный рабочий стол 302, который включает в себя диапазон пикселов ограничивающего прямоугольника. В дополнение к передаче диапазона пикселов ограничивающего прямоугольника, подсистема 254 удаленного дисплея дополнительно может быть конфигурирована, чтобы передавать схему логического размещения драйверов дисплея для сервера 204. Например, если драйвер дисплея, который имеет разрешение изображения 1280 на 1024, находится логически слева от второго драйвера дисплея, который имеет диапазон пикселов 800 на 600, то пикселы, с которыми виртуальный рабочий стол может быть конфигурирован, должны включать ту же схему размещения, например, пикселы второго драйвера дисплея могут быть повторно отображены на начало в пиксел (1280,0) ограничивающего прямоугольника. Если с другой стороны, если драйвер дисплея, который имеет разрешение изображения 1280 на 1024, расположен логически вправо от второго драйвера дисплея, который имеет диапазон пикселов 800 на 600, пикселы первого драйвера дисплея могут быть повторно отображены на начало в пиксел (800,0) ограничивающего прямоугольника.
Что касается Фиг.6, она иллюстрирует альтернативный вариант осуществления операционной процедуры 400 по Фиг.5, включающий дополнительную операцию 620. Относительно операции 620, она иллюстрирует прием информации разрешения изображения для первого и второго драйверов дисплея удаленного устройства; и определение границ для первого и второго драйверов дисплея, исходя из информации разрешения изображения. Например, в варианте осуществления настоящего раскрытия подсистема 254 удаленного дисплея сервера 204 может быть конфигурирована для формирования ограничивающего прямоугольника, который включает диапазон пикселов, являющийся равным сумме диапазонов пикселов, связанных с первым драйвером дисплея и вторым драйвером дисплея. В дополнение к передаче на клиент 201 ограничивающего прямоугольника, подсистема 254 удаленного дисплея может быть конфигурирована с возможностью передавать на клиент 201 посредством транспортной логики 210 сигнал, указывающий геометрию для каждого драйвера дисплея. В этом примерном варианте осуществления клиентская подсистема 306 может быть конфигурирована с возможностью принимать один или несколько пакетов, указывающих геометрию для каждого драйвера дисплея, и определения положений пикселов внутри виртуального рабочего стола 302, связанного с границами для драйверов дисплея. В этом примерном варианте осуществления клиентская подсистема 306 может быть конфигурирована с возможностью сообщать эту информацию на подсистему 308 прокрутки.
Что касается Фиг.7, она иллюстрирует альтернативный вариант осуществления операционной процедуры 400 по Фиг.6, включающей дополнительные операции 722 и 724. Относительно операции 722, она иллюстрирует подоперации определения, исходя из границ, задающих обзорную область, и границ, которые задают первый и второй драйверы дисплея, что граница обзорной области достигла границы для первого драйвера дисплея; определения, что скорость курсора больше заранее заданного значения; и осуществления прокрутки обзорной области виртуального рабочего стола к дальней границе, связанной со вторым драйвером дисплея. Например, и в дополнение к предыдущему примеру в варианте осуществления настоящего раскрытия, подсистема 308 прокрутки может быть конфигурирована с возможностью смещать обзорную область 304 к дальней границе, связанной с пикселами второго дисплея. В примерной реализации подсистема 308 прокрутки может быть конфигурирована с возможностью выполнять эту операцию перехода, когда граница обзорной области 304 доходит до границы, связанной с первым дисплеем, и курсор 310 перемещается с заранее заданной скоростью. Например, подсистема 308 прокрутки в этом примерном варианте осуществления может быть конфигурирована с возможностью принимать информацию, идентифицирующую границы обзорной области 304 относительно виртуального рабочего стола 302, значения в пикселах относительно виртуального рабочего стола 302, задающие границы драйверов дисплея для сервера 204, и скорость курсора 310. В этом примерном варианте осуществления, подсистема 308 прокрутки может быть конфигурирована с возможностью выявлять, когда граница обзорной области 304 пересекает границу для драйвера удаленного дисплея. Если подсистема 308 прокрутки определяет, что граница достигнута, например, что граница обзорной области 304 находится в пикселе 1280, и первая примерная разрешающая способность драйвера дисплея оканчивается на пикселе 1280, подсистема 308 прокрутки может быть конфигурирована для определения скорости курсора 310. Если скорость курсора 310 больше заранее заданной пороговой величины, например, +15 пикселов на одну выборку, подсистема 308 прокрутки может быть конфигурирована для определения, что пользователь желает осуществить переход на полный экран, и посылки сигнала на клиентскую подсистему 306, чтобы переместить обзорную область 304 на дальнюю границу, связанную с удаленным драйвером дисплея сервера 204, например, пиксел 1624 виртуального рабочего стола 302. В варианте осуществления эта операция может быть требуемой, когда пользователь максимизировал размеры окна приложений в диапазонах пикселов, связанных с различными дисплеями. Если пользователь желает переходить назад и вперед между дисплеями, он может перемещать свою мышь с некоторой скоростью, и подсистема 308 прокрутки может "толкать" обзорную область 304 виртуального рабочего стола по всему отображению.
В альтернативном варианте осуществления, вместо перехода к дальней границе виртуального рабочего стола 302 обзорная область 304 может быть конфигурирована с возможностью перехода через диапазон пикселов, равный разрешению изображения для обзорной области 304. Например, подсистема 308 прокрутки в этом примерном варианте осуществления может быть конфигурирована с возможностью принимать информацию, которая идентифицирует границы обзорной области 304 относительно виртуального рабочего стола 302 и скорость курсора 310. В этом примерном варианте осуществления, подсистема 308 прокрутки может быть конфигурирована с возможностью выявлять, когда курсор 310 доходит до конкретной границы обзорной области 304. Если подсистема 308 прокрутки определяет, что конкретная граница достигнута, и скорость курсора 310 больше заранее заданной пороговой величины, например, +15 пикселов на одну выборку, подсистема 308 прокрутки может быть конфигурирована с возможностью определять, что пользователь желает осуществить переход обзорной области 304, и посылать сигнал на клиентскую подсистему 306, чтобы переместить правую границу обзорной области (на) 800 пикселов вправо.
В продолжение описания Фиг.7, операция 724 изображает определение, исходя из информации координат для курсора и границ, которые задают первый и второй драйверы дисплея, что курсор достиг границы для первого драйвера дисплея; и формирование тактильного ответа. Например, и в дополнение к предыдущему примеру в варианте осуществления настоящего раскрытия подсистема 308 прокрутки может быть конфигурирована с возможностью формировать тактильный ответ, например, сигнал, который при обработке компонентом либо клиента 201, либо внешнего устройства, вызывает вибрацию. Например, мышь, или сенсорная панель могут быть конфигурированы с возможностью включать двигатель, который вращает массу в ответ на электрический сигнал, принятый от подсистемы 308 прокрутки. В этом примере, действие вращения массы вызывает «болтание» корпуса мыши или портативной ЭВМ. В этом примере подсистема 308 прокрутки может быть конфигурирована с возможностью принимать информацию, которая идентифицирует позицию обзорной области 304, например, пиксельные значения относительно виртуального рабочего стола 302, которые определяют позицию курсора 310, и пиксельные значения относительно виртуального рабочего стола 302, которые задают границы драйверов дисплея сервера 204. В этом примерном варианте осуществления, подсистема 308 прокрутки может быть конфигурирована с возможностью выявлять, когда позиция курсора 310 соответствует границе для драйвера удаленного дисплея. Если подсистема 308 прокрутки определяет, что граница достигнута, например, что позиция курсора 310 находится в пикселе 1280 в варианте осуществления, где двумя драйверами дисплея являются 1280 на 1024 и 800 на 600, подсистема 308 прокрутки может быть конфигурирована с возможностью посылать сигнал на пользовательское устройство ввода, такое как мышь, которое дает указание тактильной подсистеме встряхивать пользовательское устройство ввода.
Теперь с обращением на Фиг.8 изображена примерная блок-схема для практического осуществления аспектов настоящего раскрытия, включающая операции 800-808. В варианте осуществления настоящего раскрытия примерные операционные процедуры по Фиг.8 могут быть реализованы в виде читаемых компьютером команд, хранимых на читаемом компьютером носителе данных. Читаемые компьютером команды могут обрабатываться процессором клиента 201, и процессор может выполнять операционные процедуры. Теперь, что касается Фиг.8, примерная операция 800 начинает операционную процедуру, и операция 802 изображает визуализацию обзорной области виртуального рабочего стола, который изображает графические данные, принятые от удаленного компьютера, причем обзорная область задается диапазоном пикселов, и виртуальный рабочий стол задается диапазоном пикселов, соответствующих разрешению дисплея удаленного компьютера. Например, клиентская подсистема 306 может быть конфигурирована с возможностью давать указания драйверу дисплея сформировать виртуальный рабочий стол 302 в памяти клиента 201 и вычерчивать на виртуальном рабочем столе 302 графические данные, принятые от сервера 204. В этом примерном варианте осуществления, драйвер дисплея для клиента 201 может быть конфигурирован с возможностью визуализировать обзорную область 304 виртуального рабочего стола 302, который задан диапазоном пикселов, например, 800 на 600. Например, в варианте осуществления настоящего раскрытия, тогда как полный виртуальный рабочий стол 302 вычерчивается в памяти драйвером дисплея, драйвер дисплея может визуализировать только подмножество графических данных на присоединенном к клиенту 201 дисплее на основании того, находится ли подмножество в текущей обзорной области виртуального рабочего стола 302. В варианте осуществления драйвер дисплея для клиента 201 может иметь конкретное разрешение изображения, которое меньше разрешения изображения виртуального рабочего стола 302, например, размером виртуального рабочего стола 302 может быть 2048 на 1536 пикселов, тогда как драйвер дисплея клиента 201 может быть способным формировать изображение только разрешением 800 на 600 пикселов. В этом примере клиентская подсистема 306 может быть конфигурирована с возможностью принимать информацию, которая задает разрешение изображения обзорной области 304; координаты обзорной области относительно виртуального рабочего стола 302; и конфигурировать драйвер дисплея, чтобы визуализировать изображения, изображаемые в рамках размерностей обзорной области 304.
В продолжение описания Фиг.8, на ней дополнительно изображена операция 804, которая иллюстрирует прием информации относительного перемещения курсора. Например, и в дополнение к предыдущему примеру, подсистема 308 прокрутки может быть конфигурирована с возможностью принимать от операционной системы 312 клиента 201 информацию относительного перемещения мыши. Например, в варианте осуществления операционная система 312 может быть конфигурирована с возможностью отслеживать перемещение курсора 310, например, битового образа, в обзорной области 304. Курсор 310 в некоторых вариантах осуществления может содержать однопиксельную точку, называемую активной точкой, например, точку, которую операционная система 312 отслеживает и принимает в качестве позиции курсора 310. В этом примерном варианте осуществления, подсистема 308 прокрутки может быть конфигурирована, чтобы принимать, например, входные сообщения в заранее заданных привязках, которые идентифицируют направление, в котором было перемещено физическое устройство ввода, например, сенсорная панель или мышь. Например, в варианте осуществления операционная система 312 клиента 201 может быть конфигурирована с возможностью отслеживать каждое физическое перемещение устройства ввода, например, мыши или сенсорной панели. Входные сообщения в этом примере могут включать в себя информацию, такую как (+1,+1), когда устройство ввода было перемещено вверх и вправо. В альтернативном варианте осуществления подсистема прокрутки 308 может быть конфигурирована с возможностью отслеживать информацию абсолютного перемещения курсора, идентифицирующую координаты курсора 310, и вычислять перемещение курсора относительно виртуального рабочего стола 302.
В продолжение описания Фиг.8, на ней дополнительно изображена операция 806, которая иллюстрирует определение, исходя из информации относительного перемещения курсора и диапазона пикселов, задающих обзорную область, что курсор достиг границы обзорной области. Например, в варианте осуществления настоящего раскрытия подсистема 308 прокрутки может быть конфигурирована с возможностью принимать информацию, которая идентифицирует диапазоны пикселов обзорной области 304 относительно виртуального рабочего стола 302 и текущее положение курсора 310. Подсистема 308 прокрутки дополнительно может быть конфигурирована с возможностью принимать сообщения, которые, например, могут включать в себя информацию абсолютного перемещения мыши и/или информацию относительного перемещения мыши. Подсистема 308 прокрутки может определять, достиг ли курсор 310 границы обзорной области 304, путем определения позиции курсора 310 относительно виртуального рабочего стола 302 и сравнения позиции с диапазонами пикселов, которые задают обзорную область 304 относительно виртуального рабочего стола 302, например, путем сравнения координат x и y курсора 310 относительно виртуального рабочего стола 302 с координатами x и y, которые задают границы обзорной области 304 относительно виртуального рабочего стола 302, при каждом приеме сообщения перемещения мыши. В конкретном примере подсистема 308 прокрутки может включать в себя таблицу, включающую координаты курсора 310 внутри виртуального рабочего стола, например, 400 на 300 пикселов, и пикселы, которые задают обзорную область виртуального рабочего стола, например, пикселы от 0 до 800 по оси x и от 0 до 600 по оси y. Если пользователь перемещает мышь, курсор 310 может перемещаться, например, слева вправо через обзорную область 304. Подсистема 308 прокрутки может увеличивать позицию пиксела курсора 310 и для каждого приращения осуществлять проверку, чтобы понять, достиг ли пиксел границы, например, пикселов 800 по оси x в этом примере. В случае, что подсистема 308 прокрутки определяет, что граница оси x достигнута, например, курсор 310 находится в точке пиксела 800 на 300, подсистема 308 прокрутки может быть конфигурирована с возможностью посылать сообщение на клиентскую подсистему 306.
В продолжение описания Фиг.8, на ней дополнительно изображена операция 808, которая иллюстрирует прокрутку обзорной области виртуального рабочего стола в направлении относительного перемещения курсора. Например, и в дополнение к предыдущему примеру в случае, когда подсистема 308 прокрутки определяет, что была достигнута граница обзорной области 304, подсистема 308 прокрутки может быть конфигурирована с возможностью посылать сигнал на клиентскую подсистему 306, чтобы смещать обзорную область 304 в направлении относительного перемещения мыши. Например, в конкретном варианте осуществления подсистема 308 прокрутки может принимать сигнал, который указывает, что мышь переместилась +1 в направлении x, когда курсор 310 находился на правой границе обзорной области 304. Подсистема 308 прокрутки может быть конфигурирована с возможностью посылать сообщение на клиентскую подсистему 306, чтобы смещать обзорную область на +1 пиксел по оси x. В этом примере курсор 310 может перемещаться на другие +1 пикселы в направлении x и подсистема 308 прокрутки может определить, что курсор 310 находится на новой границе. Таким образом, если мышь перемещается снова вправо, подсистема 308 прокрутки может быть конфигурирована для посылки сигнала на клиентскую подсистему 306, чтобы смещать обзорную область 304 снова.
Теперь, что касается Фиг.9-11, на них изображены альтернативные варианты осуществления операционной процедуры Фиг.8. Теперь со ссылкой на Фиг.9 изображена операционная процедура 800 по Фиг.8, включающая дополнительные операционные процедуры 910 и 912. Операция 910 является иллюстрацией деления виртуального рабочего стола на множество зон; назначения каждой зоне клавиши клавиатуры; приема выбора клавиши, назначенной конкретной зоне; и центрирования обзорной области относительно конкретной зоны в ответ на выборку клавиши. Например, в варианте осуществления настоящего раскрытия подсистема 254 удаленного дисплея для сервера 204 может быть конфигурирована, чтобы формировать сигнал, который задает геометрию виртуального рабочего стола, и сервер 204 может быть конфигурирован, чтобы передавать на клиент 201 сигнал, указывающий информацию геометрии. В этом примерном варианте осуществления клиентская подсистема 306 может быть конфигурирована с возможностью формировать в памяти виртуальный рабочий стол 302 и передавать сигнал, указывающий геометрию, на подсистему 308 прокрутки. В этом примерном варианте осуществления подсистема 308 прокрутки может быть конфигурирована с возможностью делить виртуальный рабочий стол 302 на множество зон, причем каждой зоне может быть назначен диапазон пикселов. Как только виртуальный рабочий стол разделен на множество зон, идентификаторы зон могут быть сохранены в таблице и связаны с клавишей на клавиатуре. Например, в случае разделения виртуального рабочего стола 302 на четыре зоны, могут использоваться клавиши '9', '7', '1' и '3', чтобы соответствовать четырем квадрантам виртуального рабочего стола 302. В этом примере, если подсистема 308 прокрутки принимает уведомление, которое включает в себя '9', '7', '1' и '3', тогда как, например, удерживается нажатой клавиша управления (CTRL), подсистема 308 прокрутки может быть конфигурирована, чтобы послать сигнал на клиентскую подсистему 306, выдающий указание центрировать обзорную область 304 относительно пиксела, который задает центр выбранной зоны.
В продолжение описания Фиг.9, операция 912 является иллюстрацией визуализации миникарты в обзорной области, причем миникарта изображает масштабированное изображение виртуального рабочего стола и масштабированное изображение обзорной области. Например, в варианте осуществления настоящего раскрытия клиентская подсистема 306 может быть конфигурирована, чтобы формировать миникарту 316, которая изображает масштабированное изображение виртуального рабочего стола 302 и обзорной области 304, чтобы иллюстрировать часть виртуального рабочего стола 302, которую визуализирует обзорная область 304. Например, в варианте осуществления, которое включает миникарту 316, клиентская подсистема 306 может быть конфигурирована с возможностью принимать диапазон для пикселов, которые задают виртуальный рабочий стол 302; и диапазон для пикселов, которые задают обзорную область 304 относительно виртуального рабочего стола 302. В этом примерном варианте осуществления клиентская подсистема 306 может быть конфигурирована с возможностью формировать миникарту 316 путем деления диапазонов пикселов и для обзорной области 304, и для виртуального рабочего стола 302 и определения центра масштабированной обзорной области, которая соответствует координатам пикселов для центра обзорной области 304 внутри виртуального рабочего стола 302. В этом примерном варианте осуществления клиентская подсистема 306 может конфигурировать драйвер дисплея для клиента 201, чтобы визуализировать миникарту 316, которая отображает положение обзорной области 304 поверх части обзорной области 304. В этом примерном варианте осуществления, если осуществляется прокрутка обзорной области 304, диапазон пикселов, которые задают обзорную область 304, может обновляться, и клиентская подсистема 306 может конфигурировать драйвер дисплея клиента 201, чтобы визуализировать обновленную миникарту 316, которая отражает, что обзорная область 304 изменилась.
В другом варианте осуществления настоящего раскрытия миникарта 316 может быть конфигурирована с возможностью визуализировать масштабированные изображения, принятые от сервера 204, в дополнение к масштабированной обзорной области и масштабированному виртуальному рабочему столу 302. Например, каждое окно, и/или команда вычерчивания пиктограммы, принятая от сервера 204, может быть связана с положением пиксела в виртуальном отображении 302. В этом примерном варианте осуществления клиентская подсистема 306 может быть конфигурирована с возможностью масштабировать окна пиктограммы и/или определять положение пиксела для масштабированных окон и/или пиктограмм в рамках масштабированного виртуального рабочего стола 302. В этом примерном варианте осуществления клиентская подсистема 306 может конфигурировать драйвер дисплея для клиента 201, чтобы визуализировать миникарту 316, которая включает масштабированные пиктограммы и/или окна поверх части обзорной области 304.
Теперь со ссылкой на Фиг.10 изображен альтернативный вариант осуществления операционной процедуры 800 по Фиг.9, включающий уточнение 1014 операционной процедуры, и дополнительную операционную процедуру 1016. Что касается уточнения 1014, оно иллюстрирует визуализацию миникарты в обзорной области, причем миникарта содержит каркасное изображение виртуального рабочего стола и каркасный контур обзорной области. Например, в варианте осуществления настоящего раскрытия миникарта 316 может визуализировать сплошное или прозрачное изображение обзорной области, и виртуальный рабочий стол поверх обзорной области 304, однако в варианте осуществления для сбережения вычислительной мощности, клиентская подсистема 306 может быть конфигурирована с возможностью формировать контур для обзорной области 304 и виртуального рабочего стола 302. Например, контур в варианте осуществления может включать в себя обзорную область, образованную согласно идентификации границ обзорной области и виртуального рабочего стола, заданных диапазонами пикселов.
В продолжение описания Фиг.10, операция 1016 иллюстрирует передачу пользовательского ввода на удаленный компьютер, причем удаленный компьютер конфигурирован для исполнения программы в ответ на пользовательский ввод; прием графических данных, указывающих пользовательский интерфейс для программы; и обновление миникарты масштабированным изображением пользовательского интерфейса, предназначенного для программы. Например, в варианте осуществления настоящего раскрытия сетевой адаптер клиента 201 может быть конфигурирован с возможностью передавать один или несколько пакетов, указывающих координаты курсора 310 по отношению к виртуальному рабочему столу 302, и пользовательский ввод, такой как двойной щелчок мышью. В этом примере, и со ссылкой на Фиг.2, пользовательский ввод может быть принят экземпляром стека, связанным с сеансом, и переслан на подсистему 252 ввода. Подсистема 252 ввода может определить, что координатами активной точки курсора 310 являются те, где находится пиктограмма для программы. Базовые средства 244 сеанса могут посылать сигнал на подсистему 240 времени выполнения, который включает описатель для идентифицированной программы. Подсистема 240 времени выполнения может исполнять процесс, который может создавать экземпляры одного или нескольких потоков для программы. Потоки могут планироваться посредством ядра 214 операционной системы 214 сервера, чтобы подлежать обработке процессором сервера 204, и посредством GDI 246 может формироваться пользовательский интерфейс, показывающий программу. В этом примере подсистема 254 удаленного дисплея может быть конфигурирована с возможностью принимать команды вычерчивания, указывающие пользовательский интерфейс, и направлять их на экземпляр стека, предназначенный для сеанса. Транспортная логика 210 может затем передавать пакеты на клиент 201. Теперь, что касается Фиг.3, как только клиентская подсистема 306 принимает пакеты, она может быть сконфигурирована, чтобы идентифицировать координаты для пользовательского интерфейса и вычерчивать пользовательский интерфейс внутри виртуального рабочего стола 302. В этом примере, клиентская подсистема 306 может быть сконфигурирована для приема диапазона пикселов, которые задают виртуальный рабочий стол 302; диапазона пикселов, которые задают обзорную область относительно виртуального рабочего стола 302; и диапазона пикселов, которые задают пользовательский интерфейс для программы. В этом примерном варианте осуществления клиентская подсистема 306 может быть сконфигурирована с возможностью формировать миникарту 316 путем деления диапазонов пикселов для виртуального рабочего стола и масштабированного пользовательского интерфейса программы; и определять центр масштабированного пользовательского интерфейса программы. В этом примерном варианте осуществления клиентская подсистема 306 может конфигурировать драйвер дисплея для клиента 201 с возможностью визуализировать миникарту 316 поверх части обзорной области 304, включающей масштабированный пользовательский интерфейс для программы, или, например, каркас для масштабированного пользовательского интерфейса программы. В другом варианте осуществления клиентская подсистема 306 может быть сконфигурирована с возможностью изменять цвет масштабированного пользовательского интерфейса в течение заранее заданного времени, чтобы позволять пользователю быстро идентифицировать, где пользовательский интерфейс был визуализирован на виртуальном рабочем столе 302.
Теперь со ссылкой на Фиг.11 изображен альтернативный вариант осуществления операционной процедуры 800 по Фиг.10, включающий операционную процедуру 1118, которая иллюстрирует прием координат, указывающих позиции пользовательского интерфейса на виртуальном рабочем столе; прием пользовательского ввода; и центрирование обзорной области относительно пользовательского интерфейса в ответ на пользовательский ввод. Например, в варианте осуществления, когда клиентская подсистема 306 вычерчивает новое окно или пользовательский интерфейс для программы, на подсистему 308 прокрутки может посылаться уведомление, которое идентифицирует координаты окна или пользовательского интерфейса. В этом варианте осуществления описатель, указывающий координаты, может сохраняться в таблице и с описателем может быть связан пользовательский ввод, такой как клавиша или кнопка мыши. В этом примерном варианте осуществления, подсистема 308 прокрутки может быть конфигурирована с возможностью принимать уведомления, относящиеся к пользовательскому вводу, и определять исходя из принятого пользовательского ввода, были ли выбраны клавиша, или кнопка мыши, связанные с описателем. В случае если выбраны, подсистема 308 прокрутки может посылать на клиентскую подсистему 306 сигнал, дающий ей указание центрировать обзорную область 304 относительно координат нового окна или пользовательского интерфейса для программы. В этом примере клиентская подсистема 306 может принять сообщение и дать указание драйверу дисплея центрировать обзорную область 304.
Теперь со ссылкой на Фиг.12 иллюстрируется примерная блок-схема для практического осуществления аспектов настоящего раскрытия, включающая операции 1200, 1202, 1204 и 1206. В варианте осуществления настоящего раскрытия вычислительная система может включать в себя схему, например, комбинацию аппаратных средств и программного обеспечения, конфигурированную для выполнения операционных процедур по Фиг.12. Теперь со ссылкой на Фиг.12 вместе с Фиг.3, операционную процедуру начинает операция 1200, и операция 1202 иллюстрирует визуализацию обзорной области виртуального рабочего стола, причем виртуальный рабочий стол задается первично первым диапазоном пикселов, который соответствует разрешению дисплея удаленного компьютера, и обзорная область задается вторым диапазоном пикселов. Например, в варианте осуществления настоящего раскрытия клиент 201 может быть конфигурирован с возможностью включать в себя операционную систему 312, которая содержит ядро 314. Ядро 314 может быть конфигурировано с возможностью управлять аппаратными средствами клиента 201 и планировать потоки для исполнения на процессоре. Операционная система 312 может быть конфигурирована с возможностью включать в себя пользовательский режим и привилегированный режим, например, непривилегированный режим процессора, в котором исполняемые в нем приложения имеют ограниченный ряд прав, и привилегированный режима исполнения кода программ в процессоре, в котором могут выдаваться все команды относительно памяти и центрального процессора (ЦП, CPU). Ядро 314 в этом примере может осуществлять интерфейс с клиентской подсистемой 306, которая может включать в себя один или несколько процессов для выполнения среды удаленного рабочего стола путем приема команд вычерчивания от сервера 204 и выдачи указания драйверу дисплея вычерчивать их по отношению к виртуальному рабочему столу 302, хранимому в памяти. Подобно описанному выше, виртуальный рабочий стол 302 может формироваться клиентской подсистемой 306, и диапазон пикселов виртуального рабочего стола 302 может соответствовать разрешению изображения драйвера дисплея для сервера 204. Например, в этом варианте осуществления сервер 204 может включать в себя драйвер дисплея, который конфигурирован с возможностью формировать изображения с разрешением, соответствующим 1280 на 1024. В этом примере виртуальный рабочий стол 302 может формироваться для включения разрешения изображения 1280 на 1024. В другом варианте осуществления сервер 204 может включать в себя два драйвера дисплея, каждый из который формирует разрешение изображения 1280 на 1024. В этом примере виртуальный рабочий стол 302 может быть конфигурирован с возможностью включать разрешение изображения 2560 на 1024. В примере вариант осуществления, где разрешение изображения для сервера 204 поддерживается таким же на клиенте 201, клиентская подсистема 306 может визуализировать изображения без выполнения дорогостоящих операций изменения размеров и повторного преобразования карты (битового образа), то есть, поскольку геометрия виртуального рабочего стола 302 является одинаковой с драйвером дисплея для сервера 204, то пиктограмму, находящуюся в координатах (1000, 900) на сервере 204, можно вычерчивать на тех же координатах клиента 201 без изменения размеров и повторного преобразования карты пиктограммы.
В дополнение к вычерчиванию виртуального рабочего стола 302 клиентская подсистема 306 может быть сконфигурирована, чтобы давать указания драйверу дисплея визуализировать обзорную область 304 виртуального рабочего стола 302. В этом примерном варианте осуществления обзорная область 304 может задаваться вторым диапазоном пикселов, и драйвер дисплея для клиента 201 может быть конфигурирован, чтобы визуализировать изображения в видимой части виртуального рабочего стола 302. В этом примерном варианте осуществления диапазон пикселов, задающих обзорную область 304, может быть меньше диапазона пикселов, задающих виртуальный рабочий стол 302. Например, в варианте осуществления клиентом 201 может быть портативная ЭВМ, которая имеет экран, который может воспроизводить 1280 на 1024 пикселов, тогда как сервер 204 содержит множество мониторов, воспроизводящих каждый 1280 на 1024 пикселов (таким образом, сервер 204 по существу имеет 5120 на 1024 пикселов доступного пространства). В другом примере, обзорной областью 304 может быть настраиваемое окно на рабочем столе клиента 201. Таким образом, в варианте осуществления и сервер 204, и клиент могут иметь разрешение изображения 1280 на 1024, однако поскольку обзорная область 304 является оконно-организованной, она может включать в себя 600 на 400 пикселов в данный момент, и у клиента 201 может иметься пользовательский интерфейс для другой программы, визуализируемый посредством остальных пикселов.
В варианте осуществления настоящего раскрытия диапазон пикселов, которые задают обзорную область 304, может быть отображен на диапазон пикселов, которые задают виртуальный рабочий стол 302. Например, клиентская подсистема 306 может быть конфигурирована с возможностью включать в себя таблицу, включающую информацию, которая устанавливает текущий диапазон пикселов для обзорной области 304. В конкретном примере, если обзорная область виртуального рабочего стола имеет диапазон пикселов 800 на 600 и обзорная область 304 визуализирует верхнюю крайнюю правую часть виртуального рабочего стола 302, то таблица может включать в себя информацию, которая устанавливает, что текущий диапазон пикселов обзорной области 304 от пиксела 1280 до 480 по оси x и от 1024 до 424 по оси y. В другой реализации таблица может включать в себя только одну точку, такую как верхний правый пиксел обзорной области (1280,1024), и использовать точку наряду с разрешением изображения для обзорной области 304, чтобы вычислить пикселы, которые задают границы.
В продолжение описания Фиг.12, она включает операцию 1204, которая иллюстрирует прием информации перемещения курсора. Например, и в дополнение к предыдущему примеру подсистема 308 прокрутки в варианте осуществления настоящего раскрытия может быть сконфигурирована, чтобы принимать информацию перемещения курсора от операционной системы 312 клиента 201. Например, в варианте осуществления операционная система 312 может быть конфигурирована с возможностью отслеживать перемещение курсора 310. Курсор 310 в варианте осуществления может содержать однопиксельную точку, называемую активной точкой, например, точку, которую операционная система 312 отслеживает и принимает в качестве позиции курсора 310. В этой примерной реализации, подсистема прокрутки может 308 быть конфигурирована с возможностью принимать входные сообщения, которые идентифицируют абсолютную позицию курсора 310 относительно виртуального рабочего стола 302, и сравнивать позицию с предыдущей позицией курсора 310, чтобы определить направление перемещения курсора относительно виртуального рабочего стола 302. В альтернативном варианте осуществления входные сообщения могут включать в себя информацию относительного перемещения мыши. Например, в варианте осуществления операционная система 312 клиента 201 может быть сконфигурирована, чтобы отслеживать каждое физическое перемещение устройства ввода, например, мыши, или сенсорной панели. Входные сообщения в этом примере могут включать в себя информацию, такую как (+1,+1), в случае, если устройство ввода перемещалось вверх и вправо. В других примерных вариантах осуществления подсистема 308 прокрутки может быть сконфигурирована, чтобы принимать информацию и абсолютного, и относительного перемещения мыши.
В продолжение описания Фиг.12, она включает операцию 1206, которая иллюстрирует определение исходя из информации перемещения курсора и второго диапазона пикселов, что курсор достиг границы второго диапазона пикселов. Например, в варианте осуществления настоящего раскрытия подсистема 308 прокрутки может быть конфигурирована с возможностью принимать информацию, которая идентифицирует диапазоны пикселов в обзорной области 304 относительно виртуального рабочего стола 302 и текущее положение курсора 310. Подсистема 308 прокрутки дополнительно может быть конфигурирована с возможностью принимать сообщения, которые могут, например, включать в себя информацию абсолютного перемещения мыши и/или информацию относительного перемещения мыши. Подсистема 308 прокрутки может определять, достиг ли курсор 310 границы обзорной области 304, путем определения позиции курсора 310 относительно виртуального рабочего стола 302 и сравнения позиции с диапазонами пикселов, которые задают обзорную область 304 относительно виртуального рабочего стола 302, например, путем сравнения координат x и y курсора 310 относительно виртуального рабочего стола 302 с координатами x и y, которые задают границы обзорной области 304 относительно виртуального рабочего стола 302 каждый раз, когда принимается сообщение о перемещении мыши. В конкретном примере подсистема 308 прокрутки может включать в себя таблицу, включающую координаты курсора 310 внутри виртуального рабочего стола, например, пиксел 400 на 300 и пикселы, которые задают обзорную область для виртуального рабочего стола, например, пикселы 0-800 по оси x и 0-600 по оси y. Если пользователь перемещает мышь, курсор 310 может перемещаться, например, слева направо через обзорную область 304. Подсистема 308 прокрутки может увеличивать пиксельную позицию курсора 310 и для каждого приращения осуществлять проверку, чтобы понять, достиг ли пиксел границы, например, пикселов 800 по оси x в этом примере. В случае если подсистема 308 прокрутки определяет, что достигнута граница по оси x, например, курсор 310 находится в пиксельной точке 800 на 300, подсистема 308 прокрутки может быть сконфигурирована, чтобы послать сообщение на клиентскую подсистему 306.
В продолжение описания Фиг.12, она включает операцию 1206, которая иллюстрирует прокрутку обзорной области в направлении перемещения курсора. Например, и в дополнение к предыдущему примеру в случае, если подсистема 308 прокрутки определяет, что была достигнута граница обзорной области 304, подсистема 308 прокрутки может быть сконфигурирована, чтобы послать сигнал на клиентскую подсистему 306 для смещения обзорной области 304 в направлении перемещения мыши. Например, в конкретном варианте осуществления подсистема 308 прокрутки может принять сигнал, указывающий, что мышь перемещалась (-10,0) по оси x. Подсистема 308 прокрутки может быть сконфигурирована с возможностью изменять позицию курсора 310 и сравнивать позицию с пикселами, которые задают границы обзорной области 304. В этом примере может быть достигнута левая граница обзорной области 304, и подсистема 308 прокрутки может быть сконфигурирована, чтобы посылать на клиентскую подсистему 306 сообщение, дающее ей указание переместить обзорную область 304 для виртуального рабочего стола 302. В конкретном примере обзорная область 304 может включать разрешение 800 на 600 пикселов и может изображать верхнюю крайнюю правую часть виртуального рабочего стола 302. Клиентская подсистема 306 может в этом примере включать в себя таблицу, которая хранит координаты, задающие обзорную область, например, 1280-480 по оси x и 1024-424 по оси y. В этом примерном варианте осуществления, если подсистема 308 прокрутки определяет, что обзорная область 304 должна быть перемещена (-10,0), то клиентская подсистема 306 может быть сконфигурирована, чтобы дать указание драйверу дисплея визуализировать диапазон 1270-470 пикселов по оси x и 1024-424 по оси y.
Теперь, что касается Фиг.13-16, на них иллюстрируются примерные уточнения операционной процедуры 1200 по Фиг.12 и дополнительные операционные процедуры. Теперь со ссылкой на Фиг.13, иллюстрируется операционная процедура по Фиг.12, включая дополнительную операцию 1310, которая иллюстрирует визуализацию миникарты в обзорной области, причем миникарта изображает масштабированное изображение виртуального рабочего стола и масштабированное изображение обзорной области. Например, в варианте осуществления настоящего раскрытия клиентская подсистема 306 может быть конфигурирована с возможностью формирования миникарты 316, которая изображает масштабированное изображение виртуального рабочего стола 302, и обзорной области 304, чтобы иллюстрировать часть виртуального рабочего стола 302, которая изображает обзорную область 304. Например, в варианте осуществления, включающем миникарту 316, клиентская подсистема 306 может быть сконфигурирована, чтобы принимать диапазон пикселов, задающих виртуальный рабочий стол 302; и диапазон пикселов, задающих обзорную область 304 относительно виртуального рабочего стола 302. В этом примерном варианте осуществления клиентская подсистема 306 может быть конфигурирована для формирования миникарты 316 путем деления диапазонов пикселов и для обзорной области 304, и для виртуального рабочего стола 302, и определения центра масштабированной обзорной области, который соответствует координатам пикселов для центра обзорной области 304 внутри виртуального рабочего стола 302. В этом примерном варианте осуществления клиентская подсистема 306 может конфигурировать драйвер дисплея для клиента 201, чтобы визуализировать миникарту 316, которая отображает положение обзорной области 304 поверх части обзорной области 304. В этом примерном варианте осуществления, поскольку обзорная область 304 прокручивается, может обновляться диапазон пикселов, которые задают обзорную область 304, и клиентская подсистема 306 может конфигурировать драйвер дисплея клиента 201, чтобы визуализировать обновленную миникарту 316, которая отражает, что обзорная область 304 изменилась.
В другом варианте осуществления настоящего раскрытия миникарта 316 может быть конфигурирована с возможностью визуализировать масштабированные изображения, принятые от сервера 204, в дополнение к масштабированной обзорной области и масштабированному виртуальному рабочему столу 302. Например, каждая команда вычерчивания окна и/или пиктограммы, принятая от сервера 204, может связываться с положением пиксела внутри виртуального рабочего стола 302. В этом примерном варианте осуществления клиентская подсистема 306 может быть конфигурирована с возможностью масштабировать окна и/или пиктограммы и определять пиксельное положение для масштабированных окон и/или пиктограмм внутри масштабированного виртуального рабочего стола. В этом примерном варианте осуществления клиентская подсистема 306 может конфигурировать драйвер дисплея клиента 201, чтобы визуализировать миникарту 316, включающую в себя масштабированные пиктограммы и/или окна поверх части обзорной области 304.
В еще одном варианте осуществления настоящего раскрытия миникарта 316 может визуализировать сплошное или прозрачное изображение обзорной области и виртуальный рабочий стол поверх обзорной области 304, однако в варианте осуществления для сбережения вычислительной мощности клиентская подсистема 306 может быть конфигурирована с возможностью формирования каркасного изображения обзорной области 304 и виртуального рабочего стола 302. Например, каркасное изображение в варианте осуществления может включать в себя обзорную область, образованную согласно идентификации границ обзорной области и виртуального рабочего стола, заданных диапазонами пикселов.
Теперь со ссылкой на Фиг.14 иллюстрируется операционная процедура Фиг.13, включающая дополнительную операцию 1410, которая иллюстрирует прием координат в пикселах для пользовательского интерфейса программы, который был сформирован внутри виртуального рабочего стола; и формирование идентификатора для пользовательского интерфейса программы в миникарте. Например, в варианте осуществления настоящего раскрытия сетевой адаптер клиента 201 может быть конфигурирован с возможностью принимать от сервера 204 сигнал, который идентифицирует координаты для пользовательского интерфейса программы. Клиентская подсистема 306 может принимать сигнал и давать указание драйверу дисплея клиента 201 визуализировать идентификатор на миникарте 316, которая может использоваться, чтобы быстро определять, для какой части виртуального рабочего стола 302 был вычерчен пользовательский интерфейс. Например, подсистема 240 времени выполнения в составе сервера 204 может быть конфигурирована с возможностью формировать процессы и потоки для программ. В этом примерном варианте осуществления подсистема 254 удаленного дисплея может быть конфигурирована для приема от GDI 246, например, уведомления, когда процесс начинается, и информации, которая идентифицирует координаты пользовательского интерфейса для программы. Подсистема 254 удаленного дисплея может быть конфигурирована, чтобы формировать сообщение, которое идентифицирует диапазон пикселов, или пиксельную точку для вновь сформированного пользовательского интерфейса, и посылать сигнал на клиент 201 посредством транспортной логики 210. Клиентская подсистема 306 может быть конфигурирована с возможностью принимать сообщение и выдачи указания драйверу дисплея клиента 201 визуализировать миникарту 316 поверх части обзорной области 304, включающей в себя масштабированный пользовательский интерфейс, или, например, каркасное изображение масштабированного пользовательского интерфейса. Клиентская подсистема 306 может затем конфигурировать драйвер дисплея, чтобы изменить цвет масштабированного пользовательского интерфейса в течение заранее заданного времени, чтобы давать возможность пользователю быстро идентифицировать, где пользовательский интерфейс был визуализирован на виртуальном рабочем столе 302.
Теперь со ссылкой на Фиг.15 иллюстрируется операционная процедура Фиг.12, включающая дополнительные операции 1514 и 1516 и уточнение 1518. В продолжение описания Фиг.12, операция 1512 иллюстрирует применение коэффициента линейного ускорения к информации перемещения курсора. Например, в варианте осуществления настоящего раскрытия подсистема 308 прокрутки может быть конфигурирована с возможностью принимать информацию перемещения курсора; умножать ее на значение коэффициента масштабирования; и передавать сигнал на клиентскую подсистему 306, чтобы осуществлять прокрутку обзорной области 304 на величину, заданную масштабированным значением. Например, в варианте осуществления может быть желательным смещать обзорную область 304 на большее число пикселов, чем величина относительного перемещения мыши, например, в примерных вариантах осуществления, где клиент 201 включает в состав сенсорную панель, пользователь, возможно, должен осуществлять прокрутку пальцем по сенсорной панели чрезмерное число раз, чтобы переместить обзорную область 304 с одной стороны виртуального рабочего стола 302 на другую. Таким образом, в варианте осуществления подсистема 308 прокрутки может умножать информацию относительного перемещения на фиксированное значение и давать указание клиентской подсистеме 306 переместить обзорную область 304 на масштабированную величину. В конкретном примере подсистема 308 прокрутки может быть конфигурирована с возможностью определять, что позиция курсора находится в пикселе, который задает правую границу обзорной области 304. В этом примере, если пользователь перемещает мышь +1 в направлении x, подсистема 308 прокрутки может умножать перемещение в один пиксел на фиксированное число, например, 50, и посылать сообщение на клиентскую подсистему 306, чтобы переместить смещение обзорной области 304 на 50 пикселов в направлении x.
В продолжение описания Фиг.15 на ней дополнительно изображена операция 1514, которая иллюстрирует определение скорости курсора; формирование динамического коэффициента ускорения, причем динамический коэффициент ускорения является функцией скорости курсора; и применение динамического коэффициента ускорения к информации перемещения курсора. Например, в варианте осуществления настоящего раскрытия подсистема 308 прокрутки может быть конфигурирована с возможностью принимать информацию относительного перемещения курсора; умножать ее на значение динамического коэффициента масштабирования; и передавать сигнал на клиентскую подсистему 306, чтобы осуществлять прокрутку обзорной области 304 на суммарную величину, заданную масштабированным значением. Например, в варианте осуществления может быть требуемым смещать обзорную область 304 на большое число пикселов в случае, если курсор 310 быстро перемещают через обзорную область 304. Например, если пользователь перемещает курсор 310 через обзорную область 304, можно сделать вывод, что пользователь заинтересован в манипулировании чем-то на дальнем конце виртуального рабочего стола 302. В этом примере подсистема 308 прокрутки может быть конфигурирована с возможностью делать вывод, что намерением пользователя является смещение обзорной области 304 на большое число пикселов, и реагировать соответственно. В этих ситуациях подсистема 308 прокрутки может быть конфигурирована с возможностью формировать значение коэффициента масштабирования, которое зависит от скорости курсора 310, если его перемещают через обзорную область 304. Например, в этом примере подсистема 308 прокрутки может быть конфигурирована с возможностью отслеживать координаты курсора 310 в течение последних 64 выборок. В этом примере частота выборки может быть постоянной, и подсистема 308 прокрутки может быть конфигурирована с возможностью определять среднюю скорость курсора 310. В этом примере подсистема 308 прокрутки может быть сконфигурирована, чтобы увеличивать значение коэффициента масштабирования на основании средней скорости курсора 310 и давать указание клиентской подсистеме 306 смещать обзорную область 304 на масштабированную величину. Например, в некотором примерном варианте осуществления значение коэффициента масштабирования может экспоненциально возрастать в зависимости от скорости. Таким образом, чем быстрее курсор 310 перемещается в обзорной области 304, тем на более большую величину будет прокручивать клиентская подсистема 306 обзорную область 304. В конкретном варианте осуществления, курсор 310 может перемещаться слева направо через обзорную область 304. В этом примере подсистема 308 прокрутки может принимать ряд сообщений, которые указывают, что координаты курсора 310 изменяются в направлении x на +10 за одну выборку. В этом варианте осуществления, подсистема 308 прокрутки может быть конфигурирована с возможностью определять динамический коэффициент ускорения путем взятия e^10 и выдачи указания клиентской подсистеме 306 переместить обзорную область 304 на 22026 пикселов в направлении x. В том же или других вариантах осуществления подсистема 308 прокрутки может быть конфигурирована с возможностью установить максимальное динамическое значение, например, 403, таким образом, в этой ситуации клиентская подсистема 306 может не осуществлять массово изменения обзорной области 304 путем прокрутки на тысячи пикселов.
В продолжение описания по Фиг.15, дополнительно изображается уточнение 1516 операционной процедуры по Фиг.12, причем первый диапазон пикселов дополнительно соответствует разрешению изображения для первого драйвера дисплея и второе разрешение изображения, соответствующее второму драйверу дисплея удаленного компьютера, дополнительно при этом разрешение изображения для первого драйвера дисплея задается первыми границами, и разрешение изображения для второго драйвера дисплея задается вторыми границами. Например, в варианте осуществления настоящего раскрытия сервер 204 может включать в себя подсистему 254 удаленного дисплея, которая включает в себя, по меньшей мере, два драйвера дисплея. В этом примере каждый драйвер дисплея может иметь свое собственное разрешение изображения и может быть конфигурирован с возможностью передавать на клиент 201 посредством транспортной логики 210 сигналы, указывающие изображения на своем дисплее. В этом примерном варианте осуществления первый драйвер дисплея может быть конфигурирован с возможностью работать с разрешением изображения 1280 на 1024 пикселов, и второй драйвер дисплея может работать с разрешающей способностью в 800 на 600 пикселов. В этом примерном варианте осуществления клиентская подсистема 306 по Фиг.3 может быть конфигурирована с возможностью принимать отдельные потоки данных для каждого отображения; формировать виртуальный рабочий стол 302, который включает сумму разрешающих способностей изображения и повторно преобразовывать диапазоны пикселов, например, для второго драйвера дисплея для совмещения с виртуальным рабочим столом 302. В этом примерном варианте осуществления клиентская подсистема 306 может использовать диапазон пикселов, которые задают разрешения первого и второго дисплея, чтобы определить границы для каждого дисплея внутри виртуального рабочего стола 302. Например, клиентская подсистема 306 может включать в себя таблицу, которая связывает диапазон пикселов для каждого дисплея с диапазоном пикселов для полного виртуального рабочего стола 302. В варианте осуществления, где разрешением изображения для первого драйвера дисплея является 1280 на 1024, а для второго - 800 на 600, если установлено, что физическая схема размещения драйверов дисплея должна иметь второй дисплей логически справа от первого, то таблица может отображать пикселы для второго драйвера дисплея на пикселы с номерами 1280-2080 по оси x и, например, либо 0-600, либо 424-1024 по оси y виртуального дисплея 302 в зависимости от выравнивания по вертикали для второго драйвера дисплея.
Теперь со ссылкой на Фиг.16 иллюстрируется альтернативный вариант осуществления операционных процедур Фиг.15, включающий дополнительную операцию 1618, которая иллюстрирует определение, что курсор достиг конкретной границы разрешения изображения для первого драйвера дисплея, причем конкретная граница является ближайшей к конкретной границе второго драйвера дисплея; и центрирование обзорной области относительно области виртуального рабочего стола, соответствующей второму драйверу дисплея. Например, в варианте осуществления настоящего раскрытия подсистема 308 прокрутки может быть конфигурирована с возможностью включать в себя диапазоны пикселов каждого драйвера дисплея по отношению к отображенным диапазонам пикселов виртуального дисплея 302. В этом примерном варианте осуществления подсистема прокрутки может быть конфигурирована с возможностью принимать информацию перемещения курсора от операционной системы 312 клиента 201; и хранить координаты курсора 310 относительно виртуального рабочего стола 302. В этом примерном варианте осуществления может отслеживаться позиция курсора 310 относительно виртуального рабочего стола 302, и если курсор 310 доходит до границы для драйвера дисплея, например, пиксела 1280 в направлении x, подсистема 308 прокрутки может быть сконфигурирована, чтобы посылать сообщение на клиентскую подсистему 306 для выдачи указания драйверу дисплея отобразить диапазон пикселов, центрированных относительно пикселов виртуального рабочего стола, которые соответствуют второму дисплею.
Предшествующее подробное описание содержит различные варианты осуществления систем и/или процессов, изложенные с помощью примеров и/или операционных схем. Постольку поскольку такие блок-схемы и/или примеры содержат одну или несколько функций и/или операций, специалистам в данной области техники будет понятно, что каждая функция и/или операция в рамках таких блок-схем или примеров может быть реализована отдельно и/или в совокупности посредством широкого диапазона аппаратных средств, программного обеспечения, микропрограммного обеспечения или фактически любой комбинации таковых.
Хотя были показаны и описаны конкретные аспекты настоящего объекта изобретения, описанного здесь, специалистам в данной области техники будет очевидно на основании представленных в документе идей, что могут выполняться изменения и модификации без выхода за рамки описанного в документе объекта изобретения и его расширительных аспектов и, следовательно, прилагаемая формула изобретения должна охватывать в рамках своего объема все такие изменения и модификации в качестве находящихся в рамках истинного существа и объема объекта изобретения, описанного в документе.