adb_usb: Add PSW pin support #735
NeXT ADB keyboard Power key doesn't send scan code and only asserts PSW.
This commit is contained in:
parent
da230d3896
commit
538a241ddc
2 changed files with 17 additions and 1 deletions
|
|
@ -56,7 +56,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define ADB_PIN PIND
|
#define ADB_PIN PIND
|
||||||
#define ADB_DDR DDRD
|
#define ADB_DDR DDRD
|
||||||
#define ADB_DATA_BIT 0
|
#define ADB_DATA_BIT 0
|
||||||
//#define ADB_PSW_BIT 1 // optional
|
#define ADB_PSW_BIT 1
|
||||||
|
|
||||||
/* key combination for command */
|
/* key combination for command */
|
||||||
#ifndef __ASSEMBLER__
|
#ifndef __ASSEMBLER__
|
||||||
|
|
|
||||||
|
|
@ -621,6 +621,22 @@ uint8_t matrix_scan(void)
|
||||||
if (!codes && adb_service_request()) codes = adb_host_kbd_recv(ADB_ADDR_KEYBOARD);
|
if (!codes && adb_service_request()) codes = adb_host_kbd_recv(ADB_ADDR_KEYBOARD);
|
||||||
if (codes) xprintf("%04X ", codes);
|
if (codes) xprintf("%04X ", codes);
|
||||||
|
|
||||||
|
// Check PSW pin
|
||||||
|
static bool psw_state = false;
|
||||||
|
if (codes == 0) {
|
||||||
|
if (!psw_state) {
|
||||||
|
if (!adb_host_psw()) {
|
||||||
|
codes = 0x7F7F; // power key press
|
||||||
|
psw_state = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (adb_host_psw()) {
|
||||||
|
codes = 0xFFFF; // power key release
|
||||||
|
psw_state = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Adjustable keybaord media keys
|
// Adjustable keybaord media keys
|
||||||
if (codes == 0 && has_media_keys &&
|
if (codes == 0 && has_media_keys &&
|
||||||
(codes = adb_host_kbd_recv(ADB_ADDR_APPLIANCE))) {
|
(codes = adb_host_kbd_recv(ADB_ADDR_APPLIANCE))) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue