KR102136474B1 - 가상 세션에서의 클라이언트 측 키보드 레이아웃과 서버 측 키보드 레이아웃의 동기화 - Google Patents

가상 세션에서의 클라이언트 측 키보드 레이아웃과 서버 측 키보드 레이아웃의 동기화 Download PDF

Info

Publication number
KR102136474B1
KR102136474B1 KR1020187017990A KR20187017990A KR102136474B1 KR 102136474 B1 KR102136474 B1 KR 102136474B1 KR 1020187017990 A KR1020187017990 A KR 1020187017990A KR 20187017990 A KR20187017990 A KR 20187017990A KR 102136474 B1 KR102136474 B1 KR 102136474B1
Authority
KR
South Korea
Prior art keywords
server
keyboard
client
keyboard layout
layout
Prior art date
Application number
KR1020187017990A
Other languages
English (en)
Other versions
KR20180086239A (ko
Inventor
티안제 지앙
양 장
카이 루
데바오 딩
이완 루
Original Assignee
사이트릭스 시스템스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 사이트릭스 시스템스, 인크. filed Critical 사이트릭스 시스템스, 인크.
Publication of KR20180086239A publication Critical patent/KR20180086239A/ko
Application granted granted Critical
Publication of KR102136474B1 publication Critical patent/KR102136474B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04886Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures by partitioning the display area of the touch-screen or the surface of the digitising tablet into independently controllable areas, e.g. virtual keyboards or menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0238Programmable keyboards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • G06F3/0236Character input methods using selection techniques to select from displayed items
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Abstract

컴퓨터로 구현되는 기술은 사용자 입력을 프로세싱한다. 컴퓨터로 구현되는 기술은 사용자에 의해 동작되는 클라이언트 장치와 서버 기반 사용자 환경에 대한 액세스를 전달하는 서버 장치 사이에 가상 세션을 생성하는 것을 포함한다. 이 기술은 또한 가상 세션의 생성시, 서버 장치의 서버 키보드 레이아웃을 클라이언트 장치의 클라이언트 키보드 레이아웃에 매칭시키는 것을 포함한다. 이 기술은 또한 서버 키보드 레이아웃이 클라이언트 키보드 레이아웃에 매칭된 후에, 서버 장치가 가상 세션 동안 서버 기반 사용자 환경에 대한 액세스를 사용자에게 제공하는 동안 서버 장치의 서버 키보드 레이아웃에 따라 사용자로부터의 키스트로크 입력을 서버 기반 사용자 환경에 제공하는 것을 포함한다.

Description

가상 세션에서의 클라이언트 측 키보드 레이아웃과 서버 측 키보드 레이아웃의 동기화
본 발명은 가상 세션에서 서버 측 키보드 레이아웃을 클라이언트 측 키보드 레이아웃에 동기화시키는 것에 관한 것이다.
데스크톱 또는 애플리케이션 가상화는 사용자가 로컬 클라이언트 장치를 네트워크를 통해 원격 서버 장치에 접속하고 그 후 원격 서버 장치에 의해 제공되는 가상 데스크톱 또는 가상 애플리케이션 환경에 액세스하는 것을 가능하게 한다. 일단 사용자가 가상 데스크톱 또는 가상 애플리케이션 환경에 액세스하면, 그 사용자는 가상 데스크톱 또는 가상 애플리케이션 환경을 사용하여 문서 편집, 슬라이드 쇼 재생, 전자 메일 확인 등과 같은 유용한 작업을 수행할 수 있다.
가상 데스크톱 또는 가상 애플리케이션 환경에 텍스트 입력을 제공하기 위해, 사용자는 로컬 클라이언트 장치의 키보드 상에 타이핑하고, 그 사용자가 행한 키스트로크(keystrokes)는 특정 문자(예를 들어, 문자, 숫자, 기호 등)로 전자적으로 변환된다. 어떤 상황에서(예를 들어, 데스크톱 컴퓨터의 상황에서), 로컬 클라이언트 장치에는 물리적 키보드가 탑재된다. 다른 상황에서(예를 들어, 태블릿 또는 스마트폰의 상황에서), 로컬 클라이언트 장치에는 디스플레이형 키보드(displayed keyboard)를 제공하는 터치 스크린(touch screen)이 탑재된다.
로컬 클라이언트 장치의 터치 스크린이, 원격 서버 장치에 의해 제공되는 데스크톱 또는 가상 애플리케이션 환경에 텍스트 입력을 사용자가 입력할 수 있게 하는 영어(미국) 터치 키보드를 초기에 디스플레이하는 것으로 가정한다. 또는 로컬 클라이언트 장치는 물리적 키보드가 탑재되어 있다고 가정한다. 사용자가 로컬 클라이언트 장치의 터치 키보드 또는 물리적 키보드 상에서 타이핑하면, 그 사용자가 행한 키스트로크는 특정 영어 문자로 적절히 변환된다.
또한, 로컬 클라이언트 장치는 사용자가 상이한 키보드 레이아웃 사이에서 (예를 들어, 영어 키보드 레이아웃에서 프랑스어 키보드 레이아웃으로 또는 독일어 키보드 레이아웃 등으로) 전환할 수 있도록 구성된다고 가정된다. 이 키보드 전환 특징이 사용자에게 이용될 수 있다면, 사용자는 개인적 취향에 따라 영어 키보드 레이아웃으로부터 상이한 키보드 레이아웃들 중의 하나로 전환하려고 시도할 수 있다. 그러나, 로컬 클라이언트 장치에서 키보드 전환을 수행한 후, 사용자는 원격 서버 장치에 의해 제공되는 가상 데스크톱 또는 가상 애플리케이션 환경에 대해 현재 어떠한 키보드가 유효한지에 대해 혼동될 수 있다. 또한, 로컬 클라이언트 장치에서 키보드 전환이 수행된 후, 사용자에 의해 입력된 키스트로크는 원격 서버 장치에 의해 제공되는 가상 데스크톱 또는 가상 애플리케이션 환경에 의해 잘못 해석될 수가 있다.
개선된 기술은 가상 세션 동안 클라이언트 측 키보드 레이아웃에 서버 측 키보드 레이아웃을 전자적으로 동기화시키는 것을 포함한다. 이러한 동기화는 현재 어떠한 키보드 레이아웃이 유효한지에 대한 사용자 혼동을 제거한다. 또한 이러한 동기화는 클라이언트 측 텍스트 입력이 서버 측 환경에 의해 잘못 해석되지 않도록 보장한다. 따라서, 사용자 경험은 크게 향상된다.
일 실시예는 사용자 입력을 프로세싱하는 컴퓨터로 구현되는 방법에 관한 것이다. 컴퓨터로 구현되는 방법은 사용자에 의해 동작되는 클라이언트 장치와 서버 기반 사용자 환경에 대한 액세스를 전달하는 서버 장치 사이에 가상 세션을 생성하는 단계를 포함한다. 이 방법은 가상 세션의 생성시, 서버 장치의 서버 키보드 레이아웃을 클라이언트 장치의 클라이언트 키보드 레이아웃에 매칭시키는 단계를 더 포함한다. 상기 방법은, 서버 키보드 레이아웃이 클라이언트 키보드 레이아웃에 매칭된 후에, 서버 장치가 가상 세션 동안 서버 기반 사용자 환경에 대한 액세스를 사용자에게로 전달하는 동안 서버 장치의 서버 키보드 레이아웃에 따라 사용자로부터의 키스트로크 입력을 서버 기반 사용자 환경에 제공하는 단계를 더 포함한다.
일부 구성에서, 서버 키보드 레이아웃을 클라이언트 키보드 레이아웃과 정합시키는 단계는 클라이언트 장치의 초기 클라이언트 키보드 레이아웃과 서버 장치의 초기 서버 키보드 레이아웃을 협상하기 위해 키보드 바인딩 동작을 수행하는 단계를 포함한다. 이러한 구성은 사용자가 클라이언트 측 키보드 레이아웃을 전환할 수 있게 하는 터치 키보드가 탑재된 클라이언트 장치에 매우 적합하다.
일부 구성에서, 키보드 바인딩 동작을 수행하는 단계는:
(i) 서버 장치로부터 클라이언트 장치로 키보드 바인드 요청(keyboard bind request)을 전달하는 단계 - 상기 키보드 바인드 요청은 호환 가능한 서버 키보드 레이아웃의 세트를 식별함 - 와,
(ii) 키보드 바인드 요청에 응답하여, 클라이언트 장치로부터 서버 장치로 키보드 바인드 응답(keyboard bind response)을 전달하는 단계 - 상기 키보드 바인드 응답은 호환 가능한 서버 키보드 레이아웃의 세트 중의 어떤 레이아웃을 클라이언트 장치가 사용하도록 현재 구성된 것인지를 식별함 - 와,
(iii) 키보드 바인드 응답에 응답하여, 서버 장치로부터 클라이언트 장치로 키보드 바인드-커밋 메시지(keyboard bind-commit message)를 전달하는 단계를 포함한다.
키보드 바인드-커밋 메시지는 클라이언트 장치 및 서버 장치가 키보드 바인드 응답에서 식별된 키보드 레이아웃을 지원한다는 것을 커밋한다(commit).
일부 구성에서, 클라이언트 장치와 서버 장치 사이에 가상 세션을 생성하는 단계는 컴퓨터 네트워크를 통해 클라이언트 장치와 서버 장치 사이에 가상 채널을 수립하는 단계를 포함한다. 이러한 구성에서 키보드 바인드 요청, 키보드 바인드 응답 및 키보드 바인드-커밋 메시지는 수립된 가상 채널을 통해 전달된다.
일부 구성에서, 키보드 바인드 응답은, 클라이언트 장치가 구성하고 지원하도록 구성된 키보드 피처(keyboard features)의 세트(예를 들어, 키보드 유형, 키보드 레이아웃 세트, 현재 플랫폼 등)를 식별한다.
일부 구성에서, 본 방법은 사용자로부터의 키스트로크 입력이 일정 기간 동안 서버 기반 사용자 환경에 제공된 후, 서버 장치의 서버 키보드 레이아웃을 클라이언트 장치의 다른 클라이언트 키보드 레이아웃에 매칭시키는 단계를 더 포함한다.
일부 구성에서, 서버 장치의 서버 키보드 레이아웃을 클라이언트 장치의 다른 클라이언트 키보드 레이아웃에 매칭시키는 단계는 사용자로부터 키보드 레이아웃 변경 커맨드를 수신하는 단계와, 사용자로부터의 키보드 레이아웃 변경 커맨드에 응답하여, 새로운 클라이언트 키보드 레이아웃을 로딩하고, 상기 서버 장치의 서버 키보드 레이아웃을 클라이언트 장치의 초기 클라이언트 키보드 레이아웃과 다른 클라이언트 장치의 상기 새로운 클라이언트 키보드 레이아웃과 동기화시키기 위해 상기 새로운 클라이언트 키보드 레이아웃을 시스템 디폴트 키보드 레이아웃으로서 설정하는 단계를 포함한다.
일부 구성에서, 초기 클라이언트 키보드 레이아웃은 제1 언어를 위한 제1 키 배열을 포함한다. 또한, 새로운 클라이언트 키보드 레이아웃은 제1 언어를 위한 제1 키 배열과 상이한 제2 언어를 위한 제2 키 배열을 포함한다. 또한, 사용자로부터 키보드 레이아웃 변경 커맨드를 수신하는 단계는 사용자에 의해 동작되는 클라이언트 장치의 터치 키보드(touch keyboard) 또는 운영 체제 태스크바(operating system taskbar)에 대한 키보드 언어 표시자를 통해 사용자로부터의 키보드 선택을 획득하는 단계를 포함한다. 키보드 선택은 제1 언어를 위한 제1 키 배열 대신에 제2 언어를 위한 제2 키 배열을 식별한다.
일부 구성에서, 상기 방법은 키보드 레이아웃 변경 동작이 수행된 후, 서버 장치가 가상 세션 동안 서버 기반 사용자 환경에 대한 액세스를 사용자에게 전달하는 동안 서버 장치의 새로운 서버 키보드 레이아웃에 따라 사용자로부터의 추가적인 키스트로크 입력을 서버 기반 사용자 환경에 제공하는 단계를 더 포함한다.
일부 구성에서, 상기 방법은 초기 서버 키보드 레이아웃 대신에 새로운 서버 키보드 레이아웃을 사용하도록 각 서버 애플리케이션에 통지하기 위해 서버 기반 사용자 환경에서 실행중인 서버 애플리케이션들의 세트에 키보드 변경 메시지들의 세트를 브로드캐스팅하는 단계를 더 포함한다.
다른 실시예는 사용자 입력을 프로세싱하기 위한 명령어들의 세트를 저장하는 비 일시적 컴퓨터 판독 가능 매체를 갖는 컴퓨터 프로그램 제품에 관한 것이다. 명령어들의 세트는 컴퓨터화된 회로에 의해 수행될 때, 컴퓨터화된 회로로 하여금,
(A) 사용자에 의해 동작되는 클라이언트 장치와 서버 기반 사용자 환경에 대한 액세스를 전달하는 서버 장치 사이에 가상 세션을 생성하는 것과;
(B) 가상 세션의 생성시, 서버 장치의 서버 키보드 레이아웃을 클라이언트 장치의 클라이언트 키보드 레이아웃에 매칭시키는 것과;
(C) 상기 서버 키보드 레이아웃이 상기 클라이언트 키보드 레이아웃에 매칭된 후에, 서버 장치가 가상 세션 동안 서버 기반 사용자 환경에 대한 액세스를 사용자에게 전달하는 동안 서버 장치의 서버 키보드 레이아웃에 따라 사용자로부터의 키스트로크 입력을 서버 기반 사용자 환경에 제공하는 것의 방법을 수행하게 한다.
또 다른 실시예는 사용자 인터페이스, 메모리, 및 사용자 인터페이스 및 메모리에 결합된 제어 회로를 포함하는 클라이언트 장치에 관한 것이다. 상기 메모리는 상기 제어 회로에 의해 수행될 때, 상기 제어 회로로 하여금,
(A) 클라이언트 장치와 서버 기반 사용자 환경에 대한 액세스를 전달하는 서버 장치 사이에 가상 세션을 생성하는 것과;
(B) 가상 세션의 생성시, 서버 장치의 서버 키보드 레이아웃을 클라이언트 장치의 클라이언트 키보드 레이아웃에 매칭시키는 것과;
(C) 상기 서버 키보드 레이아웃이 상기 클라이언트 키보드 레이아웃에 매칭된 후에, 서버 장치가 가상 세션 동안 사용자 인터페이스를 통해 서버 기반 사용자 환경에 대한 액세스를 사용자에게 전달하는 동안 서버 장치의 서버 키보드 레이아웃에 따라 사용자로부터의 키스트로크 입력을 사용자 인터페이스를 통해 서버 기반 사용자 환경에 제공하는 것을 수행하게 하는 명령어들을 저장한다.
또한, 다른 실시예는 네트워크 인터페이스, 메모리, 및 네트워크 인터페이스 및 메모리에 연결된 제어 회로를 포함하는 서버 장치에 관한 것이다. 상기 메모리는 상기 제어 회로에 의해 수행될 때, 상기 제어 회로로 하여금,
(A) 사용자에 의해 동작되는 클라이언트 장치와 서버 기반 사용자 환경에 대한 액세스를 전달하는 서버 장치 사이에 가상 세션을 생성하는 것과;
(B) 가상 세션의 생성시, 서버 장치의 서버 키보드 레이아웃을 클라이언트 장치의 클라이언트 키보드 레이아웃에 매칭시키는 것과;
(C) 상기 서버 키보드 레이아웃이 상기 클라이언트 키보드 레이아웃에 매칭된 후에, 서버 장치가 가상 세션 동안 서버 기반 사용자 환경에 대한 액세스를 사용자에게 전달하는 동안 서버 장치의 서버 키보드 레이아웃에 따라 사용자로부터의 키스트로크 입력을 서버 기반 사용자 환경에 제공하는 것을 수행하게 하는 명령어들을 저장한다.
클라우드 환경에서 컴퓨터화된 회로의 적어도 일부는 네트워크를 통해 분산된 원격 컴퓨터 리소스에 의해 형성된다는 것을 이해해야 한다. 이러한 컴퓨터화된 환경은 호스팅된 서비스 및 리소스(예를 들어, 서비스로서의 소프트웨어, 서비스로서의 플랫폼, 서비스로서의 인프라스트럭쳐 등), 향상된 확장성 등과 같은 소정의 이점을 제공할 수 있다.
다른 실시예는 전자 시스템 및 장치, 프로세싱 회로, 컴퓨터 프로그램 제품 등에 관한 것이다. 일부 실시예는 가상 세션에서 서버 측 키보드 레이아웃을 클라이언트 측 키보드 레이아웃에 동기화시키는 것과 관련된 다양한 방법들, 전자 컴포넌트들 및 회로에 관한 것이다.
전술한 것 및 다른 목적, 특징 및 이점은 첨부된 도면에 도시된 바와 같이, 본 개시의 특정 실시예에 대한 다음의 설명으로부터 명백해질 것이며, 첨부된 도면 내의 동일한 참조 부호는 상이한 도면 전반에 걸쳐 동일한 부분을 나타낸다. 도면은 반드시 일정한 축척일 필요는 없으며, 대신에 본 개시의 다양한 실시예의 원리를 설명할 때 강조가 행해질 수 있다.
도 1은 서버 장치의 서버 측 키보드 레이아웃이 클라이언트 장치의 클라이언트 측 키보드 레이아웃에 동기화되는 컴퓨터화된 설정의 블록도이다.
도 2는 예시적인 키보드 레이아웃의 블록도이다.
도 3은 키보드 바인딩 동작 동안 통신의 시퀀스 다이어그램이다.
도 4는 키보드 레이아웃 동기화 동작의 특정 세부 사항을 예시하는 블록도이다.
도 5는 도 1의 컴퓨터화된 설정에 의해 수행되는 절차의 흐름도이다.
개선된 기술은 가상 세션 동안 서버 측 키보드 레이아웃을 클라이언트 측 키보드 레이아웃에 전자적으로 동기화시키는 것을 포함한다. 이러한 동기화는 현재 어떠한 키보드 레이아웃이 유효한지에 관한 사용자에 대한 혼동을 제거한다. 또한 이러한 동기화는 클라이언트 측 텍스트 입력이 서버 측 환경에 의해 잘못 해석되지 않도록 보장한다. 따라서 사용자 경험은 크게 향상된다.
본 명세서에 개시된 특정 실시예, 예 및 구현예들은 기술적인 의미를 갖는 임의의 바람직한 방식으로 조합될 수 있다. 더욱이, 이러한 특징들은 이러한 방식으로 결합되어 모든 가능한 조합, 치환 및 변형을 형성하지만, 그러한 조합, 치환 및/또는 변형이 명시적으로 제외되거나 비실용적인 경우는 제외된다. 이러한 조합, 치환 및 변형에 대한 지지가 이 문서 내에 존재하는 것으로 간주된다.
도 1은 가상 세션 동안 서버 측 키보드 레이아웃을 클라이언트 측 키보드 레이아웃에 전자적으로 동기화시키기에 적합한 컴퓨터화된 설정(20)을 도시한다. 컴퓨터화된 설정(20)은 클라이언트 장치(22), 서버 장치(24) 및 통신 매체(26)를 포함한다.
클라이언트 장치(22)는 사용자가 통신 매체(26)를 통해 서버 장치(24) 상의 리소스(예를 들어, 애플리케이션, 컨텐츠, 서비스 등)에 액세스하는 가상 세션에 대한 프론트 엔드로서 동작하도록 구성 및 배치된다. 따라서, 사용자는 유용한 작업을 수행할 수 있다. 적합한 클라이언트 장치는 사용자 워크스테이션, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 장치, 스마트폰 등을 포함한다.
서버 장치(24)는 서버 측 리소스(예를 들어, 애플리케이션, 컨텐츠, 서비스 등)에 대한 액세스를 하나 이상의 클라이언트 장치(22)에 제공하도록 구성 및 배치된다. 일부 구성에서, 서버 장치(24)는 가상 머신을 호스팅하는 가상화 플랫폼이다. 적합한 서버 장치(24)는 서버 컴퓨터, 서버 팜, 서버 설비 또는 캠퍼스, 분산 회로 등을 포함한다.
통신 매체(26)는 컴퓨터화된 설정(20)의 여러 컴포넌트들을 함께 접속하여 이들 컴포넌트들이 전자 신호(28)를 교환(예를 들어, 양방향 화살표(28) 참조)할 수 있게 하도록 구성 및 배치된다 . 통신 매체(26)의 적어도 일부분은 클라우드로 도시되어, 통신 매체(26)가 백본, 허브 및 스포크, 루프, 불규칙한 것, 이들의 조합 등을 포함하는 다양한 상이한 토폴로지를 가질 수 있음을 표시한다. 이들 라인을 따라, 통신 매체(26)는 구리 기반 데이터 통신 장치 및 케이블링, 광섬유 장치 및 케이블링, 무선 장치, 이들의 조합 등을 포함할 수 있다. 또한, 통신 매체(26)는 LAN 기반 통신, 셀룰러 통신, POTS(plain old telephone service) 통신, 이들의 조합 등을 지원할 수 있다.
도 1에 도시된 바와 같이, 클라이언트 장치(22)는 통신 인터페이스(30), 사용자 인터페이스(32), 메모리(34) 및 프로세싱 회로(36)를 포함한다. 이러한 클라이언트 측 컴포넌트들은 버스, 케이블, 커넥터, 회로 보드 및 기타 하드웨어를 통해 전자적으로 서로 접속될 수 있다.
통신 인터페이스(30)는 클라이언트 장치(22)를 통신 매체(26)에 접속하도록 구성 및 배치된다. 따라서, 통신 인터페이스(30)는 클라이언트 장치(22)가 컴퓨터화된 설정(20)의 다른 컴포넌트들과 통신할 수 있게 한다. 이러한 통신은 회선 기반 및/또는 무선(즉, IP 기반, 셀룰러, 이들의 조합 등)일 수 있다.
사용자 인터페이스(32)는 사용자로부터 입력을 수신하고 출력을 사용자에게 제공하도록 구성 및 배치된다. 독립형 컴퓨터의 상황에서, 사용자 인터페이스(32)는 표준 키보드, 포인팅 장치(예를 들어, 마우스) 및 디스플레이에 의해 형성될 수 있다. 태블릿 또는 스마트폰의 상황에서, 사용자 인터페이스(32)는 터치 스크린, 소형 키보드, 웹캠, 마이크로폰, 스피커, 가속도계 등과 같은 다른 컴포넌트들에 의해 형성될 수 있다.
메모리(34)는 휘발성 저장 장치(예를 들어, DRAM, SRAM 등) 및 비휘발성 저장 장치(예를 들어, 플래시 메모리, 자기 디스크 드라이브 등)를 나타내기 위한 것이다. 메모리(34)는 운영 체제(42), 서버 장치(24)와의 가상 세션을 수립하고 관리하기 위한 가상 클라이언트 애플리케이션 및 데이터(44)의 세트, 및 다른 애플리케이션 및 데이터(46)를 포함하는 다양한 소프트웨어 구성(40)을 저장한다.
프로세싱 회로(36)는 메모리(34)에 저장된 다양한 소프트웨어 구성(40)에 따라 동작하도록 구성 및 배치된다. 특히, 프로세싱 회로(36)는 운영 체제(42)를 실행할 때, 클라이언트 장치(22)의 다양한 리소스(예를 들어, 메모리 할당, 프로세서 사이클, 하드웨어 호환성 등)를 관리한다.
또한, 가상화 애플리케이션 및 데이터(44)의 세트에 따라 동작하는 프로세싱 회로(36)는 클라이언트 장치(22)의 사용자를 대신하여 서버 장치(24)와의 가상 세션을 생성 및 유지하기 위한 특수 제어 회로를 형성한다. 이러한 동작 동안, 그리고 이하에서 더 상세히 설명되는 바와 같이, 프로세싱 회로(36)는 혼동 및 오역을 피하고 사용자 경험을 개선하기 위해 서버 측 키보드 레이아웃(52)을 클라이언트 측 키보드 레이아웃(50)에 동기화시킨다. 이러한 동기화를 위한 통신은 통신 매체(26)를 통해 클라이언트 장치(22)와 서버 장치(24) 사이에 수립된 가상 채널(54)(예를 들어, 도 1의 이중 화살표(54) 참조)을 통해 수행될 수 있다.
또한, 다른 애플리케이션 및 데이터(46)에 따라 동작하는 프로세싱 회로(36)는 다른 동작을 수행하는 다른 특수 회로를 형성한다. 예를 들어, 프로세싱 회로(36)는 사용자가 웹 브라우징, 비디오 시청, 셀룰러 전화 호출, 사진 촬영 등과 같은 다른 로컬 사용자 레벨 동작을 수행할 수 있게 한다. 또한, 프로세싱 회로(36)는 사용자가 온라인 회의, 문서 및 다른 콘텐츠 공유, 온라인 가상 팀 환경(즉, 온라인 작업 공간)에서의 작업 등을 통해 원격으로 하나 이상의 다른 사용자와 협업할 수 있게 한다.
전술한 프로세싱 회로(36)는 특수 소프트웨어, 애플리케이션 특정 IC (ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 및 관련 프로그램을 실행하는 하나 이상의 프로세서(또는 코어)를 통해, 이산 컴포넌트, 아날로그 회로, 다른 하드웨어 회로, 이들의 조합 등을 포함하는 다양한 방식으로 구현될 수 있다. 소프트웨어를 실행하는 하나 이상의 프로세서의 상황에서, 컴퓨터 프로그램 제품(58)은 소프트웨어의 전부 또는 일부를 클라이언트 장치(22)에 전달할 수 있다. 컴퓨터 프로그램 제품(58)은 클라이언트 장치(22)의 하나 이상의 동작을 제어하기 위한 명령어들의 세트를 저장하는 비 일시적 및 비휘발성 컴퓨터 판독가능 저장 매체를 갖는다. 적합한 컴퓨터 판독가능 저장 매체의 예는 CD-ROM, 플래시 메모리, 디스크 메모리, 테이프 메모리 등과 같은 비휘발성 방식으로 명령어를 저장하는 유형의 제조 물품 및 장치를 포함한다.
도 1에 더 도시된 바와 같이, 서버 장치(24)는 네트워크 인터페이스(60), 메모리(64) 및 프로세싱 회로(66)를 포함한다. 이러한 서버 측 컴포넌트들은 버스, 케이블, 커넥터, 회로 보드 및 기타 하드웨어를 통해 전자적으로 서로 접속될 수 있다.
네트워크 인터페이스(60)는 서버 장치(24)를 통신 매체(26)에 접속하도록 구성 및 배치된다. 따라서, 네트워크 인터페이스(60)는 서버 장치(24)가 컴퓨터화된 설정(20)의 다른 컴포넌트들과 통신할 수 있게 한다. 이러한 통신은 회선 기반 및/또는 무선(즉, IP 기반, 셀룰러, 이들의 조합 등)일 수 있다.
메모리(64)는 휘발성 저장 장치(예를 들어, DRAM, SRAM 등) 및 비휘발성 저장 장치(예를 들어, 플래시 메모리, 자기 디스크 드라이브 등)를 나타내기 위한 것이다. 메모리(64)는 운영 체제(72), 클라이언트 장치(22)와의 가상 세션을 수립하고 관리하기 위한 가상화 애플리케이션 및 데이터(74)의 세트, 및 다른 애플리케이션 및 데이터(76)를 포함하는 다양한 소프트웨어 구성(70)을 저장한다.
프로세싱 회로(66)는 메모리(64)에 저장된 다양한 소프트웨어 구성(70)에 따라 동작하도록 구성 및 배치된다. 특히, 프로세싱 회로(66)는 운영 체제(72)를 실행할 때 서버 장치(24)의 다양한 리소스(예를 들어, 메모리 할당, 프로세서 사이클, 하드웨어 호환성 등)를 관리한다.
또한, 가상화 애플리케이션 및 데이터(74)의 세트에 따라 동작하는 프로세싱 회로(66)는 하나 이상의 클라이언트 장치(22)와의 가상 세션을 생성 및 유지하기 위한 특수 제어 회로를 형성한다. 이러한 동작 동안, 및 이하에서 더 상세히 설명되는 바와 같이, 프로세싱 회로(66)는 혼동 및 오역을 피하고 사용자의 경험을 향상시키기 위해 서버 측 키보드 레이아웃(52)을 가상 채널(54)을 통해 클라이언트 측 키보드 레이아웃(50)에 동기화시킨다.
또한, 다른 애플리케이션 및 데이터(76)에 따라 동작하는 프로세싱 회로(66)는 다른 동작을 수행하는 다른 특수 회로를 형성한다. 예를 들어, 프로세싱 회로(66)는 서비스 및 유틸리티(예를 들어, 가상 세션 동안 사용자에게 제공되는 애플리케이션 및 서비스, 보안 등)를 위한 코드, 관리 툴(예를 들어, 사용자 등록, 사용자 계정 관리 등)을 위한 코드, 다른 서버 기반 동작을 위한 코드 등과 같은 다른 서버 레벨 동작을 수행할 수 있다.
전술한 프로세싱 회로(66)는 특수한 소프트웨어, 애플리케이션 특정 IC(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 및 관련 프로그램을 실행하는 하나 이상의 프로세서(또는 코어)를 통해 이산 컴포넌트, 아날로그 회로, 다른 하드웨어 회로, 이들의 조합 등을 포함하는 다양한 방식으로 구현될 수 있다. 소프트웨어를 실행하는 하나 이상의 프로세서의 상황에서, 컴퓨터 프로그램 제품(78)은 소프트웨어의 전부 또는 일부를 서버 장치(24)에 전달할 수 있다. 컴퓨터 프로그램 제품(78)은 서버 장치(24)의 하나 이상의 동작을 제어하기 위한 명령어들의 세트를 저장하는 비 일시적 및 비휘발성 컴퓨터 판독가능 저장 매체를 갖는다. 적합한 컴퓨터 판독가능 저장 매체의 예는 CD-ROM, 플래시 메모리, 디스크 메모리, 테이프 메모리 등과 같은 비휘발성 방식으로 명령어를 저장하는 유형의 제조 물품 및 장치를 포함한다. 이제 더 상세한 내용이 도 2를 참조하여 제공될 것이다.
도 2는 클라이언트 측 키보드 레이아웃(50) 및/또는 서버 측 키보드 레이아웃(52)(또한 도 1 참조)에 적합한 예시적인 키보드 레이아웃(100)(즉, QWERTY 키보드 레이아웃)을 도시한다. 다른 키보드 레이아웃, 예를 들어, QWERTZ, AZERTY, Dvorak, Colemak, Workman, Norman, JCUKEN, Neo, Plover, BEPO, Turkish, Brahmic 스크립트, InScript, Khmer, Thai, Sinhalese, Tibetan, Dzongkha, Arabic, Armenian, Cyrillic, 다른 외국어 문자 키보드 레이아웃, 맞춤형 및/또는 개인화된 키보드 레이아웃 등이 또한 사용에 적합하다는 것을 이해해야 한다.
클라이언트 장치(22) 상에서, 사용자는 클라이언트 측 키보드 레이아웃(50)의 키들을 작동시킬 뿐만 아니라 클라이언트 측 키보드 레이아웃(50)을 시청(예를 들어, 터치 스크린 상에 디스플레이됨)할 수 있다. 서버 장치(24) 상에서, 서버 측 키보드 레이아웃(52)은 내부적으로 관리된다.
도 2에 도시된 바와 같이, 키보드 레이아웃(100)은 각각의 문자들(112(1), 112(2), 112(3), ...)(집합적으로, 문자들(112))에 매핑되는 키보드 위치들(또는 키들(110(1), 110(2), 110(3), ...)(집합적으로 키보드 위치들(112))을 포함한다. 본 명세서에서 문자라는 용어는 알파벳 문자, 숫자, 기호, 다른 텍스트 기반 메타문자, 기능, 방향, 동작, 이들의 조합 등을 의미하는 것으로 사용된다는 것을 이해해야 한다.
도 2의 예시적인 키보드 레이아웃(100)이 현재 서버 측 키보드 레이아웃(52) 뿐만 아니라 클라이언트 측 키보드 레이아웃(50)이라고 가정한다. 이 예에서, 키보드 레이아웃(100)은 위치 110(1)이 "q", 위치 110(2)가 "w", 위치 110(3)이 "e ", 등등으로 매핑되는 영어(미국) 키보드 레이아웃이다. 즉, 사용자가 (예를 들어, 터치, 키 누르기 또는 다른 키스트로크 제스처를 통해) 위치 110(1)을 선택할 때, 사용자는 "q"를 입력한다. 유사하게, 사용자가 위치 110(2)를 선택할 때, 사용자는 "w" 등을 입력한다.
일부 구성에서, 사용자가 키스트로크를 입력하면, 특정 위치(110)의 특정 문자(112)로의 변환이 클라이언트 장치(22)에서 발생하고, 클라이언트 장치(22)는 특정 문자(112)를 식별하는 전자 신호를 프로세싱을 위해 서버 장치(24)에 전송한다. 다른 구성에서, 사용자가 키스트로크를 입력할 때, 클라이언트 장치(22)는 특정 위치(110)를 식별하는 전자 신호를 서버 장치(24)에 전송하고 특정 위치(110)의 특정 문자(112)로의 변환이 서버 장치(24)에서 발생한다.
이제, 사용자가 (예를 들어, 특별한 키(122)를 터치하거나, 터치 스크린의 태스크바 상의 입력 언어 표시자를 활성화시키거나, 메뉴/탭을 클릭함으로써, 등등) 사용자에게 다른 선택 가능한 키보드 레이아웃을 제공하는 메뉴(120)를 활성화하는 것으로 가정한다. 이러한 상황에서, 사용자는 다른 키보드 레이아웃 선택을 터치함으로써 현재의 클라이언트 측 키보드 레이아웃(50)을 변경할 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 사용자는 일본어 키보드 레이아웃 "J", 독일어 키보드 레이아웃 "DEU", 프랑스어 키보드 레이아웃 "FRA" 등을 선택할 수 있다. 사용자가 현재의 클라이언트 측 키보드 레이아웃(50)을 다른 클라이언트 측 키보드 레이아웃(50)으로 전환하도록 선택하면, 클라이언트 장치(22)는 이 변경을 서버 측 장치(24)에 전자적으로 통신한다. 이에 응답하여, 서버 측 장치(24)는 서버 측 키보드 레이아웃(52)을 클라이언트 측 키보드 레이아웃(50)에 동기화시키도록 서버 측 키보드 레이아웃(52)을 자동으로 갱신한다. 이러한 서버 측 동작은 바람직하게는 사용자에게 투명한 것이며, 따라서 사용자가 서버 장치(24) 상에서 수동으로 유사한 전환을 수행하는 부담을 경감시킨다.
사용자가 키보드 레이아웃을 변경한 후에, 클라이언트 장치(22)의 터치 스크린은 새로 선택된 키보드 레이아웃(도 1의 사용자 인터페이스(32) 참조)을 디스플레이한다. 새롭게 선택된 키보드 레이아웃에 대해, 키보드 위치들(110) 중 적어도 하나 이상은 이전의 키보드 레이아웃에 대해 상이한 문자(112)(예를 들어, 다른 문자, 다른 숫자, 다른 기호 등)에 매핑된다. 일단 키보드 레이아웃 전환이 발생하면, 사용자가 새롭게 선택된 키보드 레이아웃의 키를 선택할 때, 사용자는 새롭게 선택된 키보드 레이아웃에 따라 문자들, 가령, 문자들에 대해 상이한 위치들에 기인한 상이한 문자들, 새로운 문자들, 새로운 기능 등을 입력할 수 있다.
클라이언트 장치(22)는 가상 세션 동안 특수 클라이언트 측 회로를 형성하기 위해 특수 클라이언트 소프트웨어(예를 들어, 도 1의 가상 클라이언트 애플리케이션 및 데이터(44) 참조)를 실행한다는 것을 이해해야 한다. 마찬가지로, 서버 장치(24)는 가상 세션 동안 특수 서버 측 회로를 형성하기 위해 특수 서버 소프트웨어(예를 들어, 도 1의 가상화 애플리케이션 및 데이터(74) 참조)를 실행한다. 이러한 회로는 클라이언트 장치(22)와 서버 장치(24) 간의 가상 세션 교환을 지원하기 위해, 예를 들어, 리치 미디어 리디렉션을 캡슐화하고, ICA(Independent Computing Architecture)를 지원하고, COM 포트, 비디오, 그래픽, 스마트 카드 기능 등을 활용하기 위해, 세션 계층에서 가상 채널(54)(도 1)을 수립한다.
가상 채널(54)이 클라이언트 장치(22)와 서버 장치(24) 사이에 설정되면, 장치(22, 24)상의 특수 회로는 클라이언트 측 키보드 레이아웃(50) 뿐만 아니라 서버 측 키보드 레이아웃(52)을 동기화시킨다. 특히, 클라이언트 장치(22) 및 서버 장치(24)는 초기에 키보드 레이아웃 세트들을 협상하고 클라이언트 측 키보드 레이아웃(50)을 서버 측 키보드 레이아웃(52)에 동기화시키기 위해, 키보드 레이아웃 바인딩 동작을 초기에 수행한다. 이러한 초기 동기화 후에, 사용자는 클라이언트 측 키보드 레이아웃(50)이 서버 장치(24) 상의 서버 측 키보드 레이아웃(52)과 매칭한다는 확신을 가지고 클라이언트 장치(22)를 동작시킬 수 있다. 또한, 사용자가 초기 클라이언트 측 키보드 레이아웃(50)에서 새로운 클라이언트 측 키보드 레이아웃(50)으로 전환하면, 클라이언트 장치(22) 및 서버 장치(24)는 전자적으로 협력하여 새로운 클라이언트 측 키보드 레이아웃(50)을 서버 측 키보드 레이아웃(52)에 동기화시킨다. 따라서, 어떤 키보드 레이아웃이 서버 장치(24) 상에서 유효한지에 관해 사용자에게 혼동은 없다. 또한, 서버 장치(24) 상의 텍스트 입력을 잘못 해석할 기회가 없다. 이제 더 상세한 내용이 도 3을 참조하여 제공될 것이다.
도 3은 클라이언트 장치(22)와 서버 장치(24) 사이의 가상 세션의 시작에서(도 1 참조) 특수 클라이언트 측 회로(152)와 특수 서버 측 회로(154) 사이에서 수행되는 키보드 바인딩 동작(150)을 위한 시퀀스도를 도시하고 있다. 여기서, 사용자는 서버 장치(24)에 의해 제공되는 가상 데스크톱 또는 가상 애플리케이션 환경(예를 들어, 원격 애플리케이션, 원격으로 저장된 콘텐츠 등)에 액세스하기 위해 가상 세션을 개시할 수 있다. 키보드 바인딩 동작은 서버 장치(24)의 서버 측 키보드 레이아웃(52)의 세트와 클라이언트 장치(22)의 클라이언트 측 키보드 레이아웃(50)의 세트를 초기에 협상한다.
특수 클라이언트 측 회로(152)는 가상 클라이언트 애플리케이션 및 데이터(44)(도 1)에 따라 동작하는 클라이언트 장치(22)의 프로세싱 회로(36)에 의해 형성된다. 일부 구성에서, 그러한 클라이언트 측 회로(152)의 적어도 일부는 가상 세션의 개시시에, 가령, 사용자가 서버 장치(24)로부터 가상 데스크톱 또는 가상 애플리케이션을 요청할 때 로딩되는 동적 링크 라이브러리(DLL로 약칭됨)의 배치를통해 형성된다.
유사하게, 특수 클라이언트 측 회로(154)는 가상화 애플리케이션 및 데이터(74)(도 1)에 따라 동작하는 서버 장치(24)의 프로세싱 회로(76)에 의해 형성된다(도 1). 일부 구성에서, 이러한 서버 측 회로(154)의 적어도 일부는 서버 장치(24) 상에 설치된 DLL을 통해 형성된다.
동작 동안, 일단 가상 세션이 클라이언트 장치(22)와 서버 장치(24) 사이에서 생성되면, 특수 회로(152, 154)는 가상 채널(54)을 개방(또는 형성한다). 가상 채널(54)(예를 들어, 패킷)을 통한 통신은 통신 매체(26)(도 1)를 통해 전달된다는 것을 이해해야 한다.
도 3을 참조하면, 가상 채널(54)이 개방된 후에, 특수 서버 측 회로(154)는 키보드 바인드 요청(160)을 특수 클라이언트 측 회로(152)로 전송한다. 키보드 바인드 요청(160)은 서버 장치(24)에 의해 지원되는 호환 가능한 서버 측 키보드 레이아웃(54)의 세트를 식별한다. 예를 들어, 키보드 바인드 요청(160)은 서버 장치(24)가 현재 지원하려고 시도중인 서버 측 키보드 레이아웃(52)의 특정 세트를 나타낸다. 또한, 키보드 바인드 요청(160)은 특정 서버 측 회로(154)가 지원할 수 있는 어떠한 키보드 피처(예를 들어, 키보드 유형, 현재 플랫폼 등)를 더 식별한다.
키보드 바인드 요청(160)에 응답하여, 특수 클라이언트 측 회로(152)는 키보드 바인드 요청(160)으로부터 호환 가능한 서버 측 키보드 레이아웃(54)의 세트를 판독하고 호환 가능한 서버 측 키보드 레이아웃(54) 중 클라이언트 장치(22)가 지원하도록 구성된 호환 가능한 서버 측 키보드 레이아웃을 결정하는 키보드 평가 동작(162)을 수행한다. 이러한 평가는 클라이언트 장치(22)의 특정 동작 플랫폼, 특정 드라이버의 설치 여부, 특정 소프트웨어 갱신 또는 업그레이드의 설치 여부 등과 같은 다양한 인자에 기초할 수 있다.
그 다음, 특수 클라이언트 측 회로(152)는 호환 가능한 서버 측 키보드 레이아웃(52)의 세트 중 클라이언트 장치(22)가 지원하도록 구성된 서버 측 키보드 레이아웃을 호환 가능한 클라이언트 측 키보드 레이아웃(50)의 세트로서 식별하는 키보드 바인드 응답(164)을 생성하고, 이 키보드 바인드 응답(164)을 특수 서버 측 회로(154)에 전송한다. 또한, 키보드 바인드 응답(164)은 특정 클라이언트 측 회로 (152)가 지원할 수 있는 어떠한 키보드 피처(예를 들어, 키보드 유형, 현재 플랫폼 등)를 더 식별한다.
키보드 바인드 응답(164)에 응답하여, 특수 서버 측 회로(154)는 키보드 레이아웃의 관점에서 서버 장치(24)가 클라이언트 장치(22)와 호환 가능하다는 것을 확인하는 키보드 확인 동작(166)을 수행한다. 또한, 특수 서버 측 회로(154)는 장래의 사용을 위해 키보드 바인드 응답(164)에 의해 식별된 키보드 피처를 저장한다.
다음으로, 특수 서버 측 회로(154)는 키보드 바인드-커밋 메시지(또는 커맨드)(168)를 생성하여 특수 클라이언트 측 회로(152)에 전송한다. 키보드 바인드-커밋 메시지(168)는 특수 서버 측 회로(154)가 서버 측 키보드 레이아웃(52)의 특정 세트가 유효하다고 간주하는 것, 즉 키보드 레이아웃들이 서버 장치(24) 및 클라이언트 장치(22) 모두에 의해 지원된다는 것을 특수 클라이언트 측 회로(152)에 알린다.
키보드 바인드-커밋 메시지(168)에 응답하여, 특수 클라이언트 측 회로(152)는 키보드 바인드-커밋 메시지(168)를 서버 측 키보드 레이아웃(52)의 특정 세트에 커밋하는 커맨드로 간주한다. 따라서, 특수 클라이언트 측 회로(152)는 특정 서버 키보드 레이아웃(52)의 세트에 매칭하는 클라이언트 측 키보드 레이아웃(50)의 세트를 공식적으로 저장한다.
이 시점에서, 클라이언트 장치(22) 및 서버 장치(24)는 어떤 키보드 레이아웃이 사용 가능한지에 대해 협상했다. 특히, 클라이언트 장치(22)와 서버 장치(24)는 호환 가능한 키보드 레이아웃의 공통 세트에 동의했다.
키보드 레이아웃의 협상이 완료된 후, 특수 클라이언트 측 회로(152)는 키보드 레이아웃 식별자(KLI) 메시지(180)를 특수 서버 측 회로(154)에 전송한다. KLI 메시지(180)는 키보드 레이아웃 식별자로서 현재의 클라이언트 측 키보드 레이아웃(50)을 지정하는 캡슐화된 키보드 레이아웃 정보를 포함하며, 이는 서버 측 장치(24)가 클라이언트 측 키보드 레이아웃(50)의 지식을 동기화(또는 갱신)하는 것을 가능하게 한다. 특히, KLI 메시지(180)는 입력 로케일(input locale), 키보드 유형, 키보드 레이아웃 이름 등과 같은 다양한 특성을 포함한다.
이어서 만약 사용자가 클라이언트 측 키보드 레이아웃(50)을 새로운 클라이언트 측 키보드 레이아웃(50)으로 전환하면, 특수 클라이언트 측 회로(152)는 새로운 클라이언트 측 키보드 레이아웃(50)이 협상된 키보드 레이아웃(52) 내에 속하는지 여부, 즉 새로운 클라이언트 측 키보드 레이아웃(50)이 호환 가능한 키보드 레이아웃의 공통 세트에 속하는지 여부를 체킹한다. 만약 그러하다면, 특수 클라이언트 측 회로(152)는 다른 키보드 레이아웃 식별자(KLI) 메시지(180)를 특수 서버 측 회로(154)에 전송한다. KLI 메시지(180)는 키보드 레이아웃 식별자로서 새로운 클라이언트 측 키보드 레이아웃(50)을 지정하는 캡슐화된 키보드 레이아웃 정보를 포함하며, 이는 서버 측 장치(24)가 클라이언트 측 키보드 레이아웃(50)의 지식을 동기화(또는 갱신)할 수 있게 한다. 특히, KLI 메시지(180)는 입력 로케일, 키보드 유형, 키보드 레이아웃 이름 등과 같은 다양한 특성을 포함한다. 이제 더 상세한 내용이 도 4를 참조하여 제공될 것이다.
도 4는 클라이언트 장치(22)와 서버 장치(24) 간의 키보드 레이아웃 동기화를 유지하기 위해 특수 서버 측 회로(154)가 특수 클라이언트 측 회로(152)로부터 수신한 키보드 정보를 어떻게 분산하는지에 대한 특정 세부 사항을 도시한 블록도이다. 도시된 바와 같이, 서버 장치(24)는 가상 세션 동안 사용자에 의해 액세스되는 가상 데스크톱 및/또는 가상 애플리케이션 환경을 위한 실행중인 운영 체제(200) 및 실행중인 애플리케이션들((210(1), 210(2), 210(3), 210(4), ...)(집합적으로, 실행중인 애플리케이션들(210)) 뿐만 아니라 특수 서버 측 회로(154)를 포함한다. 일부 구성에서, 가상 데스크톱 및/또는 가상 애플리케이션 환경은 가상화 플랫폼에서 호스팅되는 가상 머신을 통해 제공된다.
도 4에 도시된 바와 같이, 특수 클라이언트 측 회로(152)로부터 KLI 메시지(180)를 수신하면, 특수 서버 측 회로(154)는 실행중인 운영 체제(runner operating system)(200)와 인터페이스하여 선택된 키보드 레이아웃을 활성화하고, 선택한 키보드 레이아웃에 기초하여 디폴트 입력 언어를 설정한다(화살표 220 참조). 또한, 특수 서버 측 회로(154)는 실행중인 서버 측 애플리케이션(210)에 그 입력 언어 변경을 통지하기 위해 메시지(230)를 브로드캐스트한다. 따라서, 실행중인 모든 서버 측 애플리케이션은 클라이언트 장치(22) 상의 선택된 키보드 레이아웃(50)과 일치하는 언어(예를 들어, 영어, 독일어, 프랑스어, 일본어 등)로 클라이언트 장치(22)로부터의 사용자 텍스트를 입력하도록 통보받는다 . 따라서, 클라이언트 장치(22) 및 서버 장치(24)는 풍부하고 견고하게 키보드 레이아웃 동기화를 유지하고 사용자 텍스트 입력을 적절히 해석할 수 있다.
이러한 키보드 갱신 프로세스는 사용자가 클라이언트 측 키보드 레이아웃(50)을 전환(예를 들어, 원래의 키보드 레이아웃으로 다시 전환하고, 새로운 키보드 레이아웃으로 전환하는 등)할 때마다 반복된다는 것을 이해해야 한다. 따라서, 클라이언트 측 키보드 레이아웃(50)과 서버 측 키보드 레이아웃(52)은 연속적으로 동기화된다. 이제 더 상세한 내용이 도 5를 참조하여 제공될 것이다.
도 5는 키보드 레이아웃을 동기화할 때 컴퓨터화된 설정(20)의 회로에 의해 수행되는 절차(300)의 흐름도이다. 302에서, 회로는 사용자에 의해 동작되는 클라이언트 장치와 서버 기반 사용자 환경에 대한 액세스를 전달하는 서버 장치 사이에 가상 세션을 생성한다. 그러한 세션은 유용한 작업(도 1 참조)을 수행하기 위해 서버 장치(24) 상의 가상 데스크톱 또는 가상 애플리케이션 환경에 대한 액세스를 제공하도록 사용자가 클라이언트 장치(22)에게 지시하는 것에 응답한 것일 수 있다.
304에서, 회로는 서버 장치의 서버 키보드 레이아웃(52)을 클라이언트 장치의 클라이언트 키보드 레이아웃(50)에 매칭시킨다. 특히, 회로는 키보드 바인딩 동작 및 키보드 레이아웃 동기화 동작을 수행하여 서버 장치의 초기 서버 키보드 레이아웃(52)을 클라이언트 장치의 초기 클라이언트 키보드 레이아웃(50)에 동기화시킨다(도 3 참조). 나중에, 서버 키보드 레이아웃(52)을 클라이언트 키보드 레이아웃(50)에 매칭시키기 위해, 클라이언트 장치 및 서버 장치는 키보드 갱신 동작을 수행하여 서버 키보드 레이아웃(52)을 클라이언트 키보드 레이아웃(50)으로 갱신하기 위해 통신을 계속한다.
306에서, 회로는, 서버 장치가 가상 세션 동안 서버 기반 사용자 환경에 대한 액세스를 사용자에게 전달하는 동안 서버 장치의 서버 키보드 레이아웃(52)에 따라 사용자로부터의 키스트로크 입력을 서버 기반 사용자 환경에 제공한다. 이러한 동작은 사용자가 가상 세션을 종료하거나 (예를 들어, 304로 복귀함으로써) 키보드 레이아웃을 전환할 때까지 계속된다.
전술한 바와 같이, 개선된 기술은 가상 세션 동안 서버 측 키보드 레이아웃(52)을 클라이언트 측 키보드 레이아웃(50)에 전자적으로 동기화시키는 것에 관한 것이다. 이러한 동기화는 현재 어떤 키보드 레이아웃이 유효한지에 관한 사용자의 혼동을 제거한다. 또한 이러한 동기화는 클라이언트 측 텍스트 입력이 서버 측 환경에 의해 잘못 해석되지 않도록 보장한다. 따라서 사용자 경험은 크게 향상된다.
또한, 전술한 기술은 단순히 클라이언트와 서버 간의 동기화를 제공하는 것 이상의 가치가 있음을 알아야 한다. 오히려, 이 기술은 가상 세션 동안 서버 장치의 서버 키보드 레이아웃(52)을 클라이언트 장치의 클라이언트 키보드 레이아웃(50)에 매칭시키는 조정된 매칭 동작의 수행을 포함한다. 이러한 매칭 동작은 어떤 키보드 레이아웃이 현재 유효한지를 통해 혼동을 제거하고 서버 측 환경에 의한 잘못된 해석을 방지함으로써 기술 향상을 제공한다. 결과적으로, 전술한 기술은 가상 세션 동안 사용자가 서버 기반 사용자 환경(예를 들어, 가상 데스크톱 환경)에 액세스하는 경우 사용자의 경험을 향상시킨다.
본 개시의 다양한 실시예가 특정하게 도시되고 기술되었지만, 본 기술 분야의 당업자는 첨부된 청구항들에 의해 정의되는 본 발명의 사상 및 범위로부터 벗어남이 없이 형태 및 세부 사항의 다양한 변화가 이루어질 수 있음을 이해할 것이다.
예를 들어, 컴퓨터화된 설정(20)의 다양한 컴포넌트들은 클라우드 내에서 구현될 수 있거나 클라우드로 이동, 즉, 네트워크를 통해 분산된 원격 컴퓨터 리소스에 이동될 수 있다. 여기서, 다양한 컴퓨터 리소스는 (예를 들어, 단일 시설 내의 서버 팜과 같이) 밀착되게 분산될 수 있거나 또는 (예를 들어, 캠퍼스, 다른 도시, 해안에서 해안 등에 걸쳐) 비교적 먼 거리에 걸쳐 분산될 수 있다. 이러한 상황에서, 리소스를 연결하는 네트워크는 백본, 허브 앤 스포크, 루프, 불규칙한 것, 이들의 조합 등을 포함한 다양한 토폴로지를 가질 수 있다. 또한, 네트워크는 구리 기반 데이터 통신 장치 및 케이블링, 광섬유 장치 및 케이블링, 무선 장치, 이들의 조합 등을 포함할 수 있다. 또한, 네트워크는 LAN 기반 통신, SAN 기반 통신, 이들의 조합 등을 지원할 수 있다.
또한, 상기 제공된 키보드 전환의 예는 오직 예로서 터치 스크린에 의해 제공되는 그래픽 키보드를 다루었다는 것을 이해해야 한다. 일부 구성에서, 전술한 개선은, 사용자가 터치 스크린에 의해 제공되는 그래픽 키보드 대신에, 운영 체제(42)(도 1)에 의해 제공되는 스크린의 표시자 또는 키보드 언어 설정을 통해 선택될 수 있는 키보드 레이아웃을 갖는 물리적 키보드를 사용하는 상황에 적용된다. 일부 구성에서, 전술한 개선은, 사용자가 제1 물리적 키보드를 제2 물리적 키보드로 대체하는 상황에 적용된다. 일부 구성에서, 상이한 물리적 키보드는 플러그 앤 플레이이고, 키보드 레이아웃의 특정 유형은 클라이언트 장치(22) 상의 자동 발견(auto-discovery)을 통해 검출된다. 이러한 구성에서, 클라이언트 장치(22)는 새로운 클라이언트 측 키보드 레이아웃(50)으로의 변경을 서버 장치(24)에 알리는 KLI 메시지(180)(도 3 및 도 4)를 서버 장치(24)에 전송하고, 서버 장치(24)는 이에 응답하여 서버 측 키보드 레이아웃(52)을 새로운 클라이언트 키보드 레이아웃(50)에 동기화시킨다. 이러한 변형 및 개선은 본 개시의 다양한 실시예에 속하도록 의도된다.

Claims (22)

  1. 사용자 입력을 프로세싱하는 컴퓨터로 구현되는 방법에 있어서,
    사용자에 의해 동작되는 클라이언트 장치와 서버 기반 사용자 환경에 대한 액세스를 전달하는 서버 장치 사이에 가상 세션을 생성하는 단계와,
    상기 가상 세션의 생성시에, 상기 서버 장치의 서버 키보드 레이아웃을 상기 클라이언트 장치의 클라이언트 키보드 레이아웃에 매칭시키는 단계와,
    상기 서버 키보드 레이아웃이 상기 클라이언트 키보드 레이아웃에 매칭된 후에, 상기 서버 장치가 상기 가상 세션 동안 상기 서버 기반 사용자 환경에 대한 액세스를 상기 사용자에게 전달하는 동안 상기 서버 장치의 상기 서버 키보드 레이아웃에 따라 상기 사용자로부터의 키스트로크 입력을 상기 서버 기반 사용자 환경에 제공하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 서버 키보드 레이아웃을 상기 클라이언트 키보드 레이아웃에 매칭시키는 단계는, 상기 서버 장치의 초기 서버 키보드 레이아웃들의 세트를 상기 클라이언트 장치의 초기 클라이언트 키보드 레이아웃들의 세트와 협상하도록 키보드 바인딩 동작을 수행하는 단계를 포함하는
    방법.
  3. 제2항에 있어서,
    상기 키보드 바인딩 동작을 수행하는 단계는,
    상기 서버 장치로부터 상기 클라이언트 장치로 키보드 바인드 요청을 전달하는 단계 - 상기 키보드 바인드 요청은 호환 가능한 서버 키보드 레이아웃들의 세트를 식별함 - 와,
    상기 키보드 바인드 요청에 응답하여, 상기 클라이언트 장치로부터 상기 서버 장치로 키보드 바인드 응답을 전달하는 단계 - 상기 키보드 바인드 응답은 상기 호환 가능한 서버 키보드 레이아웃들의 세트 중 상기 클라이언트 장치가 지원할 수 있는 하나를 호환 가능한 클라이언트 키보드 레이아웃들의 세트로서 식별함 - 와,
    상기 키보드 바인드 응답에 응답하여, 상기 서버 장치로부터 상기 클라이언트 장치로 키보드 바인드-커밋 메시지를 전달하는 단계 - 상기 키보드 바인드-커밋 메시지는 상기 클라이언트 장치가 상기 키보드 바인드 응답에서 식별된 상기 호환 가능한 클라이언트 키보드 레이아웃들의 세트를 사용하도록 커밋함 - 를 포함하는
    방법.
  4. 제3항에 있어서,
    상기 클라이언트 장치와 상기 서버 장치 사이에 가상 세션을 생성하는 단계는 컴퓨터 네트워크를 통해 상기 클라이언트 장치와 상기 서버 장치 사이에 가상 채널을 수립하는 단계를 포함하되, 상기 키보드 바인드 요청, 상기 키보드 바인드 응답 및 상기 키보드 바인드-커밋 메시지는 상기 수립된 가상 채널을 통해 전달되는
    방법.
  5. 제3항에 있어서,
    상기 서버 키보드 레이아웃을 상기 클라이언트 키보드 레이아웃에 매칭시키는 단계는, 상기 클라이언트 장치로부터 키보드 레이아웃 표시 커맨드를 수신하는 단계와, 상기 키보드 레이아웃 표시 커맨드에 응답하여, 상기 서버 장치의 서버 키보드 레이아웃을 상기 클라이언트 장치의 상기 클라이언트 키보드 레이아웃에 동기화시키기 위해 키보드 레이아웃 동기화 동작을 수행하는 단계를 더 포함하는
    방법.
  6. 제1항에 있어서,
    상기 사용자로부터의 키스트로크 입력이 일정 시간 동안 상기 서버 기반 사용자 환경에 제공된 후, 상기 서버 장치의 다른 서버 키보드 레이아웃을 상기 클라이언트 키보드 레이아웃과는 상이한 상기 클라이언트 장치의 다른 클라이언트 키보드 레이아웃에 매칭시키는 단계를 더 포함하는
    방법.
  7. 제6항에 있어서,
    상기 서버 장치의 상기 서버 키보드 레이아웃을 상기 클라이언트 장치의 다른 클라이언트 키보드 레이아웃에 매칭시키는 단계는, 상기 사용자로부터 키보드 레이아웃 변경 커맨드를 수신하는 단계와, 상기 키보드 레이아웃 변경 커맨드에 응답하여 상기 서버 장치의 상기 다른 서버 키보드 레이아웃을 상기 클라이언트 장치의 상기 다른 클라이언트 키보드 레이아웃에 동기화시키기 위해 키보드 레이아웃 변경 동작을 수행하는 단계를 포함하는
    방법.
  8. 제7항에 있어서,
    상기 클라이언트 장치는 초기에 클라이언트 키보드 레이아웃으로서 제1 언어를 위한 제1 키 배열을 포함한 제1 클라이언트 키보드 레이아웃을 사용하고,
    상기 사용자로부터 상기 키보드 레이아웃 변경 커맨드를 수신하는 단계는, 상기 사용자가 상기 제1 클라이언트 키보드 레이아웃으로부터 제2 언어를 위한 제2 키 배열을 포함한 제2 클라이언트 키보드 레이아웃으로 전환하는 것에 응답하여, 상기 클라이언트 장치로부터 키보드 선택 표시자를 획득하는 단계를 포함하되, 상기 키보드 선택 표시자는 상기 서버 장치로 하여금 상기 제1 언어를 위한 상기 제1 키 배열 대신 상기 제2 언어를 위한 상기 제2 키 배열을 사용하도록 지시하는
    방법.
  9. 제7항에 있어서,
    상기 키보드 레이아웃 변경 동작이 수행된 후에, 상기 서버 장치가 상기 가상 세션 동안 상기 서버 기반 사용자 환경에 대한 액세스를 상기 사용자에게 전달하는 동안 상기 서버 장치의 상기 다른 서버 키보드 레이아웃에 따라 상기 사용자로부터의 추가 키스트로크 입력을 상기 서버 기반 사용자 환경에 제공하는 단계를 더 포함하는
    방법.
  10. 제7항에 있어서,
    상기 서버 키보드 레이아웃 대신에 상기 다른 서버 키보드 레이아웃을 사용하도록 각 서버 애플리케이션에 통지하기 위해 상기 서버 기반 사용자 환경에서 실행중인 서버 애플리케이션들의 세트에 키보드 변경 메시지들의 세트를 브로드캐스팅하는 단계를 더 포함하는
    방법.
  11. 사용자 입력을 프로세싱하기 위한 명령어들의 세트를 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령어들의 세트는 컴퓨터화된 회로에 의해 실행될 때 상기 컴퓨터화된 회로로 하여금,
    사용자에 의해 동작되는 클라이언트 장치와 서버 기반 사용자 환경에 대한 액세스를 전달하는 서버 장치 사이에 가상 세션을 생성하는 단계와,
    상기 가상 세션의 생성시에, 상기 서버 장치의 서버 키보드 레이아웃을 상기 클라이언트 장치의 클라이언트 키보드 레이아웃에 매칭시키는 단계와,
    상기 서버 키보드 레이아웃이 상기 클라이언트 키보드 레이아웃에 매칭된 후에, 상기 서버 장치가 상기 가상 세션 동안 상기 서버 기반 사용자 환경에 대한 액세스를 상기 사용자에게 전달하는 동안 상기 서버 장치의 상기 서버 키보드 레이아웃에 따라 상기 사용자로부터의 키스트로크 입력을 상기 서버 기반 사용자 환경에 제공하는 단계를 포함하는 방법을 수행하게 하는
    컴퓨터 판독가능 저장 매체.
  12. 제11항에 있어서,
    상기 서버 키보드 레이아웃을 상기 클라이언트 키보드 레이아웃에 매칭시키는 단계는 상기 서버 장치의 초기 서버 키보드 레이아웃들의 세트를 상기 클라이언트 장치의 초기 클라이언트 키보드 레이아웃들의 세트와 협상하도록 키보드 바인딩 동작을 수행하는 단계를 포함하는
    컴퓨터 판독가능 저장 매체.
  13. 제12항에 있어서,
    상기 방법은, 상기 사용자로부터의 키스트로크 입력이 일정 시간 동안 상기 서버 기반 사용자 환경에 제공된 후, 상기 서버 장치의 다른 서버 키보드 레이아웃을 상기 클라이언트 장치의 다른 클라이언트 키보드 레이아웃에 매칭시키는 단계를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  14. 클라이언트 장치로서,
    사용자 인터페이스와,
    메모리와,
    상기 사용자 인터페이스 및 상기 메모리에 결합된 제어 회로를 포함하고,
    상기 메모리는, 제어 회로에 의해 실행될 때, 상기 제어 회로로 하여금,
    상기 클라이언트 장치와 서버 기반 사용자 환경에 대한 액세스를 전달하는 서버 장치 사이에 가상 세션을 생성하게 하고,
    상기 가상 세션의 생성시에, 상기 서버 장치의 서버 키보드 레이아웃을 상기 클라이언트 장치의 클라이언트 키보드 레이아웃에 매칭시키게 하고,
    상기 서버 키보드 레이아웃이 상기 클라이언트 키보드 레이아웃에 매칭된 후에, 상기 서버 장치가 상기 가상 세션 동안 상기 서버 기반 사용자 환경에 대한 액세스를 사용자 인터페이스를 통해 사용자에게 전달하는 동안 상기 서버 장치의 상기 서버 키보드 레이아웃에 따라 상기 사용자로부터의 키스트로크 입력을 상기 사용자 인터페이스를 통해 상기 서버 기반 사용자 환경에 제공하게 하는
    명령어들을 저장하는
    클라이언트 장치.
  15. 제14항에 있어서,
    상기 제어 회로는, 상기 서버 키보드 레이아웃을 상기 클라이언트 키보드 레이아웃에 매칭할 때, 상기 서버 장치의 초기 서버 키보드 레이아웃들의 세트를 초기 클라이언트 키보드 레이아웃들의 세트에 동기화시키기 위해 키보드 바인딩 동작을 수행하도록 구성 및 배치되는
    클라이언트 장치.
  16. 제14항에 있어서,
    상기 제어 회로는 또한,
    상기 사용자로부터의 키스트로크 입력이 일정 시간 동안 상기 서버 기반 사용자 환경에 제공된 후에, 상기 서버 장치의 다른 서버 키보드 레이아웃을 상기 클라이언트 장치의 다른 클라이언트 키보드 레이아웃에 매칭시키도록 구성 및 배치되는
    클라이언트 장치.
  17. 서버 장치로서,
    네트워크 인터페이스와,
    메모리와,
    상기 네트워크 인터페이스 및 상기 메모리에 결합된 제어 회로를 포함하고,
    상기 메모리는, 제어 회로에 의해 실행될 때, 상기 제어 회로로 하여금,
    사용자에 의해 동작되는 클라이언트 장치와 서버 기반 사용자 환경에 대한 액세스를 전달하는 상기 서버 장치 사이에 가상 세션을 생성하게 하고,
    상기 가상 세션의 생성시에, 상기 서버 장치의 서버 키보드 레이아웃을 상기 클라이언트 장치의 클라이언트 키보드 레이아웃에 매칭시키게 하고,
    상기 서버 키보드 레이아웃이 상기 클라이언트 키보드 레이아웃에 매칭된 후에, 상기 서버 장치가 상기 가상 세션 동안 상기 서버 기반 사용자 환경에 대한 액세스를 상기 사용자에게 전달하는 동안 상기 서버 장치의 상기 서버 키보드 레이아웃에 따라 상기 사용자로부터의 키스트로크 입력을 상기 서버 기반 사용자 환경에 제공하게 하는
    명령어들을 저장하는
    서버 장치.
  18. 제17항에 있어서,
    상기 제어 회로는, 상기 서버 키보드 레이아웃을 상기 클라이언트 키보드 레이아웃에 매칭할 때, 상기 서버 장치의 초기 서버 키보드 레이아웃들의 세트를 상기 클라이언트 장치의 초기 클라이언트 키보드 레이아웃들의 세트에 동기화시키기 위해 키보드 바인딩 동작을 수행하도록 구성 및 배치되는
    서버 장치.
  19. 제18항에 있어서,
    상기 제어 회로는 또한,
    상기 사용자로부터의 키스트로크 입력이 일정 시간 동안 상기 서버 기반 사용자 환경에 제공된 후에, 상기 서버 장치의 다른 서버 키보드 레이아웃을 상기 클라이언트 장치의 다른 클라이언트 키보드 레이아웃에 매칭시키도록 구성 및 배치되는
    서버 장치.
  20. 제1항에 있어서,
    상기 서버 키보드 레이아웃을 상기 클라이언트 키보드 레이아웃에 매칭시키는 단계는,
    상기 서버 장치 내의 특수 서버 측 회로로부터 상기 클라이언트 장치 내의 특수 클라이언트 측 회로로 키보드 바인드 요청 메시지를 송신하는 단계 - 상기 키보드 바인드 요청 메시지는 상기 서버 장치에 의해 지원되는 서버 측 키보드 레이아웃들의 세트를 식별함 - 와,
    상기 키보드 바인드 요청 메시지의 수신에 응답하여 상기 클라이언트 장치 내의 상기 특수 클라이언트 측 회로에 의해 키보드 평가 동작을 수행하는 단계 - 상기 키보드 평가 동작은 상기 키보드 바인드 요청 메시지로부터 상기 서버 장치에 의해 지원되는 서버 측 키보드 레이아웃들의 세트를 판독하고 상기 서버 장치에 의해 지원되는 서버 측 키보드 레이아웃들 중 상기 클라이언트 장치가 지원하도록 구성된 키보드 레이아웃을 결정함 - 와,
    상기 클라이언트 장치 내의 상기 특수 클라이언트 측 회로로부터 상기 서버 장치 내의 상기 특수 서버 측 회로로 키보드 바인드 응답 메시지를 송신하는 단계 - 상기 키보드 바인드 응답 메시지는 상기 서버 장치에 의해 지원되는 상기 서버 측 키보드 레이아웃들 중 상기 클라이언트 장치가 지원하도록 구성된 키보드 레이아웃을 식별함 - 와,
    상기 키보드 바인드 응답 메시지의 수신에 응답하여 상기 서버 장치 내의 상기 특수 서버 측 회로에 의해 키보드 확인 동작을 수행하는 단계 - 상기 키보드 확인 동작은 상기 서버 장치가 키보드 레이이웃의 관점에서 상기 클라이언트 장치와 호환 가능하다는 것을 확인함 - 와,
    상기 서버 장치 내의 상기 특수 서버 측 회로로부터 상기 클라이언트 장치 내의 상기 특수 클라이언트 측 회로로 키보드 바인드-커밋 메시지를 송신하는 단계 - 상기 키보드 바인드-커밋 메시지는 키보드 레이아웃들의 특정 세트가 상기 서버 장치 및 상기 클라이언트 장치 모두에 의해 지원된다는 것을 상기 특수 클라이언트 측 회로에 통지함 - 를 포함하는
    방법.
  21. 제20항에 있어서,
    상기 클라이언트 장치 내의 상기 특수 클라이언트 측 회로로부터 상기 서버 장치 내의 상기 특수 서버 측 회로로 키보드 레이아웃 식별자 메시지를 송신하는 단계 - 상기 키보드 레이아웃 식별자 메시지는 현재의 클라이언트 측 키보드 레이아웃을 지정함 - 와,
    상기 서버 장치 내의 상기 특수 서버 측 회로에 의해, 상기 키보드 레이아웃 식별자 메시지의 수신에 응답하여 상기 현재의 클라이언트 측 키보드 레이아웃에 기초한 디폴트 입력 언어를 설정하는 단계와,
    또한 상기 키보드 레이아웃 식별자 메시지의 수신에 응답하여, 상기 클라이언트 장치로부터의 사용자 텍스트를 상기 디폴트 입력 언어로 입력하도록 상기 서버 장치상에서 실행중인 복수의 서버 측 애플리케이션들에게 통지하는 입력을, 상기 특수 서버 측 회로에 의해 상기 서버 장치상에서 실행중인 복수의 서버 측 애플리케이션들에게로 브로드캐스팅하는 단계를 더 포함하는
    방법.
  22. 제20항에 있어서,
    상기 클라이언트 장치 내의 상기 특수 클라이언트 측 회로에 의해 상기 키보드 평가 동작을 수행하는 단계는 상기 서버 장치에 의해 지원되는 상기 서버 측 키보드 레이아웃들 중 상기 클라이언트 장치가 상기 클라이언트 장치 내에 특정 드라이버가 설치되어 있는지 여부에 기초하여 지원하도록 구성된 키보드 레이아웃을 결정하는 단계를 포함하는
    방법.
KR1020187017990A 2015-11-26 2016-11-16 가상 세션에서의 클라이언트 측 키보드 레이아웃과 서버 측 키보드 레이아웃의 동기화 KR102136474B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510837401.7 2015-11-26
CN201510837401.7A CN106802762B (zh) 2015-11-26 2015-11-26 在虚拟会话中同步服务器侧键盘布局与客户端侧布局
PCT/US2016/062262 WO2017091411A1 (en) 2015-11-26 2016-11-16 Synchronizing a server-side keyboard layout with a client-side keyboard layout in a virtual session

Publications (2)

Publication Number Publication Date
KR20180086239A KR20180086239A (ko) 2018-07-30
KR102136474B1 true KR102136474B1 (ko) 2020-07-21

Family

ID=57517986

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187017990A KR102136474B1 (ko) 2015-11-26 2016-11-16 가상 세션에서의 클라이언트 측 키보드 레이아웃과 서버 측 키보드 레이아웃의 동기화

Country Status (4)

Country Link
JP (1) JP6615997B2 (ko)
KR (1) KR102136474B1 (ko)
CN (1) CN106802762B (ko)
WO (1) WO2017091411A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI658401B (zh) * 2017-11-14 2019-05-01 財團法人工業技術研究院 基於虛擬化行動架構之行動通訊裝置及其相關輸入法切換方法
WO2020000263A1 (zh) 2018-06-27 2020-01-02 华为技术有限公司 调用输入法的方法和装置、服务器和终端
KR102592044B1 (ko) * 2018-06-29 2023-10-23 삼성전자 주식회사 전자 장치에서 물리적 키보드의 레이아웃 설정 방법 및 장치
CN109358937A (zh) * 2018-09-30 2019-02-19 上海达龙信息科技有限公司 一种基于虚拟输入装置远程操控pc的方法及系统
WO2020093352A1 (en) 2018-11-09 2020-05-14 Citrix Systems, Inc. Automated keyboard mapping for virtual desktops
CN112068764B (zh) * 2020-09-03 2022-06-21 北京搜狗科技发展有限公司 一种语言切换方法、装置和用于语言切换的装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000250696A (ja) * 1999-03-02 2000-09-14 Internatl Business Mach Corp <Ibm> 異種キーボード間のデータ変換方法
JP2007323168A (ja) * 2006-05-30 2007-12-13 Canon Inc メッセージ表示装置及びメッセージ表示方法
US20100318695A1 (en) * 2009-06-11 2010-12-16 Microsoft Corporation Adaptive keyboard layout mapping

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305511B2 (en) * 2002-12-23 2007-12-04 Microtune (Texas), L.P. Providing both wireline and wireless connections to a wireline interface
CN100464308C (zh) * 2007-04-20 2009-02-25 北京搜狗科技发展有限公司 一种用户词库同步更新的方法和系统
US8667412B2 (en) * 2007-09-06 2014-03-04 Google Inc. Dynamic virtual input device configuration
US8065143B2 (en) * 2008-02-22 2011-11-22 Apple Inc. Providing text input using speech data and non-speech data
JP5280294B2 (ja) * 2009-05-01 2013-09-04 株式会社デジタル システムおよびクライアントプログラム
EP2537084A4 (en) * 2010-02-19 2016-10-05 Soon Jo Woo PLURILING KEY INPUT APPARATUS AND ASSOCIATED METHOD
JP5621382B2 (ja) * 2010-07-28 2014-11-12 カシオ計算機株式会社 サーバ装置及びプログラム
CN102622156B (zh) * 2011-01-26 2016-08-03 腾讯科技(深圳)有限公司 获取虚拟键盘的方法、装置和系统
CN102905182B (zh) * 2011-07-26 2016-07-06 联想(北京)有限公司 一种输入方法、智能电视机和智能交互系统
CN103491055B (zh) * 2012-06-12 2018-08-07 南京中兴软件有限责任公司 一种在多个客户端间同步信息的方法、客户端和服务器
JP6205568B2 (ja) * 2013-01-16 2017-10-04 株式会社日本デジタル研究所 リモートアクセス制御システム、方法、およびプログラム
CN103529954A (zh) * 2013-10-12 2014-01-22 成都阜特科技股份有限公司 一种远程虚拟机键盘鼠标与本地监视器互斥的方法
CN103645934A (zh) * 2013-12-11 2014-03-19 天津湖蓝科技有限公司 基于云计算的远程虚拟化终端应用系统及应用
US20150208032A1 (en) * 2014-01-17 2015-07-23 James Albert Gavney, Jr. Content data capture, display and manipulation system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000250696A (ja) * 1999-03-02 2000-09-14 Internatl Business Mach Corp <Ibm> 異種キーボード間のデータ変換方法
JP2007323168A (ja) * 2006-05-30 2007-12-13 Canon Inc メッセージ表示装置及びメッセージ表示方法
US20100318695A1 (en) * 2009-06-11 2010-12-16 Microsoft Corporation Adaptive keyboard layout mapping

Also Published As

Publication number Publication date
WO2017091411A1 (en) 2017-06-01
JP6615997B2 (ja) 2019-12-04
KR20180086239A (ko) 2018-07-30
JP2018538619A (ja) 2018-12-27
CN106802762A (zh) 2017-06-06
CN106802762B (zh) 2020-09-11

Similar Documents

Publication Publication Date Title
KR102136474B1 (ko) 가상 세션에서의 클라이언트 측 키보드 레이아웃과 서버 측 키보드 레이아웃의 동기화
CN110795195B (zh) 一种网页渲染方法、装置、电子设备及存储介质
KR101921144B1 (ko) 하나 이상의 확장 애플리케이션과 상호작용하는 메시징 애플리케이션
US9338110B1 (en) Method of providing instant messaging service, recording medium that records program therefore, and terminal
US20120047449A1 (en) Integrating a user browsing feed into a co-browsing session
CN106663013B (zh) 针对服务升级的动态调整步调
EP3103023B1 (en) Private cloud connected device cluster architecture
KR102077580B1 (ko) 복사된 메시지 리스트를 제공하는 방법과 시스템 및 비-일시적인 컴퓨터 판독가능한 기록 매체
CN104965637B (zh) 一种界面操作的实现方法及装置
US20160092152A1 (en) Extended screen experience
US20150143210A1 (en) Content Stitching Templates
JP6607876B2 (ja) 仮想アプリケーション・クライアントとサーバとの間におけるインプット・メソッド・エディタ(ime)アクティビティーの調整方法
US20150319215A1 (en) Methods for facilitating a remote interface and devices thereof
JP7101313B2 (ja) コンピューティング環境内での仮想デスクトップの提供
US20170039037A1 (en) Live mobile application visual editor demo
Kovachev et al. DireWolf Framework for Widget-based Distributed User Interfaces.
WO2023169193A1 (zh) 用于生成智能合约的方法和装置
CN113641439A (zh) 文本识别和展示方法、装置、电子设备和介质
JP2021103520A (ja) ジェスチャーを利用して対話メッセージに感情を表現する方法、システム、およびコンピュータプログラム
JP2006350997A (ja) 端末装置、ネットワークシステム、ウィンドウ表示方法、及びコンピュータプログラム
Smart et al. Implementing a cloud backed scalable note-taking application with encrypted offline storage and cross platform replication
JP2021520694A (ja) ユーザフィードバックが可能なボットに基づいて映像を制作する方法、システム、および非一時的なコンピュータ読み取り可能な記録媒体
JP2013525874A (ja) ディスプレイデバイスならびにそのようなデバイスを組み込むシステムおよび方法
Preti et al. Transitions: a crossmedia interaction relevant aspect
KR20140018449A (ko) 분산된 그래픽 사용자 인터페이스를 제공하는 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant