首页 文章

使用钢琴键盘作为电脑键盘[关闭]

提问于
浏览
727

我有RSI问题并尝试了30种不同的电脑键盘,这些都给我带来了痛苦 . 弹钢琴不会让我感到痛苦 . 我已经弹钢琴大约20年没有任何疼痛问题 . 我想知道是否有办法从MIDI键盘捕捉MIDI并输出键盘敲击 . 我对MIDI一无所知,但我想要一些关于如何将这个信号转换成击键的指导 .

30 回答

  • 7

    看看MAME街机游戏 . 他们构建了硬件设备,允许从任意数量的不同项目输入 . 例如,iPac将来自输入设备的信号转换为USB,然后计算机可以使用它来模拟密钥 . 你可以使用任何方式安排的输入设备的任何组合,这些输入设备看起来很舒服,不需要疯狂的编程逻辑 - 因为解释输入的软件已经完成并经过了充分测试 .

    我已经看到用这种方法制造的飞行模拟器驾驶舱输入,定制信息亭和投票系统.....价格合适!

  • 6

    .NET中一个很好的库,具有完整的midi支持(BASS),请转到http://www.un4seen.com .

    而对于另一部分,将键盘midi音符转换为键等等,我会将AutoItX,ActiveX / COM和DLL接口转换为autoIt . 信息和下载,转到http://www.autoitscript.com/site/autoit/

    无需编写键盘驱动程序 .

  • 24

    多年来我没有做任何MIDI编程,但你的基本想法非常合理(没有双关语) .

    MIDI是“事件”(或“消息”)的流,最基本的两个是“音符开”和“音符关”,它们带有音符编号(0 = C中间C下五个八度,到127 = G在中间C上方的G上方五个八度音阶,半音调) . 这些事件在速度敏感(“触敏”)的键盘上带有“速度”数字,其力(你猜对了)在0到127之间 .

    在速度,和弦和踏板之间,为什么普通速记员可以使用_1151655来跟上人们连续几个小时说话,甚至顶级打字员都不需要"dictionary"的含义't be able to for any length of time via normal typewriter-style keyboards. As with machine stenography, you'和弦和和弦序列 . (你能告诉我曾经在机器速记的软件方面工作吗?)

    要做到这一点,基本的部分是:

    • 接收MIDI输入 . 不要试图自己这样做,使用库 . Edit :显然,Java Sound API supports MIDI,包括从MIDI控制器接收事件 . 凉 . This page也可能有用 .

    • 将该数据转换为您要发送的击键,例如通过我上面提到的字典 .

    • 将击键输出到计算机 .

    要与软件最广泛地兼容,您必须将其写为键盘设备驱动程序 . 这是操作系统的插件,用作键盘事件的源,与底层硬件(在您的情况下,钢琴键盘)交谈 . 对于Windows和Linux,您可能希望使用C来实现 .

    但是,由于您只是生成击键(而不是试图拦截它们,我多年前就试图拦截它们),您可能可以使用操作系统发送人工击键的任何功能 . Windows有一个用于执行此操作的界面(可能是几个,我正在考虑的是SendInput但我知道's some 1151662 interface that does something similar), and I'确定其他操作系统也可以 . 这可能足以满足您的目的 - 它开始,因为设备驱动程序路径会很尴尬,你可能是Java的忠实粉丝,但操作系统用来与设备驱动程序通信的接口往往更容易通过C和类似的方式使用 . )


    Update :有关击键和弦的"dictionary"的更多信息:

    基本上,字典是trie(谢谢,@ Adam),我们搜索最长前缀匹配 . 细节:

    在机器速记中,速记员通过同时按下stenotype机器上的多个键来写入,然后将它们全部释放 . 他们称之为键盘的“中风”;就像在钢琴上弹奏和弦一样 . 经常(但不总是)笔划对应于口语的音节 . 就像音节一样,有时一个笔画(和弦)本身就有意义,有时它只有跟随笔画的意思 . (认为“好”与“好”后跟“再见”) . 虽然他们会受到他们学习的学校的严重影响,但每位速记员都会有自己的“词典”,说明他们用什么笔画来表示什么,他们将在他们的工作生涯中不断磨练的词典 . 字典将具有条目,其中速记部分(简称“steno”)是一个笔划长或多个笔划长 . 通常,将存在具有相同起始行程的若干条目,这些条目通过它们的长度和随后的笔划来区分 . 例如(我不会在这里使用真正的steno,只是占位符),可能有以下条目:

    A     = alpha
    A/B   = alphabet
    A/B/C = alphabetic
    A/C   = air conditioning
    B     = bee
    B/C   = because
    C     = sea
    D     = dog
    D/D   = Dee Dee
    

    (这些字母不是音符,只是抽象的标记 . )

    请注意 A 开始多次条目,还要注意你如何翻译 C 笔画取决于你以前是否看过一个 A ,一个 B ,或者你是刚开始新的 .

    另请注意(尽管未在上面的极小样本中显示),可能有多种方法可以“播放”相同的单词或短语,而不仅仅是一种 . 速度训练器可以根据手的位置使前一个词更容易从下一个词流到下一个词 . 那里的音乐有一个明显的类比,你可以使用它来使你的打字流程更类似于播放音乐,以防止这对你的钢琴演奏产生负面影响,并最大限度地提高实际帮助RSI的可能性 .

    在将steno转换为标准文本时,我们再次使用“最长前缀匹配”搜索:转换算法从写入的第一个笔划开始,并查找以该笔划开始的条目 . 如果只有一个条目,并且它只有一个笔划,那么我们可以可靠地说“这是要使用的条目”,输出相应的文本,然后在下一个笔划中重新开始 . 但更可能的是,该笔划会开始多个不同长度的条目 . 因此,我们查看下一个笔划,看看是否有条目以这两个笔划开始顺序;等等,直到我们得到一个匹配 .

    所以使用上面的字典,假设我们看到了这个序列:

    A C B B C A B C A B D
    

    以下是我们如何翻译它:

    • A 是三个不同长度的条目的开头;看下一招: C

    • A/C 只匹配一个条目;输出"air conditioning"并在下一笔中开始新鲜: B

    • B 开始两个条目;看下一招: B

    • B/B 什么都没有开始;取最长的前一场比赛( B )并输出("bee")

    • 输出 B = "bee",我们的缓冲区中仍然有 B 笔划 . 它开始两个条目,所以看下一个笔划: C

    • B/C 匹配一个条目;输出"because"并在下一个笔划中重新开始: A

    • A 开始三个条目;看下一笔: B

    • A/B 开始两个条目;看下一笔: C

    • A/B/C 仅匹配一个条目;输出"alphabetic"并在下一个笔划中重新开始: A

    • A 开始三个条目;看下一击: B

    • A/B 开始两个条目;看下一击: D

    • A/B/D 与任何内容都不匹配,因此请使用最长的上一个匹配项( A/B )并使用它输出"alphabet" . 这让我们仍然在 D 缓冲区 .

    • D 开始两个条目,所以我们通常会查看下一个笔划 - 但我们已经处理了所有笔划,因此请单独考虑它 . 在单独的情况下,它转换为"dog"输出 .

    以上方面要注意:

    • 你有一个缓冲的笔画你还没有翻译过来 .

    • 您总是希望将最多笔画与您可以使用的单个条目进行匹配 . A/B 应翻译为"alphabet",而不是"alpha"和"bee" .

    • (上面没有显示)你可能有一些笔画序列,你可以匹配字典中的任何内容 . (Steno人使用名词"untranslate" - 例如,使用我们的字典,笔画 E 将是"untranslate" . )

    • (上面没有显示)根据更广泛的背景,一些steno理论允许同一组笔画意味着不止一件事 . Steno人称之为"conflicts" . 你可能想要在你的项目中禁止它们,事实上当steno过去由stenographer手动翻译时,冲突很好,因为他们只知道句子中的位置是正确的选择,但是随着时间的推移机器翻译,无冲突的steno理论专门出现,以避免必须经历由此产生的翻译文本和冲突 .

    • 实时翻译(在等待下一个和弦时你想要保持它 - 但可能只有一个超时,此时你想要超时;这是你的呼叫 . )

    • 可能最好有中风说"disregard the previous stroke"

    • 可能最好有中风说"completely clear the buffer without outputting anything"

  • 430

    考虑在模拟usb(或ps / 2?)键盘的硬件中做一些事情 . 您将不再依赖于特定的操作系统或特定的操作系统API . 硬件解决方案经得起时间的考验 . 不要当其他人都运行Windows 11时,在Windows 7中使用旧的API卡住了! Arduino非常容易学习 .

    Arduino有很多信息和帮助 . 它是为新手打造的硬件黑客平台 . 它现在只会变大Google is pushing Arduino.

    编辑:虚拟USB键盘softwarehardware

  • 16

    对我而言,听起来像是在寻找关于如何自己构建这个的建议,而是更多地询问已经有哪些资源来实现你想要的东西 . 根据您的操作系统,有许多方法可以实现这一点,而无需从头开始编写您自己的程序:

    MIDI Stroke

    自由 . 对于 Mac OS X 10.3 and up . 这个特别配备“能够使用任何MIDI键盘作为完整的电脑键盘更换 . ”

    Bome's MIDI Translator

    免费/明信片(这有点奇怪) . 对于 Windows 2000 and up, and Mac OS X . 它最初似乎更倾向于使用AutoHotkey类型,但进一步看起来我认为它可以做你想要的好 .

    Max and aka.keyboard

    自由 . 对于 Mac OS X . 不完全是"ready out of the box"解决方案,但如果您对基本设备配置感到满意,那应该不会太糟糕 .

  • 184

    您可以在MIDI DotNet中使用.NET中的源代码示例访问硬件 .

    一个完整的工作样本作为源代码来创建MIDI音符数据流是在VB 5/6-Tipp 0521: MIDI-Töne erzeugen(Visual Basic 6.0,某处也是.NET版本)

    一种模拟键盘笔划的方法是VB 5/6-Tipp 0155: Tastaturereignisse simulieren(Visual Basic 6.0,某处也是.NET版本)

    并且识别按键在Tipp-Upload: VB.NET 0266: Globaler KeyHook中描述 .

    Enter image description here

    然后,为钢琴演奏者使用一个好的工作矩阵
    Timo Boehme www.goldengel.ch

    在钢琴上,当你是一个好的玩家时,你可以在键盘上有10个手指,如果矩阵可用,你可以比我想的任何计算机键盘用户快得多 . :-)

    在这种情况下,如果我理解你的问题,那应该不是一件大事 .

  • 15

    我在大学学习钢琴演奏,然后进入交互设计,编程和使用Vim,所以我实际上花了很多时间对这样的事情进行原型设计 .

    通过使用多媒体艺术家的图形编程语言“Pure Data”以及Alex Andre外部的x11key,您可以在Linux中快速完成此工作 .

    在Mac上,您可以使用MidiStroke . 我相信Windows上的方法涉及MidiOxAutoHotKey工具 . 在另一个时间我有一个版本使用Java插件Max/MSP . 我相信Patrice Colet为Pure Data创建了一个外部窗口,但是我可以't seem to locate it anymore. Also, there' s an external for MaxMSP可以在Windows上执行此操作 . 最后,非自由但令人敬畏的Osculator可以做你想要的 - 查看功能页面 .

    当我开始工作时,我从来没有坚持过,因为我无法停止使用布局工具 . 不过只是把我的显示器放在电动键盘上真酷!祝好运 .

  • 27

    关于MIDI

    你说你"know nothing at all about MIDI" . 一旦掌握了MIDI技术,它就相当直接,但一开始就会让人感到困惑 . 对我来说理解MIDI基础非常有用的资源之一(如果你想编写MIDI交互,这当然是必要的)是一本名为MIDI for the Technophobe的书 . 这是一本易读的书,非常有帮助 .

    Pure Data&Max

    根据我开发交互式多媒体的经验,我遇到过两个非常相似的程序,可以帮助连接和映射来自任何设备的信号/输入 .

    对于Mac环境,这些是Max,对于PC环境,这些是Pure Data . 两者都有大量的在线文档和YouTube教程 . 视频Max/MSP Tutorial 1 - using your computer keyboard as midikeyboard (ableton style)演示了一个用Max构建的程序,它将计算机键盘映射到MIDI键盘的输入(这基本上与您尝试做的完全相反) . 您可以使用相同的模式获得预期的结果,但可以反转信号/映射 .

    AutoHotKey

    AutoHotKey是一个免费的Windows开源实用程序,允许您将设备上的键和按钮重新映射到宏 . 它原生支持QWERTY键盘,游戏杆和鼠标宏 .

    但是,我能够找到支持您正在寻找的特定映射的实现 . 这两个线程解释了这个过程:

    • MIDI IN support in AutoHotkey,用例的讨论 . 作者正在寻找 program that could detect MIDI IN input and translate that to keypresses .

    • MIDI input library,解决了作者的问题以及发布的AutoHotKey代码/补丁其实实现您的预期结果 .

    基本上,看起来AutoHotKey以及该用户的自定义补丁将提供您创建从MIDI键盘到QWERTY键盘输入信号的映射所需的精确内容 . 您所要做的就是安装,配置和定义映射 .

    还有别的吗?

    一般来说,其他一些答案已经为您提供了有关MIDI和MIDI编程的更多信息,但正如您的帖子所说,这似乎并不是您想要的 . 如果可能的话,我想帮助你更多,但如果你能更具体地了解你正在寻找的信息类型,那将会更容易 . 例如,您是否对如何将MIDI键盘的输入信号转换为QWERTY键盘信号更感兴趣,或者您最关心的是找到针对您特定问题的开箱即用解决方案?您还在寻找什么尚未解决?

  • 18

    您可以使用Teenys微控制器快速破解自己的USB键盘 .

    实际上,他们有如何make a USB keyboard的示例代码 .

    您可以采用以下两种方式:

    • 拿一把旧钢琴并将开关直接连接到青少年

    • 添加附加逻辑以连接到MIDI端口和必要的解码 .

  • 41

    实际上,我刚刚研究过这个问题,试图将Rock Band鼓输入到我的计算机上(制作一个小型Java自制鼓模拟器)无论如何,我在这里问了一个问题,Time delay problem(那里有轮询代码,还有我试图做的事情 . )如果我能找到我的程序,我可以给你代码,它使用第三方API(JInput) .

    祝你好运 .

  • 15

    试试Bome's MIDI translator .

    它可以跨平台工作,可以轻松地将任何MIDI输入转换为键盘,快速设置和配置,以及免费供个人使用 .

    有一个关于如何轻松设置它的教程Quick Tip: MIDI Translation – MIDI to Keystrokes

    基本上,你可以做的事情有很多种,包括和弦键和修饰键 . 我用我的现场音频设备来控制我的DAW使用我的钢琴,从来没有遇到过问题 .

  • 15

    在Java中,您可以使用JMF(Java Media框架)来转换MIDI信号 . 键盘设计的基础是易于使用,即用户界面;并经常使用charcter /符号 .

    Java Sound Resources: Examples: Digital Signal Processing (DSP)中的示例代码和API有助于了解如何处理信号 .

    更多参考资料:

  • 37

    凯西有最好的答案 . 我已添加评论并对其进行了投票 . 这种软件属于设备驱动程序或嵌入式系统 . 设备驱动程序要复杂得多,并且无法移植到其他操作系统 . 有关参考,请参阅Linux上的Winmodems问题 .

    通过将您的代码放入嵌入式系统,您可以将其移植到具有USB端口的任何MIDI设备以及任何接受USB键盘的计算机上 .

  • 111

    有一个名为GlovePIE的程序 . 您可以使用简单的脚本语言对其进行编程,我相信它支持MIDI . 我'm not sure if this fits under the 1151778 category, but still, it is a great program. I'用它来控制使用PS3控制器的机器人 . 它非常强大 .

  • 11

    许多键盘都有一个串行端口(RS-232)连接器,用于将MIDI信号发送到计算机 . 我使用一个名为Girder的程序将串口通信转换为键盘笔划 .

    Girder具有“映射”功能,可让您逐个将每个键映射到相应的击键 .

    这可能是您正在寻找的简单解决方案!

  • 23

    学习速记!

    从技术的角度来看,它想要重新发明任何车轮 . 但是,一旦你 Build 了连接(这个问题是什么问题)并且正常工作,你仍然需要完成大部分工作:你必须训练你的大脑 . 你还必须发明最聪明,最有效的方法来做到这一点 - 一个完全脱离计算机技术流程的设计问题 . 你或我们任何人都会失败 .

    幸运的是,这个问题在几个世纪的成熟过程中得到了解决和磨练......

    学习速记!

    是的,这会让你回到一些杰克 . 但是,你自己的时间数百小时的 Value ,最终是一个不太有利的结果呢?此外,the stenography Wikipedia article说,'it looks more like a piano keyboard' .

    当然,除非你想要产生副作用 . 我不得不承认,我从未想过这种可能性,看到有人用钢琴键盘敲出文字真是太有趣了!

    你可以从USB keyboard with touchpad(或pointing stick)开始会更符合人体工程学吗?),使用Plover进行翻译(我确信它可以配置为让非字母键保留其功能,因为它们对编程至关重要),或者按照线程Re: Plover keyboard滚动自己的USB速记键盘,或者,购买a stenotype .

    祝好运!

  • 7

    不是真的与程序有关,但我可以就如何管理RSI提供一些建议 .

    有些计时器可以让您的工作在整天进行,从而引入频繁的微休息 . 如果你确定've heard about micro-breaks. They'对管理和防止再次发生至关重要 . 一个免费的程序是Workrave

    给QWERTY启动并尝试Dvorak . 这是programmer Dvorak keyboard layout . Dvorak在主页上有最常用的字符,而QWERTY没有 . 所以使用Dvorak可以减少因不必使用字母而造成的压力 .

    如果您还没有使用它,可以将“自然”键盘从壁橱中拿出来 . 键入非常轻微 . 注册击键的最低限度是可行的 .

    尝试将咖啡限制在每天一到两杯 . 过量的 Caffeine 会让你感到疲倦,让你很容易忘记你有RSI .

    过量的酒精会破坏让身体自我愈合所需的睡眠 . 晚安休息对于驯服RSI至关重要 .

    使用主动隔离的拉伸拉伸 . Wrist, Hand & Finger Stretching Routine - Active Isolated Stretching中描述了一个很好的例程 .

    学习如何使用鼠标灵巧 . 确保鼠标设计为双手使用,并具有易于点击的按钮 .

    使用数位板作为主要输入设备 . Wacom makes some decent inexpensive tablets .

    祝好运!

  • 49

    要解决这个问题,您需要做一些事情:

    • 一种从键盘捕获MIDI数据的方法 . 根据界面:MIDI接口(经典)或USB MIDI接口(现代),最可能的接口是计算机,因为它提供了最多的选项 . USB主控微控制器并不像使用计算机那么简单 .

    • 将MIDI数据转换为击键的方案 . 就像一个用户指出的那样,和弦是要走的路,因为键的数量不依赖于钢琴键的数量 .

    • 一种将密钥注入操作系统的方法 . 这将要求低级驱动程序准确 . 我已经玩过将键盘和鼠标数据注入到Windows 7中的应用程序中的应用程序,它可能不稳定,取决于应用程序当前是否处于焦点状态 . 这是界面中最难的部分 . 可能有用的是创建一个也有串行接口的HID USB键盘微控制器 .

    串行接口将创建一个虚拟串行端口 . 读取MIDI数据并产生击键的软件可以向虚拟串行端口发送串行消息 . 微控制器将发送击键,使其看起来像标准键盘输入 . 这将允许连接MIDI端口和USB MIDI键盘 .

    嗯,通过这种类型的界面,您还可以模拟鼠标并使用一些钢琴键设置鼠标轴和按钮 . 压力可用于确定鼠标指针速度 . 所以你也可以消除鼠标 . 此方法的另一个好处是,您连接的任何类型的输入设备都可以与虚拟串行端口通信以生成键盘和鼠标事件 . 因此,如果您想添加鼓踏板或操纵杆等其他硬件,则需要调整与串行接口通信的程序 .

    上面的另一个看法就像上面发布的一些使用Arduino,但也包括来自Sparkfun的USB Host Shield来处理基于USB的音乐键盘 . 这允许Arduino在引导加载程序芯片中被编程为键盘或键盘鼠标组合,并允许设备作为基于USB的音乐键盘的主机.1151805_主机 . 然后,您可以获得两种类型的保障 . 虽然,我仍然认为虚拟串口方法更灵活,从长远来看更容易编程 . Arduino设备将比桌面程序或服务更难更改 .

    还有另一种可能性:已经存在Chorded单手键盘 . 我已经看过他们的视频,但你必须确定那些是否伤害了你的手 .

  • 8

    你的疼痛症状可能很好be psychosomatic .

    经过一个漫长的电脑游戏之夜后,我曾经以为我的手腕已经持续了好几个月 . 物理治疗没有帮助 . 在我读了一篇医生写的文章解释RSI,腕管,背痛和IBS经常是心身,特别是在压力下的人,疼痛几乎消失了(它有助于我的手腕放松和血液流动到它,因为文章说自主神经血管收缩是疼痛的直接原因) . 事实上,我当时遭受了很多压力 .

  • 5

    使用.NET DirectSound接口挂钩到MIDI设备应该相当容易 . 您将需要识别您的目标MIDI设备,然后获取代码以收听传入的消息(有关于通过Google执行此操作的文章) .

    由于您将MIDI输入作为键盘使用,因此基本上只需要检测两条MIDI信息,即音符开和音符关 . MIDI信息是三个数据字节,指定命令,音符和力度 . 音符关闭只是音符编号(有时'坏'MIDI堆栈以零速度发送音符,您也必须预期) .

    一旦你有消息翻译它们,键盘输出应该是非常简单的.NET .

    关于技术性的其他答案中有很多建议;我只是想让你了解实际的MIDI信息 . 祝好运!

  • 6

    通过声卡播放任何外部MIDI键盘作为控制器,您将获得更好,更快乐的结果(无论您喜欢使用哪种操作系统和/或DAW程序) . 然后将其路由到您的GB软件(或其他)和音调,生成他们实时提供给您的许多声音 .

    如果您的声卡不支持MIDI I / O(ins / outs / thrus),那不是问题 . 您可以考虑研究和投资外置MIDI桌面转换器 . 许多都配备了进一步将MIDI输出转换为USB 2.0(完全通过现有的声卡) .

    例如:使用计算机键盘和铅笔工具通过Z和X更改键选项获得“类似人类”的优雅音符效果非常困难 . 相反,当你自己的手指可以立即用自己的物理八度音域寄存器范围内的MIDI键盘播放时!

    我意识到可能涉及预算限制 . 但是,在Radio Shack售价低于100美元(*或更低)的这些看似便宜的“Casio”5型八度音键板中的一些就是你所需要的(另外,它们的一些车载声音补丁和音序器模块听起来和处理其他事情也非常好) .

    RadioShack MIDI keyboard options .

    对于现有声卡的外部MIDI转换器,我特别考虑到Mac平台为你运行some Google searches

    很多这种外部MIDI转换信息一开始对你来说可能很麻烦,所以为了你的考虑因素和预算,我把它们分解为“用户友好”:

    使用DAW时,将虚拟键盘简化为VST是没有错的 . 他们有自己的位置 .

    但是,你听起来像一个有成就的键盘手 . 那么,为什么不考虑我刚才提到的外部MIDI转换/键盘选项呢?

    祝你好运,我希望这会给你一些能够并且对你有用的想法!

  • 10

    如果你不想自己做任何编程,但只是想解决问题,你可以购买USB-MIDI键盘,你可以重新分配任何键来发送QWERTY键盘输出信号而不是MIDI输出,示例M-Audio Axiom Pro

    此方法适用于任何操作系统和支持标准USB键盘的任何计算机,因为MIDI键盘将自己标识为标准QWERTY键盘 .

  • 4

    您可以使用简单的AutoIt脚本来读取MIDI事件,请参阅MIDI Input .

    你还需要MIDI UDFsimulate key presses .

    读取MIDI事件应该很容易,但不同的MIDI控制器(乐器)具有不同的功能 . 尝试找出你的MIDI钢琴首先可以做什么,然后看看如何最好地将这些功能映射到模拟的QWERTY-键盘按下 .

    如果你想,你可以在屏幕上或托盘中有东西来帮助你看到你在做什么(也就是说,对于Shift,Ctrl和Alt模拟) .

  • 12

    你可以看一下chorded keyboards . 它们的优点是在使用它们之前不需要为它们编写驱动程序,有些类似于钢琴键盘的布局 .

  • 4

    如果你知道用Java编码,你可以这样使用:

    首先,使用 send(..) 方法实现 javax.sound.midi.Receiver ,该方法将'Note on'事件映射到您想要的击键 .

    您需要使用 getMessage 方法获取MidiMessage的内容并以您的方式对其进行解释 . 消息字节的含义可以在MIDI Messages中找到 .

    在收到某个键盘键的'note on'或'note off'之后,您可以将它映射到您喜欢的键,方法是为它指定一个KeyEvent类的常量,类似于C#4 - > KeyEvent.VK_A等等 . 然后, java.awt.Robot 的keyPress和keyRelease方法可以使用此密钥代码将键击实际发送到操作系统,从而发送到其他应用程序 .

  • 5

    I know exactly how you feel. 全天做疯狂的键盘编码命令会让我的手受伤 .

    钢琴不能完成这项工作(你最好得到Dorvak keyboard) . 最好的解决方案是精神心灵感应,或者此时的语音控制 .

    我发现Arthro-Aid Direct霜很好,Wild Blend也可以 .

    我注意到的另一件事是,鼠标也是主要的责任,大多数是非人体工程学和点击这么多导致RSICTS . 为了克服这个问题,我偶尔会使用自动鼠标答题器,例如Auto Mouse Clicker .

    我知道你用鼠标作为握把的专利,我很想购买 .

    PS:在你看医生之前先获得收入保障保险!

    并且不要在周末编程:)

  • 10

    我同意Brian O'Dell的回答 - 如果这是我的项目,我会用硬件来做 . 它具有独立于平台和硬件的优势 - 您的盒子取代了对MIDI-USB接口和PC API的需求 .

    mbed是一个快速原型设计平台,非常容易学习,并且与Arduino IMHO(在线编译器,512 KB闪存,96 MHz,C语言)相比具有多个优势 . 它预先写好了USB keyboard interfaceUSB Midi interface .

    社区非常友好并愿意提供帮助,并且有很多现有项目使用MIDI和USB隐藏仿真 - 搜索Youtube用于“mbed MIDI”或类似 .

  • 4

    如果您使用Linux,则需要Footware .

    它应该是你正在寻找的 - 如果你将MIDI音高调整为你喜欢的键盘映射...

    我从没想过这对除了我以外的任何人都有用; o)

  • 3

    要更快地打字,可能会想到“玩”左手的辅音和右边的元音(反之亦然) . 你不需要每个辅音都有一把钥匙,因为你可以将它们组合成:

    B    C    D    G    H    J    K    L    M    N    P    Q    R    S     T     W    X    Y    Z
    
    c    c#   d    d#   e    f    f#   g    c+d ...
    

    你可以留下两个关闭的密钥(比如c#d,这不容易玩) . 你甚至可以把黑键留下来 .

    元音很容易:

    E E I O U Y.

    c d e f g a

    但是,也要考虑使用多次击键:如c#= aa,d#= ee等 .

    你可以用辅音做同样的技巧(有st,sp等键组合)

    你可以同时演奏辅音和元音,交替或优先将它们绑在一起(辅音,然后是元音等)

    您可能需要再次学习打字,但我相信您可以比普通的打字人员快得多 .

    使用另一个八度音阶来表示数字和特殊字符,使用一个开关进行移位,使用一个简单的空间键组合(如左右两个cs,确保它不代表(a)字符(s) )) .

    还要考虑使用值为0-127的踏板 . 您也可以将它用作班次或空格......或退格/进入 .

    我希望这能为你的项目带来一些新的想法和好运 .

  • 4

    您的问题的答案已在此页面上,但我想提供一些额外的输入 .

    首先,我建议你为Nuance Dragon - Naturally Speaking打字 .

    其次,如果你坚持继续这样做,你可能需要选择Nasebnbaar's(虽然我不会更快)和Brian's建议 . 这可能是你应该联系工程师做正确的事情,但如果你必须自己做,你最好在Electrical Engineering - Stack Echange.上询问方向 .

    第三,如果你只是想了解how MIDI files work,如何read them programmatically,和how to simulate a keyboard stroke,那么祝你好运;)

    最后,如果您最终决定使用第二个选项,我还想获得一份副本:)

相关问题