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_DDR DDRD
|
||||
#define ADB_DATA_BIT 0
|
||||
//#define ADB_PSW_BIT 1 // optional
|
||||
#define ADB_PSW_BIT 1
|
||||
|
||||
/* key combination for command */
|
||||
#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) 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
|
||||
if (codes == 0 && has_media_keys &&
|
||||
(codes = adb_host_kbd_recv(ADB_ADDR_APPLIANCE))) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue