如何将一个鼠标/键盘对锁定到每个屏幕?


11

使用ATI Catalyst控制中心(fglrx),我通过双头设置了两个桌面(multidesktop选项)。现在,我连接了两个鼠标和键盘(USB),xinput可以将它们分成两个单独的组。我可以将每个组锁定到一个屏幕吗?以及如何才能永久地做到这一点?可替代地,也理解用于将这种“轻量级多座位”配置变成多座位的指令。

这是Catalyst中心设置的xorg.conf:

Section "ServerLayout"
    Identifier     "amdcccle Layout"
    Screen      0  "amdcccle-Screen[1]-0" 0 0
    Screen         "amdcccle-Screen[1]-1" 1400 0
EndSection

Section "Module"
    Load  "glx"
EndSection

Section "Monitor"
    Identifier   "0-CRT1"
    Option      "VendorName" "ATI Proprietary Driver"
    Option      "ModelName" "Generic Autodetecting Monitor"
    Option      "DPMS" "true"
    Option      "PreferredMode" "1400x1050"
    Option      "TargetRefresh" "60"
    Option      "Position" "0 0"
    Option      "Rotate" "normal"
    Option      "Disable" "false"
EndSection

Section "Monitor"
    Identifier   "0-DFP1"
    Option      "VendorName" "ATI Proprietary Driver"
    Option      "ModelName" "Generic Autodetecting Monitor"
    Option      "DPMS" "true"
    Option      "PreferredMode" "1400x1050"
    Option      "TargetRefresh" "60"
    Option      "Position" "0 0"
    Option      "Rotate" "normal"
    Option      "Disable" "false"
EndSection

Section "Device"
    Identifier  "Default Device"
    Driver      "fglrx"
EndSection

Section "Device"
    Identifier  "amdcccle-Device[1]-0"
    Driver      "fglrx"
    Option      "Monitor-DFP1" "0-DFP1"
    BusID       "PCI:1:5:0"
EndSection

Section "Device"
    Identifier  "amdcccle-Device[1]-1"
    Driver      "fglrx"
    Option      "Monitor-CRT1" "0-CRT1"
    BusID       "PCI:1:5:0"
    Screen      1
EndSection

Section "Screen"
    Identifier "Default Screen"
    DefaultDepth     24
    SubSection "Display"
    EndSubSection
EndSection

Section "Screen"
    Identifier "amdcccle-Screen[1]-0"
    Device     "amdcccle-Device[1]-0"
    DefaultDepth     24
    SubSection "Display"
        Viewport   0 0
        Depth     24
    EndSubSection
EndSection

Section "Screen"
    Identifier "amdcccle-Screen[1]-1"
    Device     "amdcccle-Device[1]-1"
    DefaultDepth     24
    SubSection "Display"
        Viewport   0 0
        Depth     24
    EndSubSection
EndSection

Section "DRI"
    Group        "vglusers"
    Mode         0660
EndSection

(后面的条目来自VirtualGL,请参阅此问题,此处应该无关紧要)


谢谢大家的答案。我暂时无法对此进行测试,所以我尚不能接受答案,但是我将奖励tmow的答案,因为它引用了更多内容
Tobias Kienzler

Answers:


5

如果我了解您的需求,则必须将一个屏幕,键盘和一只鼠标绑定到一个ServerLayout上,而将其他屏幕绑定到第二个上。

http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/

Section "ServerLayout"
    Identifier "Layout0"
    Screen 0 "Screen0"
    InputDevice "Mouse0" "CorePointer"
    InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "ServerLayout"
    Identifier "Layout1"
    Screen 0 "Screen1"
    InputDevice "Mouse0" "CorePointer"
    InputDevice "Keyboard0" "CoreKeyboard"
EndSection

据我所知,这是唯一的进行方法。

也可以将Arch作为一个很好的教程:

https://wiki.archlinux.org/index.php/Xorg_multiseat

Linux玩具甚至向您展示如何放置6人座位的设置

http://www.linuxtoys.org/multiseat/multiseat.html


谢谢。但是第一个链接与XFree86有关,它仍然可以与X11一起使用吗?此外,您还错过了粘贴Arch链接的时间...
Tobias Kienzler 2011年

是的,可以肯定,它也适用于X.org。抱歉,我已修复了该错误,实际上该链接应该可以为您更好地解释多座配置
tmow 2011年

3

我忘记的一种有趣的可能性是泰勒·萨博(Tyler Szabo)对我的多座位游戏问题的回答是什么@ gaming.SE建议:

我会使用VMWare。仅使用VMWare播放器(您将需要为单个VM分配鼠标)可能就可以实现此目的,或者您可能需要尝试VMWare工作站(我非常确定它可以运行)。您将需要的硬件/软件如下:

  • 多组USB输入(鼠标/键盘/等)
  • VMWare工作站(或另一个VM系统)的许可证

    1. 照常设置虚拟机,然后关闭电源。
    2. 将USB控制器(可在“编辑虚拟机设置”中找到)配置为“显示所有USB输入设备”
    3. 启动虚拟机。
    4. 在菜单中,导航到VM->可移动设备,然后选择输入以直接定向到VM。(现在,您的键盘/鼠标组合之一将仅定向到该VM。)

此时,您的窗口已完全隔离,只有一组输入会隔离到该窗口。您可以为尽可能多的VM执行此操作(并可以处理尽可能多的输入集-我仅使用2进行了测试)。唯一可能发生的令人讨厌的事情是您只有2组输入(在我的情况下是我的笔记本电脑键盘,我的USB键盘和2个USB鼠标)。我使用USB键盘/鼠标组合设置了一个虚拟机,并将其最大化到一台显示器(您需要VMWare工具来做到这一点)。对于另一个,我的问题是我的鼠标可能从一个VM逃逸到另一个VM(工具的功能)。为了解决这个问题,我将第二个虚拟机置于“激励模式”,从而捕获了“主机”输入;我也可以有第二个键盘/鼠标组合。

最好的是,您甚至不需要多台显示器,可以通过一堆VM +键盘+鼠标来实现分屏显示。


这是到目前为止我唯一能解决的解决方案...
Tobias Kienzler



2

其他答案当然是在正确的道路上,但是MDM / multiseat文档却十分缺乏和分散。这里提供的某些链接已经过时,它们引用了Xorg的前身XFree86。一些挖掘表明,大多数MDM配置都使用Xephyr。

这是构建Multiseat Xephyr配置的方法:

http://en.wikibooks.org/wiki/Multiterminal_with_Xephyr

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.