M README.md => README.md +5 -5
@@ 164,12 164,12 @@ TODO: Magic key combination to avoid unintentional press during plug in
**TBD**
-Mechanical Locking support for CapsLock
----------------------------------------
-To enable this feature define these two macros in `config.h` and use `KC_LCAP` for locking CapsLock in keymap instead of normal `KC_CAPS`. Resync option tries to keep lock switch state consistent with keyboard LED state.
+Mechanical Locking support
+--------------------------
+This feature makes it possible for you to use mechanical switch for `CapsLock`, `NumLock` or `ScrollLock`. To enable this feature define these macros in `config.h` and use `KC_LCAP`, `KC_LNUM` or `KC_LSCR` in keymap for locking key instead of normal `KC_CAPS`, `KC_NLCK` or `KC_SLCK`. Resync option tries to keep lock switch state consistent with keyboard LED state.
- #define CAPSLOCK_LOCKING_ENABLE
- #define CAPSLOCK_LOCKING_RESYNC_ENABLE
+ #define LOCKING_SUPPORT_ENABLE
+ #define LOCKING_RESYNC_ENABLE
Start Your Own Project
M common/action.c => common/action.c +48 -4
@@ 336,9 336,10 @@ void register_code(uint8_t code)
if (code == KC_NO) {
return;
}
-#ifdef CAPSLOCK_LOCKING_ENABLE
+
+#ifdef LOCKING_SUPPORT_ENABLE
else if (KC_LOCKING_CAPS == code) {
-#ifdef CAPSLOCK_LOCKING_RESYNC_ENABLE
+#ifdef LOCKING_RESYNC_ENABLE
// Resync: ignore if caps lock already is on
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) return;
#endif
@@ 347,7 348,28 @@ void register_code(uint8_t code)
host_del_key(KC_CAPSLOCK);
host_send_keyboard_report();
}
+
+ else if (KC_LOCKING_NUM == code) {
+#ifdef LOCKING_RESYNC_ENABLE
+ if (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) return;
+#endif
+ host_add_key(KC_NUMLOCK);
+ host_send_keyboard_report();
+ host_del_key(KC_NUMLOCK);
+ host_send_keyboard_report();
+ }
+
+ else if (KC_LOCKING_SCROLL == code) {
+#ifdef LOCKING_RESYNC_ENABLE
+ if (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) return;
+#endif
+ host_add_key(KC_SCROLLLOCK);
+ host_send_keyboard_report();
+ host_del_key(KC_SCROLLLOCK);
+ host_send_keyboard_report();
+ }
#endif
+
else if IS_KEY(code) {
// TODO: should push command_proc out of this block?
if (command_proc(code)) return;
@@ 386,9 408,10 @@ void unregister_code(uint8_t code)
if (code == KC_NO) {
return;
}
-#ifdef CAPSLOCK_LOCKING_ENABLE
+
+#ifdef LOCKING_SUPPORT_ENABLE
else if (KC_LOCKING_CAPS == code) {
-#ifdef CAPSLOCK_LOCKING_RESYNC_ENABLE
+#ifdef LOCKING_RESYNC_ENABLE
// Resync: ignore if caps lock already is off
if (!(host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) return;
#endif
@@ 397,7 420,28 @@ void unregister_code(uint8_t code)
host_del_key(KC_CAPSLOCK);
host_send_keyboard_report();
}
+
+ else if (KC_LOCKING_NUM == code) {
+#ifdef LOCKING_RESYNC_ENABLE
+ if (!(host_keyboard_leds() & (1<<USB_LED_NUM_LOCK))) return;
+#endif
+ host_add_key(KC_NUMLOCK);
+ host_send_keyboard_report();
+ host_del_key(KC_NUMLOCK);
+ host_send_keyboard_report();
+ }
+
+ else if (KC_LOCKING_SCROLL == code) {
+#ifdef LOCKING_RESYNC_ENABLE
+ if (!(host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK))) return;
+#endif
+ host_add_key(KC_SCROLLLOCK);
+ host_send_keyboard_report();
+ host_del_key(KC_SCROLLLOCK);
+ host_send_keyboard_report();
+ }
#endif
+
else if IS_KEY(code) {
host_del_key(code);
host_send_keyboard_report();
M common/keycode.h => common/keycode.h +5 -2
@@ 60,10 60,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define KC_DEL KC_DELETE
#define KC_INS KC_INSERT
#define KC_CAPS KC_CAPSLOCK
+#define KC_CLCK KC_CAPSLOCK
#define KC_RGHT KC_RIGHT
#define KC_PGDN KC_PGDOWN
#define KC_PSCR KC_PSCREEN
-#define KC_SLCK KC_SCKLOCK
+#define KC_SLCK KC_SCROLLLOCK
#define KC_PAUS KC_PAUSE
#define KC_BRK KC_PAUSE
#define KC_NLCK KC_NUMLOCK
@@ 82,6 83,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define KC_NUHS KC_NONUS_HASH
#define KC_NUBS KC_NONUS_BSLASH
#define KC_LCAP KC_LOCKING_CAPS
+#define KC_LNUM KC_LOCKING_NUM
+#define KC_LSCR KC_LOCKING_SCROLL
#define KC_ERAS KC_ALT_ERASE,
#define KC_CLR KC_CLEAR
/* Japanese specific */
@@ 230,7 233,7 @@ enum hid_keyboard_keypad_usage {
KC_F11,
KC_F12,
KC_PSCREEN,
- KC_SCKLOCK,
+ KC_SCROLLLOCK,
KC_PAUSE,
KC_INSERT,
KC_HOME,
M converter/adb_usb/README.md => converter/adb_usb/README.md +2 -2
@@ 9,10 9,10 @@ Discuss: http://geekhack.org/showwiki.php?title=Island:14290
Build
-----
-0. Connect ADB keyboard to Teensy by 3 lines(Vcc, GND, Data). By default Data line uses port F0.
+0. Connect ADB keyboard to Teensy by 3 lines(Vcc, GND, Data). By default Data line uses port D0.
This converter uses AVR's internal pull-up, but it seems to be too weak, in particular when you want to use a long or coiled cable.
The external pull-up resistor(1K-10K Ohm) on Data is strongly recommended.
-1. Define following macros for ADB connection in config.h if you use other than port F0.
+1. Define following macros for ADB connection in config.h if you use other than port D0.
ADB_PORT, ADB_PIN, ADB_DDR, ADB_DATA_BIT
2. make
3. program Teensy
M converter/adb_usb/config.h => converter/adb_usb/config.h +7 -7
@@ 34,10 34,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL(code) ((code)&0x07)
-/* Mechanical locking CapsLock support. Use KC_LCAP instead of KC_CAPS in keymap */
-#define CAPSLOCK_LOCKING_ENABLE
-/* Locking CapsLock resynchronize hack */
-#define CAPSLOCK_LOCKING_RESYNC_ENABLE
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
/* legacy keymap support */
@@ 51,9 51,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* ADB port setting */
-#define ADB_PORT PORTF
-#define ADB_PIN PINF
-#define ADB_DDR DDRF
+#define ADB_PORT PORTD
+#define ADB_PIN PIND
+#define ADB_DDR DDRD
#define ADB_DATA_BIT 0
//#define ADB_PSW_BIT 1 // optional
M converter/m0110_usb/config.h => converter/m0110_usb/config.h +4 -4
@@ 36,10 36,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define USE_LEGACY_KEYMAP
-/* Mechanical locking CapsLock support. Use KC_LCAP instead of KC_CAPS in keymap */
-#define CAPSLOCK_LOCKING_ENABLE
-/* Locking CapsLock resynchronize hack */
-#define CAPSLOCK_LOCKING_RESYNC_ENABLE
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
/* magic key */
M keyboard/gh60/config.h => keyboard/gh60/config.h +4 -4
@@ 37,10 37,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
-/* Mechanical locking CapsLock support. Use KC_LCAP instead of KC_CAPS in keymap */
-#define CAPSLOCK_LOCKING_ENABLE
-/* Locking CapsLock resynchronize hack */
-#define CAPSLOCK_LOCKING_RESYNC_ENABLE
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
/* key combination for command */
#define IS_COMMAND() ( \