};
uint8_t vtattr_cap = 0;
+struct vt_repeat keyrepeat;
+static uint8_t kbd_timer;
/* tty1 is the screen tty2 is the serial port */
void tty_putc(uint8_t minor, unsigned char c)
{
- irqflags_t irq;
if (minor == 1)
vtoutput(&c, 1);
else
*pia_col;
newkey = 0;
keyproc();
- if (keysdown < 3 && newkey)
- keydecode();
+ if (keysdown && keysdown < 3) {
+ if (newkey) {
+ keydecode();
+ kbd_timer = keyrepeat.first;
+ } else if (! --kbd_timer) {
+ keydecode();
+ kbd_timer = keyrepeat.continual;
+ }
+ }
// fd_timer_tick();
timer_interrupt();
}
VTA_OVERSTRIKE|VTA_NOCURSOR;
static uint8_t vmode;
+static uint8_t kbd_timer;
+struct vt_repeat keyrepeat;
/* tty1 is the screen tty2 is the serial port */
*pia_col;
newkey = 0;
keyproc();
- if (keysdown < 3 && newkey)
- keydecode();
+ if (keysdown && keysdown < 3) {
+ if (newkey) {
+ keydecode();
+ kbd_timer = keyrepeat.first;
+ } else if (! --kbd_timer) {
+ keydecode();
+ kbd_timer = keyrepeat.continual;
+ }
+ }
fd_timer_tick();
timer_interrupt();
}
char tbuf1[TTYSIZ];
char tbuf2[TTYSIZ];
+struct vt_repeat keyrepeat;
uint8_t vtattr_cap;
+static uint8_t kbd_timer;
struct s_queue ttyinq[NUM_DEV_TTY + 1] = { /* ttyinq[0] is never used */
{NULL, NULL, NULL, 0, 0, 0},
update_keyboard();
keyproc();
- if (keysdown < 3 && newkey)
- keydecode();
+ if (keysdown && keysdown < 3) {
+ if (newkey) {
+ keydecode();
+ kbd_timer = keyrepeat.first;
+ } else if (! --kbd_timer) {
+ keydecode();
+ kbd_timer = keyrepeat.continual;
+ }
+ }
}
void tty_sleeping(uint8_t minor)
it then call the vt ioctl or just intercept the vt ioctl */
uint8_t vtattr_cap;
+struct vt_repeat keyrepeat;
+static uint8_t kbd_timer;
+
char tbuf1[TTYSIZ];
char tbuf2[TTYSIZ];
char tbuf3[TTYSIZ];
{
newkey = 0;
keyproc();
- if (keysdown < 3 && newkey)
- keydecode();
+ if (keysdown && keysdown < 3) {
+ if (newkey) {
+ keydecode();
+ kbd_timer = keyrepeat.first;
+ } else if (! --kbd_timer) {
+ keydecode();
+ kbd_timer = keyrepeat.continual;
+ }
+ }
}
void tty_interrupt(void)
__sfr __at 0xB9 kmap9;
uint8_t vtattr_cap;
+struct vt_repeat keyrepeat;
+static uint8_t kbd_timer;
char tbuf1[TTYSIZ];
char tbuf2[TTYSIZ];
newkey = 0;
keyproc();
- if (keysdown < 3 && newkey)
- keydecode();
+ if (keysdown && keysdown < 3) {
+ if (newkey) {
+ keydecode();
+ kbd_timer = keyrepeat.first;
+ } else if (! --kbd_timer) {
+ keydecode();
+ kbd_timer = keyrepeat.continual;
+ }
+ }
timer_interrupt();
}
if (!(a & 16)) {
newkey = 0;
keyproc();
- if (keysdown < 3 && newkey)
- keydecode();
+ if (keysdown && keysdown < 3) {
+ if (newkey) {
+ keydecode();
+ kbd_timer = keyrepeat.first;
+ } else if (! --kbd_timer) {
+ keydecode();
+ kbd_timer = keyrepeat.continual;
+ }
+ }
timer_interrupt();
}
/* clear the mask */
#undef DEBUG /* UNdefine to delete debug code sequences */
uint8_t vtattr_cap;
+struct vt_repeat keyrepeat;
+static uint8_t kbd_timer;
__sfr __at 0xE0 dart0d;
__sfr __at 0xE1 dart0c;
floppy motor etc */
void platform_interrupt(void)
{
- newkey = 0;
- keyproc();
- if (keysdown < 3 && newkey)
- keydecode();
- timer_interrupt();
+ newkey = 0;
+ keyproc();
+ if (keysdown && keysdown < 3) {
+ if (newkey) {
+ keydecode();
+ kbd_timer = keyrepeat.first;
+ } else if (! --kbd_timer) {
+ keydecode();
+ kbd_timer = keyrepeat.continual;
+ }
+ }
+ timer_interrupt();
}
-
char tbuf1[TTYSIZ];
uint8_t vtattr_cap;
+struct vt_repeat keyrepeat;
+static uint8_t kbd_timer;
/* buffer for port scan procedure */
uint8_t keybuf[8];
}
keymap[i] = keybuf[i];
}
+ if (keysdown && keysdown < 3) {
+ if (newkey) {
+ keydecode();
+ kbd_timer = keyrepeat.first;
+ } else if (! --kbd_timer) {
+ keydecode();
+ kbd_timer = keyrepeat.continual;
+ }
+ }
- if (keysdown < 3 && newkey)
- keydecode();
}
static uint8_t cursor[4] = { KEY_LEFT, KEY_DOWN, KEY_UP, KEY_RIGHT };