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

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

Info

Publication number
KR20210038660A
KR20210038660A KR1020217006164A KR20217006164A KR20210038660A KR 20210038660 A KR20210038660 A KR 20210038660A KR 1020217006164 A KR1020217006164 A KR 1020217006164A KR 20217006164 A KR20217006164 A KR 20217006164A KR 20210038660 A KR20210038660 A KR 20210038660A
Authority
KR
South Korea
Prior art keywords
data object
note data
enhanced
enhanced note
user
Prior art date
Application number
KR1020217006164A
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 US16/054,328 external-priority patent/US20190065012A1/en
Application filed by 리 마고 엘티디 filed Critical 리 마고 엘티디
Publication of KR20210038660A publication Critical patent/KR20210038660A/ko

Links

Images

Classifications

    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

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

Abstract

본 발명은 네트워킹된 협업 워크스페이스(Collaboration Workspace)에서 웹 소켓(Web Socket) 연결을 통해 강화된 노트 데이터 객체들을 전파하기 위한 시스템, 방법 및 컴퓨터 판독 가능 매체에 관한 것으로, 상기 웹 소켓 연결을 통해 참가자에게 접근 가능한 협업 워크스페이스의 리프리젠테이션(Representation)을 전송하는 단계; 강화된 노트 데이터 객체(상기 강화된 노트 데이터 객체는 텍스트, 하나 이상의 사용자 접근 가능 콘트롤 키, 및 콘텐츠 파일을 포함하고, 텍스트 및 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 구성되며, 디스플레이 콘트롤 키의 선택에 응답하여 콘텐츠 파일을 열도록 더 구성됨)를 생성하는 단계; 강화된 노트 데이터 객체를 협업 워크스페이스의 리프리젠테이션 내의 선택된 위치와 연관시키는 사용자 입력을 검출하는 단계; 및 웹 소켓 연결을 통해 강화된 노트 데이터 객체, 선택된 위치 및 커맨드(상기 커맨드는 서버로 하여금 강화된 노트 데이터 객체 및 상기 선택된 위치를 컴퓨팅 장치로 전파하도록 구성됨)를 서버로 전송하는 단계를 포함한다.

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)을 전송하는 단계; 상기 로컬 컴퓨팅 장치에 의해, 상기 강화된 노트 데이터 객체(상기 강화된 노트 데이터 객체는 텍스트, 하나 이상의 사용자 접근 가능 콘트롤 키, 및 적어도 하나의 콘텐츠 파일을 포함하고, 상기 텍스트 및 상기 하나 이상의 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 구성되며, 상기 하나 이상의 사용자 접근 가능 콘트롤 키에서 디스플레이 콘트롤 키의 선택에 응답하여 상기 적어도 하나의 콘텐츠 파일을 열도록 더 구성됨)를 생성하는 단계; 상기 로컬 컴퓨팅 장치에 의해, 상기 강화된 노트 데이터 객체를 상기 협업 워크스페이스의 상기 리프리젠테이션 내의 선택된 위치와 연관시키는 사용자 입력을 검출하는 단계; 및 상기 로컬 컴퓨팅 장치에 의해, 상기 웹 소켓 연결을 통해 상기 강화된 노트 데이터 객체, 상기 선택된 위치 및 하나 이상의 커맨드(상기 하나 이상의 커맨드는 상기 서버로 하여금 상기 강화된 노트 데이터 객체 및 상기 선택된 위치를 상기 다수의 컴퓨팅 장치로 전파하도록 구성됨)를 상기 서버로 전송하는 단계를 포함한다.
도 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는 예시적인 실시예에 따른, 협업 워크스페이스의 다수의 리프리젠테이션(Representation)을 도시한다.
도 23a 및 도 23b는 예시적인 실시예에 따른, 협업 워크스페이스 내의 강화된 노트 데이터 객체를 생성하는데 사용되는 프로세스를 도시한다.
도 24는 예시적인 실시예에 따라 생성된 강화된 노트(2400)를 도시한다.
도 25a 및 도 25b는 예시적인 실시예에 따라, 협업 워크스페이스의 리프리젠테이션 내의 선택된 위치와 강화된 노트 데이터 객체를 연관시키는 사용자 입력을 검출하는 예시를 도시한다.
도 26은 예시적인 실시예에 따라 강화된 노트 데이터 객체를 전파하기 위한 프로세스를 도시한다.
도 27은 예시적인 실시예에 따른, 협업 워크스페이스의 다수의 인스턴스 상의 강화된 노트를 도시한다.
도 28 내지 도 32는 예시적인 실시예에 따른, 사용자 상호작용의 예시를 도시한다.
도 33은 개시된 방법을 실행하도록 구성된 예시적인 컴퓨팅 환경을 도시한다.
방법, 기기, 및 컴퓨터 판독 가능 매체가 본 명세서에서 예시 및 실시예로서 기술되어 있지만, 당업자는 범용 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법, 기기, 및 컴퓨터 판독 가능 매체가 기술된 실시예 또는 도면으로 제한되지 않음을 인식한다. 도면 및 설명은 개시된 특정 형태로 제한되도록 의도되지 않는다는 것이 이해되어야 한다. 오히려, 그 의도는 첨부된 청구범위의 사상 및 범주 내에 있는 모든 수정물, 등가물, 및 대안물을 포괄하는 것이다. 본 명세서에서 사용되는 임의의 주제는 구조적 목적만을 위한 것이고, 설명 또는 청구범위의 범주를 제한하도록 의도되지 않는다. 본 명세서에서 사용되는 바와 같이, "할 수 있다(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)"로 지칭됨)에 대한 설정을 캘리브레이션 및 조정할 수 있다.
본 명세서에 개시된 시스템은 다수의 네트워킹된 컴퓨팅 장치 상에서 구현될 수 있고, 네트워킹된 협업 세션을 이행하는 데 있어서 도움을 주는 데 사용될 수 있다. 예를 들어, 앞서 기술된 화이트보드 기능은 다수의 컴퓨팅 장치 상의 다수의 사용자 사이의 공유된 화이트보드일 수 있다.
네트워킹된 협업 스페이스는 팀원들 사이에서의 활동을 조정하고 작업을 조직하고 우선순위를 정하며 새로운 아이디어를 브레인스토밍하도록 프로젝트 관리 및 소프트웨어 개발에 자주 사용된다. 예를 들어, 스크럼(Scrum)은 개발자 또는 다른 참가자들이 팀으로 협력하여 특정 문제를 실시간으로(개인적으로 또는 온라인으로) 정보 및 아이디어를 교환하며 해결하려는 작업 및 프로젝트를 관리하기 위한 애자일 프레임워크(Agile Framework)다. 스크럼 프레임워크는 스크럼 보드를 이용해 자주 실행되며, 이는 사용자가 지속적으로 브레인스토밍 세션 동안 아이디어, 주제 또는 다른 의견 제시를 포함하는 물리적 또는 디지털 포스트잇(Post-it) 노트를 붙이는 것이다.
기존 화이트보드 및 다른 공유 협업 스페이스(예: 스크럼 보드)가 가지고 있는 문제 중 하나는, 특히 시기가 중요한 자원인 경우에, 디지털 포스트잇 노트를 통해 전달되는 정보가, 참가자로부터의 의견 제시(예: 아이디어, 작업 등)에 관한 임의의 콘텍스트 상의 정보가 없고 네트워킹된 스페이스에서 아이디어를 공유하면 더 쉽고 더 효율적일 수 있는 임의의 지원 정보 없이, 텍스트 내용을 제한한다는 것이다. 추가로, 스크럼 세션은 때때로 상이한 책임을 가지는 다양한 팀을 연루시킬 수 있기 때문에, 포함된 아이디어로의 액세스를 선택적으로 제한하는 디지털 포스트잇 노트의 불능으로 인해, 상이한 팀에 있는 협업자나 상이한 보안 특권을 가지는 협업자에게 잠재적 기밀 정보 또는 민감한 정보가 노출되는 모습으로 추가적 취약성을 드러낼 수 있다.
협업 세션 내의 다수의 네트워킹된 컴퓨팅 장치 상으로 네트워크를 통해 효율적으로 전송 가능한 포맷 및 스크럼 세션과 같은 네트워킹된 프로젝트 관리 세션을 임베딩(Embedding)하거나 사용하기 위한 기능을 동시에 포함하는 포맷으로, 협업자로부터의 협업 의견 제시 데이터를 관련 콘텐츠 데이터 및 액세스 제어 데이터를 이용해 패키징(Packaging)하는 효율적인 방식이 현재는 없다.
앞서 설명된 범용 하드웨어-소프트웨어 인터페이스의 실행을 위한 방법 및 시스템에 더하여, 본 출원인은 네트워킹된 협업 워크스페이스 내에서 웹 소켓 연결을 통해 강화된 노트 데이터 객체를 전파하도록 하고 상기 언급된 문제를 해결하는 방법, 기기 및 컴퓨터 판독 가능 매체를 추가적으로 발견했다.
도 20은 예시적인 실시예에 따른, 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 강화된 노트 데이터 객체를 전파하기 위한 흐름도를 도시한다. 도 20에 나타난 모든 단계는 서버에 연결된 클라이언트 장치와 같은 로컬 컴퓨팅 장치 상에서 수행될 수 있고 다수의 컴퓨팅 장치를 필요로 하지 않는다. 또한, 상기 개시된 프로세스는 서버에 연결된 다수의 장치에 의해 또는 하나 이상의 다른 컴퓨팅 장치에 대해 네트워킹된 협업 세션을 호스팅하는 서버 및 로컬 컴퓨팅 장치 모두의 역할을 하는 컴퓨팅 장치에 의해 실행될 수 있다.
단계(2001)에서, 서버 상에서 호스팅되는 협업 워크스페이스의 리프리젠테이션은 로컬 컴퓨팅 장치의 사용자 인터페이스 상으로 전송된다. 협업 워크스페이스는 로컬 컴퓨팅 장치에서의 로컬 참가자 및 원격 컴퓨팅 장치에서의 하나 이상의 원격 참가자를 포함해 웹 소켓 연결을 통해 다수의 컴퓨팅 장치 상에서의 다수의 참가자에게 접근 가능하다. 여기에 사용된 바와 같이, 원격 컴퓨팅 장치 및 원격 참가자는 로컬 참가자 및 로컬 컴퓨팅 장치 외에 컴퓨팅 장치 및 참가자를 나타낸다. 원격 컴퓨팅 장치는 WAN(Wide Area Network)와 같은 네트워크에 의해 로컬 장치로부터 분리된다.
도 21a는 예시적인 실시예에 따른, 협업 워크스페이스를 호스팅 및 전송하는데 사용되는 네트워크 아키텍처를 도시한다. 도 21a에 도시된 바와 같이, 서버(2100)는 컴퓨팅 장치(2101A-2101F)로 연결된다. 서버(2100) 및 컴퓨팅 장치(2101A-2101F)는 웹 소켓 연결과 같은 네트워크 연결을 통해 연결될 수 있고, 이는 컴퓨팅 장치(2101A-2101F) 및 서버(2100) 사이의 양방향 커뮤니케이션을 가능케 한다. 도 21a에 도시된 바와 같이, 컴퓨팅 장치는 노트북, 데스크탑, 스마트폰 또는 다른 모바일 장치 등의 임의의 타입의 컴퓨팅 장치일 수 있다. 추가로, 서버(2100)가 개별 독립체로 도시되지만, 컴퓨팅 장치(2101A-2101F) 중 임의의 하나는 다른 컴퓨팅 장치에 대해 서버로서의 역할을 할 수도 있다는 것을 이해해야 하며, 이는 컴퓨팅 장치가 협업 세션 자체에 참여하는 참가자일뿐이라도 협업 세션을 호스팅하는 서버의 기능을 수행한다는 것을 의미한다.
협업 워크스페이스는 예를 들어 다수의 참가자들 중 임의의 참가자로부터 임의의 편집을 다른 참가자들에게 웹 소켓 연결을 통해 전파하도록 구성된 디지털 화이트보드일 수 있다. 도 21b는 예시적인 실시예에 따른, 편집을 네트워크 내의 협업 워크스페이스로 전파하기 위한 프로세스를 도시한다. 도 21b에 도시된 바와 같이, 사용자가 컴퓨팅 장치(2101B)에서 협업 워크스페이스로 편집 또는 변경을 수행하면, 이 같은 편집 또는 변경(2102B)은 워크스페이스의 호스팅된 버전을 업데이트하는데 사용되는 서버(2100)로 전송된다. 그리고 편집 또는 변경은 서버(2100)에 의해 업데이트(2102A, 2102C, 2102D, 2102E, 및 2102F)로서 다른 연결된 컴퓨팅 장치(2101A, 2101C, 2101D, 2101E, 및 2101F)로 전파된다.
협업 워크스페이스의 각각의 리프리젠테이션은 로컬 참가자에게 맞춤형 협업 워크스페이스의 버전일 수 있다. 예를 들어, 상기 논의된 바와 같이, 협업 워크스페이스의 각각의 리프리젠테이션은 서버에 연결된 하나 이상의 원격 컴퓨팅 장치에 대응하는 하나 이상의 원격 참가자 객체를 포함할 수 있다.
도 22는 예시적인 실시예에 따른, 협업 워크스페이스의 다수의 리프리젠테이션을 도시한다. 도 22에 도시된 바와 같이, 서버(2200)는 협업 워크스페이스(2201)를 호스팅한다. 앞서 논의된 바와 같이, 서버에 호스팅되는 협업 워크스페이스의 버전은 연결된 장치로 전파된다. 도 22는 3개의 연결된 사용자(사용자 1, 사용자 2 및 사용자 3)를 위한 협업 워크스페이스의 리프프리젠테이션을 도시한다. 각각의 리프리젠테이션은 선택적으로 로컬 참가자(각각의 위치에서의 로컬 컴퓨팅 장치)에게 맞춰질 수 있다.
도 20으로 다시 돌아가면, 단계(2002)에서 강화된 노트 데이터 객체는 로컬 컴퓨팅 장치에 의해 생성될 수 있다. 강화된 노트 데이터 객체는 사용자로부터(예: 사용자 인터페이스를 통해)의 입력에 응답하여 생성되고, 사용자에 의해 선택되거나 입력되고 디스플레이되도록 구성된 텍스트, 디스플레이되도록 구성된 하나 이상의 사용자 접근 가능 콘트롤 키 및 사용자에 의해 선택되는 적어도 하나의 콘텐츠 파일를 포함한다. 강화된 노트 데이터 객체는 텍스트 및 강화된 노트 사용자 인터페이스 요소 내의 하나 이상의 사용자 접근 가능 컨트롤 키(강화된 노트 데이터 객체에 의해 정의되고 하나 이상의 사용자 접근 가능 콘트롤 키 내의 디스플레이 콘트롤 키의 선택에 응답하여 적어도 하나의 콘텐츠 파일을 열도록 더 구성됨)를 디스플레이하도록 구성된다. 예를 들어, 강화된 노트 데이터 객체는 임베딩된 스크립트 또는 사용자 접근 가능 컨트롤 키 및 노트 사용자 인터페이스 요소를 디스플레이하도록 구성된 소프트웨어를 포함할 수 있다. 강화된 노트 데이터 객체는 예를 들어, 디스플레이 콘트롤 스크립트와 관련되거나 그 일부(강화된 노트 데이터 객체의 일부이고 실제 콘텐츠 아이템을 강화된 노트 데이터 객체의 개별 부분에 저장함)로서 콘텐츠 파일의 주소로 링크(Link) 또는 포인터(Pointer)를 저장할 수 있다. 이 경우, 링크 또는 포인터는 강화된 노트 데이터 객체의 개별 부분 내의 콘텐츠 아이템의 주소를 참조할 수 있다. 콘텐츠 아이템은 비디오 파일, 이미지 파일, 오디오 파일, 문서, 스프레드시트, 웹 페이지 등의 임의의 타입의 콘텐츠 아이템일 수 있다.
강화된 노트는 강화된 노트 데이터 객체의 시각적 구성요소인 특화된 사용자 인터페이스 요소이다. 기저의 데이터 구조(강화된 노트 데이터 객체)가 디스플레이 텍스트(노트)를 사용자에 의해 선택된 강화된 노트 데이터 객체 내에서 대응하는 콘텐츠 아이템과 연결시킨다는 점에서 강화된 노트는 콘텐츠-결합된 또는 콘텐츠-링크된 노트이다. 강화된 노트 데이터 객체 내에 저장된 상기 링크된 콘텐츠는 이후 강화된 노트의 사용자 접근 가능 콘트롤 키를 통해 강화된 노트를 통해 접근 가능하다. 그러므로 많은 참가자를 가지는 네트워킹된 협업 세션을 통해 접근, 이동, 공유 가능한 방식으로 컴퓨팅 장치의 메모리 내에서 특정 디스플레이 텍스트를 기저의 콘텐츠 아이템과 링크시킨다는 점에서, 강화된 노트(및 강화된 노트 데이터 객체의 상기 대응하는 기저의 데이터 구조)는 다이나믹 디지털화된 포스트잇(Post-It®) 노트로서의 역할을 한다. 강화된 노트(및 기저의 강화된 노트 데이터 객체)는 (문서뿐 아니라) 임의의 타입의 콘텐츠에 "핀으로 고정"되고 다이나믹 액세스 콘트롤 키 및 다른 기능을 통합할 수 있기 때문에 심지어 더 좋은 기능성을 제공한다. 아래에 더 자세히 논의되는 바와 같이, 각각의 참가자가 강화된 노트와 독립적으로 상호작용하고 관련 링크된 콘텐츠에 액세스하도록 허가하는 동시에 참가자로부터의 의견 제시를 링크하는 기능을 특정 가상 위치에 부착되는 노트로서 제공하기 때문에, 강화된 노트 데이터 객체는 네트워킹된 협업 세션 내의 기존의 문제를 해결한다.
도 23a 및 도 23b는 예시적인 실시예에 따른, 협업 워크스페이스 내의 강화된 노트 데이터 객체를 생성하는데 사용되는 프로세스를 도시한다.
도 23a는 강화된 노트 데이터 객체를 생성하라는 요청을 수신하기 전에 로컬 컴퓨팅 장치의 사용자 인터페이스(데스크탑)의 예시를 도시한다. 도 23a에 도시된 바와 같이, 사용자 인터페이스(2301)는 서버 상에 호스팅되는 협업 워크스페이스(2303)를 로컬로 디스플레이하는 협업 애플리케이션(2302)을 포함한다.
협업 애플리케이션(2302)은 툴바(2304)와 마찬가지로, 로컬 참가자 및 다른 임의의 참가자에 의한 모든 편집 및 의견 제시를 포함하는 협업 워크스페이스(2303)의 리플리젠테이션을 포함할 수 있다. 툴바(2304)는 다양한 편집툴, 설정, 커맨드 및 협업 워크스페이스의 리프리젠테이션과 상호작용하거나 상기 리프리젠테이션을 구성하기 위한 옵션을 포함할 수 있다. 예를 들어, 툴바(2304)는 웹 소켓 연결을 통해 서버 및 다른 연결된 컴퓨팅된 장치로 전파되는 편집을 협업 워크스페이스(2303)의 리프리젠테이션 상에 그리는 편집 툴을 포함할 수 있다.
툴바(2304)는, 선택되면, 프롬프트 또는 인터페이스(사용자 선택으로 인해 강화된 노트를 생성하고 강화된 노트의 특징 및 특성을 명시하도록 함)를 로컬 컴퓨팅 장치로 하여금 디스플레이하도록 하는 강화된 노트 버튼(2305)을 추가적으로 포함한다. 그러므로 사용자는 스크린 공유 버튼(2305)를 선택함으로써 강화된 노트를 생성하는 프로세스를 시작할 수 있다. 여기에 사용된 바와 같이, "강화된 노트"는 "강화된 노트 객체 데이터"에 대응하는 사용자 인터페이스 요소를 지칭한다는 점에 유의해야 한다. 아래에 상세히 설명되는 바와 같이, "강화된 노트 데이터 객체"는 자동화된 스크립트, 콘텐츠 파일 또는 콘텐츠 파일로의 링크, 프라이버시 설정, 및 "강화된 노트"의 일부분으로서 항상 디스플레이되지 않는 기타 설정 파라미터와 같은 데이터를 포함한다.
도 23b는 사용자가 툴바(2304)의 강화된 노트 버튼(2305)를 선택한 후의 로컬 컴퓨팅 장치의 사용자 인터페이스(데스크탑)(2301)의 예시를 도시한다. 도 23b에 도시된 바와 같이, 강화된 노트 버튼(2305)의 선택은 로컬 컴퓨팅 장치로 하여금 강화된 노트 생성 인터페이스(2306)을 디스플레이하도록 한다.
강화된 노트 생성 인터페이스(2306)는, 사용자로 하여금 강화된 노트의 표면 상에 디스플레이될 메시지를 타이핑하도록 하는 텍스트 입력 영역(2306A)를 포함해, 다수의 입력 영역을 포함한다. 대안적으로, 사용자는 다수의 기정의된 메시지 중 하나를 선택할 수 있다. 예를 들어, 기설정된 메시지의 목록은 사용자가 텍스트 입력 영역(2306)에 대한 선택에 응답하여 디스플레이될 수 있고, 이후 사용자는 기설정된 메시지 중 하나를 선택할 수 있다.
강화된 노트 생성 인터페이스(2306)는 콘텐츠 첨부 버튼(2603B)를 추가로 포함할 수 있다. 콘텐츠 첨부 버튼(2306B)을 선택하면, 강화된 노트 데이터 객체 내에 포함되고 강화된 노트로부터 액세스가 가능한 로컬 또는 네트워크 폴더로부터 콘텐츠 파일을 선택할 수 있는 인터페이스가 디스플레이될 수 있다. 추가로, 콘텐츠 첨부 버튼(2306B)를 선택하면, 스케치 툴 또는 사용자로 하여금 콘텐츠를 직접 생성하게 하는 다른 입력 인터페이스와 같은 콘텐츠 입력 인터페이스의 디스플레이할 수도 있다. 이 경우, 생성된 콘텐츠는 자동으로 폴더 내의 파일로 저장될 수 있고, 생성된 파일은 강화된 노트와 연관될 수 있다. 먼저 논의된 바와 같이, 콘텐츠 아이템은 비디오 파일, 이미지 파일, 오디오 파일, 문서, 스프레드시트 및/또는 웹 페이지와 같이 임의의 타입의 콘텐츠 아이템일 수 있다. 관련 콘텐츠가 웹 페이지로부터 다운로딩되고 웹 페이지 문서(예: html파일)로서 첨부될 수 있는 경우에, 사용자는 웹 페이지 링크와 같은 링크를 포함함으로써 콘텐츠를 명시할 수 있다. 대안적으로, 강화된 노트를 수신하는 사용자가 로컬 브라우저 내의 관련 웹 소스로부터의 콘텐츠로 액세스하기 위해 링크를 단순히 클릭해야 하는 경우에, 웹 브라우저의 보급을 고려하면, 웹 페이지 링크는 그 자체로 첨부된 콘텐츠로 분류될 수 있다.
강화된 노트 생성 인터페이스(2306)는 중요도 버튼(2306C)을 추가적으로 포함한다. 중요도 버튼(2306C)을 선택하면, 강화된 노트와 관련된 중요 표시 플래그가 트루(True)로 설정될 수 있다. 이로써, 강화된 노트가 긴급 또는 중요하다고 간주된다고 보는 사람에게 알리는 중요도 표시자(예: 그래픽 또는 메시지)를 이용해 강화된 노트는 디스플레이된다.
강화된 노트 생성 인터페이스(2306)은 프라이버시 버튼(2306D)을 추가로 포함한다. 프라이버시 버튼(2306D)을 선택하면, 프라이버시 설정을 사용자가 입력하도록 하는 인터페이스가 디스플레이될 수 있다. 프라이버시 설정은 사용자로 하여금 강화된 노트의 콘텐츠 부분에 대한 액세스 콘트롤 키(예: 비밀번호, 인증 확인 및/또는 승인된 참가자 목록)를 설정하도록 한다. 승인된 참가자의 목록이 사용되면, 각각의 승인된 참가자와 연관된 IP 주소는 웹 소켓 연결을 통해 서버로부터 검색되고 액세스 콘트롤 키로 링크될 수 있어, 강화된 노트의 콘텐츠 부분은 승인된 사용자와 관련된 IP 주소로부터만 액세스될 수 있다. 대안적으로, 강화된 노트의 생성자는 각각의 승인된 참가자의 일부 식별자를 명시할 수 있고, 상기 참가자들은 콘텐츠로의 액세스를 획득하기 위해 적절한 식별자를 입력할 수 있다. 프라이버시 콘트롤 키의 많은 변형이 가능하며 이 같은 예시로만 제한되는 것을 의도하지 않는다.
강화된 노트 생성 인터페이스(2306)는 경보 버튼(2306E)를 추가적으로 포함한다. 경보 버튼(2306E)을 선택하면, 사용자가 하나 이상의 강화된 노트와 연관된 경보를 설정하도록, 인터페이스가 디스플레이될 수 있다. 경보는 팝업창과 같은 알림, 이메일 같은 커뮤니케이션 또는 달력 리마인더와 같은 기타 알림일 수 있다. 사용자는 경보 메시지와 마찬가지로 각각의 경보와 연관된 시간과 날짜를 선택할 수 있다. 그러므로 팝업창 또는 달력 알림과 같은 로컬 경보에 대하여, 강화된 노트의 임의의 수신자는 적절한 시간 및 날짜에 로컬 컴퓨팅 장치 상에서 활성화된 강화된 노트와 연관된 임의의 경보를 받을 수 있다. 커뮤니케이션 경보에 대하여, 강화된 노트의 생성자로부터 강화된 노트의 수신자로의 커뮤니케이션은 선택된 시간 및 날짜에 트리거될 수 있다. 예를 들어, 리마인더 경보는 강화된 노트의 수신자에게 특정 마감일까지 리뷰할 것을 리마인더할 수 있다.
강화된 노트 생성 인터페이스(2306)는 음성 노트(2306F)를 추가로 포함한다. 음성 노트(2306F)를 선택하면, 생성자로 하여금 강화된 노트 데이터 객체 내에 포함되고 강화된 노트로부터 액세스 가능한 음성 응답을 녹음하도록 하는 프롬프트 또는 인터페이스가 초래된다. 선택적으로, 음성 노트(2306F)는 콘텐츠 첨부 버튼(2306B)으로 통합될 수 있어, 사용자가 음성 노트를 녹음하고 콘텐츠 첨부 버튼(2306B)을 선택함으로써 다른 타입의 콘텐츠를 첨부할 수 있다.
버튼(2306B-2306F)은 예시의 방식으로만 제시되며, 강화된 노트 생성 인터페이스(2306)은 다른 사용자-구성 가능 옵션을 포함할 수 있다. 예를 들어, 강화된 노트 생성 인터페이스(2306)은 사용자가 크기, 모양, 색깔 또는 강화된 노트의 패턴을 구성할 수 있는 옵션을 포함할 수 있다.
생성자가 강화된 노트 구성, 임의의 플래그 설정, 프라이버시 콘트롤 키 설정, 콘텐츠 첨부, 및/또는 음성 노트 녹음을 완료하면, 생성 버튼(2306G)를 선택함으로써 강화된 노트 데이터 객체를 생성할 수 있다. 강화된 노트 데이터 객체의 생성은 생성자에 의해 명시된 콘텐츠 및 설정 전부의 통합을 포함하며, 다양한 방식으로 수행될 수 있다. 예를 들어, 강화된 노트 데이터 객체는 선택된 설정에 대응하는 자동화된 스크립트 및 콘텐츠 파일 자체와 함께 명시된 콘텐츠에 대한 링크를 포함하는 데이터 컨테이너로서 구성될 수 있다. 강화된 노트 데이터 객체는, 선택된 콘텐츠 파일의 주소가 덧붙여진 기정의된 링크를 포함하고 생성자의 선택을 기반으로 설정되는 다수의 플래그를 가지는, 기정의된 템플릿 데이터 객체일 수도 있다.
도 24는 예시적인 실시예에 따라 생성된 강화된 노트(2400)를 도시한다. 도 24에 도시된 바와 같이, 강화된 노트(2400)는 텍스트 "데이터 테스팅 특징을 실행하기 위한 아이디어(Idea for implementing the data testing feature)"를 디스플레이하고 사용자 접근 가능 콘트롤 키(2401-2405)를 포함한다. 각각의 사용자 접근 가능 콘트롤 키는 강화된 노트 데이터 객체에 의해 정의되는 바와 같이 강화된 노트의 기능 또는 설정으로 연결된다.
강화된 노트(2400)는, 강화된 노트와 연관된 추가 콘텐츠가 있다는 것을 나타내는 디스플레이 콘트롤 키(2401)를 포함한다. 디스플레이 콘트롤 키(2401)를 선택하면, 강화된 노트(2400)으로 하여금 강화된 노트(2400)와 연관된 콘텐츠 아이템을 디스플레이하도록 구성된다. 디스플레이 콘트롤 키(2401)의 선택에 응답하여, 강화된 노트 데이터 객체는 적어도 하나의 콘텐츠 파일과 연관된 애플리케이션을 검출하고, 강화된 노트의 콘텐츠 디스플레이 영역에서 적어도 하나의 콘텐츠 파일과 연관된 애플리케이션을 개시하고 개시된 애플리케이션에서 적어도 하나의 콘텐츠 파일을 로딩시킴으로써 적어도 하나의 콘텐츠 파일을 열도록 구성된다. 콘텐츠 디스플레이는 텍스트 및 하나 이상의 사용자 접근 가능 콘트롤 키(2401-2405)를 디스플레이하도록 구성된 프라이머리 디스플레이 영역에 인접할 수 있다. 이후, 사용자는 열린 콘텐츠를 둘러보고 스크롤을 내리거나 아니면 상호작용할 수 있다.
디스플레이 콘트롤 키(2401)에 대해 사용되는 아이콘은 그 자체로 강화된 노트와 연관되거나 링크되는 콘텐츠 파일의 타입을 기반으로 결정될 수 있다. 도 24에 도시된 바와 같이, 디스플레이 콘트롤 키(2401) 아이콘은 링크된 콘텐츠가 이미지인 것을 나타내는 이미지 파일에 대응한다. 다른 타입의 아이콘은 자동적으로 결정될 수 있고, 생성자에 의해 링크되는 콘텐츠 파일의 타입의 분석을 기반으로 사용자 접근 가능 컨트롤 키 대신 사용될 수 있다. 예를 들어, 상이한 아이콘은 문서 파일, PDF 파일, 비디오 파일 또는 웹 브라우저 링크에 사용될 수 있다. 생성자가 임의의 콘텐츠 아이템과 강화된 노트를 연관시키지 않는 경우, 강화된 노트 데이터 객체는 디스플레이 컨트롤 키(2401) 아이콘을 강화된 노트(2400)로부터 생략하도록 구성될 수 있다.
또한, 도 24에 중요도 표시자(2402) 아이콘이 도시된다. 강화된 노트의 생성자가 노트를 중요하다고 플래그를 달면, 강화된 노트 데이터 객체는 중요도 표시자 아이콘(별 아이콘으로 도시됨)을 디스플레이하도록 구성된다. 강화된 노트의 중요도는 플래그(중요 또는 중요하지 않음 중 하나)로 설정될 수 있거나, 다수의 상이한 중요도 값(예: 상, 중, 하)으로부터의 중요도 값으로 설정될 수 있다. 중요도 표시자(2402) 아이콘은 강화된 노트와 연관된 중요도 값을 나타낼 수 있다. 중요도 표시자(2402) 아이콘은 이미지를 디스플레이하거나 중요도 레벨을 나타내는 시각적 특성을 가질 수 있다. 예를 들어, 중요도 표시자(2402) 아이콘은 컬러 코딩될 수 있고, 그래서 가장 중요한 강화된 노트는 빨간색 중요도 표시자(2402) 아이콘을 가질 수 있으며, 가장 덜 중요한 강화된 노트는 초록색 중요도 표시자(2402) 아이콘을 가진다. 생성자가 강화된 노트를 중요하다고 플래그를 달지 않은 경우, 중요도 표시자(2402) 아이콘은 선택적으로 생략될 수 있다.
경보 콘트롤 키(2404)의 선택은 강화된 노트(2400)와 연관된 임의의 경보 또는 알림을 디스플레이할 수 있다. 예를 들어, 경보 콘트롤 키의 선택은 특정 알림과 연관된 시간 및 날짜를 나타낼 수 있다. 강화된 노트가 경보를 포함하면, 경보는 강화된 노트를 수신하는 장치의 운영 체제에 의해 트리거될 수 있다. 예를 들어, 경보는 클라이언트로 전송되는 푸시 알림으로서 또는 클라이언트의 달력에 추가되는 캘린더 이벤트로서 트리거될 수 있다. 캘린더 이벤트는 알림 경보로서 전송될 수 있고, 이후 사용자에 의해 캘린더로 추가되도록 선택될 수 있다. 대안적으로, 사용자가 장치 상의 캘린더 애플리케이션으로의 액세스에 대해 허가하면, 캘린더 이벤트는 자동으로 추가될 수 있다.
도 24는 프라이버시 콘트롤 키(2403) 아이콘(자물쇠로 표시됨)을 추가로 도시한다. 강화된 노트와 연관된 프라이버시 또는 액세스 콘트롤 키가 있으면, 강화된 노트 데이터 객체는 프라이버시 콘트롤 키(2403)를 디스플레이하도록 구성된다. 강화된 콘텐츠 노트 데이터 객체는, 디스플레이 콘트롤 키(2401) 또는 프라이버시 콘트롤 키(2403) 중 하나의 선택에 응답하여, 강화된 노트 데이터 객체와 관련된 임의의 프라이버시 또는 액세스 콘트롤 매커니즘이 있는지 여부를 판단하도록 구성된다. 강화된 노트 데이터 객체와 관련된 임의의 종류의 프라이버시 또는 액세스 콘트롤 매커니즘이 있다면, 임의의 연관된 콘텐츠 파일을 열거나 제공하기 전에, 강화된 콘텐츠 노트 데이터 객체는 (프라이버시 또는 액세스 콘트롤 매커니즘에 따른) 인증 확인이 수행되도록 구성된다.
예를 들어, 인증 확인은 비밀번호를 요구하고, 사용자 자격 증명을 요구하고, 사용자와 연관된 IP 주소가 승인된 목록에 있는지를 검증하고, 사용자로 하여금 특정 조건에 동의하도록 요구하는 등의 작업을 요구할 수 있다. 예를 들어, 강화된 노트와 연관된 프라이버시 콘트롤 키가 있고 사용자가 디스플레이 콘트롤 키(2401) 아이콘을 선택하면, 인증 확인은 관련된 콘텐츠가 사용자에게 디스플레이되기 전에 수행될 수 있다. 선택적으로, 단지 프라이버시 콘트롤 키(2403) 아이콘을 선택함으로써 연관된 콘텐츠를 열도록 시도하기 전에, 사용자는 인증 확인을 트리거할 수 있다. 인증 확인이 실패하면, 강화된 노트 데이터 객체는 연관된 콘텐츠 파일로의 액세스를 거절하도록 구성된다.
도 24에 경보 콘트롤 키(2404)도 도시된다. 강화된 노트와 연관된 경보가 있으면, 강화된 노트 데이터 객체는 경보 콘트롤 키(시계 아이콘으로 도시됨)를 디스플레이하도록 구성된다. 경보 콘트롤 키(2404)을 선택하면, 경보와 연관된 시간 및 날짜에 강화된 노트(2400)과 연관된 임의의 경보 또는 알림을 디스플레이할 수 있다. 예를 들어, 경보 콘트롤 키를 선택하면, 특정 알림과 연관된 시간 및 날짜를 나타낼 수 있다. 강화된 노트가 경보를 포함하면, 경보는 강화된 노트를 수신하는 장치의 운영 체제에 의해 트리거될 수 있다. 예를 들어, 경보는 클라이언트로 전송되는 푸시 알림 또는 클라이언트의 캘린더에 추가되는 캘린더 이벤트로서 트리거될 수 있다. 캘린더 이벤트는 알림 경보로서 전송될 수 있고, 이후 사용자에 의해 캘린더로 추가되도록 선택될 수 있다. 대안적으로, 사용자가 장치 상의 캘린더 애플리케이션으로의 액세스에 대해 허가하면, 캘린더 이벤트는 자동으로 추가될 수 있다.
또한, 강화된 노트(2400)는 음성 노트 표시자(2405) 아이콘을 포함할 수 있다. 생성자가 강화된 노트 데이터 객체 내에 음성 노트를 포함하면, 강화된 노트는 음성 노트 표시자(2405) 아이콘을 디스플레이하도록 구성된다. 음성 노트 표시자(2405) 아이콘이 디스플레이되면, 음성 노트 표시자(2405) 아이콘의 선택으로 말미암아 인근 창 또는 인터페이스에서 오디오 플레이백 애플리케이션이 열리고 오디오 플레이백 애플리케이션 내에서 대응하는 음성 노트가 로딩된다. 이후 사용자는 음성 노트를 듣거나 음성 노트를 통해 내비게이팅할 수 있다.
도 20으로 돌아가서, 단계(2003)에서, 강화된 노트 데이터 객체를 협업 워크스페이스의 리프리젠테이션 내의 선택된 위치와 연관시키는 사용자 입력이 로컬 컴퓨팅 장치에 의해 검출된다. 예를 들어, (도 24에 도시된 바와 같이) 강화된 노트가 생성되면, 사용자는 협업 워크스페이스 내의 위치로 강화된 노트를 "핀으로 고정"하기 위해, 협업 워크스페이스 내의 강화된 노트의 위치를 드래그 및 드랍하거나 놓을 수 있다.
도 25a 및 도 25b는 예시적인 실시예에 따라, 협업 워크스페이스의 리프리젠테이션 내의 선택된 위치와 강화된 노트 데이터 객체를 연관시키는 사용자 입력을 검출하는 예시를 도시한다.
도 25a에 도시된 바와 같이, 생성자가 결과적인 강화된 노트를 생성하기 위한 프로세스를 완료하고, 강화된 노트(2501)는 사용자 인터페이스(2500) 내의 협업 애플리케이션(2503)의 협업 워크스페이스(2502) 내에 초기에 디스플레이된다. 이 때, 강화된 노트(2501)에 대한 위치는 아직 선택되지 않았다.
도 25b는 강화된 노트(2501)에 대한 위치를 선택하는 프로세스를 도시한다. 도 25b에 도시된 바와 같이, 사용자는 강화된 노트(2501)를 협업 워크스페이스(2502) 내의 원하는 위치로 드래그할 수 있다. 사용자가 위치에 만족하면, 위치는 사용자가 강화된 노트(2501)를 "드라핑"(포인팅 장치를 떨어뜨림)하는 것 및/또는 위치에 만족하는 것을 나타내기 위해 사용자가 일부 사용자 인터페이스 요소(예: 강화된 노트 아이콘(2504))를 선택하는 것 중 하나를 함으로써 검출될 수 있다. 이후, 협업 워크스페이스(2502) 내의 위치는 검출되고 강화된 노트와 연관된 메모리에 저장된다. 상기 위치는 협업 애플리케이션(2503) 그 자체, 운영 체제에 의해 또는 본원에 먼저 논의된 바와 같이 투명 레이어에 의해 검출될 수 있다.
강화된 노트 생성 후 강화된 노트 데이터 객체와 선택된 위치를 연관시키는 사용자 입력을 검출하는 것에 대안으로서, 강화된 노트 데이터 객체의 생성 전에 사용자 입력이 검출될 수 있고, 여기서 사용자는 먼저 협업 워크스페이스 내의 위치를 명시한다. 예를 들어, 도 25a를 참조하면, 도 23a 및 도 23b에 관하여 설명된 바와 같이, 강화된 노트 생성 프로세스를 개시하기 위해 사용자는 강화된 노트 아이콘(2504)를 협업 워크스페이스(2502) 내의 원하는 위치로 드래그할 수 있다. 강화된 노트가 생성되면, 사용자가 강화된 노트 아이콘(2504)를 드래깅함으로써 명시하는 먼저 검출된 위치가 자동으로 "핀으로 고정"될 수 있다.
도 20으로 돌아가면, 단계(2004)에서, 강화된 노트 데이터 객체, 선택된 위치 및 하나 이상의 커맨드는 로컬 컴퓨팅 장치에 의해 웹 소켓 연결을 통해 서버로 전송된다. 하나 이상의 커맨드는 서버로 하여금 강화된 노트 데이터 객체 및 선택된 위치를 협업 세션 동안 서버로 연결된 모든 컴퓨팅 장치로 전파하도록 구성된다. 하나 이상의 커맨드는 서버로 하여금 각각의 연결된 컴퓨팅 장치(즉, 각각의 컴퓨팅 장치 상의 협업 애플리케이션 및/또는 각각의 컴퓨팅 장치 상의 투명 레이어의 로컬 버전)가 강화된 노트 데이터 객체(관련 콘텐츠 및 설정 포함)에 대응하는 강화된 노트를 선택된 위치에 삽입하도록 명령하게끔 더 구성된다. 예를 들어, 로컬 컴퓨팅 장치로부터 서버로 보내지는 커맨드는 서버로 하여금 추가 커맨드(연결된 컴퓨팅 장치로 하여금 협업 워크스페이스의 로컬 리프리젠테이션 내의 강화된 노트의 사본을 선택된 위치에 삽입 또는 인스턴스화(Instantiate)하도록 함)를 각각의 연결된 장치로 보내도록 할 수 있다. 강화된 노트 데이터 객체 및 선택된 위치를 수신하면, 협업 세션에 연결된 각각의 컴퓨팅 장치는 협업 워크스페이스의 로컬 리프리젠테이션 내의 선택된 위치에 강화된 노트 데이터 객체를 삽입하도록 구성될 수 있다. 각각의 연결된 컴퓨팅 장치 상의 강화된 노트의 각각의 사본은 설정(예: 프라이버시 콘트롤 키, 경보 등) 및 오리지널 강화된 노트로서 (콘텐츠 아이템, 음성 녹음 등과 관련된) 콘텐츠로의 링크를 포함하고, 이는 모두 각각의 연결된 컴퓨팅 장치에 의해 수신되는 강화된 노트 데이터 객체 내에 포함된다.
도 26은 예시적인 실시예에 따라 강화된 노트 데이터 객체를 전파하기 위한 프로세스를 도시한다. 도 26에 도시된 바와 같이, 사용자 1이 컴퓨팅 장치(2601)에서 강화된 노트 데이터 객체를 생성하고 강화된 노트 데이터 객체를 위해 관련된 위치를 선택한 후, 강화된 노트 데이터 객체는 (도 20의 단계(103)에서 검출되는) 위치 정보와 함께 서버(2600)로 보내지며, 이는 강화된 노트 데이터 객체가 협업 워크스페이스 내에 삽입되어야 하고, 서버(2600)로 하여금 협업 세션에 연결된 모든 컴퓨팅 장치(2601-2603)로 선택된 위치 정보 및 강화된 노트 데이터 객체 모두를 전송하도록 하는 커맨드 내에 삽입되어야 한다는 것을 나타낸다.
로컬 컴퓨팅 장치(2601)로부터 서버(2600)로 전송된 후 서버(2600)로부터 모든 컴퓨팅 장치(2601-2603)로 전송되는 강화된 노트 데이터 객체는, 강화된 노트 내에 디스플레이하기 위한 텍스트뿐 아니라 사용자 설정과 구성(예: 프라이버시 콘트롤 키, 경보, 중요도 레벨) 및 강화된 노트와 관련된 임의의 콘텐츠(예: 콘텐츠 파일 또는 음성 녹음)를 포함한다. 강화된 데이터 객체(모든 콘텐츠 및 설정 포함)의 로컬 사본을 최종적으로 저장함으로써, 각각의 사용자는 강화된 데이터 객체와 독립적으로 상호작용할 수 있고, 사용자 상호작용에 응답하여 정보를 제공하는 서버에 의존하지 않음으로써, (각각의 강화된 노트가 협업 워크스페이스의 리프리젠테이션에 걸쳐 동일한 위치에서 나타나기 때문에) 균일한 프로젝트 계획 협업 워크스페이스를 여전히 유지하면서도 상호 응답 시간을 서버 상에서 로딩시키는 것을 향상시킬 수 있다.
선택적으로, 서버는 강화된 노트 데이터 객체 및 위치 정보의 사본을 서버 파일 리포지터리(Repository) 또는 저장소(2604)에 저장할 수 있다. 클라이언트(컴퓨팅 장치(2601-2603)) 중 하나가 협업 세션으로부터 분리되는 경우에, 서버(2600)는 이후 다시 연결되면 다시 클라이언트에게 관련 강화된 노트 데이터 객체 및 위치 정보를 재공급할 수 있다.
도 27은 예시적인 실시예에 따른, 협업 워크스페이스의 다수의 인스턴스 상의 강화된 노트를 도시한다. 도 27에 도시된 바와 같이, 협업 워크스페이스의 각각의 리프리젠테이션(리프리젠테이션(2701, 2701 및 2703) 포함)은 (강화된 노트 데이터 객체의 생성자에 의해 지정되는) 동일한 선택된 위치에서 강화된 노트의 사본을 디스플레이한다. 상기 논의된 바와 같이, 강화된 노트에 대응하는 강화된 노트 데이터 객체는 서버(2700)를 통해 모든 연결된 컴퓨팅 장치로 전송된다. 각각의 리프리젠테이션이 동일한 강화된 노트(사용자 1, 사용자 2 및 사용자 3)가 각각의 강화된 노트가 서로에 대해 독립적으로 상호 작용하는 것으로부터 벗어난다.
도 28 내지 도 32는 예시적인 실시예에 따른, 사용자 상호작용의 예시를 도시한다. 도 28은 "프레젠테이션용 스카이라인의 그림(Picture of Skyline for Presentation)"이라는 디스플레이 텍스트를 가지는 강화된 노트(2800)를 도시하고, 여기서 사용자는 디스플레이 콘트롤 키(2801) 아이콘을 선택했다. 이 같은 선택의 결과로서, 연관된 콘텐츠 파일(그림)이 인접한 콘텐츠 디스플레이 영역(2802) 내에 디스플레이된다.
이전에 논의된 바와 같이, 강화된 노트(2800)를 렌더링하기 전에 연관된 콘텐츠 파일의 타입이 검출되고 디스플레이 콘트롤 키(2801)에 사용되는 아이콘의 타입을 결정하는데 사용될 수 있다. 추가로, 관련 콘텐츠 파일의 타입은 적절한 애플리케이션이 인접한 콘텐츠 디스플레이 영역(2802) 내에서 개시하는지를 판단하는데 사용될 수 있다. 예를 들어, 관련 문서로 인해 인접한 디스플레이 영역(2802) 내에서 워드 프로세싱 프로그램을 개시하게 되고, 관련된 비디오로 인해 인접한 디스플레이 영역 내에서 미디어 플레이어를 개시하게 된다.
사용자는 인접한 콘텐츠 브라우징 콘트롤 키(2803) 중 하나를 이용해 연관된 콘텐츠 파일과 상호 작용할 수 있다. 콘텐츠 브라우징 콘트롤 키(2803)는 사용자로 하여금 콘텐츠 창, 스크롤, 내비게이션을 최대화하도록 하거나 콘텐츠와 상호작용하도록 하고, 콘텐츠에 대한 정보(예: 메타데이터)를 제공한다. 예를 들어, 첨부된 콘텐츠가 비디오면, 사용자는 앞으로 또는 뒤로 빨리 감거나 비디오 내에서 상이한 세그먼트를 건너뛸 수 있다.
콘트롤 키(2801)를 해제하거나 연관된 콘텐츠를 최소화하는 일부 다른 사용자 인터페이스 요소를 선택하면, 강화된 노트는 이후 원래 형태로 되돌아간다(예: 도 24에 도시됨).
도 29는 생성자가 프라이버시 콘트롤 키를 설정하는 강화된 노트(2900)를 도시하고, 이는 프라이버시 콘트롤 키 아이콘(2902)의 디스플레이를 초래한다. 도 29에 도시된 바와 같이, 디스플레이 콘트롤 키(2901)를 선택하면, 이미지를 보기 위해 사용자에게 비밀번호를 입력할 것을 요구하는 프롬프트(2903)가 디스플레이된다. 선택적으로, 사용자는 마찬가지로 프라이버시 콘트롤 키 아이콘(2902)를 선택함으로써 이 같은 프롬프트(2903)를 시작할 수 있다. 사용자가 정확한 비밀번호를 입력함으로써 프라이버시 컨트롤 테스트에 성공적으로 응답하면, 사용자는 관련된 콘텐츠를 도 28에 도시된 것과 유사한 형태로 볼 수 있다.
도 30은 생성자가 중요도 레벨을 높게 설정한 강화된 노트(3000)를 도시한다. 도 30에 도시된 바와 같이, 사용자가 이의 대응하는 중요도 표시자 아이콘(3001)를 선택하면, 프롬프트(3002)가 디스플레이되어 강화된 노트(3000)의 중요도 레벨을 사용자에게 알려준다.
도 31은 생성자가 중요도 레벨(액세스 콘트롤 키에 포함됨)을 높게 설정한 강화된 노트(3100)를 도시하고, 이는 경보에 포함된다. 도 31에 도시된 바와 같이, 사용자가 경보 콘트롤 키 아이콘(3101)를 선택하면, 프롬프트(3102)가 디스플레이되어, 사용자에게 연관된 경보 알림을 공지한다. 이 경우, 경보 알림은 2PM EST까지 강화된 노트를 리뷰하라고 사용자에게 리마인더를 주게끔 1PM EST에 디스플레이되도록 구성되는 메시지다.
도 32는 생성자가 음성 노트를 포함하는 강화된 노트(3200)를 도시한다. 도 32에 도시된 바와 같이, 사용자가 음성 노트 표시자 아이콘(3201)를 선택하면, 콘텐츠 디스플레이 영역(3202)이 다시 재생 가능한 음성 노트와 함께 출력된다. 사용자는 콘텐츠 브라우징 콘트롤 키(3204)를 통해 또는 직접(도면에 도시된 바와 같이 포인팅 장치 또는 손 또는 터치 제스처(3203)를 이용함으로써) 음성 노트를 살펴보고 상호작용할 수 있다. 예를 들어 사용자는 음성 노트의 특정 부분으로 바로 건너뛸 수 있다.
네트워킹된 협업 워크스페이스 내에서 웹 소켓 연결을 통해 강화된 노트 데이터 객체를 전파하기 위한 방법의 일부분으로서 사용자로부터 수신된 입력은, 마우스, 터치 스크린 또는 스타일러스 등과 같은 모든 타입의 포인팅 장치를 통해 수신될 수 있다. 가상 드라이버 및/또는 투명 레이어와 관련된 앞서 설명된 기술은 입력을 검출하는데에 사용될 수 있다. 예를 들어, 입력은 사용자에 의한 포인팅 제스처일 수 있다. 추가로, 상기 설명된 동작(예: 드래그-앤드-드롭 동작, 선택, 해제 또는 다른 입력 또는 입력의 시퀀스)은 가상 드라이버 및/또는 투명 레이어와 관련된 앞서 설명한 기술을 이용해 입력될 수 있다.
하나 이상의 상기 설명된 기술은 하나 이상의 컴퓨터 시스템에서 실행되거나 연루될 수 있다. 도 33은 특화된 컴퓨팅 환경(3300)의 예시를 도시한다. 컴퓨팅 환경(3300)은 은 기술된 실시예(들)의 사용 또는 기능의 범주에 대해 어떠한 제한도 시사하는 것으로 의도되지 않는다.
도 33을 참조하면, 컴퓨팅 환경(3300)은 적어도 하나의 처리 유닛(3310) 및 메모리(3320)를 포함한다. 처리 유닛(3310)은 컴퓨터 실행 가능 명령어를 실행하고, 실제 또는 가상 프로세서일 수 있다. 다중 처리 시스템에서, 다수의 처리 유닛이 컴퓨터 실행 가능 명령어를 실행하여, 처리 전력을 증가시킨다. 메모리(3320)는 휘발성 메모리(예컨대, 레지스터(Register), 캐시, RAM), 비휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등), 또는 이 둘의 일부 조합일 수 있다. 메모리(3320)는 기술된 기법을 구현하는 소프트웨어(3380)를 저장할 수 있다.
컴퓨팅 환경은 추가 특징을 가질 수 있다. 예를 들어, 컴퓨팅 환경(3300)은 저장소(3340), 하나 이상의 입력 장치(3350), 하나 이상의 출력 장치(3360), 및 하나 이상의 통신 연결(3390)을 포함한다. 버스, 제어기, 또는 네트워크 상호연결과 같은 상호연결 메커니즘(3370)이 컴퓨팅 환경(3300)의 구성 요소들을 상호연결한다. 전형적으로, 운영 체제 소프트웨어 또는 펌웨어(미도시)는 컴퓨팅 환경(3300)에서 실행되는 다른 소프트웨어에 대한 운영 환경을 제공하고, 컴퓨팅 환경(3300)의 구성 요소의 활성화를 조정한다.
저장소(3340)는 착탈식 또는 비착탈식일 수 있고, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, CD-RW, DVD, 또는 정보를 저장하는 데 사용될 수 있고 컴퓨팅 환경(3300) 내에서 액세스될 수 있는 임의의 다른 매체일 수 있다. 저장소(3340)는 소프트웨어(3380)에 대한 명령어를 저장할 수 있다.
입력 장치(들)(3350)는 키보드, 마우스, 펜, 트랙볼, 터치 스크린, 또는 게임 제어기와 같은 터치 입력 장치, 음성 입력 장치, 스캐닝 장치, 디지털 카메라, 원격 제어부, 또는 컴퓨팅 환경(3300)에 입력을 제공하는 다른 장치일 수 있다. 출력 장치(들)(3360)는 디스플레이, 텔레비전, 모니터, 프린터, 스피커, 또는 컴퓨팅 환경(3300)으로부터 출력을 제공하는 다른 장치일 수 있다.
통신 연결(들)(3390)은 다른 컴퓨팅 개체(Computing Entity)로의 통신 매체를 통한 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 명령어, 오디오 또는 비디오 정보, 또는 변조된 데이터 신호 내의 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는 신호 내의 정보를 인코딩하기 위한 방식으로 설정 또는 변화된 그의 특성들 중 하나 이상을 갖는 신호이다. 제한이 아닌 예로서, 통신 매체는 전기, 광, RF, 적외선, 음향, 또는 다른 캐리어(Carrier)로 구현되는 유선 또는 무선 기법을 포함한다.
구현예는 컴퓨터 판독 가능 매체의 콘텍스트에서 기술될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 가용 매체이다. 제한이 아닌 예로서, 컴퓨팅 환경(3300) 내에서, 컴퓨터 판독 가능 매체는 메모리(3320), 저장소(3340), 통신 매체, 및 위의 것들 중 임의의 것들의 조합을 포함한다.
물론, 도 33은 식별 용이성만을 위해 컴퓨팅 환경(3300), 디스플레이 장치(3360), 및 입력 장치(3350)를 별개의 장치들로서 도시한다. 컴퓨팅 환경(3300), 디스플레이 장치(3360), 및 입력 장치(3350)는 별개의 장치들일 수 있고(예컨대, 모니터 및 마우스에 유선으로 연결되는 개인용 컴퓨터), 단일 장치 내에 통합될 수 있고(예컨대, 스마트폰 또는 태블릿과 같은, 터치 디스플레이를 갖는 모바일 장치), 또는 임의의 장치 조합일 수 있다(예컨대, 터치 스크린 디스플레이 장치에 동작 가능하게 결합되는 컴퓨팅 장치, 단일 디스플레이 장치 및 입력 장치에 부착되는 복수의 컴퓨팅 장치 등). 컴퓨팅 환경(3300)은 셋톱 박스, 개인용 컴퓨터, 또는 하나 이상의 서버, 예를 들어 네트워킹된 서버의 팜(Farm), 클러스터형 서버 환경, 또는 컴퓨팅 장치의 클라우드 네트워크일 수 있다.
기술된 실시예를 참조하여 본 발명의 원리를 기술하고 예시했지만, 기술된 실시예는 그러한 원리를 벗어나지 않고서 배열 및 세부사항이 수정될 수 있다는 것이 인식될 것이다. 소프트웨어로 도시된 기술된 실시예의 요소는 하드웨어로 구현될 수 있고, 그 역도 성립한다.
본 발명의 원리가 적용될 수 있는 많은 가능한 실시예의 관점에서, 다음의 청구범위 및 그의 등가물의 범주 및 사상 내에 있을 있는 모든 그러한 실시예를 본 발명으로 주장한다.

Claims (30)

  1. 네트워킹된 협업 워크스페이스(Collaboration Workspace)에서 웹 소켓(Web Socket) 연결을 통해 강화된 노트 데이터 객체들을 전파하기 위한 방법에 있어서, 상기 방법은:
    로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 상기 웹 소켓 연결을 통해 다수의 컴퓨팅 장치 상의 다수의 참가자에게 접근 가능하고 서버 상에서 호스팅되는 상기 협업 워크스페이스의 리프리젠테이션(Representation)을 전송하는 단계;
    상기 로컬 컴퓨팅 장치에 의해, 상기 강화된 노트 데이터 객체 - 상기 강화된 노트 데이터 객체는 텍스트, 하나 이상의 사용자 접근 가능 콘트롤 키, 및 적어도 하나의 콘텐츠 파일을 포함하고, 상기 텍스트 및 상기 하나 이상의 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 구성되며, 상기 하나 이상의 사용자 접근 가능 콘트롤 키에서 디스플레이 콘트롤 키의 선택에 응답하여 상기 적어도 하나의 콘텐츠 파일을 열도록 더 구성됨 - 를 생성하는 단계;
    상기 로컬 컴퓨팅 장치에 의해, 상기 강화된 노트 데이터 객체를 상기 협업 워크스페이스의 상기 리프리젠테이션 내의 선택된 위치와 연관시키는 사용자 입력을 검출하는 단계; 및
    상기 로컬 컴퓨팅 장치에 의해, 상기 웹 소켓 연결을 통해 상기 강화된 노트 데이터 객체, 상기 선택된 위치 및 하나 이상의 커맨드(Command) - 상기 하나 이상의 커맨드는 상기 서버로 하여금 상기 강화된 노트 데이터 객체 및 상기 선택된 위치를 상기 다수의 컴퓨팅 장치로 전파하도록 구성됨 - 를 상기 서버로 전송하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 강화된 노트 데이터 객체는 상기 적어도 하나의 콘텐츠 파일과 연관된 애플리케이션을 검출하도록 더 구성되는, 방법.
  3. 제2항에 있어서,
    상기 강화된 노트 데이터 객체는:
    상기 디스플레이 콘트롤 키의 상기 선택을 검출;
    콘텐츠 디스플레이 영역에서 상기 적어도 하나의 콘텐츠 파일과 연관된 상기 애플리케이션을 초기화; 및
    상기 초기화된 애플리케이션에서 상기 적어도 하나의 콘텐츠 파일을 로딩(Loading)함으로써,
    상기 하나 이상의 사용자 접근 가능 콘트롤 키에서 상기 디스플레이 콘트롤 키의 상기 선택에 응답하여 상기 적어도 하나의 콘텐츠 파일을 열도록 구성되는, 방법.
  4. 제3항에 있어서,
    상기 강화된 노트 데이터 객체는 프라이머리(Primary) 디스플레이 영역에 상기 텍스트 및 상기 하나 이상의 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 더 구성되고, 상기 콘텐츠 디스플레이 영역은 상기 프라이머리 디스플레이 영역에 인접하는, 방법.
  5. 제1항에 있어서,
    상기 하나 이상의 사용자 접근 가능 콘트롤 키는 프라이버시 콘트롤 키를 포함하고,
    상기 강화된 노트 데이터 객체는:
    상기 디스플레이 콘트롤 키 또는 상기 프라이버시 콘트롤 키 중 하나의 선택에 응답하여 상기 강화된 노트 데이터 객체와 연관된 임의의 액세스 콘트롤 매커니즘이 있는지 여부를 판단하고;
    상기 적어도 하나의 콘텐츠 파일을 열기 전에 상기 프라이버시 콘트롤 키가 활성화되는지에 대한 판단에 적어도 일부 기반하여 인증 확인을 수행하도록 더 구성되는, 방법.
  6. 제5항에 있어서,
    상기 강화된 노트 데이터 객체는 상기 인증 확인이 실패한 경우 상기 적어도 하나의 콘텐츠 파일로의 액세스를 거절하도록 더 구성되는, 방법.
  7. 제1항에 있어서,
    상기 하나 이상의 사용자 접근 가능 콘트롤 키는 경보 콘트롤 키를 포함하고,
    상기 강화된 노트 데이터 객체는:
    상기 강화된 노트 데이터 객체의 생성자로부터의 상기 경보 콘트롤 키를 통해 경보 시간과 날짜 및 경보 알림의 선택을 수신하고;
    상기 경보 시간과 날짜에 상기 강화된 노트 데이터 객체를 저장하는 임의의 컴퓨팅 장치 상에 상기 경보 알림을 전송하도록 더 구성되는, 방법.
  8. 제1항에 있어서,
    상기 서버는 상기 로컬 컴퓨팅 장치 또는 상기 다수의 컴퓨팅 장치 내의 하나의 컴퓨팅 장치 중 하나를 포함하는, 방법.
  9. 제1항에 있어서,
    상기 다수의 컴퓨팅 장치 중 각각의 컴퓨팅 장치는 상기 강화된 노트 데이터 객체를 상기 선택된 위치에 있는 상기 협업 워크스페이스의 로컬 리프리젠테이션으로 삽입하도록 구성되는, 방법.
  10. 제1항에 있어서,
    상기 강화된 노트 데이터 객체는, 상기 강화된 노트 데이터 객체의 의해 규정되는 강화된 노트 사용자 인터페이스 요소 내에 상기 텍스트 및 상기 하나 이상의 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 구성되는, 방법.
  11. 네트워킹된 협업 워크스페이스(Collaboration Workspace)에서 웹 소켓(Web Socket) 연결을 통해 강화된 노트 데이터 객체들을 전파하기 위한 로컬 컴퓨팅 장치에 있어서, 상기 로컬 컴퓨팅 장치는:
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서 중 적어도 하나에 의해 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나에 작동 가능하게 결합되고 그 안에 인스트럭션을 가지는 하나 이상의 메모리를 포함하되,
    상기 하나 이상의 메모리는 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
    상기 로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 상기 웹 소켓 연결을 통해 다수의 컴퓨팅 장치 상의 다수의 참가자에게 접근 가능하고 서버 상에서 호스팅되는 상기 협업 워크스페이스의 리프리젠테이션(Representation)을 전송하는 프로세스;
    상기 강화된 노트 데이터 객체 - 상기 강화된 노트 데이터 객체는 텍스트, 하나 이상의 사용자 접근 가능 콘트롤 키, 및 적어도 하나의 콘텐츠 파일을 포함하고, 상기 텍스트 및 상기 하나 이상의 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 구성되며, 상기 하나 이상의 사용자 접근 가능 콘트롤 키에서 디스플레이 콘트롤 키의 선택에 응답하여 상기 적어도 하나의 콘텐츠 파일을 열도록 더 구성됨 - 를 생성하는 프로세스;
    상기 강화된 노트 데이터 객체를 상기 협업 워크스페이스의 상기 리프리젠테이션 내에 선택된 위치와 연관시키는 사용자 입력을 검출하는 프로세스; 및
    상기 웹 소켓 연결을 통해 상기 강화된 노트 데이터 객체, 상기 선택된 위치 및 하나 이상의 커맨드(Command) - 상기 하나 이상의 커맨드는 상기 서버로 하여금 상기 강화된 노트 데이터 객체 및 상기 선택된 위치를 상기 다수의 컴퓨팅 장치로 전파하도록 구성됨 - 를 상기 서버로 전송하는 프로세스를 수행하도록 하는, 로컬 컴퓨팅 장치.
  12. 제11항에 있어서,
    상기 강화된 노트 데이터 객체는 상기 적어도 하나의 콘텐츠 파일과 연관된 애플리케이션을 검출하도록 더 구성되는, 로컬 컴퓨팅 장치.
  13. 제11항에 있어서,
    상기 강화된 노트 데이터 객체는:
    상기 디스플레이 콘트롤 키의 상기 선택을 검출;
    콘텐츠 디스플레이 영역에서 상기 적어도 하나의 콘텐츠 파일과 연관된 애플리케이션을 초기화; 및
    상기 초기화된 애플리케이션에서 상기 적어도 하나의 콘텐츠 파일을 로딩(Loading)함으로써,
    상기 하나 이상의 사용자 접근 가능 콘트롤 키에서 상기 디스플레이 콘트롤 키의 상기 선택에 응답하여 상기 적어도 하나의 콘텐츠 파일을 열도록 구성되는, 로컬 컴퓨팅 장치.
  14. 제13항에 있어서,
    상기 강화된 노트 데이터 객체는 프라이머리(Primary) 디스플레이 영역에 상기 텍스트 및 상기 하나 이상의 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 더 구성되고, 상기 콘텐츠 디스플레이 영역은 상기 프라이머리 디스플레이 영역에 인접하는, 로컬 컴퓨팅 장치.
  15. 제11항에 있어서,
    상기 하나 이상의 사용자 접근 가능 콘트롤 키는 프라이버시 콘트롤 키를 포함하고,
    상기 강화된 노트 데이터 객체는:
    상기 디스플레이 콘트롤 키 또는 상기 프라이버시 콘트롤 키 중 하나의 선택에 응답하여 상기 강화된 노트 데이터 객체와 연관된 임의의 액세스 콘트롤 매커니즘이 있는지 여부를 판단하고;
    상기 적어도 하나의 콘텐츠 파일을 열기 전에 상기 프라이버시 콘트롤 키가 활성화되는지에 대한 판단에 적어도 일부 기반하여 인증 확인을 수행하도록 더 구성되는, 로컬 컴퓨팅 장치.
  16. 제15항에 있어서,
    상기 강화된 노트 데이터 객체는 상기 인증 확인이 실패한 경우 상기 적어도 하나의 콘텐츠 파일로의 액세스를 거절하도록 더 구성되는, 로컬 컴퓨팅 장치.
  17. 제11항에 있어서,
    상기 하나 이상의 사용자 접근 가능 콘트롤 키는 경보 콘트롤 키를 포함하고,
    상기 강화된 노트 데이터 객체는:
    상기 강화된 노트 데이터 객체의 생성자로부터의 상기 경보 콘트롤 키를 통해 경보 시간과 날짜 및 경보 알림의 선택을 수신하고;
    상기 경보 시간과 날짜에 상기 강화된 노트 데이터 객체를 저장하는 임의의 컴퓨팅 장치 상에 상기 경보 알림을 전송하도록 더 구성되는, 로컬 컴퓨팅 장치.
  18. 제11항에 있어서,
    상기 서버는 상기 로컬 컴퓨팅 장치 또는 상기 다수의 컴퓨팅 장치 내의 하나의 컴퓨팅 장치 중 하나를 포함하는, 로컬 컴퓨팅 장치.
  19. 제11항에 있어서,
    상기 다수의 컴퓨팅 장치 중 각각의 컴퓨팅 장치는 상기 강화된 노트 데이터 객체를 상기 선택된 위치에 있는 상기 협업 워크스페이스의 로컬 리프리젠테이션으로 삽입하도록 구성되는, 로컬 컴퓨팅 장치.
  20. 제11항에 있어서,
    상기 강화된 노트 데이터 객체는, 상기 강화된 노트 데이터 객체의 의해 규정되는 강화된 노트 사용자 인터페이스 요소 내에 상기 텍스트 및 상기 하나 이상의 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 구성되는, 로컬 컴퓨팅 장치.
  21. 로컬 컴퓨팅 장치에 의해 실행될 때, 컴퓨터 판독 가능 인스트럭션을 저장하는 적어도 하나의 비일시적 컴퓨터 판독 가능 매체에 있어서,
    상기 비일시적 컴퓨터 판독 가능 매체는 상기 로컬 컴퓨팅 장치로 하여금:
    로컬 컴퓨팅 장치의 사용자 인터페이스 상에서, 상기 웹 소켓 연결을 통해 다수의 컴퓨팅 장치 상의 다수의 참가자에게 접근 가능하고 서버 상에서 호스팅되는 상기 협업 워크스페이스의 리프리젠테이션(Representation)을 전송하는 프로세스;
    상기 로컬 컴퓨팅 장치에 의해, 강화된 노트 데이터 객체 - 상기 강화된 노트 데이터 객체는 텍스트, 하나 이상의 사용자 접근 가능 콘트롤 키, 및 적어도 하나의 콘텐츠 파일을 포함하고, 상기 텍스트 및 상기 하나 이상의 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 구성되고, 상기 하나 이상의 사용자 접근 가능 콘트롤 키에서 디스플레이 콘트롤 키의 선택에 응답하여 상기 적어도 하나의 콘텐츠 파일을 열도록 더 구성됨 - 를 생성하는 프로세스;
    상기 로컬 컴퓨팅 장치에 의해, 상기 강화된 노트 데이터 객체를 상기 협업 워크스페이스의 상기 리프리젠테이션 내의 선택된 위치와 연관시키는 사용자 입력을 검출하는 프로세스; 및
    상기 로컬 컴퓨팅 장치에 의해, 상기 웹 소켓 연결을 통해 상기 강화된 노트 데이터 객체, 상기 선택된 위치 및 하나 이상의 커맨드(Command) - 상기 하나 이상의 커맨드는 상기 서버로 하여금 상기 강화된 노트 데이터 객체 및 상기 선택된 위치를 상기 다수의 컴퓨팅 장치로 전파하도록 구성됨 - 를 상기 서버로 전송하는 프로세스를 수행하도록 하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
  22. 제21항에 있어서,
    상기 강화된 노트 데이터 객체는 상기 적어도 하나의 콘텐츠 파일과 연관된 애플리케이션을 검출하도록 더 구성된, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
  23. 제22항에 있어서,
    상기 강화된 노트 데이터 객체는:
    상기 디스플레이 콘트롤 키의 상기 선택을 검출;
    콘텐츠 디스플레이 영역에서 상기 적어도 하나의 콘텐츠 파일과 연관된 상기 애플리케이션을 초기화; 및
    상기 초기화된 애플리케이션에서 상기 적어도 하나의 콘텐츠 파일을 로딩(Loading)함으로써,
    상기 하나 이상의 사용자 접근 가능 콘트롤 키에서 상기 디스플레이 콘트롤 키의 상기 선택에 응답하여 상기 적어도 하나의 콘텐츠 파일을 열도록 구성되는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
  24. 제23항에 있어서,
    상기 강화된 노트 데이터 객체는 프라이머리(Primary) 디스플레이 영역에 상기 텍스트 및 상기 하나 이상의 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 더 구성되고, 상기 콘텐츠 디스플레이 영역은 상기 프라이머리 디스플레이 영역에 인접하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
  25. 제21항에 있어서,
    상기 하나 이상의 사용자 접근 가능 콘트롤 키는 프라이버시 콘트롤 키를 포함하고, 상기 강화된 노트 데이터 객체는:
    상기 디스플레이 콘트롤 키 또는 상기 프라이버시 콘트롤 키 중 하나의 선택에 응답하여 상기 강화된 노트 데이터 객체와 연관된 임의의 액세스 콘트롤 키 매커니즘이 있는지 여부를 판단하고;
    상기 적어도 하나의 콘텐츠 파일을 열기 전에 상기 프라이버시 콘트롤 키가 활성화되는지에 대한 판단에 적어도 일부 기반으로 인증 확인을 수행하도록 더 구성되는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
  26. 제25항에 있어서,
    상기 강화된 노트 데이터 객체는 상기 인증 확인이 실패한 경우 상기 적어도 하나의 콘텐츠 파일로의 액세스를 거절하도록 더 구성되는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
  27. 제21항에 있어서,
    상기 하나 이상의 사용자 접근 가능 콘트롤 키는 경보 콘트롤 키를 포함하고,
    상기 강화된 노트 데이터 객체는:
    상기 강화된 노트 데이터 객체의 생성자로부터의 상기 경보 콘트롤 키를 통해 경보 시간과 날짜 및 경보 알림의 선택을 수신하고;
    상기 경보 시간과 날짜에 상기 강화된 노트 데이터 객체를 저장하는 임의의 컴퓨팅 장치 상에 상기 경보 알림을 전송하도록 더 구성되는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
  28. 제21항에 있어서,
    상기 서버는 상기 다수의 컴퓨팅 장치 내의 상기 로컬 컴퓨팅 장치 또는 하나의 컴퓨팅 장치 중 하나를 포함하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
  29. 제21항에 있어서,
    상기 다수의 컴퓨팅 장치 중 각각의 컴퓨팅 장치는 상기 강화된 노트 데이터 객체를 상기 선택된 위치에 있는 상기 협업 워크스페이스의 로컬 리프리젠테이션으로 삽입하도록 구성되는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
  30. 제21항에 있어서,
    상기 강화된 노트 데이터 객체는, 상기 강화된 노트 데이터 객체의 의해 규정되는 강화된 노트 사용자 인터페이스 요소 내에 상기 텍스트 및 상기 하나 이상의 사용자 접근 가능 콘트롤 키를 디스플레이 하도록 구성되는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
KR1020217006164A 2018-08-03 2019-08-01 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 강화된 노트 데이터 객체를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체 KR20210038660A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/054,328 US20190065012A1 (en) 2017-08-24 2018-08-03 Method, apparatus, and computer-readable medium for propagating enriched note data objects over a web socket connection in a networked collaboration workspace
US16/054,328 2018-08-03
PCT/EP2019/070822 WO2020025769A1 (en) 2018-08-03 2019-08-01 Method, apparatus, and computer-readable medium for propagating enriched note data objects over a web socket connection in a networked collaboration workspace

Publications (1)

Publication Number Publication Date
KR20210038660A true KR20210038660A (ko) 2021-04-07

Family

ID=67660515

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217006164A KR20210038660A (ko) 2018-08-03 2019-08-01 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 강화된 노트 데이터 객체를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체

Country Status (6)

Country Link
EP (1) EP3837606A1 (ko)
JP (1) JP2021533456A (ko)
KR (1) KR20210038660A (ko)
CN (1) CN112805685A (ko)
BR (1) BR112021001995A2 (ko)
WO (1) WO2020025769A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625094B (zh) * 2020-05-25 2023-07-14 阿波罗智联(北京)科技有限公司 智能后视镜的交互方法、装置、电子设备和存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060059235A1 (en) * 2004-09-15 2006-03-16 International Business Machines Corporation System and method for multi-threaded discussion within a single instant messenger pane
CN100579053C (zh) * 2007-05-31 2010-01-06 北大方正集团有限公司 互联网批注共享、管理和下载的方法
US9449303B2 (en) * 2012-01-19 2016-09-20 Microsoft Technology Licensing, Llc Notebook driven accumulation of meeting documentation and notations
US20140208220A1 (en) * 2012-03-01 2014-07-24 Aditya Watal System and Method for Contextual and Collaborative Knowledge Generation and Management Through an Integrated Online-Offline Workspace
CN103731458B (zh) * 2012-10-15 2017-10-31 金蝶软件(中国)有限公司 终端间分享文件的方法及系统
US10235383B2 (en) * 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9961030B2 (en) * 2015-06-24 2018-05-01 Private Giant Method and system for sender-controlled messaging and content sharing
DE112016003352T5 (de) * 2015-07-24 2018-04-12 Max Andaker Reibungslose Benutzeroberfläche für virtuelle Kollaboration, Kommunikation und Cloud-Computing
US20170230466A1 (en) * 2016-02-05 2017-08-10 Prysm, Inc. Cross Platform Annotation Syncing
US10586211B2 (en) * 2016-06-17 2020-03-10 Microsoft Technology Licensing, Llc Shared collaboration objects

Also Published As

Publication number Publication date
BR112021001995A2 (pt) 2021-04-27
CN112805685A (zh) 2021-05-14
WO2020025769A1 (en) 2020-02-06
EP3837606A1 (en) 2021-06-23
JP2021533456A (ja) 2021-12-02

Similar Documents

Publication Publication Date Title
US20190065012A1 (en) Method, apparatus, and computer-readable medium for propagating enriched note data objects over a web socket connection in a networked collaboration workspace
US11483376B2 (en) Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
JP6182689B1 (ja) フォルダを管理するためのデバイス、方法及びグラフィカル・ユーザインタフェース
US20220382505A1 (en) Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
JP5829996B2 (ja) ユーザインタフェースとの制限対話を設定するためのデバイス、方法及びグラフィカルユーザインタフェース
JP5442727B2 (ja) ユーザーインターフェイス表示上での教示動画の表示
WO2020006669A1 (zh) 一种图标切换方法、显示gui的方法及电子设备
BR112020003524A2 (pt) método, aparelho e meio legível por computador para implementação de uma interface universal de hardware-software
KR20210038660A (ko) 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 강화된 노트 데이터 객체를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체
EP3765973A1 (en) Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
US11334220B2 (en) Method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaboration workspace
EP3803558A1 (en) Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
KR20210010567A (ko) 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체