一种在linux桌面操作系统下实现投影模式切换的方法

文档序号:6400440阅读:958来源:国知局
专利名称:一种在linux桌面操作系统下实现投影模式切换的方法
技术领域
本发明涉及计算机技术领域,具体地说,涉及一种用于在Linux桌面操作系统下实现投影模式切换的方法。
背景技术
在现有龙芯Linux操作系统下,系统自带的显示器管理工具不能很好地切换屏幕的显示模式,对用户专业技能的要求较高,操作起来也比较繁琐。投影切换的含义是当用户进入桌面操作系统的图形界面之后,通过符合VGA(Video Graphics Array,视频图形矩阵)标准的显卡接口或者符合HDMI (High Definition Multimedia Interface,高清多媒体接口)标准的接口连接投影仪或者其他显示器,将电脑屏幕上的图形内容投影到大屏幕上进行展示的操作。此外,现有龙芯Linux操作系统也不支持投影仪插拔后自动开启调节窗口的功倉泛。在现有技术中,可采用例如GNOME系统自带显示器管理工具的实现方案来解决这些问题中的一些。GNOME是一种让使用者容易操作和设定电脑环境的工具,GNOME包含了用来启动此程序和显示目前的状态的面板(Panel)、桌面(应用程序和资料放置的地方)及一系列的标准桌面工具和应用程序,并且能让各个应用程序都能正常地运作。不管之前使用何种操作系统,都能轻易地使用GNOME功能强大的图形接口工具。该方案通过在程序初始化的时候,探测所有已经连接到计算机的显示器,然后把探测到的显示器表示为红色矩形方格,在每个矩形方格的中间标注该显示器的尺寸、型号信息。用户用鼠标点选这些表示矩形的方格,选中一个方格之后,右侧显示相应显示的参数(启动关闭、分辨率、刷新率、旋转),同时用户可以自行修改这些参数,从而实现调整不同显示器参数以到达切换投影模式的目的。然而,如果采用这种方案,用户必须先连接投影仪。根据窗口上显示出来的显示器信息(红色矩形方格),找出哪个对应于计算机的主屏幕,哪个对应于投影仪。龙芯桌面操作系统建立在Gnome桌面环境之上,自带的显示器管理工具也包含投影切换的功能。但是,该软件以显示器为核心概念,并没有“模式”的概念。它把投影仪识别为显示器,按照管理显示器的方法来管理投影仪。因此,需要配置的参数较多,操作不够简便,甚至让用户无从下手。因此,总得来说,目前现有技术还存在以下缺点:1、没有内置一套比较合理的显示器参数配置方案,需要手动调整;2、不能根据外接显示器的接口状态动态判断投影仪是否已经接上;3、龙芯系统的显卡驱动程序对Xorg协议的支持不够完善,需要采用特殊手段调整分辨率
发明内容
本发明针对在现有龙芯Linux操作系统下,系统自带的显示器管理工具不能很好地切换屏幕的显示模式、不支持投影仪插拔后自动开启调节窗口的问题,提出了可在龙芯Linux操作系统中实现多个显示模式之间随意切换的方法,所述方法包括以下步骤:S101、检测计算机的CPU内核参数,并基于所述CPU内核参数检测计算机所连接的显示设备的状态;S102、基于所述显示设备的状态判断所述显示设备中是否包括有投影仪,如果包括投影仪,则执行步骤S103,如果没有,则返回到步骤SlOl ;S103、创建包含多个投影模式选项的图形用户界面,并将当前投影模式默认为系统前一次设置的投影模式,其中每个投影模式选项对应一组显示设置参数;S104、调用多显示输出命令XRandR,根据在所述图形用户界面上的用户所选择的投影模式选项所对应的显示设置参数来调整所述命令中的参数,以实现投影模式的自动切换。根据本发明的一个实施例,检测计算机的CPU内核参数包括,检测所述CPU是否属于龙芯系列的CPU ;如果否,则退出处理,如果是,继续执行步骤S102。根据本发明的一个实施例,在执行步骤S103之前,初始化创建图形用户界面的开发环境。根据本发明的一个实施例,所述多个投影模式包括仅计算机模式、复制模式、扩展模式以及仅投影仪模式。根据本发明的一个实施例,在步骤S103中,通过以下步骤来获取前一次设置的投影模式:S103a、检测是否存在包含有上次设置的投影模式的信息的文件;S103b、如果存在,则根据上次设置的投影模式的信息来配置当前投影模式,如果不存在,则调用多显示输出命令XRandR来过滤并保存所有已连接的显示设备的信息;S103c、列出所有已连接的显示设备的信息,为各个已连接的显示设备分配可支持的显示设置参数组。根据本发明的一个实施例,在执行所述步骤S104时,通过XRandR命令得到所有已连接的显示设备的编号,运行将所述编号作为其参数的XRandR命令,以获得对应于所述编号的显示设备所支持的分辨率参数。根据本发明的一个实施例,在步骤S104中,如果用户选择仅计算机模式,则关闭投影仪的输出,同时打开显示设备的输出并保存显示设备接口在当前模式下的显示设置参数。根据本发明的一个实施例,在步骤S104中,如果用户选择复制模式,则还包括以下步骤:S104a、先获得目前主显示设备的分辨率参数,然后从投影仪能够支持的显示设置参数组中选择与主显示设备分辨率匹配的分辨率参数;S104b、如果存在匹配的分辨率参数,则调用多显示输出命令XRandR,把投影仪设置为该相同的分辨率参数;S104c、如果不存在相同的分辨率参数,则解析主显示设备的分辨率参数,然后把所解析的分辨率参数传递给协同视频计时标准CVT例程,由所述协同视频计时标准CVT例程生成该主显示设备的各项参数,所述参数包括刷新率、垂直扫描速度、水平扫描速度、RGB颜色;S104d、基于该主显示设备的各项参数调用多显示输出命令XRrandR,在投影仪的显示设置参数组中临时增加与主显示设备匹配的分辨率参数;S104e、再次调用多显示输出命令XRandR,基于此临时的分辨率参数设置投影仪。根据本发明的一个实施例,在步骤S104中,如果用户选择扩展模式,则还包括以下步骤:S104f、将投影仪的屏幕接口调整为自动模式,在自动模式下,由桌面操作系统自动为投影仪选择合适的分辨率参数;S104g、解析出自动模式下所选择的分辨率参数,基于该分辨率参数和用于将投影仪中显示的内容设置为显示主屏幕一侧的参数调用多显示输出命令XrandR。根据本发明的一个实施例,在步骤S104中,如果用户选择仅投影仪模式,则关闭主显示设备的输出,打开投影仪的输出。本发明带来了以下有益效果:用户可以在4种投影模式中任意选择,每种投影模式对应一套预置的显示参数。通过简化的图形将结果反馈给用户,大大简化了操作,提高了桌面操作系统的易用性。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。


图1是根据本发明的一个实施例在Linux环境下的桌面操作系统进行投影模式切换的方法流程图;图2是根据本发明的方法创建的供用户选择投影模式的图形用户界面;图3是根据本发明的一个实施例获取系统前一次设置的投影模式的方法流程图;图4是根据本发明实现投影模式为复制模式的方法流程图;图5是根据本发明实现投影模式为扩展模式的方法流程图。
具体实施例方式以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。本发明是在采用了通用CPU龙芯的Linux操作系统上进行开发的。自从中国科学院计算所自主研发了通用CPU龙芯(英文名:L00ngS0n,旧称G0DS0N1)后,目前已得到广泛应用。其采用RISC简单指令集,类似于MIPS指令集。龙芯I号的频率为266MHz,最早在2002年开始使用。龙芯2号的频率最高为1GHz。龙芯3A是首款国产商用4核处理器,它的工作频率为900MHz IGHz。龙芯3A的峰值计算能力达到16GFLOPS。龙芯3B是首款国产商用8核处理器,主频达到1GHz,支持向量运算加速,峰值计算能力达到128GFLOPS,具有很高的功耗性能比。但是,与X86CPU相比,采用龙芯的计算机操作系统还有许多方面的技术比较弱。t:匕如,龙芯CPU平台上的Linux显卡驱动程序与X86CPU的显卡驱动程序相比,在功能和可靠性方面都比较弱。此外,设置显示器的分辨率时的局限较多,甚至有部分重要功能缺失,导致插入投影仪接口之后不能正确匹配投影仪和显示器的分辨率,影响整个桌面内容的正
常显示。在一个实例中,采用市面上销售的由中科院和江苏梦蓝合资生产的龙梦3A便携式计算机作为实现本发明方法的平台。该便携式计算机上有三个接口,其中LVDS为主显示接口的名称,代表便携式计算机的主屏幕,VGA为第一个辅显示接口的名称,DVI为第二个辅显示接口的名称。但是本发明并不局限于该型号的计算机。只要该计算机能够支持多屏幕显示并安装了 Linux操作系统便可以实现本发明。如图1所示,其中显示了根据本发明的一个实施例在Linux环境下的桌面操作系统进行投影模式切换的方法流程图。在该方法中,首先进行系统检测操作,执行步骤S101。在该步骤中,检测系统的CPU内核参数,并基于CPU内核参数检测系统所连接的显示设备的状态。检测系统的CPU内核参数包括检测CPU是否属于龙芯系列的CPU。如果否,则不进行任何操作,退出程序处理。此外,根据本发明的一个具体实施例,还检测该计算机系统是否支持多屏幕显示。如不支持多屏幕显示,则退出程序处理。如果CPU是龙芯系列且系统支持多屏幕显示,则进一步检测计算机系统上所连接的显示设备的状态,例如获取显示设备的信息如显示器名称、适用的分辨率参数等。显示器名称例如为LVDS、VGA等。LVDS —般指便携式计算机的主屏幕显示器,而VGA 一般指台式计算机的主屏幕显示器或投影仪。在步骤S102中,基于检测显示设备的状态信息判断是否包括投影仪。统计当前已连接的显示设备的个数是否与原来的显示设备个数相同,如果相同则等待一段时间,例如2秒钟,之后继续执行步骤S101。如果不同,则说明包括投影仪,执行步骤S103。或者,在最简单的情况下,计算此时已连接的显示设备的数量,根据这个数量是否等于2来判断投影仪是否已连接。如果投影仪未连接,则根据本发明的一个实施例,程序不作任何处理,将下文中描述的投影模式选择按钮保持为用户现在所选择的模式。如果投影仪连接上了,则根据用户的选择执行投影模式切换操作处理。具体的操作下文将会有详细描述。在步骤S103中,创建包含多个投影模式选项的图形用户界面,并将当前投影模式默认为系统前一次设置的投影模式,其中每个投影模式选项对应一组显示设置参数。在一个具体实施例中,在创建多个投影模式选项的界面之前先初始化创建图形用户界面开发环境。例如,初始化X Window System中的图形库,即gtk环境。创建成的图形界面如图2所示,包括仅计算机模式、复制模式、扩展模式以及仅投影仪模式四个按钮。在程序中分别用参数(O,1,2,3)来对应于这些模式。具体说,仅计算机模式(O):关闭投影仪的显示,只保留计算机主屏幕的显示。复制模式(I):将计算机主屏幕的显示内容映射到投影仪上。扩展屏模式(2):将投影仪当作一个扩展屏幕,可以容纳多余的窗口,其显示的内容与主屏幕可以不一致。仅投影仪模式(3):关闭计算机的主屏幕,打开投影仪的输出。如图3所示,其中显示了如何获取系统前一次设置的投影模式的方法流程图。在步骤S103a中,检测是否存在包含有上次设置的投影模式的信息的文件。可以检测用户的主目录下是否存在后缀名为.gxrandr的文件,该文件中包含了上次设置的投影模式的显示设置参数信息(例如,投影仪的启动关闭、分辨率、刷新率、旋转)。在步骤S103b中,在判断的结果是肯定的情况下,即存在这样的文件时,根据上次设置的投影模式的信息来配置系统的当前投影模式。如果不存在这样的文件,则调用多显示输出命令XRandR来过滤并保存所有已连接的显示设备的信息,从而获得临时的gxrandr文件,保存至/tmp/gxrandr目录下,以便于程序读入显示器名称(LVDS或VGA等)。在一个实施例中,当逐个读入显示器名称之后,如果主屏幕显示器为便携式电脑,而检查发现名称为LVDS的显示器被排在了后面,则把LVDS排列到第一个。XRandR (X Rotate and Reflect Extension,改变大小与旋转扩充)是 Linux 操作系统下提供的多显示输出命令,用来在命令行界面中对Linux系统中的X窗口系统的多屏幕做出一些设定的软件。如图3所示,在步骤S103c中,列出所有已连接的显示设备的信息,为各个已连接的显示设备分配一组可支持的分辨率参数,例如1024x768。将该分辨率参数信息保存至例如目录 /tmp/gxrandr-mode 中。继续参照图1,在步骤S104中,调用多显示输出命令XRandR,根据在图形用户界面上的用户所选择的投影模式选项所对应的一组显示设置参数来调整该命令中的参数,以实现投影模式的自动切换。例如,如果用户选择的投影模式为仅计算机模式,则关闭投影仪的输出,同时打开显示设备的输出并保存显示设备接口在当前模式下的显示设置参数。这时XrandR的命令格式为:xrandr—output LVDS - mode<mode id>—output VGA—off在步骤S104中,如果用户选择的投影模式为复制模式,则还要执行如图4所示的步骤。在步骤S104a中,先获得目前主显示设备的分辨率参数,然后从投影仪能够支持的一组分辨率参数中选择与主显示设备匹配的分辨率参数。在步骤S104b中,如果存在匹配的分辨率参数,则调用多显示输出命令XRandRjE投影仪设置为该相同的分辨率参数。在步骤S104c中,如果不存在相同的分辨率参数,则解析主显示设备的分辨率参数,然后把所解析的分辨率参数传递给协同视频计时标准CVT例程,由CVT例程生成该主显示设备的显示设置参数,这些参数包括刷新率、垂直扫描速度、水平扫描速度、RGB颜色等。当投影仪支持的分辨率不能与显示器目前所使用的分辨率匹配时,调用CVT可以获取一套临时的显示设置参数,然后将该参数传递给投影仪屏幕接口,临时生成一个显示器(投影仪)分辨率模式(该模式对应于一组显示设置参数)。然后,将该分辨率模式应用到投影仪上,从而做到在投影仪的分辨率与计算机的主屏幕分辨率不匹配的情况下,让投影内容与主屏幕的显示内容完全一致。在步骤S104d中,基于该主显示设备的显示设置参数调用多显示输出命令XRrandR,在投影仪的显示设置参数组中临时增加与主显示设备匹配的显示设置参数。在步骤S104e中,再次调用多显示输出命令XRandR,基于此临时增加的显示设置参数(如分辨率参数1024x768)设置投影仪。如图1所示,在步骤S104中,如果用户选择的投影模式为扩展模式,则还包括如图5所示的步骤。在步骤S104f中,将投影仪的屏幕接口调整为自动模式,在自动模式下,由桌面操作系统自动为投影仪选择合适的分辨率参数,而不是由本投影切换程序选择。在步骤S104g中,解析出自动模式下所选择的分辨率参数,基于该分辨率参数和用于将投影仪中显示的内容设置为显示主屏幕一侧的参数调用多显示输出命令XrandR。在步骤S104中,如果用户选择的是仅投影仪模式,则关闭主显示设备的输出,打开投影仪的输出。关闭显示器的命令例如是:xrandr - output LVDS - off ;而打开投影仪的命令例如是:xrandr—output VGA-1—mode〈mode id>〈mode id>中的内容就是模式的ID号。最后,为了进一步优化本发明的切换效果,可以在用户使用鼠标在主界面上点击相应的按钮之后,不立即调用底层的显示器管理接口。而是先将用户图形界面调整为当前显示器设置的状态。等界面显示完成之后,再调用XrandR命令。从而做到在切换显示模式的时候,投影切换程序的主窗口的内容不会发生错位现象,并且在这两个步骤之间可以留下一个回调函数接口,便于今后扩展功能。虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
权利要求
1.一种在Linux桌面操作系统下实现投影模式切换的方法,其特征在于,包括以下步骤: 5101、检测计算机的CPU内核参数,并基于所述CPU内核参数检测计算机所连接的显示设备的状态; 5102、基于所述显示设备的状态判断所述显示设备中是否包括有投影仪,如果包括投影仪,则执行步骤S103,如果没有,则返回到步骤SlOl ; 5103、创建包含多个投影模式选项的图形用户界面,并将当前投影模式默认为系统前一次设置的投影模式,其中每个投影模式选项对应一组显示设置参数;5104、调用多显示输出命令XRandR,根据在所述图形用户界面上的用户所选择的投影模式选项所对应的显示设置参数来调整所述命令中的参数,以实现投影模式的自动切换。
2.如权利要求1所述的方法,其特征在于,所述多个投影模式包括仅计算机模式、复制模式、扩展模式以及仅投影仪模式。
3.如权利要求2所述的方法,其特征在于,检测计算机的CPU内核参数包括,检测所述CPU是否属于龙芯系列的CPU ;如果否,则退出处理,如果是,继续执行步骤S102。
4.如权利要求2所述的方法,其特征在于,在执行步骤S103之前,初始化创建图形用户界面的开发环境。
5.如权利要求2所述的方法,其特征在于,在步骤S103中,通过以下步骤来获取前一次设置的投影模式: S103a、检测是否存在包含有上次设置的投影模式的信息的文件; S103b、如果存在,则根据上次设置的投影模式的信息来配置当前投影模式,如果不存在,则调用多显示输出命令XRandR来过滤并保存所有已连接的显示设备的信息; S103c、列出所有已连接的显示设备的信息,为各个已连接的显示设备分配可支持的显示设置参数组。
6.如权利要求2-5中任一项所述的方法,其特征在于,在执行所述步骤S104时,通过XRandR命令得到所有已连接的显示设备的编号,运行将所述编号作为其参数的XRandR命令,以获得对应于所述编号的显示设备所支持的分辨率参数。
7.如权利要求6所述的方法,其特征在于,在步骤S104中,如果用户选择仅计算机模式,则关闭投影仪的输出,同时打开显示设备的输出并保存显示设备接口在当前模式下的显示设置参数。
8.如权利要求6所述的方法,其特征在于,在步骤S104中,如果用户选择复制模式,则还包括以下步骤: S104a、先获得目前主显示设备的分辨率参数,然后从投影仪能够支持的显示设置参数组中选择与主显示设备分辨率匹配的分辨率参数; S104b、如果存在匹配的分辨率参数,则调用多显示输出命令XRandR,把投影仪设置为该相同的分辨率参数; S104c、如果不存在相 同的分辨率参数,则解析主显示设备的分辨率参数,然后把所解析的分辨率参数传递给协同视频计时标准CVT例程,由所述协同视频计时标准CVT例程生成该主显示设备的各项参数,所述参数包括刷新率、垂直扫描速度、水平扫描速度、RGB颜色;S104d、基于该主显示设备的各项参数调用多显示输出命令XRrandR,在投影仪的显示设置参数组中临时增加与主显示设备匹配的分辨率参数; S104e、再次调用多显示输出命令XRandR,基于此临时的分辨率参数设置投影仪。
9.如权利要求6所述的方法,其特征在于,在步骤S104中,如果用户选择扩展模式,则还包括以下步骤: S104f、将投影仪的屏幕接口调整为自动模式,在自动模式下,由桌面操作系统自动为投影仪选择合适的分辨率参数; S104g、解析出自动模式下所选择的分辨率参数,基于该分辨率参数和用于将投影仪中显示的内容设置为显示主屏幕一侧的参数调用多显示输出命令XrandR。
10.如权利要求6所述的方法,其特征在于,在步骤S104中,如果用户选择仅投影仪模式,则关闭主显示设备的输 出,打开投影仪的输出。
全文摘要
本发明公开了一种在Linux桌面操作系统下实现投影模式切换的方法,包括以下步骤检测计算机的CPU内核参数,并基于所述CPU内核参数检测计算机所连接的显示设备的状态;基于所述显示设备的状态判断所述显示设备中是否包括有投影仪;创建包含多个投影模式选项的图形用户界面,并将当前投影模式默认为系统前一次设置的投影模式,其中每个投影模式选项对应一组显示设置参数;调用多显示输出命令XRandR,根据在所述图形用户界面上的用户所选择的投影模式选项所对应的显示设置参数来调整所述命令中的参数,以实现投影模式的自动切换。这样,用户可以在4种投影模式中任意选择。通过简化的图形将结果反馈给用户,大大简化了操作,提高了桌面操作系统的易用性。
文档编号G06F3/14GK103197907SQ201310085278
公开日2013年7月10日 申请日期2013年3月15日 优先权日2013年3月15日
发明者吴潇 申请人:中标软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1