在 Windows 10 机器上,我发现无法将Shift+发送Tab到(至少某些)应用程序,例如 Notepad++。
我正在通过 VNC 会话远程使用该机器(Xubuntu 下的 Remmina 客户端,Windows 机器正在运行 TightVNC 服务器),我原本的想法是快捷方式由 VNC 客户端或本地操作系统处理,但使用远程 Xubuntu 机器进行了相同的测试做发送Shift+Tab通过;例如,我可以在 Xubuntu 的默认文本编辑器 Mousepad 中取消缩进一行。
Windows 10 中是否存在设置或快捷方式导致Shift+Tab远离 Notepad++?
任何有关如何调试此问题的信息也将不胜感激。
答案1
以下解决方案为用户解决了该问题。问题在于Shift+的组合基本上Tab 不是唯一的,在传输到服务器时可能会出错。在非 Linux 和 Linux 计算机之间使用 VNC 时可能会出现此问题。
同样的问题也出现在这篇文章中 使用 Windows VNC 客户端的 Alt-Gr 来访问 vino。尽管始于 2007 年, 丹·温希普 (Dan Winship) 的回答 仍然适用:
问题在于服务器端(运行 vino 的机器)认为 Tab 键上有两个不同的键盘符号(分别是 Tab 和 ISO_Left_Tab),而客户端认为它只有一个键盘符号,因此期望 Shift+Tab 的处理方式与 Shift+Up Arrow 相同。
(我假设客户端是非Linux机器?)
我认为没有“干净”的办法可以解决这个问题;客户端和服务器都表现得合理,这只是协议中的一个缺陷。唯一的解决办法是在代码中对 Tab 键进行特殊处理。如果您想建议这样做,您可能应该提交一个新的错误(并参考此错误中的注释)。
你可以通过运行
xmodmap -e 'keycode 23 = Tab'
(在 vino 盒子上)。这似乎不会干扰普通的 gtk 操作,因此一直这样做可能是安全的。(例如,放入
'keycode 23 = Tab'
或~/.xmodmap
或~/.Xmodmap
其他东西可能会导致它自动被评估,具体取决于您的发行版)
在最近的帖子中 在 Windows 中使用真正的 VNC 查看器访问 Ubuntu 时,Shift + 特殊键不起作用 使用相同的方法来修复问题:
在 Ubuntu 终端中运行:
xmodmap -e 'keycode 23 = Tab'
编辑:使修复永久运行
sudo vim /usr/share/X11/xkb/symbols/pc
并更改行
key <TAB> { [ Tab, ISO_Left_Tab ] };
到
key <TAB> { [ Tab ] };
之后重新启动。