mirror of
https://github.com/rcornwell/sims.git
synced 2026-01-11 23:52:48 +00:00
KA10: Update DKB keyboard codes.
Alt is now META, and "GUI" is TOP.
This commit is contained in:
parent
c6ef47f3c3
commit
0ae1bc696e
@ -44,8 +44,8 @@
|
||||
#define CHAR 001777
|
||||
#define SHFT 000100
|
||||
#define TOP 000200
|
||||
#define META 000400
|
||||
#define CTRL 001000
|
||||
#define CTRL 000400
|
||||
#define META 001000
|
||||
|
||||
#define STATUS u3
|
||||
#define DATA u4
|
||||
@ -127,11 +127,11 @@ int dkb_modifiers (SIM_KEY_EVENT *kev)
|
||||
return 1;
|
||||
case SIM_KEY_WIN_L:
|
||||
case SIM_KEY_WIN_R:
|
||||
dkb_kmod |= META;
|
||||
dkb_kmod |= TOP;
|
||||
return 1;
|
||||
case SIM_KEY_ALT_L:
|
||||
case SIM_KEY_ALT_R:
|
||||
dkb_kmod |= TOP;
|
||||
dkb_kmod |= META;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@ -149,11 +149,11 @@ int dkb_modifiers (SIM_KEY_EVENT *kev)
|
||||
return 1;
|
||||
case SIM_KEY_WIN_L:
|
||||
case SIM_KEY_WIN_R:
|
||||
dkb_kmod &= ~META;
|
||||
dkb_kmod &= ~TOP;
|
||||
return 1;
|
||||
case SIM_KEY_ALT_L:
|
||||
case SIM_KEY_ALT_R:
|
||||
dkb_kmod &= ~TOP;
|
||||
dkb_kmod &= ~META;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@ -163,8 +163,11 @@ int dkb_modifiers (SIM_KEY_EVENT *kev)
|
||||
|
||||
int dkb_keys (SIM_KEY_EVENT *kev, UNIT *uptr)
|
||||
{
|
||||
if (kev->state == SIM_KEYPRESS_UP)
|
||||
if (kev->state == SIM_KEYPRESS_UP) {
|
||||
if (kev->key == SIM_KEY_F11)
|
||||
vid_set_fullscreen_window (kev->vptr, !vid_is_fullscreen_window (kev->vptr));
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (kev->key) {
|
||||
case SIM_KEY_0: /* ok */
|
||||
@ -181,7 +184,7 @@ int dkb_keys (SIM_KEY_EVENT *kev, UNIT *uptr)
|
||||
return 1;
|
||||
case SIM_KEY_2:
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
uptr->DATA = (dkb_kmod | 052) & ~TOP; /* Circle Star */
|
||||
uptr->DATA = (dkb_kmod | 005) & ~TOP; /* @ */
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 062;
|
||||
return 1;
|
||||
@ -211,19 +214,19 @@ int dkb_keys (SIM_KEY_EVENT *kev, UNIT *uptr)
|
||||
return 1;
|
||||
case SIM_KEY_7:
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
uptr->DATA = (dkb_kmod | 024) & ~TOP; /* & */
|
||||
uptr->DATA = (dkb_kmod | 024) & ~TOP; /* & (TOP+T) */
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 067;
|
||||
return 1;
|
||||
case SIM_KEY_8: /* ok */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
uptr->DATA = (dkb_kmod | 052) & ~TOP; /* * */
|
||||
uptr->DATA = dkb_kmod | 052 | SHFT; /* * */
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 070;
|
||||
return 1;
|
||||
case SIM_KEY_9: /* ok */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
uptr->DATA = dkb_kmod | 050; /* ( */
|
||||
uptr->DATA = dkb_kmod | 050 | SHFT; /* ( */
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 071;
|
||||
return 1;
|
||||
@ -308,38 +311,41 @@ int dkb_keys (SIM_KEY_EVENT *kev, UNIT *uptr)
|
||||
case SIM_KEY_Z:
|
||||
uptr->DATA = dkb_kmod | 032;
|
||||
return 1;
|
||||
case SIM_KEY_BACKQUOTE: /* ` ~ */
|
||||
case SIM_KEY_BACKQUOTE:
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
uptr->DATA = dkb_kmod | 043;
|
||||
uptr->DATA = (dkb_kmod | 025) & ~TOP; //` (TOP+U)
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 00;
|
||||
uptr->DATA = (dkb_kmod | 070) & ~TOP; //~ (TOP+8)
|
||||
return 1;
|
||||
case SIM_KEY_MINUS: /* - not */
|
||||
uptr->DATA = dkb_kmod | 055;
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
uptr->DATA = (dkb_kmod | 071) & ~TOP; //_ (TOP+9)
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 055;
|
||||
return 1;
|
||||
case SIM_KEY_EQUALS: /* = + */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
uptr->DATA = dkb_kmod | 053;
|
||||
uptr->DATA = dkb_kmod | 053 | SHFT;
|
||||
else
|
||||
uptr->DATA = (dkb_kmod | 010) & ~TOP;
|
||||
uptr->DATA = (dkb_kmod | 010) & ~TOP; //TOP+H
|
||||
return 1;
|
||||
case SIM_KEY_LEFT_BRACKET: /* [ { */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
uptr->DATA = (dkb_kmod | 017) & ~TOP;
|
||||
uptr->DATA = (dkb_kmod | 017) & ~TOP; //TOP+P
|
||||
else
|
||||
uptr->DATA = (dkb_kmod | 050) & ~TOP;;
|
||||
uptr->DATA = (dkb_kmod | 050) & ~TOP; //TOP+(
|
||||
return 1;
|
||||
case SIM_KEY_RIGHT_BRACKET: /* ] } */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
uptr->DATA = (dkb_kmod | 020) & ~TOP;
|
||||
uptr->DATA = (dkb_kmod | 020) & ~TOP; //TOP+O
|
||||
else
|
||||
uptr->DATA = (dkb_kmod | 051) & ~TOP;;
|
||||
uptr->DATA = (dkb_kmod | 051) & ~TOP; //TOP+)
|
||||
return 1;
|
||||
case SIM_KEY_SEMICOLON: /* ; : */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
uptr->DATA = dkb_kmod | 072 | TOP;
|
||||
uptr->DATA = dkb_kmod | 072 | SHFT;
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 073 | TOP;
|
||||
uptr->DATA = dkb_kmod | 073;
|
||||
return 1;
|
||||
case SIM_KEY_SINGLE_QUOTE: /* ok */ /* ' " */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP)
|
||||
@ -349,35 +355,33 @@ int dkb_keys (SIM_KEY_EVENT *kev, UNIT *uptr)
|
||||
return 1;
|
||||
case SIM_KEY_BACKSLASH: /* Ok */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP) /* \ | */
|
||||
uptr->DATA = (dkb_kmod | 053) & ~TOP;
|
||||
else if ((dkb_kmod & (TOP|SHFT)) == SHFT)
|
||||
uptr->DATA = (dkb_kmod | 034) & ~TOP;
|
||||
uptr->DATA = (dkb_kmod | 053) & ~TOP; //TOP++
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 034 | TOP;
|
||||
uptr->DATA = dkb_kmod | 034;
|
||||
return 1;
|
||||
case SIM_KEY_LEFT_BACKSLASH:
|
||||
uptr->DATA = dkb_kmod | 034;
|
||||
return 1;
|
||||
case SIM_KEY_COMMA: /* ok */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP) /* , < */
|
||||
uptr->DATA = (dkb_kmod | 04) & ~TOP;
|
||||
uptr->DATA = (dkb_kmod | 04) & ~TOP; //TOP+D
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 054 | TOP;
|
||||
uptr->DATA = dkb_kmod | 054;
|
||||
return 1;
|
||||
case SIM_KEY_PERIOD: /* Ok */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP) /* . > */
|
||||
uptr->DATA = (dkb_kmod | 06) & ~TOP;
|
||||
uptr->DATA = (dkb_kmod | 06) & ~TOP; //TOP+F
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 056;
|
||||
return 1;
|
||||
case SIM_KEY_SLASH: /* Ok */
|
||||
if ((dkb_kmod & (TOP|SHFT)) == TOP) /* / ? */
|
||||
uptr->DATA = (dkb_kmod | 056) & ~TOP;
|
||||
uptr->DATA = (dkb_kmod | 056) & ~TOP; //TOP+.
|
||||
else
|
||||
uptr->DATA = dkb_kmod | 057;
|
||||
return 1;
|
||||
case SIM_KEY_ESC:
|
||||
uptr->DATA = dkb_kmod | 042;
|
||||
uptr->DATA = dkb_kmod | 075; //ALT
|
||||
return 1;
|
||||
case SIM_KEY_BACKSPACE:
|
||||
uptr->DATA = dkb_kmod | 074;
|
||||
@ -394,6 +398,36 @@ int dkb_keys (SIM_KEY_EVENT *kev, UNIT *uptr)
|
||||
case SIM_KEY_SPACE:
|
||||
uptr->DATA = dkb_kmod | 040;
|
||||
return 1;
|
||||
case SIM_KEY_F1:
|
||||
uptr->DATA = dkb_kmod | 043; //CALL
|
||||
return 1;
|
||||
case SIM_KEY_F2:
|
||||
uptr->DATA = dkb_kmod | 042; //ESC
|
||||
return 1;
|
||||
case SIM_KEY_F3:
|
||||
uptr->DATA = dkb_kmod | 041; //BREAK
|
||||
return 1;
|
||||
case SIM_KEY_F4:
|
||||
uptr->DATA = dkb_kmod | 035; //LINE
|
||||
return 1;
|
||||
case SIM_KEY_F5:
|
||||
uptr->DATA = dkb_kmod | 046; //FORM
|
||||
return 1;
|
||||
case SIM_KEY_F6:
|
||||
uptr->DATA = dkb_kmod | 047; //VT
|
||||
return 1;
|
||||
case SIM_KEY_LEFT:
|
||||
uptr->DATA = (dkb_kmod | 012) & ~TOP; //Left arrow (TOP+J)
|
||||
return 1;
|
||||
case SIM_KEY_RIGHT:
|
||||
uptr->DATA = (dkb_kmod | 013) & ~TOP; //Right arrow (TOP+K)
|
||||
return 1;
|
||||
case SIM_KEY_DOWN:
|
||||
uptr->DATA = (dkb_kmod | 072 ) & ~TOP; //Down arrow (TOP+;)
|
||||
return 1;
|
||||
case SIM_KEY_UP:
|
||||
uptr->DATA = (dkb_kmod | 073) & ~TOP; //Up arrow (TOP+:)
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
@ -422,6 +456,7 @@ int dkb_keyboard (SIM_KEY_EVENT *kev)
|
||||
if (dkb_unit[0].LINE != ~0U && dkb_keys (kev, &dkb_unit[0])) {
|
||||
dkb_unit[0].DATA |= VALID;
|
||||
dkb_unit[0].STATUS |= DONE;
|
||||
sim_debug(DEBUG_DETAIL, &dkb_dev, "DKB interrupt, data %o\n", dkb_unit[0].DATA);
|
||||
set_interrupt(DKB_DEVNUM, dkb_unit[0].PIA);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user