Dvorak or qwert?

dvorak一段时间了, 当时下决心用的时候也四处比较dvorak和qwert, 现在整理下自己的感想, 如果想转用dvorak的人可以参考.


首先是选之前最容易考察的问题, 这些很大程度上基于个人感受.

因此没法给出明确的答案,只能描述自己的感觉,仅供参考.

 Dvorak对中文怎么样?

翻看dvorak相关的帖子, 经常看到"dvorak是老外发明的,毕竟不是和中国人"这种神论.

 Dvorak的确是基于英语单词统计的,不过与中文的相性没那么差. 因为中文里有不少和英语类似的元素, 

比如现在在打的~ing ~ou(uo)~等等, 这些打起来很快, 不过总体来说 跟qwert差不多, 没有优势但也不能说占劣势.

但是有一点值得注意, 虽然对中文还可以,但是对日语来说dvorak完完全全的就是坑爹货. 起手打字几乎都偏离home row.

并且常用组合难打之极(cy ry ky这种), 因此如果你需要打日语, 或许qwert是比较好的选择.

 Dvorak or Colemak?这两者的简介可以看这里, colemak相比于dvorak对于按键的左右手互换较少,因此用惯了qwert的人可以较快的上手.
不过左手可能工作量会稍重一些.(对于右撇子, 或许不是很好?)
在使用dvorak时你会发现, 刚开始学时最容易弄错的不是键位,而是左右手, 因为dvorak交换了大量左右手的键位,
因此qwert下的那一套肌肉反射都没了意义(顺便提一句, 意义(yiyi)这个词在dvorak下用拼音打起来很屎....)
能否同时掌握qwert和dvorak?能.
不过取决于使用量.如果你一直使用dvorak的话,大约45天不用qwert就没法熟练的touchtype了. 至少我是这样.
因此建议还是坚持使用一种. 而目前键盘也有两种map可切换的种类,自带键盘也不是大问题.就算没有键盘,
也有不少软件可以帮上忙. 这些会在下面说.
到底需不需要dvorak?对于非英语国家的人, 基本上dvorak不会面向普通人, 如果想用在平常的打字聊天上,
那还不如自己统计制作一个键盘map. 至于怎么统计,最简单的就是写个小软件看看你实际敲键盘都是那些键最热.
把它们放到home row, 并且统计连续按键, 把它们分散给左右手, 这样你就有了自己的键盘layout. 然后定购一个键盘套,
看起来肯定比dvorak拉风.

不过对于经常写程序或者打英文的人(比如需要写论文), dvorak还是很实用的.
按键任务平均分配到左右手之后击键效率会提高很多, 同样wpm下明显感觉到自己不再手忙脚乱了
并且相比于自制, dvorak有现成出售的键盘, 可以在硬件级别上实现dvorak. 这样只需要带一个键盘,就可以用别人的电脑了.


在知道了这些之后,是否依然要使用dvorak?

如果依然是的话,那么可以继续来考虑下面更实际的问题


dvorak键盘都有哪些?目前硬件级别的dvorak键盘还是相当少, 我之前的一篇里面几乎就提到了所有的品种.
普遍价格都不便宜, 如果你决心用dvorak, 那么可以买, 但如果没有完全的下定决心, 那么还是现在qwert上体验下再说.


首先是typematrix的所有键盘,目前最新的是2030, 不过也不是什么新概念.
typematrix的优点是能够硬件级别上随时更换layout. 这样只需要一个键盘就可以了, 哪怕是打游戏. 键盘是方格规划, 用起来需要适应. 
缺点是手感太差, 不过价格只有110刀, 也别指望太好,能比一般的键盘稍微好点.

其次是大名鼎鼎的kinesis, 最经典的当属03年前后的那款人体工程学键盘, 这玩意可是申请了专利的. 因为可编程, 所以可以很轻松的变换成dvorak, 而如果你有钱再加上一个脚踏板, 可以轻松的在几个不同的layout下面变换. 当然 如果你有钱.
优点太多了,几乎是用上就不会在爱其他的那种类型, 在程序员之间也大受好评.
唯一的缺点是价格贵的令人发指, 300+刀, 人民币1800+的价格, 显然不是平民的键盘, 并且放在桌上都怕偷的水平.

还有就是hhk, 这个东西受到日本出口限制, 想搞到没那么容易.
优点是有dvoraklayout, 并且用的是cherry基板, 大家都喜欢.并且声音极小.
缺点是没有多少人体工程学, 还是普通键盘, 省空间版本的fn需要适应, 但的确好用.

剩下几个可编程的键盘不多说了,  可以自行寻找.
如果有山寨的可编程键盘的话或许可以拿来当入门, 不过为了自己的手, 最后还是换个好键盘才对.

最后, 如果希望在普通键盘上实现硬件级别的dvorak, 现在有类似usb转接口的q2d卖,名字是qido, 不过价格不菲, 要接近100刀
说实话, 真有100刀就不如加点钱买typematrix了.
不想买硬件,软件能不能体验?当然可以, 目前mac上用起来应该是最简单舒适的, 在输入preference里面设置en为dvorak或者dvorak-cmd-qwert就行了.
搜狗等输入法支持dvorak. 在对应界面里设置下(或者会自动切换?)

linux上也不是很麻烦, google一下,你就知道. 不过我并不怎么常用linux, 我手里的pc除了预装的win7就是netbsd.

windows上基本就借助三方软件, 不要指望原生的windows设置能够你带来什么美好的回忆. 因为很多输入法并不支持m$的dvorak.
网上搜一下软件有一大堆, 免费的也有一大堆, 足够初学者体验了.
学习曲线好陡 这是错觉, 完全转换到dvorak大约需要坚持7~30天,根据个人使用量会有不同.


最后有几个很飘渺的问题
用Dvorak能不能提高打字速度?

打字速度来自于训练, 而不是来自于切换layout. 有很多qwert使用人打字速度也能在100+wpm.

Dvorak主要目的是为了减缓肌肉(手指)疼痛和移动距离. 到底能不能提高打字速度并不是促使切换的主要原因.

如果你仅仅是想提高打字速度, 那么找个打字练习软件,疯狂训练几个月, 或许不比换dvorak差.

用Dvorak时快捷键怎么办?windows都软件可以让你保持原来的操作习惯, mac上自带了cmd+qwert版dvorak, 而*nix上似乎没有特别好的方法.
如果仅仅是担心vim的操作,那么在.vimrc里添加dvorak -> qwert的mapping就足够用了.
最后,实际上用惯了dvorak之后, 还是会喜欢用dvorak键盘的快捷键布局,因为那时候按ctrl+c是自然地会用右手中指.
不过不好的地方在于很多快捷键需要双手操作. 但好消息是终于可以用单手cmd+p打印了.




最后, 用中文打完这篇文章, 我的小指真的很疼... 看来果然还是该买kinesis的.

现在我的设备: mac mini 2013

软件: 系统自带dvorak layout

键盘: 普通us-qwert键盘, filco产, cherry基板. 大概2个月内会买kinesis来代替

vim: 全部按键都映射到了qwert.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Java中设置虚拟键盘的布局需要使用Java AWT和Java Swing库。以下是一个简单的示例代码,可以设置一个虚拟键盘,该键盘支持五种不同的布局:QWERTY、AZERTY、QWERTZ、Dvorak和Colemak。 ```java import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class VirtualKeyboard extends JFrame implements ActionListener { private JTextField textField; private JToggleButton[] toggleButtons; public VirtualKeyboard() { super("Virtual Keyboard"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); // 创建一个文本框 textField = new JTextField(); add(textField, BorderLayout.NORTH); // 创建一个面板来存放切换布局的按钮 JPanel layoutPanel = new JPanel(new GridLayout(1, 5)); add(layoutPanel, BorderLayout.SOUTH); // 创建五个切换布局的按钮 toggleButtons = new JToggleButton[5]; toggleButtons[0] = new JToggleButton("QWERTY"); toggleButtons[1] = new JToggleButton("AZERTY"); toggleButtons[2] = new JToggleButton("QWERTZ"); toggleButtons[3] = new JToggleButton("Dvorak"); toggleButtons[4] = new JToggleButton("Colemak"); // 默认选中第一个按钮 toggleButtons[0].setSelected(true); // 添加按钮到面板 for (JToggleButton toggleButton : toggleButtons) { layoutPanel.add(toggleButton); toggleButton.addActionListener(this); } // 添加虚拟键盘到窗口中 add(createVirtualKeyboard(), BorderLayout.CENTER); // 设置窗口大小和可见性 setSize(500, 300); setVisible(true); } // 创建一个虚拟键盘 private JPanel createVirtualKeyboard() { JPanel keyboardPanel = new JPanel(new GridLayout(4, 13)); String[] keyLayouts = { "1234567890-=", "qwertyuiop[]\\", "asdfghjkl;'", "zxcvbnm,./" }; String[] keyLayoutsAzerty = { "1234567890-=", "azertyuiop^$", "qsdfghjklmù", "<wxcvbn,;:!?", }; String[] keyLayoutsQwertz = { "1234567890-=", "qwertzuiop[]", "asdfghjklä'", "yxcvbnm,.-" }; String[] keyLayoutsDvorak = { "1234567890[]", "',.pyfgcrl/=", "aoeuidhtns-", ";qjkxbmwvz" }; String[] keyLayoutsColemak = { "1234567890[]", "qwfpgjluy;\\", "arstdhneio'", "zxcvbkm,./" }; String[] currentKeyLayout = keyLayouts; // 添加键盘按键 for (String row : currentKeyLayout) { for (int i = 0; i < row.length(); i++) { String key = row.substring(i, i + 1); JButton button = new JButton(key); button.addActionListener(this); keyboardPanel.add(button); } } return keyboardPanel; } // 处理按钮点击事件 public void actionPerformed(ActionEvent e) { if (e.getSource() instanceof JToggleButton) { // 切换键盘布局 JToggleButton toggleButton = (JToggleButton) e.getSource(); if (toggleButton.isSelected()) { for (int i = 0; i < toggleButtons.length; i++) { if (toggleButtons[i] != toggleButton) { toggleButtons[i].setSelected(false); } } switch (toggleButton.getText()) { case "QWERTY": currentKeyLayout = keyLayouts; break; case "AZERTY": currentKeyLayout = keyLayoutsAzerty; break; case "QWERTZ": currentKeyLayout = keyLayoutsQwertz; break; case "Dvorak": currentKeyLayout = keyLayoutsDvorak; break; case "Colemak": currentKeyLayout = keyLayoutsColemak; break; } updateVirtualKeyboard(); } } else if (e.getSource() instanceof JButton) { // 添加键盘输入到文本框 JButton button = (JButton) e.getSource(); String key = button.getText(); textField.setText(textField.getText() + key); } } // 更新虚拟键盘布局 private void updateVirtualKeyboard() { JPanel keyboardPanel = (JPanel) getContentPane().getComponent(1); keyboardPanel.removeAll(); for (String row : currentKeyLayout) { for (int i = 0; i < row.length(); i++) { String key = row.substring(i, i + 1); JButton button = new JButton(key); button.addActionListener(this); keyboardPanel.add(button); } } keyboardPanel.revalidate(); keyboardPanel.repaint(); } public static void main(String[] args) { new VirtualKeyboard(); } } ``` 这个程序创建了一个带有文本框和虚拟键盘的窗口,可以通过切换布局按钮来切换虚拟键盘的布局。当用户点击键盘上的按钮时,相应的字符将添加到文本框中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值