KR20200131881A - 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 파일을 전송하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체 - Google Patents

네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 파일을 전송하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체 Download PDF

Info

Publication number
KR20200131881A
KR20200131881A KR1020207029555A KR20207029555A KR20200131881A KR 20200131881 A KR20200131881 A KR 20200131881A KR 1020207029555 A KR1020207029555 A KR 1020207029555A KR 20207029555 A KR20207029555 A KR 20207029555A KR 20200131881 A KR20200131881 A KR 20200131881A
Authority
KR
South Korea
Prior art keywords
computing device
remote
remote participant
file
local
Prior art date
Application number
KR1020207029555A
Other languages
English (en)
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
Priority claimed from US15/923,943 external-priority patent/US10931733B2/en
Application filed by 리 마고 엘티디 filed Critical 리 마고 엘티디
Publication of KR20200131881A publication Critical patent/KR20200131881A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • G06F16/192Implementing virtual folder structures
    • 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/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • 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/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Software Systems (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Computer Interaction (AREA)
  • General Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Position Input By Displaying (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 네트워킹된 협업 워크스페이스 내의 웹 소켓 연결을 통해 파일을 전송하기 위한 시스템, 방법, 및 컴퓨터 판독가능 매체에 관한 것으로, 이는 서버 상에서 호스팅되고 웹 소켓 연결을 통해 참가자에게 액세스 가능한 협업 워크스페이스의 리프리젠테이션을 전송하는 것 - 협업 워크스페이스의 리프리젠테이션은 서버에 연결된 원격 컴퓨팅 장치에 대응하는 원격 참가자 객체를 포함함 -, 원격 참가자 객체에 대응하는 하나 이상의 라이브 폴더를 생성하는 것 - 각각의 라이브 폴더는 원격 참가자 객체에 대응하는 원격 컴퓨팅 장치의 네트워크 주소에 맵핑됨 -, 원격 참가자 객체에 가까운 파일에 대응하는 아이콘을 드래그하라는 사용자 입력을 검출하는 것, 및 원격 참가자 객체에 대응하는 라이브 폴더 내에 적어도 하나의 파일을 저장하여, 이에 의해, 웹 소켓 연결을 통해 적어도 하나의 파일을 원격 컴퓨팅 장치의 네트워크 주소로 전송하는 것을 포함한다.

Description

네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 파일을 전송하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체
본 발명은 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 파일을 전송하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체에 관한 것이다.
운영 체제 내에서 실행되는 운영 체제 및 애플리케이션은 외부 하드웨어 장치를 활용하여, 사용자가 프로그램에 입력을 제공하고 사용자에게 출력을 제공할 수 있게 한다. 외부 하드웨어 장치의 공통적인 예로는 키보드, 컴퓨터 마우스, 마이크, 및 외부 스피커가 있다. 이들 외부 하드웨어 장치는 드라이버의 사용을 통해, 운영 체제와 인터페이싱하며, 이는 특정 하드웨어 장치에 의해 사용되는 하드웨어 커맨드(Hardware Command)와 운영 체제 사이에서 인터페이싱(Interface)하도록 구성된 특화된 소프트웨어 프로그램이다.
애플리케이션은 때때로, 소정 하드웨어 장치와 인터페이싱하도록 설계될 것이다. 예를 들어, 음성-텍스트 워드 프로세싱 애플리케이션이 마이크를 포함하는 오디오 헤드셋와 인터페이싱하도록 설계될 수 있다. 이 경우에 있어서, 애플리케이션은 특별히, 음성 커맨드를 수신하도록, 음성 인식을 수행하도록, 인식된 단어를 텍스트 콘텐츠로 변환하도록, 그리고 텍스트 콘텐츠를 문서에 출력하도록 구성되어야 한다. 이 기능은 전형적으로, 다양한 소프트웨어 구성 요소들 사이의 정의된 통신 방법들의 세트인 애플리케이션의 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)에서 구현될 것이다. 음성 인식 애플리케이션의 예에서, API는 하드웨어 장치(마이크) 자체와 인터페이싱하는 일을 담당하는 드라이버 상의 소프트웨어와 애플리케이션 프로그램 사이의 인터페이스를 포함한다.
특화된 하드웨어 장치를 활용하는 기존 소프트웨어가 갖는 한 가지 문제는, 애플리케이션 또는 운영 체제 소프트웨어 자체가 맞춰져야 하고, 특히, 하드웨어 장치를 활용하기 위해 설계되어야 한다는 것이다. 이러한 맞춤은, 하드웨어 장치가 애플리케이션에 의해 그에 대해 정의된 범주를 초과할 수 없고, 그것이 사용되도록 설계되었던 특정 애플리케이션 이외의 콘텍스트(Context)에 대해 활용될 수 없다는 것을 의미한다. 예를 들어, 음성-텍스트 프로세싱 애플리케이션의 사용자는, 다른 애플리케이션 프로그램 또는 운영 체제가 특별히, 마이크를 통해 수신된 음성 커맨드를 활용하도록 설계되지 않았다면, 다른 애플리케이션 프로그램 또는 운영 체제 내의 다른 구성 요소를 조작할 수 없다.
도 1은 사용자 입력을 위해 결합된 하드웨어 장치를 활용하는 시스템의 기존 아키텍처(Architecture)의 예를 도시한다. 도 1의 운영 체제(100A)는 애플리케이션(101A, 102A)을 실행시키는 것을 포함하며, 각각의 애플리케이션은 그들 자신의 API(101B) 및 API(102B)를 각각 갖는다. 운영 체제(100A)는 또한, 그 자신의 API(100B)뿐 아니라, 하드웨어 장치(100D, 101D, 102D)와 인터페이싱하도록 구성된 특화된 드라이버(100C, 101C, 102C)도 갖는다.
도 1에 도시된 바와 같이, 애플리케이션 API(101B)는, 자체가 하드웨어 장치(101D)와 인터페이싱하는 드라이버(101C)와 인터페이싱하도록 구성된다. 유사하게, 애플리케이션 API(102B)는, 자체가 하드웨어 장치(102D)와 인터페이싱하는 드라이버(102C)와 인터페이싱하도록 구성된다. 운영 체제 레벨에서, 운영 체제 API(100B)는, 자체가 하드웨어 장치(100D)와 인터페이싱하는 드라이버(100C)와 인터페이싱하도록 구성된다.
도 1에 도시된 시스템의 아키텍처는 소정 애플리케이션 또는 운영 체제 콘텍스트 이외의 하드웨어 장치를 활용하는 사용자의 능력을 제한한다. 예를 들어, 사용자는 애플리케이션(102A)에 입력을 제공하기 위해 하드웨어 장치(101D)를 활용할 수 없고, 애플리케이션(101A)에 또는 운영 체제(100A)에 입력을 제공하기 위해 하드웨어 장치(102D)를 활용할 수 없다.
따라서, 다수의 소프트웨어 콘텍스트에서 하드웨어 장치의 활용을 허용하는 하드웨어-소프트웨어 인터페이스에서 개선이 필요하다.
본 발명은 하드웨어 장치에 사용되는 이전 하드웨어-소프트웨어 인터페이스와 연관된 문제를 해결하는 방법, 기기, 및 컴퓨터 판독 가능 매체를 제공하는 것을 목적으로 한다. 구체적으로, 본 발명은 사용자가 다양한 소프트웨어 콘텍스트(Context)에서 통신 가능하게 결합된 하드웨어 장치를 활용할 수 있게 하는 범용 하드웨어-소프트웨어 인터페이스를 개발해 제공하는 것을 다른 목적으로 한다.
본 발명의 일 태양에 따르면, 네트워킹된 협업 워크스페이스(Collaboration Workspace)에서 웹 소켓(Web Socket) 연결을 통해 파일을 전송하는 방법에 있어서, 상기 방법은: 로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 다수의 참가자에게 접근 가능하고 서버에서 호스팅되는 협업 워크스페이스의 리프리젠테이션(Representation) - 상기 협업 워크스페이스의 상기 리프리젠테이션은 상기 서버에 연결된 하나 이상의 원격 컴퓨팅 장치에 대응하는 하나 이상의 원격 참가자 객체를 포함함 - 을 전송하는 단계; 상기 로컬 컴퓨팅 장치 상에서, 상기 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 라이브 폴더(Live Folder) - 상기 라이브 폴더 각각은 상기 원격 참가자 객체에 대응하는 원격 컴퓨팅 장치의 네트워크 주소에 맵핑(Mapping)됨 - 를 생성하는 단계; 상기 하나 이상의 원격 참가자 객체 중 하나의 원격 참가자 객체 - 상기 원격 참가자 객체는 상기 하나 이상의 원격 컴퓨팅 장치 중 하나의 원격 컴퓨팅 장치에 대응됨 - 에 가장 가까운 적어도 하나의 파일에 대응하는 적어도 하나의 아이콘을 드래그(Drag)하라는 사용자 입력을 상기 로컬 컴퓨팅 장치에 의해 검출하는 단계; 및 상기 원격 참가자 객체에 대응하는 라이브 폴더 내에 상기 적어도 하나의 파일을 상기 로컬 컴퓨팅 장치에 의해 저장함으로써, 상기 웹 소켓 연결을 통해 상기 원격 컴퓨팅 장치의 상기 네트워크 주소로 상기 적어도 하나의 파일을 전송하는 단계를 포함한다.
도 1은 사용자 입력을 위해 결합된 하드웨어 장치를 활용하는 시스템의 기존 아키텍처의 예를 도시한다.
도 2는 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스를 활용하는 시스템의 아키텍처를 도시한다.
도 3은 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스의 구현에 대한 흐름도를 도시한다.
도 4는 예시적인 실시예에 따른, 하나 이상의 하드웨어 장치에 의해 캡처된 정보가 하나 이상의 이미지를 포함할 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다.
도 5a는 예시적인 실시예에 따른, 객체 인식의 예를 도시한다.
도 5b는 예시적인 실시예에 따른, 입력 위치 좌표를 결정하는 예를 도시한다.
도 6은 예시적인 실시예에 따른, 캡처된 정보가 소리 정보일 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다.
도 7은 예시적인 실시예에 따른, 투명 레이어의 일부일 수 있는 툴 인터페이스(Tool Interface)를 도시한다.
도 8은 예시적인 실시예에 따른, 시스템의 일부일 수 있는 스타일러스(Stylus)의 예를 도시한다.
도 9는 예시적인 실시예에 따른, 사용자 입력에 대응하는 콘텍스트(Context)를 식별하기 위한 흐름도를 도시한다.
도 10은 예시적인 실시예에 따른, 입력 좌표를 사용하여 콘텍스트를 결정하는 예를 도시한다.
도 11은 예시적인 실시예에 따른, 사용자 입력을 투명 레이어 커맨드(Transparent Layer Command)로 변환하기 위한 흐름도를 도시한다.
도 12a는 예시적인 실시예에 따른, 선택 모드가 토글될(Toggled) 때 입력 좌표를 수신하는 예를 도시한다.
도 12b는 예시적인 실시예에 따른, 포인팅 모드가 토글될 때 입력 좌표를 수신하는 예를 도시한다.
도 12c는 예시적인 실시예에 따른, 드로잉(Drawing) 모드가 토글될 때 입력 좌표를 수신하는 예를 도시한다.
도 13은 예시적인 실시예에 따른, 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드의 예를 도시한다.
도 14는 예시적인 실시예에 따른, 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드의 다른 예를 도시한다.
도 15는 예시적인 실시예에 따른, 투명 레이어 상에서 하나 이상의 투명 레이어 커맨드를 실행하기 위한 흐름도를 도시한다.
도 16은 예시적인 실시예에 따른, 사용자 입력에 대응하는 새로운 커맨드를 추가하기 위한 예시적인 인터페이스를 도시한다.
도 17은 예시적인 실시예에 따른, 드로잉 인터페이스 및 그리기(Draw) 모드의 다양한 구성 요소 및 옵션을 도시한다.
도 18은 예시적인 실시예에 따른, 객체를 인식하는 데 사용되고 사용자가 터치 및 제스처를 사용하여 입력을 제공할 수 있게 하는 비디오 카메라 하드웨어 장치에 대한 캘리브레이션(Calibration) 및 설정 인터페이스를 도시한다.
도 19는 예시적인 실시예에 따른, 사용자가 인터페이스의 다양한 양태를 맞출 수 있게 하고, 입력 모드를 토글하고, 다른 변화를 이루는 일반 설정 인터페이스를 도시한다.
도 20은 예시적인 실시예에 따른, 네트워킹된 협업 워크스페이스에서 웹 소켓 연결(Web Socket Connection)을 통해 파일을 전송하기 위한 흐름도를 도시한다.
도 21a는 예시적인 실시예에 따른, 협업 워크스페이스를 호스팅 및 전송하는 데 사용되는 네트워크 아키텍처를 도시한다.
도 21b는 예시적인 실시예에 따른, 편집을 네트워크 내의 협업 워크스페이스로 전파하기 위한 프로세스를 도시한다.
도 22는 예시적인 실시예에 따른, 협업 워크스페이스의 다수의 리프리젠테이션을 도시한다.
도 23은 예시적인 실시예에 따른, 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 라이브 폴더(Live Folder)를 생성하기 위한 흐름도를 도시한다.
도 24는 예시적인 실시예에 따른, 질의 프로세스의 예를 도시한다.
도 25는 예시적인 실시예에 따른, 하나 이상의 원격 참가자에 대응하는 하나 이상의 로컬 폴더를 생성하는 예를 도시한다.
도 26은 예시적인 실시예에 따른, 하나 이상의 로컬 폴더를 하나 이상의 IP 주소에 맵핑(Mapping)하는 예를 도시한다.
도 27은 예시적인 실시예에 따른, 드래그-앤드-드롭(Drag And Drop) 프로세스 및 검출의 예를 도시한다.
도 28은 예시적인 실시예에 따른, 드래그-앤드-드롭 프로세스 및 검출의 다른 예를 도시한다.
도 29는 예시적인 실시예에 따른, 원격 참가자 객체에 대응하는 라이브 폴더 내에 적어도 하나의 파일을 저장하고, 웹 소켓 연결을 통해 원격 컴퓨팅 장치의 네트워크 주소로 적어도 하나의 파일을 전송하기 위한 흐름도를 도시한다.
도 30은 개시된 방법을 실행하도록 구성된 예시적인 컴퓨팅 환경을 도시한다.
방법, 기기, 및 컴퓨터 판독 가능 매체가 본 명세서에서 예 및 실시예로서 기술되어 있지만, 당업자는 범용 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법, 기기, 및 컴퓨터 판독 가능 매체가 기술된 실시예 또는 도면으로 제한되지 않음을 인식한다. 도면 및 설명은 개시된 특정 형태로 제한되도록 의도되지 않는다는 것이 이해되어야 한다. 오히려, 그 의도는 첨부된 청구범위의 사상 및 범주 내에 있는 모든 수정물, 등가물, 및 대안물을 포괄하는 것이다. 본 명세서에서 사용되는 임의의 주제는 구조적 목적만을 위한 것이고, 설명 또는 청구범위의 범주를 제한하도록 의도되지 않는다. 본 명세서에서 사용되는 바와 같이, "할 수 있다(Can)"라는 단어는 강제의 의미(즉, 필연(Must)을 의미함)보다는 허용의 의미(즉, 잠재력을 가짐을 의미함)에서 사용된다. 유사하게, "포함하다(Include, Includes)", "포함하는(Including)"이라는 단어는 포함하지만, 이에 제한되지 않음을 의미한다.
출원인은 하드웨어 장치에 사용되는 이전 하드웨어-소프트웨어 인터페이스와 연관된 문제를 해결하는 방법, 기기, 및 컴퓨터 판독 가능 매체를 발견했다. 구체적으로, 출원인은 사용자가 다양한 소프트웨어 콘텍스트(Context)에서 통신 가능하게 결합된 하드웨어 장치를 활용할 수 있게 하는 범용 하드웨어-소프트웨어 인터페이스를 개발했다. 개시된 구현예는, 아래에서 더 상세히 기술되는 바와 같이, 특화된 가상 드라이버 및 대응하는 투명 레이어의 사용을 통해 애플리케이션 또는 운영 체제가 특정 하드웨어 장치와 인터페이싱하도록 맞춤 설계될 필요성을 제거한다.
도 2는 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스를 활용하는 시스템의 아키텍처를 도시한다. 도 2에 도시된 바와 같이, 운영 체제(200A)는 가상 드라이버(204)와 통신하는 투명 레이어(203)을 포함한다. 아래에서 더 상세히 설명되는 바와 같이, 투명 레이어(203)는 가상 드라이버와 운영 체제 및/또는 운영 체제 상에서 실행되는 애플리케이션(들) 사이에서 인터페이싱하도록 구성된 API이다. 이 예에서, 투명 레이어(203)는 가상 드라이버(204)와 애플리케이션(201A)의 API(201B), 애플리케이션(202A)의 API(202B), 및 운영 체제(200A)의 운영 체제 API(200B) 사이에서 인터페이싱한다.
투명 레이어(203)는 운영 체제 상에서 실행되는 소프트웨어 프로세스의 일부일 수 있고, 기초 사용자 인터페이스 상에 중첩되는 투명 UI 및/또는 사용자가 상호작용할 수 있는 가시적 UI 요소를 비롯한 그 자신의 사용자 인터페이스(UI) 요소를 가질 수 있다.
가상 드라이버(204)는 드라이버(205A, 205B)를 에뮬레이팅(Emulate)하도록 구성되는데, 이들은 하드웨어 장치(206A, 206B)와 각각 인터페이싱한다. 가상 드라이버는, 예를 들어 음성 커맨드, 사용자 인터페이스 상에서 행해진 선택, 및/또는 결합된 웹 카메라의 정면에서 사용자에 의해 행해진 제스처의 형태로 어느 가상 드라이버를 에뮬레이팅할 것에 대해 가상 드라이버에 지시하는 사용자 입력을 수신할 수 있다. 예를 들어, 연결된 하드웨어 장치 각각은 "리스닝" 모드에서 동작할 수 있고, 가상 드라이버(204) 내의 에뮬레이팅된 드라이버 각각은 특정 에뮬레이션 모드로 스위칭하기 위한 가상 드라이버로의 신호로서의 역할을 하는 초기화 신호를 검출하도록 구성될 수 있다. 예를 들어, 사용자가 "음성 커맨드 시작(Start Voice Commands)"이라고 진술하는 것은 마이크에 대응하는 드라이버를 활성화시켜서 새로운 음성 커맨드를 수신하게 할 수 있다. 유사하게, 사용자가 소정 제스처를 제공하는 것은 웹 카메라에 대응하는 드라이버를 활성화시켜서 제스처 입력 또는 터치 입력을 수신하게 할 수 있다.
가상 드라이버는 또한, 자체가 하드웨어 장치(206C)와 통신하는 네이티브 드라이버(Native Driver), 예컨대 네이티브 드라이버(205C)와 인터페이싱하도록 구성될 수 있다. 일례에서, 하드웨어 장치(206C)는 운영 체제에 의해 본래 지원되는 표준 입력 장치, 예컨대 키보드 또는 마우스일 수 있다.
도 2에 도시된 시스템은, 애플리케이션 또는 운영 체제가 하드웨어 장치와 인터페이싱하도록 맞춰질 필요 없이, 사용자가 특정 애플리케이션 또는 운영 체제와 같은 다양한 콘텍스트 내의 임의의 결합된 하드웨어 장치를 활용할 수 있는 범용 하드웨어-소프트웨어 인터페이스의 구현을 허용한다.
예를 들어, 하드웨어 장치(206A)는 정보를 캡처할 수 있는데, 정보는 그 다음에, 드라이버(205A)를 에뮬레이팅하는 가상 드라이버(204)에 의해 수신된다. 가상 드라이버(204)는 캡처된 정보에 기초하여 사용자 입력을 결정할 수 있다. 예를 들어, 정보가, 사용자가 그의 손을 움직이는 일련의 이미지인 경우, 가상 드라이버는 사용자가 제스처를 수행했다고 결정할 수 있다.
식별된 콘텍스트(예컨대, 특정 애플리케이션 또는 운영 체제)에 기초하여, 사용자는 투명 레이어 커맨드로 변환될 수 있고, 실행을 위해 투명 레이어(203)로 전송될 수 있다. 투명 레이어 커맨드는 식별된 콘텍스트 내의 네이티브 커맨드를 포함할 수 있다. 예를 들어, 식별된 콘텍스트가 애플리케이션(201A)인 경우, 네이티브 커맨드는 애플리케이션(201A)의 애플리케이션 API(201B)와 호환가능한 포맷일 것이다. 투명 레이어 커맨드의 실행은 그 다음에, 식별된 콘텍스트 내의 하나 이상의 네이티브 커맨드의 실행을 야기하도록 구성될 수 있다. 이는 투명 레이어(203)가 운영 체제(200A)뿐 아니라 운영 체제 API(200B) 상에서 실행되는 애플리케이션의 API 각각과 인터페이싱하는 것에 의해 달성된다. 예를 들어, 네이티브 커맨드가 새로운 프로그램을 실행시키기 위한 커맨드와 같은 운영 체제 커맨드인 경우, 투명 레이어(203)는 실행을 위해 그 네이티브 커맨드를 운영 체제 API(200B)에 제공할 수 있다.
도 2에 도시된 바와 같이, 도시된 모든 구성 요소들 사이에는 양방향 통신이 존재한다. 이는, 예를 들어, 투명 레이어(203)에서의 투명 레이어 커맨드의 실행이 가상 드라이버(204)로의 그리고 연결된 하드웨어 장치들 중 하나 상으로의 정보 전송을 초래할 수 있다는 것을 의미한다. 예를 들어, 음성 커맨드가 입력으로서 인식되고, 네이티브 커맨드를 포함하는 투명 레이어 커맨드로 변환되고, 투명 레이어에 의해 실행된 후(식별된 콘텍스트 내의 네이티브 커맨드의 실행을 초래함), 투명 레이어로부터 스피커로 (가상 드라이버를 통해) 신호가 전송되어, 소리 출력 "커맨드 수신(Command Received)"을 전송하게 할 수 있다.
물론, 도 2에 도시된 아키텍처는 설명만을 위한 것이며, 실행되는 애플리케이션의 개수, 연결된 하드웨어 장치의 개수 및 유형, 드라이버의 개수, 및 에뮬레이팅된 드라이버는 변할 수 있다는 것이 이해된다.
도 3은 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스의 구현에 대한 흐름도를 도시한다.
단계(301)에서, 사용자 입력은 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 결정된다. 시스템은, 본 명세서에서 사용되는 바와 같이, 방법의 단계를 실행하는 하나 이상의 컴퓨팅 장치, 방법의 단계를 실행하는 하나 이상의 프로세서 및 하나 이상의 메모리를 포함하는 기기, 또는 임의의 다른 컴퓨팅 시스템을 지칭할 수 있다.
사용자 입력은 시스템 상에서 실행되는 가상 드라이버에 의해 결정될 수 있다. 앞서 논의된 바와 같이, 가상 드라이버는, 그것이 다른 하드웨어 드라이버를 에뮬레이팅하고 있고, 그에 의해, 하드웨어 장치로부터 캡처된 정보를 수신하고 있는 에뮬레이션 모드에서 동작하는 중일 수 있고, 또는 특정 하드웨어 장치와 인터페이싱하도록 구성된 하나 이상의 다른 하드웨어 드라이버로부터 캡처된 정보를 선택적으로 수신할 수 있다.
카메라, 비디오 카메라, 마이크, 양방향 통신을 갖는 헤드셋, 마우스, 터치 패드, 트랙볼, 제어기, 게임 패드, 조이스틱, 터치 스크린, 가속도계 및/또는 기울기 센서를 포함하는 모션 캡처 장치, 리모트(Remote), 스타일러스(Stylus), 또는 이들 장치의 임의의 조합과 같은 다양한 하드웨어 장치가 활용될 수 있다. 물론, 이러한 하드웨어 장치 목록은 예로서만 제공되며, 음성, 이미지, 비디오, 또는 터치 정보를 검출하는 데 활용될 수 있는 임의의 하드웨어 장치가 활용될 수 있다.
하드웨어 장치와 시스템 사이의 통신 결합은 다양한 형태를 취할 수 있다. 예를 들어, 하드웨어 장치는 무선 네트워크, 블루투스 프로토콜, 무선 주파수, 적외선 신호를 통해, 그리고/또는 USB(Universal Serial Bus) 연결과 같은 물리적 연결에 의해 시스템과 통신할 수 있다. 통신은 또한 무선 및 유선 통신 둘 다를 포함할 수 있다. 예를 들어, 하드웨어 장치는 2개의 구성 요소를 포함할 수 있는데, 그 중 하나는, 자체가 유선 접속(예컨대, USB)을 통해 시스템에 연결되는 제2 구성 요소에 신호를 무선으로(예컨대, 블루투스를 통해) 전송한다. 본 명세서에 기술된 시스템에 따라 다양한 통신 기법이 활용될 수 있고, 이들 예는 제한하는 것으로 의도되지 않는다.
하나 이상의 하드웨어 장치에 의해 캡처된 정보는, 임의의 유형의 정보, 예컨대 하나 이상의 이미지를 포함하는 이미지 정보, 비디오의 프레임, 소리 정보, 및/또는 터치 정보일 수 있다. 캡처된 정보는 임의의 적합한 포맷, 예컨대 소리 정보에 대한 wav 파일 또는 mp3 파일, 이미지에 대한 jpeg 파일, 터치 정보에 대한 수치 좌표 등일 수 있다.
본 명세서에 기술된 기법은, 디스플레이 장치가 터치 신호 또는 터치 기반 제스처를 검출하기 위한 어떠한 하드웨어도 포함하지 않는다 하더라도, 임의의 디스플레이 장치가 임의의 콘텍스트에서 사실상 "터치" 스크린 장치로서 기능할 수 있게 한다. 이는 아래에서 더 상세히 기술되며, 카메라 또는 비디오 카메라에 의해 캡처된 이미지의 분석을 통해 달성될 수 있다.
도 4는 하나 이상의 하드웨어 장치에 의해 캡처된 정보가 하나 이상의 이미지를 포함할 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다.
단계(401)에서, 하나 이상의 이미지가 수신된다. 이들 이미지는, 앞서 논의된 바와 같이, 카메라 또는 비디오 카메라와 같은 하드웨어 장치에 의해 캡처될 수 있고, 가상 드라이버에 의해 수신될 수 있다.
단계(402)에서, 하나 이상의 이미지 내의 객체가 인식된다. 객체는, 예를 들어, 손, 손가락, 또는 사용자의 다른 신체 부위일 수 있다. 객체는 또한, 스타일러스 또는 펜과 같은 특수 목적 장치, 또는 시스템에 통신 가능하게 결합되고 가속도계 및/또는 기울기 센서를 포함하는 모션 추적 스타일러스/리모트와 같은 특수 목적 하드웨어 장치일 수 있다. 객체 인식은 조기 트레이닝에 기초하여, 예컨대 객체를 사용한 캘리브레이션 루틴 실행(Calibration Routine Run)을 통해, 가상 드라이버에 의해 수행될 수 있다.
도 5a는 예시적인 실시예에 따른, 객체 인식의 예를 도시한다. 도 5a에 도시된 바와 같이, 이미지(501)는 객체(502)로서 인식되었던 사용자의 손을 포함한다. 인식 알고리즘은, 물론, 손가락과 같은 상이한 객체를 인식하도록 구성될 수 있다.
도 4로 되돌아가면, 단계(403)에서, 인식된 객체의 하나 이상의 배향 및 하나 이상의 위치가 결정된다. 이는 다양한 방식으로 달성될 수 있다. 객체가 하드웨어 장치가 아니고 그 대신 손 또는 손가락과 같은 신체 부위인 경우, 객체는 기준 포인트로서 카메라의 밝혀진 위치를 사용하여 3차원 좌표계에서 맵핑되어, 객체의 3차원 좌표 및 X, Y, 및 Z 축에 대한 다양한 각도를 결정하게 할 수 있다. 객체가 하드웨어 장치이고 가속도계 및/또는 기울기 센서와 같은 모션 추적 하드웨어를 포함하는 경우, 이미지 정보는 가속도계 및/또는 기울기 센서에 의해 나타내진 정보와 함께 사용되어, 객체의 위치 및 배향을 결정하게 할 수 있다.
단계(404)에서, 사용자 입력은 인식된 객체의 하나 이상의 배향 및 하나 이상의 위치에 적어도 부분적으로 기초하여 결정된다. 이는 하나 이상의 배향 및 하나 이상의 위치에 적어도 부분적으로 기초하여 투명 레이어의 투명 사용자 인터페이스(UI) 상의 위치 좌표를 결정하는 것을 포함할 수 있다. 투명 UI는 투명 레이어의 일부이고, 운영 체제 및/또는 운영 체제 상에서 실행되는 임의의 애플리케이션에 대응하는 기초 UI 상에 중첩된다.
도 5b는 객체가 사용자의 손가락일 때 이러한 단계의 예를 도시한다. 도 5b에 도시된 바와 같이, 디스플레이 장치(503)는 기초 UI(506) 및 기초 UI(506) 위에 중첩된 투명 UI(507)를 포함한다. 명료성을 위해, 투명 UI(507)는 도트 음영을 갖는 것으로 도시되어 있지만, 실제로, 투명 UI는 사용자에게 가시적이지 않은 투명 레이어이라는 것이 이해된다 추가로, 투명 UI(507)는 기초 UI(506)보다 약간 작은 것으로 도시되어 있지만, 실제로, 투명 UI는 기초 UI와 동일한 스크린 영역을 커버할 것이라는 것이 이해된다.
도 5b에 도시된 바와 같이, 객체(사용자의 손가락)의 위치 및 배향 정보는 디스플레이 장치(503)의 평면 상에 라인을 투영하고 교차 포인트(505)를 결정하는 데 사용된다. 카메라(504)에 의해 캡처된 이미지 정보 및 카메라 아래의 디스플레이 장치(503)의 밝혀진 위치는 이러한 투영을 돕는 데 사용될 수 있다. 도 5b에 도시된 바와 같이, 사용자 입력은 교차 포인트(505)에서의 입력 좌표인 것으로 결정된다.
아래에서 추가로 논의되는 바와 같이, 이러한 입력에 기초하여 생성되는 실제 투명 레이어 커맨드는 사용자 설정 및/또는 식별된 콘텍스트에 기초할 수 있다. 예를 들어, 커맨드는 포인트(505)의 좌표에 있는 객체가 선택되고/되거나 열려야 함을 나타내는 터치 커맨드일 수 있다. 커맨드는 또한, 포인터(예컨대, 마우스 포인터)가 포인트(505)의 좌표로 이동되어야 함을 나타내는 포인팅 커맨드일 수 있다. 추가로, 커맨드는 (예컨대, 인터페이스를 어노테이팅(Annotate)하거나 소정 요소를 그리기 위해) 그 위치에서의 그래픽 출력을 수정하는 편집 커맨드일 수 있다.
도 5b가 인식된 객체(502)를 디스플레이 장치(503)로부터의 일부 거리에 있는 것으로 도시하고 있지만, 터치 입력은 거리와는 무관하게 검출될 수 있다. 예를 들어, 사용자가 디스플레이 장치(503)를 물리적으로 터치하였다면, 위에 기술된 기법은 여전히 입력 좌표를 결정할 것이다. 그 경우에 있어서, 객체(502)와 교차 포인트 사이의 투영 라인(Projection Line)은 단지 더 짧을 것이다.
물론, 터치 입력은 캡처된 이미지로부터 결정될 수 있는 유일한 유형의 사용자 입력이 아니다. 인식된 객체의 하나 이상의 배향 및 하나 이상의 위치에 적어도 부분적으로 기초하여 사용자 입력을 결정하는 단계는 제스처 입력을 결정하는 것을 포함할 수 있다. 구체적으로, 다수의 이미지에 걸쳐서 인식된 객체의 위치 및 배향은 대응하는 제스처, 예컨대 스와이프(Swipe) 제스처, 핀치(Pinch) 제스처, 및/또는 임의의 밝혀진 또는 맞춰진 제스처를 결정하도록 분석될 수 있다. 사용자는 특정 콘텍스트 및 그들 콘텍스트 내의 커맨드에 맵핑되는 맞춤 제스처를 인식하도록 가상 드라이버를 캘리브레이션할 수 있다. 예를 들어, 사용자는, 운영 제체 콘텍스트에 맵핑되고, 특정 애플리케이션을 실행시키는 네이티브 운영 체제 커맨드의 실행을 초래하는 맞춤 제스처를 생성할 수 있다.
앞서 논의된 바와 같이, 도 3의 단계(301)에서 하나 이상의 하드웨어 장치에 의해 캡처된 정보는 또한, 마이크에 의해 캡처된 소리 정보를 포함할 수 있다. 도 6은 캡처된 정보가 소리 정보일 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다. 아래에서 논의되는 바와 같이, 사용자 입력에 대응하는 하나 이상의 단어를 식별하기 위해 소리 정보에 대해 음성 인식이 수행된다.
단계(601)에서, 소리 데이터가 수신된다. 소리 데이터는, 위에서 논의된 바와같이, 마이크와 같은 하드웨어 장치에 의해 캡처될 수 있고, 가상 드라이버에 의해 수신될 수 있다. 단계(602)에서, 수신된 소리 데이터는 소리 사전과 비교될 수 있다. 소리 사전은 커맨드 단어 또는 커맨드 수식어와 같은 하나 이상의 인식된 단어의 소리 시그니처(Sound Signature)를 포함할 수 있다. 단계(603)에서, 소리 데이터 내의 하나 이상의 단어는 비교에 기초하여 사용자 입력으로서 식별된다. 식별된 하나 이상의 단어는 그 다음에, 투명 레이어 커맨드로 변환될 수 있고, 투명 레이어로 전달될 수 있다.
앞서 논의된 바와 같이, 가상 드라이버에 의해 에뮬레이팅된 드라이버, 사용자 입력의 예상 유형, 및 사용자 입력에 기초하여 생성된 커맨드는 모두, 하나 이상의 설정 또는 이전 사용자 입력에 적어도 부분적으로 기초하여 결정될 수 있다.
도 7은, 또한 투명 레이어의 일부일 수 있는 툴 인터페이스(701)를 도시한다. 투명 UI와 달리, 툴 인터페이스(701)는 사용자에게 가시적이며, 가상 드라이버의 에뮬레이션 모드를 변경하는 상이한 옵션들 사이에서, 사용자 입력에 기초하여 생성된 네이티브 커맨드를 선택하거나 추가 기능을 수행하는 데 사용될 수 있다.
버튼(701A)은, 사용자 입력이 입력 좌표(예컨대, 사용자가 그의 손 또는 스타일러스/리모트로 스크리닝(Screening)을 터치하는 것에 기초한 좌표)일 때 사용자가 사용자 인터페이스를 그래픽으로 수정하는 데 사용되는 드로잉 툴(Drawing Tool)의 유형을 선택할 수 있게 한다. 다양한 드로잉 툴은 상이한 브러시, 컬러, 펜, 하이라이터 등을 포함할 수 있다. 이들 툴은 스타일, 두께, 컬러 등을 변화시키는 그래픽 변경을 초래할 수 있다.
버튼(701B)은 입력 좌표가 사용자 입력으로서 수신될 때 사용자가 선택, 포인팅, 또는 드로잉 모드들 사이에서 스위칭할 수 있게 한다. 선택 모드에서, 입력 좌표는 "터치"로서 처리될 수 있고, 입력 좌표에 있는 객체의 선택 또는 열림을 초래할 수 있다. 포인팅 모드에서, 좌표는 포인터(예컨대, 마우스 포인터) 위치로서 처리되어, 사실상, 사용자가 마우스를 에뮬레이팅할 수 있게 할 수 있다. 드로잉 모드에서, 좌표는 사용자 인터페이스 상에서 드로잉 또는 기록의 모습을 프리젠트(Present)하기 위해 사용자 인터페이스의 그래픽 출력을 변경할 위치로서 처리될 수 있다. 변경의 본질은, 버튼(701A)을 참조하여 논의된 바와 같이, 선택된 드로잉 툴에 의존할 수 있다. 버튼(701B)은 또한, 가상 드라이버에 변경하여, (모션 추적 장치가 사용되는 경우에) 이미지 입력 및/또는 모션 입력을 예상하고, 그에 따라, 적절한 드라이버를 에뮬레이팅하게 할 수 있다.
버튼(701C)은 가상 드라이버에 변경하여, 음성 커맨드를 예상하게 할 수 있다. 이는, 도 6에 대해 기술된 바와 같이, 가상 드라이버가 결합된 마이크에 대응하는 드라이버를 에뮬레이팅하여, 음성 입력을 수신하고 음성 입력을 파싱(Parse)하게 할 수 있다.
버튼(701D)은, 투명 레이어의 일부일 수 있고, 운영 체제 내의 애플리케이션을 실행시키거나 애플리케이션 내의 특정 커맨드를 실행시키는 데 사용될 수 있는 런처(Launcher) 애플리케이션을 연다. 런처는 또한, 투명 레이어 내의 옵션들, 예컨대 사용자 입력과 연관된 애플리케이션에 대한 맞춤 음성 커맨드, 맞춤 제스처, 맞춤 네이티브 커맨드를 맞춤화하고/하거나 하드웨어 장치 및 사용자 입력(예컨대, 음성 캘리브레이션, 모션 캡처 장치 캘리브레이션, 및/또는 객체 인식 캘리브레이션)을 캘리브레이션하는 데 사용될 수 있다.
버튼(701E)은, 사용자 인터페이스의 스크린샷을 캡처하고 스크린샷을 이미지로서 익스포트(Export)하는 데 사용될 수 있다. 이는 버튼(701B)의 드로잉 모드 및 드로잉 툴(701A)과 함께 사용될 수 있다. 사용자가 특정 사용자 인터페이스를 마크업(Mark Up)한 후, 마크업된 버전이 이미지로서 익스포트될 수 있다.
버튼(701F)은 또한 그래픽 편집을 허용하며, 사용자가 사용자 인터페이스 상에서 생성하고 있는 드로잉의 컬러 또는 드로잉의 양태를 변화시키는 데 사용될 수 있다. 버튼(701B)의 그리기(Draw) 모드와 유사하게, 이 버튼은 입력 좌표에 있는 그래픽 변경의 본질을 변경한다.
버튼(701G)은 사용자 인터페이스 상에서 드로잉을 취소한다. 이 버튼의 선택은 사용자 인터페이스 상의 모든 그래픽 마킹을 제거할 수 있으며, 기초 UI를, 사용자가 드로잉을 생성하기 전에 그것이 있던 상태로 리셋할 수 있다.
버튼(701H)은 사용자가 가상 화이트보드 상에서 그리기 모드를 사용하여 드로잉을 생성하거나 기록할 수 있게 하는 화이트보드 애플리케이션을 실행시키는 데 사용될 수 있다.
버튼(701I)은 운영 체제 UI 또는 애플리케이션 UI에 보여진 객체와 같은 객체에 텍스트 노트를 추가하는 데 사용될 수 있다. 텍스트 노트는 음성 신호로부터 해석되거나 키보드를 사용하여 사용자에 의해 타이핑될 수 있다.
버튼(701J)은 툴 인터페이스(701)를 열거나 닫는 데 사용될 수 있다. 닫힐 때, 툴 인터페이스는 최소화되거나 기초 사용자 인터페이스로부터 전적으로 제거될 수 있다.
앞서 논의된 바와 같이, 스타일러스 또는 리모트 하드웨어 장치는 카메라 또는 비디오 카메라와 같은 다른 하드웨어 장치와 함께 본 시스템에 사용될 수 있다. 도 8은 시스템에 사용될 수 있는 스타일러스(801)의 예를 도시한다. 스타일러스(801)는, 예컨대 블루투스를 통해, 하드웨어 수신기(802)와 통신할 수 있다. 하드웨어 수신기는, 예컨대 USB(802B)를 통해, 컴퓨터 시스템과 연결될 수 있고, 스타일러스로부터 하드웨어 수신기를 통해 컴퓨터 시스템에 전달된 신호는 메뉴(803)를 제어하고 그와 상호작용하는 데 사용될 수 있는데, 이 메뉴는 도 7에 도시된 툴 인터페이스와 유사하다.
도 8에 도시된 바와 같이, 스타일러스(801)는 물리적 버튼(801A)을 포함할 수 있다. 이들 물리적 버튼(801)은, 스타일러스에 전력을 공급하고, 메뉴(803)를 내비게이팅(Navigate)하고, 선택을 행하는 데 사용될 수 있다. 추가로, 스타일러스(801)는 카메라에 의해 이미지에서 캡처되고 가상 드라이버에 의해 인식되는 독특한 팁(801B)을 포함할 수 있다. 이는 그리기 모드에 있을 때 스타일러스(801)가 드로잉 및 편집에 사용될 수 있게 할 수 있다. 스타일러스(801)는 또한, 스타일러스가 입력 좌표 또는 제스처를 제공하는 데 사용될 때 위치 검출을 돕기 위해 가속도계 및/또는 기울기 센서와 같은 모션 추적 하드웨어를 포함할 수 있다. 추가로, 하드웨어 수신기(802)는 캘리브레이션 버튼(802A)을 포함할 수 있는데, 이 버튼은 눌릴 때, 사용자 인터페이스 내의 캘리브레이션 유틸리티를 개시할 수 있다. 이는 스타일러스의 캘리브레이션을 허용한다.
도 3을 다시 참조하면, 단계(302)에서, 사용자 입력에 대응하는 콘텍스트가 식별된다. 식별된 콘텍스트는 운영 체제 또는 운영 체제 상에서 실행되는 애플리케이션 중 하나를 포함한다.
도 9는 예시적인 실시예에 따른, 사용자 입력에 대응하는 콘텍스트를 식별하기 위한 흐름도를 도시한다. 도 9에 도시된 바와 같이, 운영 체제 데이터(901), 애플리케이션 데이터(902), 및 사용자 입력 데이터(903)는 모두, 콘텍스트(904)를 결정하는 데 사용될 수 있다.
운영 체제 데이터(901)는, 예를 들어 운영 체제 내의 활성 윈도우에 관한 정보를 포함할 수 있다. 예를 들어, 활성 윈도우가 계산기 윈도우인 경우, 콘텍스트는 계산기 애플리케이션인 것으로 결정될 수 있다. 유사하게, 활성 윈도우가 마이크로소프트 워드(Microsoft Word) 윈도우인 경우, 콘텍스트는 마이크로소프트 워드 애플리케이션인 것으로 결정될 수 있다. 한편, 활성 윈도우가 파일 폴더인 경우, 활성 콘텍스트는 운영 체제인 것으로 결정될 수 있다. 운영 체제 데이터는 또한, 현재 실행 중인 애플리케이션, 마지막으로 개시된 애플리케이션, 및 콘텍스트를 결정하는 데 사용될 수 있는 임의의 다른 운영 체제 정보와 같은 추가 정보를 포함할 수 있다.
애플리케이션 데이터(902)는, 예를 들어, 실행 중인 하나 이상의 애플리케이션에 관한 정보 및/또는 특정 애플리케이션을 소정 유형의 사용자 입력에 맵핑시키는 정보를 포함할 수 있다. 예를 들어, 제1 애플리케이션은 음성 입력에 맵핑되어, 음성 커맨드가 수신될 때마다 콘텍스트가 제1 애플리케이션인 것으로 자동으로 결정되게 할 수 있다. 다른 예에서, 특정 제스처가 제2 애플리케이션과 연관되어, 그 제스처가 입력으로서 수신될 때, 제2 애플리케이션이 개시되거나 닫히고, 또는 제2 애플리케이션 내의 일부 동작이 수행된다.
사용자 입력(903)은 또한, 다양한 방식으로 콘텍스트를 결정하는 데 사용될 수 있다. 위에서 논의된 바와 같이, 소정 유형의 사용자 입력이 소정 애플리케이션에 맵핑될 수 있다. 위 예에서, 음성 입력은 제1 애플리케이션의 콘텍스트와 연관된다. 추가로, 사용자 입력의 특질은 또한, 콘텍스트를 결정하는 데 사용될 수 있다. 제스처 또는 모션이 애플리케이션에 또는 운영 체제에 맵핑될 수 있다. 음성 커맨드 내의 특정 단어가 또한, 애플리케이션에 또는 운영 체제에 맵핑될 수 있다. 입력 좌표가 또한, 콘텍스트를 결정하는 데 사용될 수 있다. 예를 들어, 입력 좌표의 위치에 있는 사용자 인터페이스 내의 윈도우가 결정될 수 있고, 그 윈도우에 대응하는 애플리케이션이 콘텍스트로서 결정될 수 있다.
도 10은 입력 좌표를 사용하여 콘텍스트를 결정하는 예를 도시한다. 도 10에 도시된 바와 같이, 디스플레이 장치(1001)는 사용자 인터페이스(1002)를 디스플레이하고 있다. 또한, 카메라(1004)가 도시되고, 투명 레이어(1003)이 기초 사용자 인터페이스(1003) 위에 중첩된다. 사용자는 사용자 인터페이스(1002) 내의 위치(1005)를 포인팅하는 데 스타일러스(1000)를 활용한다. 위치(1005)가 애플리케이션 1에 대응하는 애플리케이션 윈도우 내에 놓여 있으므로, 애플리케이션 1은 애플리케이션 2, 애플리케이션 3, 또는 운영 체제와는 반대로 사용자 입력에 대한 콘텍스트인 것으로 결정될 수 있다.
도 3을 다시 참조하면, 단계(303)에서, 사용자 입력은 식별된 콘텍스트에 적어도 부분적으로 기초하여 하나 이상의 투명 레이어 커맨드로 변환된다. 앞서 논의된 바와 같이, 투명 레이어는 가상 드라이버와 운영 체제 및/또는 운영 체제 상에서 실행되는 애플리케이션 사이에서 인터페이싱하도록 구성된 애플리케이션 프로그램 인터페이스(API)를 포함한다.
도 11은 사용자 입력을 투명 레이어 커맨드로 변환하기 위한 흐름도를 도시한다. 도 11의 단계(1104)에 도시된 바와 같이, 투명 레이어 커맨드는 식별된 콘텍스트(1102) 및 사용자 입력(1103)에 적어도 부분적으로 기초하여 결정될 수 있다. 투명 레이어 커맨드는 하나 이상의 대응하는 콘텍스트에서 실행하도록 구성된 하나 이상의 네이티브 커맨드를 포함할 수 있다. 투명 레이어 커맨드는 또한, 가상 드라이버로 그리고 하드웨어 장치(들) 상으로 전송될 응답 출력을 포함할 수 있다.
식별된 콘텍스트(1102)는 어느 투명 레이어 커맨드가 사용자 입력에 맵핑되어야 하는지를 결정하는 데 사용될 수 있다. 예를 들어, 식별된 콘텍스트가 “운영 체제”인 경우, (하나의 열린 윈도우를 최소화하고 다음에 열리는 윈도우를 최대화함으로써) 사용자 인터페이스가 운영 체제 내의 현재 열린 윈도우를 관통하여 스크롤하는 결과를 초래하는 투명 레이어 커맨드에 맵핑될 수 있다. 대안적으로, 식별된 콘텍스트가 "웹 브라우저 애플리케이션"인 경우, 웹 페이지가 스크롤되는 결과를 초래하는 투명 레이어 커맨드에 동일한 스와이프 제스처가 맵핑될 수 있다.
사용자 입력(1103)은 또한 투명 레이어 커맨드를 결정하는데, 이는 사용자 입력이 특히 하나 이상의 콘텍스트 내의 소정 네이티브 커맨드에 맵핑되고 이들 네이티브 커맨드가 투명 레이어 커맨드의 일부이기 때문이다. 예를 들어, 음성 커맨드 "이메일을 열어라(Open email)"는 이메일 애플리케이션 아웃룩(Outlook)을 실행시키라는 특정 운영 체제 네이티브 커맨드에 맵핑될 수 있다. 인식된 단어 "이메일을 열어라"를 포함하는 음성 입력이 수신될 때, 이는 아웃룩을 실행시키라는 네이티브 커맨드를 포함하는 투명 레이어 커맨드가 결정되는 결과를 초래한다.
도 11에 도시된 바와 같이, 투명 레이어 커맨드는 또한, 하나 이상의 사용자 설정(1101) 및 API 라이브러리(1104)에 기초하여 결정될 수 있다. API 라이브러리(1104)는 식별된 콘텍스트 및 특정 사용자 입력에 대응하는 네이티브 커맨드를 룩업하는 데 사용될 수 있다. 스와이프 제스처 및 웹 브라우저 애플리케이션 콘텍스트의 예에서, 웹 브라우저 애플리케이션에 대응하는 API 라이브러리는 적적한 API가 웹 페이지의 스크롤링을 야기할 것을 질의받을 수 있다. 대안적으로, API 라이브러리(1104)는 생략될 수 있으며, 특정 사용자 입력 및 식별된 콘텍스트로 지향되는 네이티브 커맨드가 맵핑될 수 있다.
사용자 입력이 입력 좌표인 것으로 결정되는 상황에서, 투명 레이어 커맨드는 입력 위치 좌표 및 식별된 콘텍스트에 적어도 부분적으로 기초하여 결정된다. 이 경우에 있어서, 투명 레이어 커맨드는 식별된 콘텍스트 내의 적어도 하나의 네이티브 커맨드를 포함할 수 있으며, 이때 적어도 하나의 네이티브 커맨드는 기초 UI 내의 대응하는 위치 좌표에서 일정 동작을 수행하도록 구성된다.
특정 콘텍스트 및 사용자 입력에 맵핑되는 하나 초과의 가능한 동작이 있을 때, 설정(1101)은 대응하는 투명 레이어 커맨드를 결정하는 데 사용될 수 있다. 예를 들어, 도 7의 버튼(701B)은, 입력 좌표가 사용자 입력으로서 수신될 때, 사용자가 선택, 포인팅, 또는 그리기 모드들 사이에서 선택할 수 있게 한다. 이러한 설정은 투명 레이어 커맨드를 결정하기 위해, 그리고 더 나아가, 어느 네이티브 커맨드가 수행되고 어느 동작이 수행되는지를 결정하기 위해 사용될 수 있다. 이 경우에 있어서, 가능한 네이티브 커맨드는 기초 UI 내의 대응하는 위치 좌표와 연관된 객체를 선택하도록 구성된 선택 커맨드, 포인터를 기초 UI 내의 대응하는 위치 좌표로 이동시키도록 구성된 포인터 커맨드, 및 기초 UI 내의 대응하는 위치 좌표에서 디스플레이 출력을 변경하도록 구성된 그래픽 커맨드를 포함할 수 있다.
도 12a는 선택 모드가 토글될(Toggled) 때 입력 좌표를 수신하는 예를 도시한다. 도 12a에 도시된 바와 같이, 사용자는 디스플레이 장치(1201) 상의 (중첩되는 투명 UI(1203)를 갖는) 운영 체제 UI(1202)에서 스타일러스(1200)를 지시했다. 앞서 예와 유사하게, 카메라(1204)는 스타일러스(1200)에 대한 위치 및 배향 정보, 및 입력 좌표를 결정하는 데 사용될 수 있다. 선택 모드가 토글되고 스타일러스(1200)가 운영 체제 UI(1202) 내의 폴더(1205)로 지시되므로, 결정된 투명 레이어 커맨드는 입력 좌표와 연관된 객체를, 이 경우에는 폴더(1205)를 선택하라는 네이티브 운영 체제 커맨드를 포함할 수 있다. 다른 예에서, 윈도우가 입력 좌표에 위치되었다면, 이는 전체 윈도우의 선택을 초래할 것이다.
도 12b는 포인팅 모드가 토글될 때 입력 좌표를 수신하는 예를 도시한다. 이 경우에 있어서, 결정된 투명 레이어 커맨드는 마우스 포인터(1206)를 입력 좌표의 위치로 이동시키라는 네이티브 운영 체제 커맨드를 포함할 수 있다.
도 12c는, 드로잉 모드가 토글되고 사용자가 다수의 입력 좌표 위에서 스타일러스(1200)를 스와이프했을 때, 입력 좌표를 수신하는 예를 도시한다. 이 경우에 있어서, 결정된 투명 레이어 커맨드는 입력 좌표 각각의 위치에 있는 디스플레이 출력을 변경하라는 네이티브 운영 체제 커맨드를 포함하여, 사용자가 사용자 인터페이스(1202) 상에 라인(1207)을 그리는 결과를 초래할 수 있다. 드로잉 모드에서 생성된 수정된 그래픽 출력은 투명 레이어(1203)의 일부로서, 예를 들어 입력 좌표의 경로와 관련된 메타데이터로서 저장될 수 있다. 사용자는 그 다음에, 변경된 디스플레이 출력을 이미지로서 익스포트하는 옵션을 선택할 수 있다.
사용자 입력이 제스처로서 식별되는 상황에서, 식별된 콘텍스트에 적어도 부분적으로 기초하여 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환하는 것은 식별된 제스처 및 식별된 콘텍스트에 적어도 부분적으로 기초하여 투명 레이어 커맨드를 결정하는 것을 포함할 수 있다. 투명 레이어 커맨드는 식별된 콘텍스트 내의 적어도 하나의 네이티브 커맨드를 포함할 수 있으며, 이때 적어도 하나의 네이티브 커맨드는 식별된 콘텍스트 내의 식별된 제스처와 연관된 동작을 수행하도록 구성된다. 이것의 예가 네이티브 커맨드가 웹 브라우저에서 스크롤 동작을 수행하도록 구성되는 결과를 초래하는 웹 브라우저 애플리케이션 콘텍스트 및 스와이프 제스처에 대해 위에서 논의되어 있다.
사용자 입력이 (예컨대, 음성 인식을 사용함으로써) 하나 이상의 단어로서 식별되는 상황에서, 식별된 것에 적어도 부분적으로 기초하여 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환하는 것은 식별된 하나 이상의 단어 및 식별된 콘텍스트에 적어도 부분적으로 기초하여 투명 레이어 커맨드를 결정하는 것을 포함할 수 있다. 투명 레이어 커맨드는 식별된 콘텍스트 내의 적어도 하나의 네이티브 커맨드를 포함할 수 있으며, 이때 적어도 하나의 네이티브 커맨드는 식별된 콘텍스트 내의 식별된 하나 이상의 단어와 연관된 동작을 수행하도록 구성된다.
도 13은 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드(1300)의 예를 도시한다. 식별된 단어(1301)는 어구 "화이트보드" 또는 "빈 페이지" 중 하나를 포함한다. 투명 레이어 커맨드(1300)는 또한, 커맨드의 설명(1302), 및 투명 레이어 커맨드의 실행 시에 투명 레이어에 의해 가상 드라이버로 그리고 하드웨어 출력 장치로 전송된 출력 명령어인 응답 명령어(1303)를 포함한다. 추가로, 투명 레이어 커맨드(1300)는 화이트보드 기능을 호출하는 데 사용되는 실제 네이티브 커맨드(1304)를 포함한다.
도 14는 예시적인 실시예에 따른, 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드(1400)의 다른 예를 도시한다. 이 예에서, 하나 이상의 단어는 "이메일을 열어라"이다. 도 14에 도시된 바와 같이, 투명 레이어 커맨드(1400)는 아웃룩 애플리케이션을 실행시키는 특정 실행 가능 파일을 실행시키는 명령어인 네이티브 커맨드 "outlook.exe"를 포함한다. 투명 레이어 커맨드(1400)는 또한, 음성 커맨드를 수신한 것에 응답하여 출력될 음성 응답 "이메일 열림(Email Opened)"을 포함한다.
도 3을 다시 참조하면, 단계(304)에서, 하나 이상의 투명 레이어 커맨드는 투명 레이어 상에서 실행된다. 하나 이상의 투명 레이어 커맨드의 실행은 식별된 콘텍스트 내의 하나 이상의 네이티브 커맨드의 실행을 야기하도록 구성된다.
도 15는 예시적인 실시예에 따른, 투명 레이어 상에서 하나 이상의 투명 레이어 커맨드를 실행하기 위한 흐름도를 도시한다. 단계(1501)에서, 투명 레이어 커맨드 내의 적어도 하나의 네이티브 커맨드가 식별된다. 네이티브 커맨드는, 예를 들어, 투명 레이어 커맨드의 구조 내의 네이티브 커맨드로서 지정되어, 식별을 허용하게 할 수 있다.
단계(1502)에서, 적어도 하나의 네이티브 커맨드는 식별된 콘텍스트에서 실행된다. 이 단계는 식별된 콘텍스에 대해 식별된 API를 통해 적어도 하나의 네이티브 커맨드를 그 식별된 콘텍스트로 전달하는 것, 및 식별된 콘텍스트 내의 네이티브 커맨드를 실행하는 것을 포함할 수 있다. 예를 들어, 식별된 콘텍스트가 운영 체제인 경우, 네이티브 커맨드는 운영 체제 API를 통해 실행을 위한 운영 체제로 전달될 수 있다. 추가로, 식별된 콘텍스트가 애플리케이션인 경우, 네이티브 커맨드는 애플리케이션 API를 통해 실행을 위한 애플리케이션으로 전달될 수 있다.
선택적으로, 단계(1503)에서, 응답이 하드웨어 장치(들)로 전송될 수 있다. 앞서 논의된 바와 같이, 이러한 응답은 투명 레이어로부터 가상 드라이버로 그리고 하드웨어 장치 상으로 라우팅(Route)될 수 있다.
도 16 내지 도 19는 본 명세서에 개시된 시스템의 추가 특징을 도시한다. 도 16은 예시적인 실시예에 따른, 사용자 입력에 대응하는 새로운 커맨드를 추가하기 위한 예시적인 인터페이스를 도시한다. 인터페이스(1600) 내의 대시보드는, 이미 추가되었고 사전결정된 사용자 입력 및 하드웨어 장치(예컨대, 음성 커맨드)를 사용하여 개시될 수 있는 애플리케이션(1601)의 아이콘을 포함한다. 대시보드는 또한, 애플리케이션 특정적이고 소정 사용자 입력에 맵핑되는 다른 커맨드를 보여줄 수 있다. 추가 버튼(1602)의 선택은 추가 커맨드 메뉴(1603)를 연다. 이러한 메뉴는 사용자가 다음 옵션들 사이에서 선택할 수 있게 한다: 항목 유형: 하부 바 메뉴 상에 추가할 고정 항목/드래그 메뉴에 추가할 일반 항목; 아이콘: 이미지 아이콘을 선택한다; 배경: 배경 아이콘 컬러를 선택한다; 컬러: 아이콘 컬러를 선택한다; 이름: 새로운 항목 이름을 설정한다; 음성 커맨드: 새로운 애플리케이션을 열라는 음성 활성화 커맨드를 설정한다; 피드백 응답: 애플리케이션 음성 응답 피드백을 설정한다; 커맨드: 애플리케이션 유형 또는 맞춤 커맨드 유형을 선택하여 개시한다(예컨대, 애플리케이션 커맨드를 개시한다, 애플리케이션 커맨드 내의 동작을 수행한다, 애플리케이션 커맨드를 닫는다 등); 프로세스 시작: 새로운 프로세스 또는 애플리케이션을 실행시키는 경우, 프로세스 또는 애플리케이션의 이름; 및 파라미터: 새로운 프로세스 또는 애플리케이션으로 전달할 임의의 파라미터이다.
도 17은 예시적인 실시예에 따른, 드로잉 인터페이스(1700) 및 그리기 모드의 다양한 구성 요소 및 옵션을 도시한다. 도 18은 객체를 인식하는 데 사용되고 사용자가 터치 및 제스처를 사용하여 입력을 제공할 수 있게 하는 비디오 카메라 하드웨어 장치에 대한 캘리브레이션 및 설정 인터페이스(1800)를 도시한다. 도 19는 사용자가 인터페이스의 다양한 양태를 맞출 수 있게 하고, 입력 모드를 토글하고, 다른 변화를 이루는 일반 설정 인터페이스(1900)를 도시한다. 인터페이스(100)에서 보여지는 바와 같이, 사용자는 또한, 설정 페이지에 액세스하여 하드웨어 스타일러스("매직 스타일러스(Magic Stylus)"로 지칭됨)에 대한 설정을 캘리브레이션 및 조정할 수 있다.
본 명세서에 개시된 시스템은 다수의 네트워킹된 컴퓨팅 장치 상에서 구현될 수 있고, 네트워킹된 협업 세션을 이행하는 데 있어서 도움을 주는 데 사용될 수 있다. 예를 들어, 앞서 기술된 화이트보드 기능은 다수의 컴퓨팅 장치 상의 다수의 사용자 사이의 공유된 화이트보드일 수 있다.
그러나, 기존 화이트보드 또는 다른 공유된 협업 스페이스가 갖는 문제들 중 하나는 연결된 참가자와 파일을 공유할 용이한 방식이 없다는 것이다. 소정 애플리케이션이 협업 스페이스를 통해 전체 그룹이 문서와 같은 파일을 리뷰할 수 있게 하지만, 사용자가 다른 사용자와 파일을 공유하기 위해서는, 파일을 다른 사용자에게 전송하기 위해 새로운 애플리케이션(예컨대, 이메일 클라이언트 또는 파일 공유 애플리케이션)을 여는 것이 필요하다. 공유된 협업 세션 동안, 이는, 협업 스페이스가 촉진하도록 설계되었던 작업 흐름 및 공유된 브레인스토밍(Brainstorming) 세션을 빈번하게 방해한다.
범용 하드웨어-소프트웨어 인터페이스의 구현을 위한 앞서 기술된 방법 및 시스템 외에도, 출원인은 추가로, 네트워킹된 컴퓨터들 사이의 협업 세션 동안 웹 소켓 연결(Web Socket Connection)을 통해 파일의 실시간 전송을 허용하는 방법, 기기, 및 컴퓨터 판독가능 매체를 발견했다.
도 20은 예시적인 실시예에 따른, 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 파일을 전송하기 위한 흐름도를 도시한다. 도 20에 도시된 모든 단계는 서버에 연결된 클라이언트 장치와 같은 로컬 컴퓨팅 장치 상에서 수행될 수 있고, 다수의 컴퓨팅 장치를 필요로 하지 않는다.
단계(2001)에서, 서버 상에 호스팅되고 웹 소켓 연결을 통해 복수의 참가자에 액세스 가능한 협업 워크스페이스의 리프리젠테이션이 로컬 컴퓨팅 장치의 사용자 인터페이스 상에서 전송된다. 협업 워크스페이스의 리프리젠테이션은 서버에 연결된 하나 이상의 원격 컴퓨팅 장치에 대응하는 하나 이상의 원격 참가자 객체를 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, 원격 컴퓨팅 장치 및 원격 참가자는 로컬 참가자 및 로컬 컴퓨팅 장치 이외의 컴퓨팅 장치 및 참가자로 지칭한다. 원격 컴퓨팅 장치는 WAN(Wide Area Network)과 같은 네트워크에 의해 로컬 장치와는 이격되어 있다.
도 21a는 예시적인 실시예에 따른, 협업 워크스페이스를 호스팅 및 전송하는 데 사용되는 네트워크 아키텍처를 도시한다. 도 21a에 도시된 바와 같이, 서버(2100)는 컴퓨팅 장치(2101A 내지 2101F)에 연결된다. 서버(2100) 및 컴퓨팅 장치(2101A 내지 2101F)는 컴퓨팅 장치(2101A 내지 2101F)(클라이언트)와 서버(2100) 사이의 양방향 통신을 허용하는 네트워크 연결, 예컨대 웹 소켓 연결을 통해 연결될 수 있다. 도 21a에 도시된 바와 같이, 컴퓨팅 장치는 임의의 유형의 컴퓨팅 장치, 예컨대 노트북, 데스크톱, 스마트폰, 또는 다른 모바일 장치일 수 있다.
협업 워크스페이스는, 예를 들어, 웹 소켓 연결을 통해 복수의 참가자 중 임의의 참가자로부터 다른 참가자로 임의의 편집을 전파하도록 구성된 디지털 화이트보드일 수 있다. 도 21b는 예시적인 실시예에 따른, 편집을 네트워크 내의 협업 워크스페이스로 전파하기 위한 프로세스를 도시한다. 도 21b에 도시된 바와 같이, 컴퓨팅 장치(2101B)에서의 사용자가 협업 워크스페이스에 대한 편집 또는 변경을 행하는 경우, 이러한 편집 또는 변경(2102B)은 서버(2100)로 전송되는데, 여기서 그것은 워크스페이스의 호스팅된 버전을 업데이트하는 데 사용된다. 편집 또는 변경은 그 다음에, 업데이트(2102A, 2102C, 2102D, 2102E, 2102F)로서 서버(2100)에 의해 다른 연결된 컴퓨팅 장치(2101A, 2101C, 2101D, 2101E, 2101F)로 전파된다.
협업 워크스페이스의 각각의 리프리젠테이션은 로컬 참가자에 맞춰진 협업 워크스페이스 버전일 수 있다. 예를 들어, 위에서 논의된 바와 같이, 협업 워크스페이스의 각각의 리프리젠테이션은 서버에 연결된 하나 이상의 원격 컴퓨팅 장치에 대응하는 하나 이상의 원격 참가자 객체를 포함할 수 있다.
도 22는 예시적인 실시예에 따른, 협업 워크스페이스의 다수의 리프리젠테이션을 도시한다. 도 22에 도시된 바와 같이, 서버(2200)는 협업 워크스페이스(2201)를 호스팅한다. 서버 상에서 호스팅된 협업 워크스페이스의 버전은 앞서 논의된 바와 같이, 연결된 장치로 전파된다. 도 22는 또한, 3개의 연결된 사용자, 즉 사용자 1, 사용자 2, 및 사용자 3에 대한 협업 워크스페이스의 리프리젠테이션을 도시한다. 도시된 바와 같이, 각각의 리프리젠테이션은 로컬 참가자에(로컬 컴퓨팅 장치에) 맞춰진다. 예를 들어, 사용자 1에 대한 리프리젠테이션(2201A)은 사용자 1 및 사용자 3에 대응하는 원격 참가자 객체를 포함한다. 유사하게, 사용자 2에 대한 리프리젠테이션(2201B)은 사용자 1 및 사용자 3에 대응하는 원격 참가자 객체를 포함하고, 사용자 3에 대한 리프리젠테이션(2201C)은 사용자 1 및 사용자 2에 대응하는 원격 참가자 객체를 포함한다.
원격 참가자 객체는 원격 참가자를 나타내고, 많은 형태를 취할 수 있다. 예를 들어, 원격 참가자 객체는 화상 회의 또는 웹캠을 통해 연결된 원격 참가자의 임베디드 비디오 스트림(Embedded Video Stream)일 수 있다. 원격 참가자 객체는 또한, 원격 참가자를 나타내는 아이콘, 원격 참가자의 아바타, 또는 특정 원격 참가자의 임의의 다른 시각적 또는 청각적 인디케이터(Indicator)일 수 있다. 원격 참가자 객체는 워크스페이스의 리프리젠테이션 내에서 드래그되고/되거나 이동되고/되거나 리사이즈(Resize)될 수 있는 맞춤 객체일 수 있다.
도 20을 다시 참조하면, 단계(2002)에서, 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 라이브 폴더(Live Folder)가 로컬 컴퓨팅 장치 상에서 생성되며, 이때 라이브 폴더 각각은 원격 참가자 객체에 대응하는 원격 컴퓨팅 장치의 네트워크 주소에 맵핑된다.
도 23은 예시적인 실시예에 따른, 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 라이브 폴더를 생성하기 위한 흐름도를 도시한다.
단계(201)에서, 로컬 컴퓨팅 장치는 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 원격 컴퓨팅 장치의 하나 이상의 IP(Internet Protocol) 주소를 서버에 질의한다.
도 24는 이러한 질의 프로세스의 예를 도시한다. 도 24에 도시된 바와 같이, 컴퓨팅 장치(2401A, 2402, 2403)는 모두, 웹 소켓 연결과 같은 양방향 네트워크 연결을 통해 서버(2400)에 연결된다. 서버는 협업 워크스페이스(미도시)를 호스팅한다. 도 24는 또한, 컴퓨팅 장치(2401A)의 사용자 인터페이스 상에서 가시적인 협업 워크스페이스의 리프리젠테이션(2401B)을 도시한다. 리프리젠테이션(2401B)은, 각각 컴퓨팅 장치(2402, 2403)의 사용자인 사용자 2 및 사용자 3에 대응하는 원격 참가자 객체를 포함한다. 도 24에 도시된 바와 같이, 원격 참가자 객체에 대응하는 원격 컴퓨팅 장치의 IP 주소(또는 다른 유형의 네트워크 주소)에 대한 질의는 컴퓨팅 장치(2401A)로부터 서버(2400)로 네트워크 연결을 통해 전송된다. 이에 응답하여, 서버는 다른 연결된 컴퓨팅 장치(2402, 2403)의 IP 주소(또는 다른 유형의 네트워크 주소)를 컴퓨팅 장치(2401A), 즉, 요청하는 컴퓨팅 장치로 전송한다. 서버는 또한, 컴퓨팅 장치(2401A)가, 어느 IP 주소가 어느 원격 참가자 객체에 대응하는지를 식별할 수 있게 하는 정보, 예컨대 사용자 식별 또는 다른 정보를 전송할 수 있다.
도 23을 다시 참조하면, 단계(2302)에서, 로컬 컴퓨팅 장치는 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 로컬 폴더를 생성한다. 하나 이상의 로컬 폴더는 생성되어 로컬 컴퓨팅 장치의 메모리 상에 저장될 수 있다. 예를 들어, 협업 워크스페이스 세션이 개시될 때 로컬 컴퓨팅 장치 상에 임시 캐시(Temporary Cache)가 생성될 수 있다. 이러한 임시 캐시는 세션에 관한 정보, 예컨대 회의 식별자(Identifier) 및 다른 세션 세부사항을 저장할 수 있다. 하나 이상의 로컬 폴더는 저장되어 임시 캐시 내에 저장될 수 있다.
도 25는 예시적인 실시예에 따른, 하나 이상의 원격 참가자에 대응하는 하나 이상의 로컬 폴더를 생성하는 예를 도시한다. 로컬 컴퓨팅 장치(2500)는 협업 워크스페이스의 리프리젠테이션(2502)을 포함하는 사용자 인터페이스(2501)를 디스플레이하는 디스플레이(미도시)를 포함한다. 협업 워크스페이스 리프리젠테이션(2502)은 사용자 2 및 사용자 3에 대응하는 2개의 원격 참가자 객체를 포함한다. 도 25에 도시된 바와 같이, 로컬 폴더(F2 및 F3)는 컴퓨팅 장치(2500) 상의 로컬 저장소(2503) 내에서 생성되고, 사용자 2 및 사용자 3에 대한 원격 참가자 객체와 링크된다. 폴더는 다양한 방식으로 원격 참가자 객체에 링크될 수 있다. 예를 들어, 각각의 원격 참가자 객체를 로컬 폴더와 연관시키는 맞춤 데이터 구조가 생성될 수 있다. 로컬 폴더는 비가시적 요소로서 사용자 인터페이스(2501) 내에 편입될 수 있고, 대응하는 원격 참가자 객체의 동일한 위치에 배치될 수 있다. 원격 참가자 객체는 대응하는 로컬 폴더에 링크하는 것을 허용하는 노출된 API를 가질 수 있다. 많은 변형들이 가능하고, 이들 예는 제한하는 것으로 의도되지 않는다.
도 23을 다시 참조하면, 단계(2303)에서, 하나 이상의 로컬 폴더를 하나 이상의 IP 주소에 매핑함으로써 하나 이상의 라이브 폴더가 생성된다.
도 26은 예시적인 실시예에 따른, 하나 이상의 로컬 폴더를 하나 이상의 IP 주소에 맵핑하는 예를 도시한다. 로컬 컴퓨팅 장치(2600)는 협업 워크스페이스(2602)를 포함하는 사용자 인터페이스(2601)를 디스플레이하는 디스플레이(미도시)를 포함한다. 협업 워크스페이스 리프리젠테이션(2602)은 사용자 2 및 사용자 3에 대응하는 2개의 원격 참가자 객체를 포함한다. 컴퓨팅 장치(2600) 상의 로컬 저장소(2603) 내의 로컬 폴더(F2 및 F3)는 협업 워크스페이스 리프리젠테이션(2602) 내의 사용자 2 및 사용자 3에 대한 원격 참가자 객체와 링크된다.
도 26에 도시된 바와 같이, 로컬 폴더(F2 및 F3)는 원격 컴퓨팅 장치(2604, 2605)의 네트워크 주소에 각각 맵핑된다. 컴퓨팅 장치(2604)는 원격 참가자 사용자 2에 대응하고, 컴퓨팅 장치(2605)는 원격 참가자 사용자 3에 대응한다. 원격 컴퓨팅 장치의 네트워크 주소에 대한 로컬 폴더의 맵핑은 다양한 방식으로 달성될 수 있다. 각각의 로컬 펄더는, 그의 주소로서, 대응하는 원격 컴퓨팅 장치의 네트워크 주소를 가질 수 있다. 이 경우에 있어서, 로컬 폴더는 로컬 저장소 상의 원격 폴더의 인스턴스화(Instantiation)이다. 추가로, 맞춤 데이터 구조 또는 스크립트가 로컬 폴더의 콘텐츠를 목적지 네트워크 주소로 전달하도록 구성될 수 있다. 스크립트는 전달을 실시하기 위해 네트워크 연결(예컨데, 웹 소켓)과 인터페이싱할 수 있다. 많은 변형들이 가능하고, 이들 예는 제한하는 것으로 의도되지 않는다.
도 20을 다시 참조하면, 단계(2003)에서, 하나 이상의 원격 참가자 객체 중 하나의 소정 원격 참가자 객체에 가까운 적어도 하나의 파일에 대응하는 적어도 하나의 아이콘을 드래그하라는 사용자 입력이 로컬 컴퓨팅 장치에 의해 검출되며, 이때 원격 참가자 객체는 하나 이상의 원격 컴퓨팅 장치 중 하나의 원격 컴퓨팅 장치에 대응한다. 이는 일반적으로 드래그-앤드-드롭(Drag And Drop) 동작으로 지칭되고, 다양한 입력 장치를 사용하여 입력될 수 있다. 예를 들어, 사용자는 마우스를 사용하여 드래그-앤드-드롭할 수 있다. 사용자는 또한, 앞서 논의된 바와 같이, 손 제스처 또는 스타일러스를 사용하여 드래그-앤드-드롭할 수 있다. 가상 드라이버 및/또는 투명 레이어를 수반하는 앞서 기술된 기법은 드래그-앤드-드롭 모션을 검출하는 데 사용될 수 있다.
로컬 컴퓨팅 장치는 사용자 인터페이스 내의 하나 이상의 원격 참가자 객체의 하나 이상의 공간 위치를 저장하도록 구성될 수 있다. 특정 아이콘이 특정 원격 참가자 객체에 가깝게 드래그-앤드-드롭되었는지의 여부의 검출은 원격 참가자 객체의 공간 위치로부터 임계 거리 내에 있는 목적지 공간 위치로 아이콘을 드래그하라는 사용자 입력을 검출함으로써 수행될 수 있다. 임계 거리는 사용자에 의해 설정될 수 있고, 또는 일부 디폴트 값일 수 있다. 예를 들어, 임계 거리는 10개 미만 픽셀 또는 0개 초과 픽셀일 수 있다(이 경우에 있어서, 드래그된 아이콘은 사용자 인터페이스 내의 원격 참가자 객체와 교차하거나 오버랩해야 할 것이다).
도 27은 예시적인 실시예에 따른, 드래그-앤드-드롭 프로세스 및 검출의 예를 도시한다. 사용자 인터페이스(2701)는 사용자 2(U2) 및 사용자 3(U3)에 대응하는 원격 참가자 객체를 포함하는, 협업 워크스페이스의 리프리젠테이션(2702)을 포함한다. 인터페이스(2701)는 또한, 파일 윈도우 또는 파일 인터페이스(2703)를 포함하며, 이는 예를 들어 파일 브라우저 내의 열린 폴더일 수 있다. 파일 인터페이스(2703)는 또한, 로컬 컴퓨팅 장치의 데스크톱, 파일 공유 애플리케이션, 웹 브라우저, 또는 임의의 다른 애플리케이션일 수 있다. 도 27에 도시된 바와 같이, 사용자는 파일 "D3"을 사용자 3(U3)에 대한 원격 참가자 객체로 드래그했다.
물론, 파일은 또한 협업 워크스페이스 내로부터 드래그될 수 있다. 도 28은 예시적인 실시예에 따른, 드래그-앤드-드롭 프로세스 및 검출의 다른 예를 도시한다. 인터페이스(2801)는 협업 워크스페이스의 리프리젠테이션에 대응한다. 인터페이스 부분(2802)은 다양한 파일을 열거하는 협업 워크스페이스의 리프리젠테이션의 섹션일 수 있다. 추가로, 이 경우에 있어서, 원격 참가자 객체(2803)는 네트워크(예컨대, 웹 소켓) 연결을 통해 수신될 수 있는 임베디드 비디오 스트림이다. 도 28에 도시된 바와 같이, 로컬 참가자(사용자)가 어도비(Adobe) 파일(2804)을 원격 참가자 객체(2803)로 드래그했다. 물론, 파일은 오디오 파일, 비디오 파일, 시청각 파일, 텍스트 문서, 스프레드시트, 슬라이드 프리젠테이션 등과 같은 임의의 유형의 파일일 수 있다.
도 20을 다시 참조하면, 단계(2004)에서, 적어도 하나의 파일이 로컬 컴퓨팅 장치에 의해 원격 참가자 객체에 대응하는 라이브 폴더 내에 저장되어, 이에 의해, 웹 소켓 연결(또는 다른 네트워크 연결)을 통해 원격 컴퓨팅 장치의 네트워크 주소로 적어도 하나의 파일을 전송한다.
도 29는 예시적인 실시예에 따른, 원격 참가자 객체에 대응하는 라이브 폴더 내에 적어도 하나의 파일을 저장하고, 웹 소켓 연결을 통해 원격 컴퓨팅 장치의 네트워크 주소로 적어도 하나의 파일을 전송하기 위한 흐름도를 도시한다.
단계(2901)에서, 적어도 하나의 드래그된 아이콘에 대응하는 적어도 하나의 파일은 라이브 폴더 내에 저장된다. 단계(2902)에서, 적어도 하나의 파일의 복사본이 웹 소켓 연결(또는 다른 네트워크 연결)을 통해 맵핑된 네트워크 주소로 전송된다. 웹 소켓 연결은 라이브 폴더 내에 저장된 데이터를, 서버를 통해, 맵핑된 네트워크 주소로 라우팅하도록 구성될 수 있다. 이러한 라우팅은, 파일이 특정 원격 컴퓨팅 장치로 전송되고 모든 연결된 원격 컴퓨팅 장치에 전파되지 않는다는 것을 제외하면, 도 21b에 도시된 업데이트와 유사하게 수행될 수 있다. 예를 들어, 파일은 웹 소켓을 통해 서버로 전송될 수 있는데, 여기서 목적지 주소는 서버에 의해, 웹 소켓을 통해 적절한 목적지 원격 컴퓨팅 장치로 파일을 추가로 라우팅하는 데 사용될 수 있다.
웹 소켓 연결이 협업 워크스페이스의 일부로서 그리고/또는 (원격 참가자 객체가 임베디드 비디오 스트림일 때) 화상회의의 일부로서 이미 설립되어 있으므로, 기술된 프로세스는 웹 소켓을 활용하여, 의도된 수신자에게로의 파일의 라우팅을 수행한다.
단계(2903)에서, 전송을 완료하면 라이브 폴더로부터 적어도 하나의 파일이 삭제될 수 있다. 예를 들어, 라이브 폴더가 로컬 컴퓨팅 장치 상의 임시 캐시 내에 저장되는 경우, 일단 라이브 폴더 내에 저장된 파일의 복사본이 원격 컴퓨팅 장치로 (예컨대, 스트리밍에 의해) 전송되었다면, 로컬 라이브 폴더 내에 저장된 파일은 삭제될 수 있다.
전술된 기법 중 하나 이상은 하나 이상의 컴퓨터 시스템에서 구현되거나 그들을 수반할 수 있다. 도 30은 특화된 컴퓨팅 환경(3000)의 예를 도시한다. 컴퓨팅 환경(3000)은 기술된 실시예(들)의 사용 또는 기능의 범주에 대해 어떠한 제한도 시사하는 것으로 의도되지 않는다.
도 30을 참조하면, 컴퓨팅 환경(3000)은 적어도 하나의 처리 유닛(3010) 및 메모리(3020)를 포함한다. 처리 유닛(3010)은 컴퓨터 실행 가능 명령어를 실행하고, 실제 또는 가상 프로세서일 수 있다. 다중 처리 시스템에서, 다수의 처리 유닛이 컴퓨터 실행 가능 명령어를 실행하여, 처리 전력을 증가시킨다. 메모리(3020)는 휘발성 메모리(예컨대, 레지스터(Register), 캐시, RAM), 비휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등), 또는 이 둘의 일부 조합일 수 있다. 메모리(3020)는 기술된 기법을 구현하는 소프트웨어(3080)를 저장할 수 있다.
컴퓨팅 환경은 추가 특징을 가질 수 있다. 예를 들어, 컴퓨팅 환경(3000)은 저장소(3040), 하나 이상의 입력 장치(3050), 하나 이상의 출력 장치(3060), 및 하나 이상의 통신 연결(3090)을 포함한다. 버스, 제어기, 또는 네트워크 상호연결과 같은 상호연결 메커니즘(3070)이 컴퓨팅 환경(3000)의 구성 요소들을 상호연결한다. 전형적으로, 운영 체제 소프트웨어 또는 펌웨어(미도시)는 컴퓨팅 환경(3000)에서 실행되는 다른 소프트웨어에 대한 운영 환경을 제공하고, 컴퓨팅 환경(3000)의 구성 요소의 활성화를 조정한다.
저장소(3040)는 착탈식 또는 비착탈식일 수 있고, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, CD-RW, DVD, 또는 정보를 저장하는 데 사용될 수 있고 컴퓨팅 환경(3000) 내에서 액세스될 수 있는 임의의 다른 매체일 수 있다. 저장소(3040)는 소프트웨어(3080)에 대한 명령어를 저장할 수 있다.
입력 장치(들)(3050)는 키보드, 마우스, 펜, 트랙볼, 터치 스크린, 또는 게임 제어기와 같은 터치 입력 장치, 음성 입력 장치, 스캐닝 장치, 디지털 카메라, 원격 제어부, 또는 컴퓨팅 환경(3000)에 입력을 제공하는 다른 장치일 수 있다. 출력 장치(들)(3060)는 디스플레이, 텔레비전, 모니터, 프린터, 스피커, 또는 컴퓨팅 환경(3000)으로부터 출력을 제공하는 다른 장치일 수 있다.
통신 연결(들)(3090)은 다른 컴퓨팅 개체(Computing Entity)로의 통신 매체를 통한 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 명령어, 오디오 또는 비디오 정보, 또는 변조된 데이터 신호 내의 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는 신호 내의 정보를 인코딩하기 위한 방식으로 설정 또는 변화된 그의 특성들 중 하나 이상을 갖는 신호이다. 제한이 아닌 예로서, 통신 매체는 전기, 광, RF, 적외선, 음향, 또는 다른 캐리어(Carrier)로 구현되는 유선 또는 무선 기법을 포함한다.
구현예는 컴퓨터 판독 가능 매체의 콘텍스트에서 기술될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 가용 매체이다. 제한이 아닌 예로서, 컴퓨팅 환경(3000) 내에서, 컴퓨터 판독 가능 매체는 메모리(3020), 저장소(3040), 통신 매체, 및 위의 것들 중 임의의 것들의 조합을 포함한다.
물론, 도 30은 식별 용이성만을 위해 컴퓨팅 환경(3000), 디스플레이 장치(3060), 및 입력 장치(3050)를 별개의 장치들로서 도시한다. 컴퓨팅 환경(3000), 디스플레이 장치(3060), 및 입력 장치(3050)는 별개의 장치들일 수 있고(예컨대, 모니터 및 마우스에 유선으로 연결되는 개인용 컴퓨터), 단일 장치 내에 통합될 수 있고(예컨대, 스마트폰 또는 태블릿과 같은, 터치 디스플레이를 갖는 모바일 장치), 또는 임의의 장치 조합일 수 있다(예컨대, 터치 스크린 디스플레이 장치에 동작 가능하게 결합되는 컴퓨팅 장치, 단일 디스플레이 장치 및 입력 장치에 부착되는 복수의 컴퓨팅 장치 등). 컴퓨팅 환경(3000)은 셋톱 박스, 개인용 컴퓨터, 또는 하나 이상의 서버, 예를 들어 네트워킹된 서버의 팜(Farm), 클러스터형 서버 환경, 또는 컴퓨팅 장치의 클라우드 네트워크일 수 있다.
기술된 실시예를 참조하여 본 발명의 원리를 기술하고 예시했지만, 기술된 실시예는 그러한 원리를 벗어나지 않고서 배열 및 세부사항이 수정될 수 있다는 것이 인식될 것이다. 소프트웨어로 도시된 기술된 실시예의 요소는 하드웨어로 구현될 수 있고, 그 역도 성립한다.
본 발명의 원리가 적용될 수 있는 많은 가능한 실시예의 관점에서, 다음의 청구범위 및 그의 등가물의 범주 및 사상 내에 있을 있는 모든 그러한 실시예를 본 발명으로 주장한다.

Claims (20)

  1. 네트워킹된 협업 워크스페이스(Collaboration Workspace)에서 웹 소켓(Web Socket) 연결을 통해 파일을 전송하는 방법에 있어서, 상기 방법은:
    로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 다수의 참가자에게 접근 가능하고 서버에서 호스팅되는 협업 워크스페이스의 리프리젠테이션(Representation) - 상기 협업 워크스페이스의 상기 리프리젠테이션은 상기 서버에 연결된 하나 이상의 원격 컴퓨팅 장치에 대응하는 하나 이상의 원격 참가자 객체를 포함함 - 을 전송하는 단계;
    상기 로컬 컴퓨팅 장치 상에서, 상기 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 라이브 폴더(Live Folder) - 상기 라이브 폴더 각각은 상기 원격 참가자 객체에 대응하는 원격 컴퓨팅 장치의 네트워크 주소에 맵핑(Mapping)됨 - 를 생성하는 단계;
    상기 하나 이상의 원격 참가자 객체 중 하나의 원격 참가자 객체 - 상기 원격 참가자 객체는 상기 하나 이상의 원격 컴퓨팅 장치 중 하나의 원격 컴퓨팅 장치에 대응됨 - 에 가장 가까운 적어도 하나의 파일에 대응하는 적어도 하나의 아이콘을 드래그(Drag)하라는 사용자 입력을 상기 로컬 컴퓨팅 장치에 의해 검출하는 단계; 및
    상기 원격 참가자 객체에 대응하는 라이브 폴더 내에 상기 적어도 하나의 파일을 상기 로컬 컴퓨팅 장치에 의해 저장함으로써, 상기 웹 소켓 연결을 통해 상기 원격 컴퓨팅 장치의 상기 네트워크 주소로 상기 적어도 하나의 파일을 전송하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 원격 컴퓨팅 장치에 대응하는 상기 하나 이상의 원격 참가자 객체는, 임베디드 비디오 스트림(Embedded Video Stream) 또는 원격 참가자 아이콘 중 하나 이상을 포함하는 방법.
  3. 제1항에 있어서,
    상기 협업 워크스페이스는, 상기 웹 소켓 연결을 통해 상기 다수의 참가자 중 어떤 참가자로부터 다른 참가자에게 어떤 편집이든 전파하도록 구성된 디지털 화이트보드를 포함하되, 상기 협업 워크스페이스의 상기 리프리젠테이션은 로컬 참가자에게 맞춰진 상기 디지털 화이트보드의 리프리젠테이션을 포함하는 방법.
  4. 제1항에 있어서,
    상기 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 라이브 폴더를 생성하는 단계는,
    상기 하나 이상의 원격 참가자 객체에 대응하는 상기 하나 이상의 원격 컴퓨팅 장치의 하나 이상의 IP(Internet Protocol) 주소를 상기 서버에 질의하는 단계;
    상기 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 로컬 폴더를 생성하는 단계; 및
    상기 하나 이상의 로컬 폴더를 상기 하나 이상의 IP 주소에 매핑함으로써, 상기 하나 이상의 라이브 폴더를 생성하는 단계
    를 포함하는 방법.
  5. 제1항에 있어서,
    상기 로컬 컴퓨팅 장치는 상기 사용자 인터페이스 내에 상기 하나 이상의 원격 참가자 객체의 하나 이상의 공간 위치를 저장하도록 구성되고, 상기 하나 이상의 원격 참가자 객체 중 하나의 소정 원격 참가자 객체에 가장 가까운 적어도 하나의 파일에 대응하는 적어도 하나의 아이콘을 드래그(Drag)하라는 사용자 입력을 검출하는 단계는:
    상기 소정 원격 참가자 객체의 공간 위치로부터 임계 거리 내에 있는 목적지 공간 위치로 상기 적어도 하나의 아이콘을 드래그하라는 사용자 입력을 검출하는 단계를 포함하는 방법.
  6. 제1항에 있어서,
    상기 원격 참가자 객체에 대응하는 상기 라이브 폴더 내에 상기 적어도 하나의 파일을 저장함으로써, 상기 웹 소켓 연결을 통해 상기 원격 컴퓨팅 장치의 상기 네트워크 주소로 상기 적어도 하나의 파일을 전송하는 단계는:
    상기 적어도 하나의 파일을 상기 라이브 폴더에 저장하는 단계;
    상기 웹 소켓 연결 - 상기 웹 소켓 연결은 상기 서버를 통해 상기 맵핑된 네트워크 주소로 데이터를 라우팅(Route)하도록 구성됨 - 을 통해 상기 적어도 하나의 파일의 복사본을 상기 맵핑된 네트워크 주소로 전송하는 단계; 및
    상기 전송을 완료하면 상기 라이브 폴더로부터 상기 적어도 하나의 파일을 삭제하는 단계
    를 포함하는 방법.
  7. 제1항에 있어서,
    상기 라이브 폴더는 상기 로컬 컴퓨팅 장치 상의 임시 캐시(Cache)에 저장되는 방법.
  8. 네트워킹된 협업 워크스페이스(Collaboration Workspace)에서 웹 소켓(Web Socket) 연결을 통해 파일을 전송하기 위한 로컬 컴퓨팅 장치에 있어서, 상기 로컬 컴퓨팅 장치는:
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서 중 적어도 하나에 작동 가능하게 결합되고, 명령어가 저장되는 하나 이상의 메모리
    를 포함하며,
    상기 명령어는, 상기 하나 이상의 프로세서 중 적어도 하나에 의해 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
    상기 로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 상기 웹 소켓 연결을 통해 다수의 참가자에게 접근 가능하고 서버에서 호스팅되는 협업 워크스페이스의 리프리젠테이션(Representation) - 상기 협업 워크스페이스의 상기 리프리젠테이션은 상기 서버에 연결된 하나 이상의 원격 컴퓨팅 장치에 대응하는 하나 이상의 원격 참가자 객체를 포함함 - 을 전송하는 프로세스;
    상기 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 라이브 폴더(Live Folder) - 상기 라이브 폴더 각각은 상기 원격 참가자 객체에 대응하는 원격 컴퓨팅 장치의 네트워크 주소에 맵핑됨 - 를 생성하는 프로세스;
    상기 하나 이상의 원격 참가자 객체 중 하나의 소정 원격 참가자 객체 - 상기 소정 원격 참가자 객체는 상기 하나 이상의 원격 컴퓨팅 장치 중 하나의 원격 컴퓨팅 장치에 대응됨 - 에 가장 가까운 적어도 하나의 파일에 대응하는 적어도 하나의 아이콘을 드래그(Drag)하라는 사용자 입력을 검출하는 프로세스; 및
    상기 소정 원격 참가자 객체에 대응하는 라이브 폴더 내에 상기 적어도 하나의 파일을 저장함으로써, 상기 웹 소켓 연결을 통해 상기 원격 컴퓨팅 장치의 상기 네트워크 주소로 상기 적어도 하나의 파일을 전송하는 프로세스
    를 수행하는 로컬 컴퓨팅 장치.
  9. 제8항에 있어서,
    상기 하나 이상의 원격 컴퓨팅 장치에 대응하는 상기 하나 이상의 원격 참가자 객체는, 임베디드 비디오 스트림(Embedded Video Stream) 또는 원격 참가자 아이콘 중 하나 이상을 포함하는 로컬 컴퓨팅 장치.
  10. 제8항에 있어서,
    상기 협업 워크스페이스는, 상기 웹 소켓 연결을 통해, 상기 다수의 참가자 중 어떤 참가자로부터 다른 참가자에게 어떤 편집이든 전파하도록 구성된 디지털 화이트보드를 포함하되, 상기 협업 워크스페이스의 상기 리프리젠테이션은 로컬 참가자에게 맞춰진 상기 디지털 화이트보드의 리프리젠테이션을 포함하는 로컬 컴퓨팅 장치.
  11. 제8항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금 상기 하나 이상의 원격 참가자 객체에 대응하는 상기 하나 이상의 라이브 폴더를 생성하게 하는 상기 명령어는, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
    상기 하나 이상의 원격 참가자 객체에 대응하는 상기 하나 이상의 원격 컴퓨팅 장치의 하나 이상의 IP(Internet Protocol) 주소를 상기 서버에 질의하는 프로세스;
    상기 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 로컬 폴더를 생성하는 프로세스; 및
    상기 하나 이상의 로컬 폴더를 상기 하나 이상의 IP 주소에 매핑함으로써 상기 하나 이상의 라이브 폴더를 생성하는 프로세스
    를 더 수행하게 하는 로컬 컴퓨팅 장치.
  12. 제8항에 있어서,
    상기 로컬 컴퓨팅 장치는 상기 사용자 인터페이스 내에 상기 하나 이상의 원격 참가자 객체의 하나 이상의 공간 위치를 저장하도록 구성되고, 상기 하나 이상의 프로세서 중 적어도 하나에 의해 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금 상기 하나 이상의 원격 참가자 객체 중 하나의 소정 원격 참가자 객체에 가장 가까운 적어도 하나의 파일에 대응하는 적어도 하나의 아이콘을 드래그하라는 사용자 입력을 검출하게 하는 상기 명령어는, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
    상기 소정 원격 참가자 객체의 공간 위치로부터 임계 거리 내에 있는 목적지 공간 위치로 상기 적어도 하나의 아이콘을 드래그하라는 사용자 입력을 검출하는 프로세스를 더 수행하도록 하는 로컬 컴퓨팅 장치.
  13. 제8항에 있어서,
    상기 하나 이상의 프로세서 중 적어도 하나에 의해 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금 상기 소정 원격 참가자 객체에 대응하는 상기 라이브 폴더 내의 상기 적어도 하나의 파일을 저장함으로써, 상기 웹 소켓 연결을 통해 상기 원격 컴퓨팅 장치의 상기 네트워크 주소로 상기 적어도 하나의 파일을 전송하게 하는 상기 명령어는, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
    상기 적어도 하나의 파일을 상기 라이브 폴더에 저장하는 프로세스;
    상기 웹 소켓 연결 - 상기 웹 소켓 연결은 상기 서버를 통해 상기 맵핑된 네트워크 주소로 데이터를 라우팅(Route)하도록 구성됨 - 을 통해 상기 적어도 하나의 파일의 복사본을 상기 맵핑된 네트워크 주소로 전송하는 프로세스; 및
    상기 전송을 완료하면 상기 라이브 폴더로부터 상기 적어도 하나의 파일을 삭제하는 프로세스
    를 더 수행하게 하는 로컬 컴퓨팅 장치.
  14. 제8항에 있어서,
    상기 라이브 폴더는 상기 로컬 컴퓨팅 장치 상의 임시 캐시(Cache)에 저장되는 로컬 컴퓨팅 장치.
  15. 컴퓨터 판독 가능 명령어를 저장하는 적어도 하나의 비일시적(Non-transitory) 컴퓨터 판독 가능 매체에 있어서, 상기 명령어는 로컬 컴퓨팅 장치에 의해 실행될 때, 상기 로컬 컴퓨팅 장치로 하여금:
    상기 로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 다수의 참가자에게 접근 가능하고 서버에서 호스팅되는 협업 워크스페이스의 리프리젠테이션(Representation) - 상기 협업 워크스페이스의 상기 리프리젠테이션은 상기 서버에 연결된 하나 이상의 원격 컴퓨팅 장치에 대응하는 하나 이상의 원격 참가자 객체를 포함함 - 을 전송하게 하고;
    상기 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 라이브 폴더(Live Folder) - 상기 라이브 폴더 각각은 상기 원격 참가자 객체에 대응하는 원격 컴퓨팅 장치의 네트워크 주소에 맵핑됨 - 를 생성하게 하고;
    상기 하나 이상의 원격 참가자 객체 중 하나의 소정 원격 참가자 객체 - 상기 소정 원격 참가자 객체는 상기 하나 이상의 원격 컴퓨팅 장치 중 하나의 원격 컴퓨팅 장치에 대응됨 - 에 가장 가까운 적어도 하나의 파일에 대응하는 적어도 하나의 아이콘을 드래그(Drag)하라는 사용자 입력을 검출하게 하고; 그리고
    상기 소정 원격 참가자 객체에 대응하는 라이브 폴더 내에 상기 적어도 하나의 파일을 저장함으로써, 상기 웹 소켓 연결을 통해 상기 원격 컴퓨팅 장치의 상기 네트워크 주소로 상기 적어도 하나의 파일을 전송
    하게 하는 비일시적 컴퓨터 판독 가능 매체.
  16. 제15항에 있어서,
    상기 하나 이상의 원격 컴퓨팅 장치에 대응하는 상기 하나 이상의 원격 참가자 객체는, 임베디드 비디오 스트림(Embedded Video Stream) 또는 원격 참가자 아이콘 중 하나 이상을 포함하는 비일시적 컴퓨터 판독 가능 매체.
  17. 제15항에 있어서,
    상기 협업 워크스페이스는, 상기 웹 소켓 연결을 통해 상기 다수의 참가자 중 어떤 참가자로부터 다른 참가자에게 어떤 편집이든 전파하도록 구성된 디지털 화이트보드를 포함하되, 상기 협업 워크스페이스의 상기 리프리젠테이션은 로컬 참가자에게 맞춰진 상기 디지털 화이트보드의 리프리젠테이션을 포함하는 비일시적 컴퓨터 판독 가능 매체.
  18. 제15항에 있어서,
    상기 로컬 컴퓨팅 장치에 의해 실행될 때, 상기 로컬 컴퓨팅 장치로 하여금 상기 하나 이상의 원격 참가자 객체에 대응하는 상기 하나 이상의 라이브 폴더를 생성하게 하는 상기 명령어는, 상기 로컬 컴퓨팅 장치로 하여금 추가로:
    상기 하나 이상의 원격 참가자 객체에 대응하는 상기 하나 이상의 원격 컴퓨팅 장치의 하나 이상의 IP(Internet Protocol) 주소를 상기 서버에 질의하게 하고;
    상기 하나 이상의 원격 참가자 객체에 대응하는 하나 이상의 로컬 폴더를 생성하게 하고; 그리고
    상기 하나 이상의 로컬 폴더를 상기 하나 이상의 IP 주소에 매핑함으로써 상기 하나 이상의 라이브 폴더를 생성
    하게 하는 비일시적 컴퓨터 판독 가능 매체.
  19. 제15항에 있어서,
    상기 로컬 컴퓨팅 장치는 상기 사용자 인터페이스 내에 상기 하나 이상의 원격 참가자 객체의 하나 이상의 공간 위치를 저장하도록 구성되고, 상기 로컬 컴퓨팅 장치에 의해 실행될 때, 상기 로컬 컴퓨팅 장치로 하여금 상기 하나 이상의 원격 참가자 객체 중 하나의 소정 원격 참가자 객체에 가장 가까운 적어도 하나의 파일에 대응하는 적어도 하나의 아이콘을 드래그하라는 사용자 입력을 검출하게 하는 상기 명령어는, 상기 로컬 컴퓨팅 장치로 하여금 추가로:
    상기 소정 원격 참가자 객체의 공간 위치로부터 임계 거리 내에 있는 목적지 공간 위치로 상기 적어도 하나의 아이콘을 드래그하라는 사용자 입력을 검출하게 하는 비일시적 컴퓨터 판독 가능 매체.
  20. 제15항에 있어서,
    상기 로컬 컴퓨팅 장치에 의해 실행될 때, 상기 로컬 컴퓨팅 장치로 하여금 상기 원격 참가자 객체에 대응하는 상기 라이브 폴더 내의 상기 적어도 하나의 파일을 저장함으로써, 상기 웹 소켓 연결을 통해 상기 원격 컴퓨팅 장치의 상기 네트워크 주소로 상기 적어도 하나의 파일을 전송하게 하는 상기 명령어는, 상기 로컬 컴퓨팅 장치로 하여금 추가로:
    상기 적어도 하나의 파일을 상기 라이브 폴더에 저장하게 하고;
    상기 웹 소켓 연결 - 상기 웹 소켓 연결은 상기 서버를 통해 상기 맵핑된 네트워크 주소로 데이터를 라우팅(Route)하도록 구성됨 - 을 통해 상기 적어도 하나의 파일의 복사본을 상기 맵핑된 네트워크 주소로 전송하게 하고; 그리고
    상기 전송을 완료하면 상기 라이브 폴더로부터 상기 적어도 하나의 파일을 삭제
    하게 하는 비일시적 컴퓨터 판독 가능 매체.
KR1020207029555A 2018-03-16 2019-03-13 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 파일을 전송하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체 KR20200131881A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/923,943 US10931733B2 (en) 2017-08-24 2018-03-16 Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
US15/923,943 2018-03-16
PCT/EP2019/056276 WO2019175237A1 (en) 2018-03-16 2019-03-13 Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace

Publications (1)

Publication Number Publication Date
KR20200131881A true KR20200131881A (ko) 2020-11-24

Family

ID=65955176

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207029555A KR20200131881A (ko) 2018-03-16 2019-03-13 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 파일을 전송하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체

Country Status (7)

Country Link
EP (1) EP3765973A1 (ko)
JP (1) JP2021517302A (ko)
KR (1) KR20200131881A (ko)
CN (1) CN112106044A (ko)
BR (1) BR112020018877A2 (ko)
RU (1) RU2020133478A (ko)
WO (1) WO2019175237A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102605522B1 (ko) * 2023-01-06 2023-11-24 한규태 펑션 보드를 이용한 고객 협동 개발 시스템 및 이에 포함되는 서버

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113868201B (zh) * 2021-12-02 2022-03-15 天津联想协同科技有限公司 一种多人协作分享文件的方法、装置及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7167897B2 (en) * 1996-05-08 2007-01-23 Apple Computer, Inc. Accessories providing a telephone conference application one or more capabilities independent of the teleconference application
US7587467B2 (en) * 1999-12-02 2009-09-08 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7634533B2 (en) * 2004-04-30 2009-12-15 Microsoft Corporation Systems and methods for real-time audio-visual communication and data collaboration in a network conference environment
US7821985B2 (en) * 2006-03-13 2010-10-26 Microsoft Corporation Network interface routing using computational context
US7958270B2 (en) * 2006-06-09 2011-06-07 Laurent Frederick Sidon Distribution of files from mobile devices
US9300912B2 (en) * 2008-03-28 2016-03-29 Microsoft Technology Licensing, Llc Software based whiteboard capture solution for conference room meetings
US10162491B2 (en) * 2011-08-12 2018-12-25 Otoy Inc. Drag and drop of objects between applications
US9398059B2 (en) * 2013-11-22 2016-07-19 Dell Products, L.P. Managing information and content sharing in a virtual collaboration session
US20160140139A1 (en) * 2014-11-17 2016-05-19 Microsoft Technology Licensing, Llc Local representation of shared files in disparate locations
US10001913B2 (en) * 2015-04-01 2018-06-19 Dropbox, Inc. Shared workspaces with selective content item synchronization

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102605522B1 (ko) * 2023-01-06 2023-11-24 한규태 펑션 보드를 이용한 고객 협동 개발 시스템 및 이에 포함되는 서버

Also Published As

Publication number Publication date
BR112020018877A2 (pt) 2020-12-29
WO2019175237A1 (en) 2019-09-19
JP2021517302A (ja) 2021-07-15
CN112106044A (zh) 2020-12-18
EP3765973A1 (en) 2021-01-20
RU2020133478A (ru) 2022-04-19

Similar Documents

Publication Publication Date Title
US11483376B2 (en) Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
US20220382505A1 (en) Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
JP5442727B2 (ja) ユーザーインターフェイス表示上での教示動画の表示
KR101817467B1 (ko) 가상 환경에서 객체와 상호 작용하는 시스템
US20190065012A1 (en) Method, apparatus, and computer-readable medium for propagating enriched note data objects over a web socket connection in a networked collaboration workspace
JP2020532007A (ja) ハードウェアとソフトウェアとの汎用インタフェースを実現する方法、装置、及びコンピュータ可読媒体
KR20200131881A (ko) 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 파일을 전송하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체
JP2021533456A (ja) ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を介して拡充ノート・データ・オブジェクトを伝えるための方法、装置及びコンピュータ可読媒体
KR20210018353A (ko) 네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓 연결을 통해 데스크탑을 공유하기 위한 방법, 장치, 및 컴퓨터 판독 가능 매체
US11334220B2 (en) Method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaboration workspace
KR20210010567A (ko) 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체