我怎样才能理清Xephyr的键盘映射?


8

当我在X内部启动Xephyr时,我的键盘地图变得很不稳定,主要是因为非打印字符。我不能使用箭头键。根据xev,向下箭头被映射到Super_R。向上箭头是Print Screen。PgDown映射到“菜单”。我的键盘在原始X显示(:0)中工作正常,但在Xephyr子显示(:1)中,没有其他工作正常。

在我的主要X显示器中,我没有任何时髦的xmodmap,我知道。我真正做的就是setxkbmap -option ctrl:swapcaps


你没有使用SSH,对吗?或者换句话说:你使用与Xephyr完全相同的键盘和X服务器就像没有它一样使用?使用旧版时会有更好的效果Xnest吗?我不知道这些知识对你有什么帮助,但也许确实如此。;-)
Arjan 2009年

是的。没有ssh。相同的键盘和服务器。我会试试Xnest。
qedi

Xnest做了同样的事情,但至少它指出了我的解决方案。
qedi

Answers:


5

我发现Bug 19365解决了我的问题:

用-kb启动Xnest / Xephyr。


xmodmap我希望不再需要它们吗?很好找!
Arjan 2009年

(我想你可以在48小时后接受你自己的答案吗?请回来这样做。谢谢!)
Arjan

2

-kb选项在Ubuntu 10.04中不起作用。这对我有用:

Xephyr -keybd ephyr,,,xkbmodel=evdev -ac -screen 800x600 -br -reset -terminate :1


不需要所有空的逗号,只需根据需要列出键盘选项。在我的情况是-keybd ephyr,xkbmodel=evdev,xkblayout='de(nodeadkeys)'
奥拉夫Dietsche

1

经过更多不成功的谷歌搜索,man setxkbmap最后指出了一个更简单的解决方案:

使用xkbcomp

如果您在不同的计算机上运行Xserver和客户端shell,并且这些计算机上的XKB配置文件不同,则可能会出现按型号,布局,选项名称指定键盘映射的问题。[...]您可以通过运行来解决此问题客户端的xkbcomp也是。[..]例如,命令

setxkbmap us -print | xkbcomp - $ DISPLAY

使两个步骤在同一(客户端)机器上运行并将键盘映射加载到服务器中。

那是,

  • 推出Xephyr:

    Xephyr -ac -reset -screen 800x600 -retro :50 &
    

    (无需提供键盘信息)

  • 并配置新的xsession:

    setxkbmap de -print | xkbcomp - :50
    

    (你需要知道你的键盘布局)

注意:setxkbmap是您的朋友,从版本1.2.0开始,可以使用有用的-query选项来帮助您排除键盘故障(请参阅相应的补丁日志)。


这个答案中,我指出如何启动Xephyr以正确配置它。
Alberto

1

您还可以xkbcomp $DISPLAY :1在Xephyr启动的X会话中运行。此命令将键盘映射从当前服务器复制到新创建的。我这样使用它:

Xephyr -screen 800x600 :1 > /dev/null &
sleep 2 && xkbcomp $DISPLAY :1
DISPLAY=":1" ./runcommand

1
setxkbmap -model evdev -print | xkbcomp :100 :200    

如果您使用Xephyr和xpra,并且您的键盘映射不正确。如果您看到奇怪的情况:向下键作为输入(向下箭头作为断行),向上箭头不工作 - 使用该命令设置true xkb map。

:100 - 显示控制xpra的数字

:200 - 显示Xephyr的数字控制

可能是那个命令帮助,如果你使用x2go和配对桌面环境(如果关闭客户端上的x2go设置键盘)


2
请解释这段代码的作用 - 这不是很有帮助。
bwDraco 2015年

0

看来你没有使用SSH,对吧?不过,以下可能会让你开始; 这是我在使用时为了解决键盘问题而乱写的内容ssh -Y

您可以使用以下命令保存当前键盘映射(不运行Xephyr时):

xmodmap -pke > ~/my_xmodmap

然后,在Xephyr中,您可以尝试显式加载:

xmodmap ~/my_xmodmap

使用xev你可以监控键盘事件。这本身可能无济于事,但可能会帮助您搜索更多有用的文章,因为这些文章中有时会提到该命令。


这使得其他一些键工作,但不是全部。xev声称,例如键盘斜线是XF86_Ungrab,而不是KP_Divide,因为它是在我转储和使用的xmodmap文件中定义的。
qedi

0

对我来说(使用德语键盘),它只能将Arjan指向的先前解决方案与panziXephyr键盘布局中指向的解决方案结合使用,即:

启动Xephyr:

Xephyr -keybd ephyr,,,xkbmodel=evdev,xkblayout=de -ac -reset -screen 800x600 -retro :1 &

保存当前键盘映射并启动xterm加载映射:

xmodmap -pke > /tmp/my_modmap ; xterm -display :1 -ls -e "xmodmap /tmp/my_modmap; bash" &

Xephyr服务器: xserver-xephyr 2:1.9.5-1

感谢原创海报!


我找到了一个更好的解决方案:看看我对这个问题的其他答案
Alberto
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.