从Mac OS X Lion到Ubuntu的NX键位映射问题

12
我遇到了NX会话的按键映射混乱的问题。
我使用运行OS X Lion的Macbook Air,使用OpenNX与运行FreeNX的Ubuntu服务器建立会话,会话类型为Gnome。
我的按键映射非常错误(例如,按w会输出=,删除键会输出“,”,按t会输出w)。我尝试过:
xmodmap -pke > nxclient.xmodmap

在客户端上,

xmodmap nxclient.xmodmap

在服务器上恢复了我的许多密钥,但它仍然无法使用。我尝试了Gnome键盘布局,但没有一个可用。这个问题也出现在XFCE会话中。

我会感激任何提示。x2go在客户端和服务器上使用Gnome没有问题。不幸的是,它当前在Mac OS X Lion上无法使用。


我也遇到了同样的问题。你有取得任何进展吗? - user897249
我见过同样的问题。 - zzztimbo
我有同样的问题,但是使用的是x2go而不是OpenNX。我怀疑问题出在XQuartz(OS X X11实现)上。最终我通过使用此帖子中建议的xmodmap -pke,结合@ato的答案来解决了这个问题。尽管如此,这似乎只是一个解决方法,而不是真正的解决方案。 - Simon
@Simon我真的不明白该做什么。 我是在OSX客户端上使用xmodmap -pke创建文件的。然后呢?我该怎么办? - rdbisme
@SolidSnake 你需要将生成的文件,例如 keymap-x2go-osx 文件复制到服务器上,并在启动窗口管理器(WM)或桌面管理器(DM)时调用 xmodmap keymap-x2go-osx。这可以通过 .xinitrc 等方式完成,或者在使用 Gnome、KDE 等时通过不同的方法完成。基本上这取决于你使用的 WM/DM,因此你必须参考你正在使用的 WM/DE 的文档。 - Simon
我确认 xmodmap -pke + @ato 的答案对我不起作用。有时重新启动 x2go 客户端可以解决问题,但这并不是一个解决方案。 - rdbisme
8个回答

3
我发现了一个非常简单的解决方案:断开X2Go会话并重新连接。对我来说,这解决了Mac键盘问题(似乎持续至OS X Lion之后)。

3

我希望提供一个完整的实用解决方案。我在一些Fedora FC20机器上遇到了同样的问题。以下是完整的操作步骤,复制并粘贴即可。

username是您连接需要在其上运行x2go的远程机器的用户名,而machine是该机器的主机名。

注意:如果目标机器上有自定义按键映射,则它们往往会干扰x2go的正常使用。为使此方法有效,我需要重置按键映射并设置为简单的英语(美国)。我曾使用带死键的国际英语(美国),但它无法正常工作...

已在Mac Book Pro Mid 2010、2011和2013上进行了测试。新的Retina机器似乎没有受到此bug的影响。

  1. Create a keymap definition file using xmodmap on your local machine (the client machine), XQuartz might be necessary for having this command available. It's also necessary to use x2go by the way.

    xmodmap -pke > osx-keymap
    

    If xmodmap is not found that means it's not in the PATH, if you installed XQuartz the command should be placed in /usr/X11/bin/xmodmap so instead of using just xmodmap prepend to it the full path.

  2. Append some modifiers to the file (as from the ato answer)

    echo '! Now reset all the modifiers too
    !
    clear shift
    clear lock
    clear control
    clear mod1
    clear mod2
    clear mod3
    clear mod4
    clear mod5
    add shift = Shift_L Shift_R
    add lock = Caps_Lock
    add control = Control_L Control_R
    add mod1 = Alt_L Alt_R
    add mod2 = Meta_L Meta_R' >> osx-keymap
    
  3. Load the file on the machine (username is your username to login on the machines. Change it!)

    scp osx-keymap username@machine:~/.Xmodmap 
    
  4. Create a script on the Desktop that can be run just using the mouse if the keyboard does not work

    ssh username@machine <<"STR"
    echo '#/usr/bin/env bash
    xmodmap ~/.Xmodmap;'>~/Desktop/fix_keyboard.sh; chmod +x ~/Desktop/fix_keyboard.sh
    STR
    
  5. Connect with x2go. Basically it should work.

如果仍然无法工作,请尝试以下方法:
  • 使用 x2go 进行断开和重新连接
  • 使用鼠标单击桌面上的 run_keyboard.sh,并选择运行
  • 像之前一样操作,然后使用 x2go 进行断开和重新连接
  • 不幸的是这不是一个完整的解决方案。有些电脑据说不能与其一起使用

2

在由xmodmap -pke生成的nxclient.xmodmap文件末尾添加以下内容以获取可用布局:

!
! Now reset all the modifiers too
!
clear shift
clear lock
clear control
clear mod1
clear mod2
clear mod3
clear mod4
clear mod5
add shift = Shift_L Shift_R
add lock = Caps_Lock
add control = Control_L Control_R
add mod1 = Alt_L Alt_R
add mod2 = Meta_L Meta_R

2
这个答案是由@Simon在评论中提供的,对我很有用(x2go / Xquartz):
在OSX上执行以下操作:
xmodmap -pke > keymap-x2go-osx.xmodmap
echo "xmodmap ~/keymap-x2go-osx.xmodmap" > x2go-xinit

编辑keymap-x2go-osx.xmodmap文件,并按照@ato的答案添加修改器重置,然后将其复制到虚拟机中:

scp keymap-x2go-osx.xmodmap -P your_port your_ip:/home/your_user/
scp x2go-xinit -P your_port your_ip:/home/your_user/.xinit

0

您可以通过在Xquarts中更改一个设置来简单地解决问题。解决方法如下:

  1. 打开Xquarts
  2. 进入偏好设置
  3. 勾选“跟随系统键盘布局”
  4. 完成!

enter image description here


0

我们遇到了同样的问题,虽然我们在运行类似于gnome2的xfce。我刚找到了一个解决方案(我正在运行Mac OSX 10.9.1):

  • 下载最新的x2go客户端(发布时为4.0.1.3)
  • 设置x2go会话以"自动检测键盘设置"
  • 连接并意识到例如制表符仅在您同时按下控制键时才起作用。
  • 解决方法:编辑“~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml”(在服务器上),并删除设置为“Super + Tab”的条目
  • 享受您的功能键盘

感谢goofrider


0

尝试将您的Shell从tcsh更改为bash。Tcsh会导致键盘问题。


0

对我有效的方法是进入系统菜单 -> 键盘 -> 布局选项卡 -> 键盘型号 -> 苹果 -> Macintosh old。然而,还存在问题。我似乎无法使用 Control+CControl+V 或箭头键。如果您的箭头键可以正常工作,我将不胜感激地知道您的 .nxs 键盘选项是什么样子的。


我刚刚发布的解决方案也解决了箭头键的问题。如果它们对您不起作用,请确保(暂时)删除所有使用箭头键的键盘快捷键。 - Peter Pablo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接