README 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. PS/2 to USB keyboard converter
  2. ==============================
  3. This firmware converts PS/2 keyboard protocol to USB and for now supports only Scan Code Set 2.
  4. Features
  5. --------
  6. Mouse keys
  7. You can emulates mouse move and button click using keyboard.
  8. System/Media control
  9. You can sends Power event, Volume down/up and Mute.
  10. USB NKRO(actually 120KRO+8Modifiers)
  11. You can tolggles NKRO feature.
  12. Keymap customization
  13. You can customize keymaps easily by editing source code. See keymap.c.
  14. Build Converter
  15. ---------------
  16. 0. Connect PS/2 keyboard into Teensy with 4 lines(Vcc, GND, Data, Clock).
  17. By default Clock is on PF0 and Data on PF1.
  18. You can change this pin configuration by editing config_pjrc.h.
  19. In this photo Vcc is yellow, GND is green, Data is red and Clock is black.
  20. http://img17.imageshack.us/img17/7243/201101181933.jpg
  21. Build Frimware
  22. --------------
  23. 1. Edit Makefile for build options and MCU setting.
  24. Use 'atmega32u4' for Teensy 2.0 or 'at90usb1286' for Teensy++ 2.0.
  25. 2. make
  26. Just type 'make' in a terminal.
  27. 3. program with Teensy Loader.
  28. http://www.pjrc.com/teensy/loader.html
  29. Demonstration of Features
  30. -------------------------
  31. In default configuration, you can try several keymaps, mousekeys and USB NKRO.
  32. Use following magic key combinations to enable some features.
  33. keymaps and NKRO:
  34. Magic+0: Qwerty with mousekeys(default)
  35. Magic+1: Qwerty without mousekeys
  36. Magic+2: Colemak
  37. Magic+3: Dvorak
  38. Magic+4: Workman
  39. Magic+N: toggles NKRO/6KRO(6KRO by default)
  40. Magic+Esc: sends Power Event(Power button)
  41. where Magic=(LShift+RShift) or (LControl+RShift)
  42. Fn layer function:
  43. Fn0+(hjkl): Mousekey move(vi cursor like)
  44. Fn0+(yuio): Mouse wheel(left,down,up,right)
  45. Fn0+space: Mouse left button
  46. Fn0+(mnb): Mouse buttons(m=left, n=right, b=middle)
  47. Fn0+(zxc): Media control(Volup, Voldown, Mute)
  48. Fn1+(hjkl): Cursor move(vi cursor like)
  49. Fn1+(nm,.): Cursor move(Home,PageDown,PageUp,End)
  50. where Fn0=;, Fn1=/
  51. Keymap
  52. ------
  53. You can change a keymap by editing code of keymap.c like following.
  54. How to define the keymap is probably obvious. You can find key symbols in usb_keycodes.h.
  55. To define keymap layer switching may needs a bit of your effort at this time.
  56. /* Default Layer: plain keymap
  57. * ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,-----------.
  58. * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr|Slp|Wak|
  59. * `---' `---------------' `---------------' `---------------' `-----------' `-----------'
  60. * ,-----------------------------------------------------------. ,-----------. ,---------------.
  61. * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| /| *| -|
  62. * |-----------------------------------------------------------| |-----------| |---------------|
  63. * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| |
  64. * |-----------------------------------------------------------| `-----------' |-----------| +|
  65. * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| |
  66. * |-----------------------------------------------------------| ,---. |---------------|
  67. * |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| |
  68. * |-----------------------------------------------------------| ,-----------. |-----------|Ent|
  69. * |Ctrl |Gui |Alt | Space |Alt |Gui |Menu|Ctrl| |Lef|Dow|Rig| | 0| .| |
  70. * `-----------------------------------------------------------' `-----------' `---------------'
  71. */
  72. KEYMAP(
  73. ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,BRK, PWR, F13, F14,
  74. GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS,
  75. TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, END, PGDN, P7, P8, P9,
  76. CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS,
  77. LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3,
  78. LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT
  79. ),
  80. Multimedia keys
  81. ---------------
  82. Following lists PS/2 special keys supported by Windows.
  83. http://msdn.microsoft.com/en-us/windows/hardware/gg463372.aspx
  84. Key PS/2(Set2) HID
  85. ---------------------------------------------------
  86. System Power E0 37 01 0081
  87. System Sleep E0 3F 01 0082
  88. System Wake E0 5E 01 0083
  89. System Mute E0 23 0C 00E2
  90. Volume Up E0 32 0C 00E9
  91. Volume Down E0 21 0C 00EA
  92. Scan Next Track E0 4D 0C 00B5
  93. Scan Previous Track E0 15 0C 00B6
  94. Stop E0 3B 0C 00B7
  95. Play/Pause E0 34 0C 00CD
  96. Media Select E0 50 0C 0183
  97. Mail E0 48 0C 018A
  98. Calculator E0 2B 0C 0192
  99. My Computer E0 40 0C 0194
  100. WWW Search E0 10 0C 0221
  101. WWW Home E0 3A 0C 0223
  102. WWW Back E0 38 0C 0224
  103. WWW Forward E0 30 0C 0225
  104. WWW Stop E0 28 0C 0226
  105. WWW Refresh E0 20 0C 0227
  106. WWW Favorites E0 18 0C 022A
  107. EOF