为什么通过MobaXterm的X11远程打开的Pycharm无法正常输入分号,无法使用方向键?

为什么通过MobaXterm的X11远程打开的Pycharm无法正常输入分号,无法使用方向键?

过去的一年,我在本地Windows电脑上通过MobaXterm远程连接到Linux服务器,并利用MobaXterm的X11功能打开远程服务器的Pycharm进行编程。但是过去一年经常发现无法在Pycharm上敲出单引号或者双引号。也无法使用上下左右方向键,一按方向键就出现22222……4444…… 66666…… 88888等数字一直不停。也不能正常使用delete按键。我一直以为是Pycharm的问题,各种查阅资料,各种提问题,但是一直没有找到问题所在。今天在和实验室其他同学交流时候发现他们也面类类似的问题,于是在头脑风暴的基础上,做了一下午的研究,终于搞清楚了原因所在,彻底解决了这个问题。
太长不看版:打开MobaXterm,点Settings -> Configuration -> X11 -> Keyboard,选择us(美国布局)。

其实主要是因为物理实体键盘有不同的键盘布局,而电脑系统默认设置的键盘布局与实体键盘布局有时候不一致。比如我的键盘上“美式键盘”,电脑系统默认使用“美式-国际键盘”。更夸张的是通过MobaXterm打开远程Linux系统里的Pycharm也有自己的键盘布局。具体如何配置,详情看下文。

为什么打不出引号?

苹果电脑有自己独特的键盘布局,我不太了解,下文适用于Windows和Linux系统。键盘布局(keyboard layout)主要分为2种,英式(UK)和美式(US)。美式键盘和我们中国人用的键盘上一样的(如图1)。


(图1:美式键盘布局)


(图2:英式键盘布局)
英式键盘(如图2)相比于美式键盘主要有这么几个区别:
数量:英式布局的左侧Shift键右边多了一个符号键。所以一般英式布局按键数量总比美式布局多1.
形状:回车键的形状,英式横跨2行。
功能:英国这边用英镑比较多,所以Shift+3输出£。Shift+2输出双引号"。其他按键有微小不同,不过对于中国人来讲一般很少接触到这些不同。

英国人和美国人根据自己的需求分别定制了2种键盘。但是欧洲各国都有自己的语言,每个语言基于26个字母但是又各有不同。比如西班牙语狍轫等没法用原始的英式美式键盘直接输入(对于我们来讲这些是特殊字符,对于人家西班牙人是常用字符,必须想办法从键盘直接输入)。最开始的解决方案是各个国家基于英式和美式发明了自己的键盘布局。比如如图3所示,多了字符Ñ.

类似西班牙这种,各个国家总共发明了几十种不同的键盘布局。这导致了相当多的不方便。欧洲很多人去邻国一趟还得自带键盘这还得了。于是出现了第二种解决方案,就是各个国家还是用英式布局或者美式布局的实体键盘,但是通过操作系统可以选择不同的虚拟键盘布局。为了映射到英式布局和美式布局,分别开发了英式拓展布局(UK-extend)和美式国际布局(US-international)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ROCNbHtp-1603751677626)(在这里插入图片描述]
)
(美国-国际键盘布局)
比如你手里的是个美式键盘,按理说Shift+2会输出@;Shift+3会输出#。但是当你把自己操作系统的键盘布局设置为英式布局(UK)的时候,Shift+2会输出";Shift+3会输出£(读者可以尝试修改自己系统的默认键盘布局试一试,具体修改方法google或者baidu)。这样英国人去了美国不用带自己键盘,也不用更改自己打字习惯。类似的,西班牙人用美式国际布局的效果是这样的:一般来讲,当实体键盘和系统默认虚拟键盘都是美式键盘布局时候,敲击“会输出”;但是一旦你开始把系统改成美式国际布局,那么你按下“这个按键的时候,什么都不会显示,等你再按下一个字母a,就会出现á。西班牙人去了美国就可以通过这种方式打字了。这也就是为什么我自己的电脑之前总打不出来引号反而出现种种奇奇怪怪的字符的原因。
西班牙布局(图3:西班牙键盘布局)

为什么远程Linux服务器打不出引号?为什么远程服务器上运行的Pycharm打不出引号?为什么按上下左右方向键会一直冒出来222厖444厖666等?

通过MobaXterm远程连接到linux服务器的时候,大家会有第一个问题:这MobaXterm里敲出来的字符数由自己的Windows系统的虚拟键盘布局控制的还是由远程服务器系统的虚拟键盘布局控制的?或者说假如本地Windows系统用的美式-国际,远程系统用的美式布局。那么我这MobaXterm按下分号按键再按下o的时候,到底会显示’o呢?还是显示??
答案是:MobaXterm里敲出来的字符都是本地Windows系统的虚拟键盘布局控制的。因为MobaXterm也是Windows系统的一个软件,所以这它里面输入字符是由Windows系统控制的。因此如果你发现自己做MobaXterm的终端输入的字符不是自己想要的你应该更改Windows系统的键盘布局。

第二个问题是:MobaXterm通过勾选X11来可视化显示远程Linux系统的一些软件的时候,这这些软件里打字,由谁负责字符映射?本地Windows系统?还是远程Linux系统?
答案是:都不是!由MobaXterm来控制!Settings -> Configuration -> X11 -> Keyboard。比如我发现我通过MobaXterm打开远程linux系统的Pycharm之后,这Pycharm里敲击引号经常显示不出来。然后我发现MobaXterm这个软件把Keyboard设置为"auto",所以有时候能兼容有时候不能兼容。当我把MobaXterm键盘布局设置为us的时候,Pycharm一切正常了!!!

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值