summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/README.md4
-rw-r--r--docs/_summary.md55
-rw-r--r--docs/adding_features_to_qmk.md4
-rw-r--r--docs/documentation_best_practices.md20
-rw-r--r--docs/faq.md218
-rw-r--r--docs/faq_build.md21
-rw-r--r--docs/faq_debug.md242
-rw-r--r--docs/faq_general.md20
-rw-r--r--docs/faq_keymap.md8
-rw-r--r--docs/feature_audio.md204
-rw-r--r--docs/feature_backlight.md17
-rw-r--r--docs/feature_bluetooth.md17
-rw-r--r--docs/feature_bootmagic.md29
-rw-r--r--docs/feature_common_shortcuts.md163
-rw-r--r--docs/feature_layouts.md77
-rw-r--r--docs/feature_leader_key.md (renamed from docs/leader_key.md)0
-rw-r--r--docs/feature_ps2_mouse.md238
-rw-r--r--docs/feature_rgblight.md49
-rw-r--r--docs/feature_thermal_printer.md10
-rw-r--r--docs/features.md2
-rw-r--r--docs/getting_started_build_tools.md (renamed from docs/build_environment_setup.md)132
-rw-r--r--docs/getting_started_github.md (renamed from docs/how_to_github.md)0
-rw-r--r--docs/getting_started_instroduction.md47
-rw-r--r--docs/getting_started_make_guide.md (renamed from docs/make_instructions.md)6
-rw-r--r--docs/getting_started_vagrant.md (renamed from docs/vagrant_guide.md)0
-rw-r--r--docs/gitbook/images/favicon.icobin117248 -> 1150 bytes
-rw-r--r--docs/gitbook/images/favicon.pngbin242 -> 793 bytes
-rw-r--r--docs/glossary.md10
-rw-r--r--docs/hand_wire.md6
-rw-r--r--docs/how_keyboards_work.md (renamed from docs/basic_how_keyboards_work.md)2
-rw-r--r--docs/key_functions.md128
-rw-r--r--docs/keycodes.md324
-rw-r--r--docs/keycodes_basic.md (renamed from docs/basic_keycodes.md)6
-rw-r--r--docs/keycodes_us_ansi_shifted.md31
-rw-r--r--docs/keymap.md7
-rw-r--r--docs/macros.md2
-rw-r--r--docs/modding_your_keyboard.md403
-rw-r--r--docs/porting_your_keyboard_to_qmk.md4
-rw-r--r--docs/qmk_overview.md75
-rw-r--r--docs/quantum_keycodes.md346
-rw-r--r--docs/redirects.json12
-rw-r--r--docs/stenography.md22
-rw-r--r--docs/understanding_qmk.md2
43 files changed, 1652 insertions, 1311 deletions
diff --git a/docs/README.md b/docs/README.md
index 06597a2b69..515ddb7783 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -12,7 +12,7 @@ Otherwise, you can either download it directly ([zip](https://github.com/qmk/qmk
## How to compile {#how-to-compile}
-Before you are able to compile, you'll need to [install an environment](build_environment_setup.md) for AVR or/and ARM development. Once that is complete, you'll use the `make` command to build a keyboard and keymap with the following notation:
+Before you are able to compile, you'll need to [install an environment](getting_started_build_tools.md) for AVR or/and ARM development. Once that is complete, you'll use the `make` command to build a keyboard and keymap with the following notation:
make planck-rev4-default
@@ -22,4 +22,4 @@ This would build the `rev4` revision of the `planck` with the `default` keymap.
## How to customize {#how-to-customize}
-QMK has lots of [features](features/README.md) to explore, and a good deal of [reference documentation](reference/README.md) to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).
+QMK has lots of [features](features.md) to explore, and a good deal of [reference documentation](http://docs.qmk.fm) to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).
diff --git a/docs/_summary.md b/docs/_summary.md
index 0f65de0dde..77d208fc3c 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -1,30 +1,52 @@
* [Getting started](README.md)
- * [QMK Overview](qmk_overview.md)
- * [Build Environment Setup](build_environment_setup.md)
- * [Vagrant Guide](vagrant_guide.md)
- * [Make instructions](make_instructions.md)
- * [FAQ: Creating a Keymap](faq_keymap.md)
- * [FAQ: Compiling QMK](faq_build.md)
- * [How to Github](how_to_github.md)
+ * [QMK Introduction](getting_started_introduction.md)
+ * [Install Build Tools](getting_started_build_tools.md)
+ * Alternative: [Vagrant Guide](getting_started_vagrant_guide.md)
+ * [Build/Compile instructions](getting_started_make_guide.md)
+ * [How to Use Github](getting_started_github.md)
+
+* [FAQ](faq.md)
+ * [General FAQ](faq_general.md)
+ * [Build/Compile QMK](faq_build.md)
+ * [Debugging/Troubleshooting QMK](faq_debug.md)
+ * [Keymap](faq_keymap.md)
* [Features](features.md)
- * [Layer switching](key_functions.md)
- * [Leader Key](leader_key.md)
- * [Macros](macros.md)
+ * [Layouts](feature_layouts.md)
+ * [Common Shortcuts](feature_common_shortcuts.md)
+ * [Backlight](feature_backlight.md)
+ * [Bootmagic](feature_bootmagic.md)
* [Dynamic Macros](dynamic_macros.md)
+ * [Key Lock](key_lock.md)
+ * [Leader Key](feature_leader_key.md)
+ * [Macros](macros.md)
+ * [Mouse keys](mouse_keys.md)
+ * [PS2 Mouse](feature_ps2_mouse.md)
* [Space Cadet](space_cadet_shift.md)
* [Tap Dance](tap_dance.md)
- * [Mouse keys](mouse_keys.md)
- * [Unicode](unicode.md)
+ * [Audio](feature_audio.md)
+ * [Thermal Printer](feature_thermal_printer.md)
* [Stenography](stenography.md)
- * [Key Lock](key_lock.md)
+ * [Unicode](unicode.md)
* Reference
* [Glossary](glossary.md)
* [Keymap overview](keymap.md)
* [Keycodes](keycodes.md)
- * [Basic Keycodes](basic_keycodes.md)
- * [Quantum Keycodes](quantum_keycodes.md)
+ * [Basic](keycodes_basic.md)
+ * [Quantum](quantum_keycodes.md)
+ * [Backlight](feature_backlight.md#backlight-keycodes)
+ * [Bluetooth](feature_bluetooth.md#bluetooth-keycodes)
+ * [Bootmagic](feature_bootmagic.md#bootmagic-keycodes)
+ * [Layer Switching](feature_common_shortcuts.md#switching-and-toggling-layers)
+ * [Mod+Key](feature_common_shortcuts.md#modifier-keys)
+ * [Mod Tap](feature_common_shortcuts.md#mod-tap)
+ * [One Shot Keys](feature_common_shortcuts.md#one-shot-keys)
+ * [Shifted Keys](feature_common_shortcuts.md#shifted-keycodes)
+ * [Stenography](stenography.md#keycode-reference)
+ * [RGB Light](feature_rgblight.md#rgblight-keycodes)
+ * [Thermal Printer](feature_thermal_printer.md#thermal-printer-keycodes)
+ * [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
* [The `config.h` File](config_options.md)
* [Customizing Functionality](custom_quantum_functions.md)
* [Documentation Best Practices](documentation_best_practices.md)
@@ -39,9 +61,8 @@
* [Porting your keyboard to QMK](porting_your_keyboard_to_qmk.md)
* For a Deeper Understanding
- * [How Keyboards Work](basic_how_keyboards_work.md)
+ * [How Keyboards Work](how_keyboards_work.md)
* [Understanding QMK](understanding_qmk.md)
* Other Topics
- * [General FAQ](faq.md)
* [Using Eclipse with QMK](eclipse.md)
diff --git a/docs/adding_features_to_qmk.md b/docs/adding_features_to_qmk.md
index fb036496c7..e031ddbb7b 100644
--- a/docs/adding_features_to_qmk.md
+++ b/docs/adding_features_to_qmk.md
@@ -11,6 +11,6 @@ Once you have implemented your new feature you will generally submit a [pull req
* **Disabled by default** - memory is a pretty limited on most chips QMK supports, and it's important that current keymaps aren't broken, so please allow your feature to be turned **on**, rather than being turned off. If you think it should be on by default, or reduces the size of the code, please talk with us about it.
* **Compile locally before submitting** - hopefully this one is obvious, but things need to compile! Our Travis system will catch any issues, but it's generally faster for you to compile a few keyboards locally instead of waiting for the results to come back.
-* **Consider subprojects and different chip-bases** - there are several keyboards that have subprojects that have allow for slightly different configurations, and even different chip-bases. Try to make a feature supported in ARM and AVR, or automatically disabled in one that doesn't work.
+* **Consider subprojects and different chip-bases** - there are several keyboards that have subprojects that allow for slightly different configurations, and even different chip-bases. Try to make a feature supported in ARM and AVR, or automatically disabled on platforms it doesn't work on.
* **Explain your feature** - Document it in `docs/`, either as a new file or as part of an existing file. If you don't document it other people won't be able to benefit from your hard work.
-* **Don't refactor code** - to maintain a clear vision of how things are laid out in QMK, we try to plan out refactors in-depth, and have a collaborator make the changes. If you have an idea for refactoring, or suggestions, [open an issue](https://github.com/qmk/qmk_firmware/issues).
+* **Don't refactor code** - to maintain a clear vision of how things are laid out in QMK, we try to plan out refactors in-depth, and have a collaborator make the changes. If you have an idea for refactoring, or suggestions, [open an issue](https://github.com/qmk/qmk_firmware/issues), we'd love to talk about how QMK can be improved.
diff --git a/docs/documentation_best_practices.md b/docs/documentation_best_practices.md
index f30793181c..059b25bcd3 100644
--- a/docs/documentation_best_practices.md
+++ b/docs/documentation_best_practices.md
@@ -75,3 +75,23 @@ You can add some colors. What about a warning message?
What about an error message?
**[error [ERROR] This is not the error you are looking for]
```
+
+# Documenting Features
+
+If you create a new feature for QMK, create a documentation page for it. It doesn't have to be very long, a few sentances describing your feature and a table listing any relevant keycodes is enough. Here is a basic template:
+
+```markdown
+# My Cool Feature
+
+This page describes my cool feature. You can use my cool feature to make coffee and order cream and sugar to be delivered via drone.
+
+## My Cool Feature Keycodes
+
+|Long Name|Short Name|Description|
+|---------|----------|-----------|
+|KC_COFFEE||Make Coffee|
+|KC_CREAM||Order Cream|
+|KC_SUGAR||Order Sugar|
+```
+
+Place your documentation into `docs/feature_<my_cool_feature>.md`, and add that file to the appropriate place in `docs/_summary.md`. If you have added any keycodes be sure to add them to `docs/keycodes.md` with a link back to your feature page.
diff --git a/docs/faq.md b/docs/faq.md
index 3287578ac7..506f57a72b 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -1,216 +1,6 @@
# Frequently Asked Questions
-## General
-
-### What is QMK?
-
-[QMK](https://github.com/qmk), short for Quantum Mechanical Keyboard, is a group of people building tools for custom keyboards. We started with the [QMK firmware](https://github.com/qmk/qmk_firmware), a heavily modified fork of [TMK](https://github.com/tmk/tmk_keyboard).
-
-### Why the name Quantum?
-
-<!-- FIXME -->
-
-### What Differences Are There Between QMK and TMK?
-
-TMK was originally designed and implemented by [Jun Wako](https://github.com/tmk). QMK started as [Jack Humbert's](https://github.com/jackhumbert) fork of TMK for the Planck. After a while Jack's fork had diverged quite a bit from TMK, and in 2015 Jack decided to rename his fork to QMK.
-
-From a technical standpoint QMK builds upon TMK by adding several new features. Most notably QMK has expanded the number of available keycodes and uses these to implement advanced features like `S()`, `LCTL()`, and `MO()`. You can see a complete list of these keycodes in [Quantum Keycodes](quantum_keycodes.html).
-
-From a project and community management standpoint TMK maintains all the officially supported keyboards by himself, with a bit of community support. Separate community maintained forks exist or can be created for other keyboards. Only a few keymaps are provided by default, so users typically don't share keymaps with each other. QMK encourages sharing of both keyboards and keymaps through a centrally managed repository, accepting all pull requests that follows the quality standards. These are mostly community maintained, but the QMK team also helps when necessary.
-
-Both approaches have their merits and their drawbacks, and code flows freely between TMK and QMK when it makes sense.
-
-# Building
-
-## Windows
-
-### I'm on Windows Vista, 7, or 8, how do I setup my build environment?
-
-Follow the build instructions to [install MHV AVR Tools](https://docs.qmk.fm/build_environment_setup.html#windows-vista-and-later).
-
-### I'm on Windows 10 without the Creators Update. Do I have to install it?
-
-No, but if you don't install the creators update you will not be able to build and flash with a single command. You will be able to build but to flash you will have to use a separate program, such as [QMK Flasher](https://github.com/qmk/qmk_flasher).
-
-# Troubleshooting
-
-## Debug Console
-### hid_listen can't recognize device
-When debug console of your device is not ready you will see like this:
-
-```
-Waiting for device:.........
-```
-
-once the device is pluged in then *hid_listen* finds it you will get this message:
-
-```
-Waiting for new device:.........................
-Listening:
-```
-
-If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes` in [Makefile]
-
-You may need privilege to access the device on OS like Linux.
-- try `sudo hid_listen`
-
-### Can't get message on console
-Check:
-- *hid_listen* finds your device. See above.
-- Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
-- set `debug_enable=true` usually in `matrix_init()` in **matrix.c**.
-- try using 'print' function instead of debug print. See **common/print.h**.
-- disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
-
-### Linux or UNIX like system requires Super User privilege
-Just use 'sudo' to execute *hid_listen* with privilege.
-```
-$ sudo hid_listen
-```
-
-Or add an *udev rule* for TMK devices with placing a file in rules directory. The directory may vary on each system.
-
-File: /etc/udev/rules.d/52-tmk-keyboard.rules(in case of Ubuntu)
-```
-# tmk keyboard products https://github.com/tmk/tmk_keyboard
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
-```
-
-## Software Issues
-
-### NKRO Doesn't work
-First you have to compile frimware with this build option `NKRO_ENABLE` in **Makefile**.
-
-Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS.
-
-If your firmeare built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic` **N** command(`Space+N` by default). This setting is stored in EEPROM and keeped over power cycles.
-
-https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
-
-### Can't read column of matrix beyond 16
-Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16.
-
-In C `1` means one of [int] type which is [16bit] in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use [unsigned long] type with `1UL`.
-
-http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
-
-
-### Bootloader jump doesn't work
-Properly configure bootloader size in **Makefile**. With wrong section size bootloader won't probably start with **Magic command** and **Boot Magic**.
-```
-# Size of Bootloaders in bytes:
-# Atmel DFU loader(ATmega32U4) 4096
-# Atmel DFU loader(AT90USB128) 8192
-# LUFA bootloader(ATmega32U4) 4096
-# Arduino Caterina(ATmega32U4) 4096
-# USBaspLoader(ATmega***) 2048
-# Teensy halfKay(ATmega32U4) 512
-# Teensy++ halfKay(AT90USB128) 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-```
-AVR Boot section size are defined by setting **BOOTSZ** fuse in fact. Consult with your MCU datasheet.
-Note that **Word**(2 bytes) size and address are used in datasheet while TMK uses **Byte**.
-
-AVR Boot section is located at end of Flash memory like the followings.
-```
-byte Atmel/LUFA(ATMega32u4) byte Atmel(AT90SUB1286)
-0x0000 +---------------+ 0x00000 +---------------+
- | | | |
- | | | |
- | Application | | Application |
- | | | |
- = = = =
- | | 32KB-4KB | | 128KB-8KB
-0x6000 +---------------+ 0x1E000 +---------------+
- | Bootloader | 4KB | Bootloader | 8KB
-0x7FFF +---------------+ 0x1FFFF +---------------+
-
-
-byte Teensy(ATMega32u4) byte Teensy++(AT90SUB1286)
-0x0000 +---------------+ 0x00000 +---------------+
- | | | |
- | | | |
- | Application | | Application |
- | | | |
- = = = =
- | | 32KB-512B | | 128KB-2KB
-0x7E00 +---------------+ 0x1FC00 +---------------+
- | Bootloader | 512B | Bootloader | 2KB
-0x7FFF +---------------+ 0x1FFFF +---------------+
-```
-
-And see this discussion for further reference.
-https://github.com/tmk/tmk_keyboard/issues/179
-
-
-### Special Extra key doesn't work(System, Audio control keys)
-You need to define `EXTRAKEY_ENABLE` in `rules.mk` to use them in QMK.
-
-```
-EXTRAKEY_ENABLE = yes # Audio control and System control
-```
-
-### Wakeup from sleep doesn't work
-
-In Windows check `Allow this device to wake the computer` setting in Power **Management property** tab of **Device Manager**. Also check BIOS setting.
-
-Pressing any key during sleep should wake host.
-
-## Hardware Issues
-
-### TrackPoint needs reset circuit(PS/2 mouse support)
-Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.
-
-- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
-- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
-
-### Using Arduino?
-
-**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.
-
-- http://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
-- http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
-
-Arduino leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
-
-### Using PF4-7 pins of USB AVR?
-You need to set JTD bit of MCUCR yourself to use PF4-7 as GPIO. Those pins are configured to serve JTAG function by default. MCUs like ATMega*U* or AT90USB* are affeteced with this.
-
-If you are using Teensy this isn't needed. Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function.
-
-See this code.
-```
- // JTAG disable for PORT F. write JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-```
-https://github.com/tmk/tmk_keyboard/blob/master/keyboard/hbkb/matrix.c#L67
-
-And read **26.5.1 MCU Control Register – MCUCR** of ATMega32U4 datasheet.
-
-
-### Program Arduino Micro/Leonardo
-Push reset button and then run command like this within 8 seconds.
-
-```
-avrdude -patmega32u4 -cavr109 -b57600 -Uflash:w:adb_usb.hex -P/dev/ttyACM0
-```
-
-Device name will vary depending on your system.
-
-http://arduino.cc/en/Main/ArduinoBoardMicro
-https://geekhack.org/index.php?topic=14290.msg1563867#msg1563867
-
-### Problem on BIOS(UEFI)/Resume(Sleep&Wake)/Power cycles
-Some people reported their keyboard stops working on BIOS and/or after resume(power cycles).
-
-As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others.
-
-https://github.com/tmk/tmk_keyboard/issues/266
-https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
-
-## Flashing Problems
-
-### Can't use dfu-programmer or QMK Flasher to flash on Windows
-
-Windows requires a driver to support the keyboard in DFU mode. You can use [QMK Driver Installer](https://github.com/qmk/qmk_driver_installer/releases) to install the necessary drivers.
+* [General](faq_general.md)
+* [Building or Compiling QMK](faq_build.md)
+* [Debugging and Troubleshooting QMK](faq_debug.md)
+* [Keymap](faq_keymap.md)
diff --git a/docs/faq_build.md b/docs/faq_build.md
index ebe8caccd1..fe3aeeef61 100644
--- a/docs/faq_build.md
+++ b/docs/faq_build.md
@@ -1,17 +1,9 @@
# Frequently Asked Build Questions
-This page covers questions about building QMK. If you have not yet you should read the [Build Guide](https://github.com/qmk/qmk_firmware/blob/master/docs/build_guide.md).
-
-In short,
-
- $ make [-f Makefile.<variant>] [KEYMAP=...] clean
- $ make [-f Makefile.<variant>] [KEYMAP=...]
- $ make [-f Makefile.<variant>] [KEYMAP=...] dfu
-
+This page covers questions about building QMK. If you have not yet you should read the [Build Environment Setup](getting_started_build_tools.md) and [Make Instructions](make_instructions.md) guides.
## Can't program on Linux
-You will need proper permission to operate a device. For Linux users see udev rules below.
-Easy way is to use `sudo` command, if you are not familiar with this command check its manual with `man sudo` or this page on line.
+You will need proper permission to operate a device. For Linux users see udev rules below. Easy way is to use `sudo` command, if you are not familiar with this command check its manual with `man sudo` or this page on line.
In short when your controller is ATMega32u4,
@@ -21,16 +13,16 @@ In short when your controller is ATMega32u4,
or just
- $ sudo make dfu
+ $ sudo make <keyboard>-<keymap>-dfu
-But to run `make` with root privilege is not good idea. Use former method as possible.
+But to run `make` with root privilege is not good idea. Use former method if possible.
## WINAVR is obsolete
It is no longer recommended and may cause some problem.
-See [Issue #99](https://github.com/tmk/tmk_keyboard/issues/99).
+See [TMK Issue #99](https://github.com/tmk/tmk_keyboard/issues/99).
## USB VID and PID
-You can use any ID you want with editing `config.h`. Using any presumably unused ID will be no problem in fact except for very least chance of collision with other product.
+You can use any ID you want with editing `config.h`. Using any presumably unused ID will be no problem in fact except for very low chance of collision with other product.
Most boards in QMK use `0xFEED` as the vendor ID. You should look through other keyboards to make sure you pick a unique Product ID.
@@ -41,7 +33,6 @@ You can buy a really unique VID:PID here. I don't think you need this for person
- http://www.obdev.at/products/vusb/license.html
- http://www.mcselec.com/index.php?page=shop.product_details&flypage=shop.flypage&product_id=92&option=com_phpshop&Itemid=1
-
## Linux udev rules
On Linux you need proper privilege to access device file of MCU, you'll have to use `sudo` when flashing firmware. You can circumvent this with placing these files in `/etc/udev/rules.d/`.
diff --git a/docs/faq_debug.md b/docs/faq_debug.md
new file mode 100644
index 0000000000..3f7cfe7477
--- /dev/null
+++ b/docs/faq_debug.md
@@ -0,0 +1,242 @@
+# Debugging FAQ
+
+This page details various common questions people have about troubleshooting their keyboards.
+
+# Debug Console
+
+## hid_listen can't recognize device
+When debug console of your device is not ready you will see like this:
+
+```
+Waiting for device:.........
+```
+
+once the device is pluged in then *hid_listen* finds it you will get this message:
+
+```
+Waiting for new device:.........................
+Listening:
+```
+
+If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes` in [Makefile]
+
+You may need privilege to access the device on OS like Linux.
+- try `sudo hid_listen`
+
+## Can't get message on console
+Check:
+- *hid_listen* finds your device. See above.
+- Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
+- set `debug_enable=true` usually in `matrix_init()` in **matrix.c**.
+- try using 'print' function instead of debug print. See **common/print.h**.
+- disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
+
+## Linux or UNIX like system requires Super User privilege
+Just use 'sudo' to execute *hid_listen* with privilege.
+```
+$ sudo hid_listen
+```
+
+Or add an *udev rule* for TMK devices with placing a file in rules directory. The directory may vary on each system.
+
+File: /etc/udev/rules.d/52-tmk-keyboard.rules(in case of Ubuntu)
+```
+# tmk keyboard products https://github.com/tmk/tmk_keyboard
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
+```
+
+***
+
+# Miscellaneous
+## Safety Considerations
+
+You probably don't want to "brick" your keyboard, making it impossible
+to rewrite firmware onto it. Here are some of the parameters to show
+what things are (and likely aren't) too risky.
+
+- If your keyboard map does not include RESET, then, to get into DFU
+ mode, you will need to press the reset button on the PCB, which
+ requires unscrewing the bottom.
+- Messing with tmk_core / common files might make the keyboard
+ inoperable
+- Too large a .hex file is trouble; `make dfu` will erase the block,
+ test the size (oops, wrong order!), which errors out, failing to
+ flash the keyboard, leaving it in DFU mode.
+ - To this end, note that the maximum .hex file size on Planck is
+ 7000h (28672 decimal)
+
+```
+Linking: .build/planck_rev4_cbbrowne.elf [OK]
+Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]
+
+Size after:
+ text data bss dec hex filename
+ 0 22396 0 22396 577c planck_rev4_cbbrowne.hex
+```
+
+ - The above file is of size 22396/577ch, which is less than
+ 28672/7000h
+ - As long as you have a suitable alternative .hex file around, you
+ can retry, loading that one
+ - Some of the options you might specify in your keyboard's Makefile
+ consume extra memory; watch out for BOOTMAGIC_ENABLE,
+ MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE
+- DFU tools do /not/ allow you to write into the bootloader (unless
+ you throw in extra fruitsalad of options), so there is little risk
+ there.
+- EEPROM has around a 100000 write cycle. You shouldn't rewrite the
+ firmware repeatedly and continually; that'll burn the EEPROM
+ eventually.
+## NKRO Doesn't work
+First you have to compile frimware with this build option `NKRO_ENABLE` in **Makefile**.
+
+Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS.
+
+If your firmeare built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic` **N** command(`Space+N` by default). This setting is stored in EEPROM and keeped over power cycles.
+
+https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
+
+
+## TrackPoint needs reset circuit(PS/2 mouse support)
+Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.
+
+- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
+- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
+
+
+## Can't read column of matrix beyond 16
+Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16.
+
+In C `1` means one of [int] type which is [16bit] in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use [unsigned long] type with `1UL`.
+
+http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
+
+
+## Bootloader jump doesn't work
+Properly configure bootloader size in **Makefile**. With wrong section size bootloader won't probably start with **Magic command** and **Boot Magic**.
+```
+# Size of Bootloaders in bytes:
+# Atmel DFU loader(ATmega32U4) 4096
+# Atmel DFU loader(AT90USB128) 8192