aboutsummaryrefslogtreecommitdiff
path: root/src/irc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/irc.c')
-rw-r--r--src/irc.c64
1 files changed, 36 insertions, 28 deletions
diff --git a/src/irc.c b/src/irc.c
index fb3b979..71026c0 100644
--- a/src/irc.c
+++ b/src/irc.c
@@ -7,7 +7,6 @@
#include "screen.h"
#include "edbox.h"
#include "numerics.h"
-#include "keyclick.h"
#include <atari.h>
#include <conio.h>
@@ -15,6 +14,8 @@
#include "config.h"
#include "indic8.h"
#include "complete.h"
+#include "keytab.h"
+#include "kgetc.h"
#ifndef VERSION
#define VERSION "?????"
@@ -811,12 +812,10 @@ void irc_register(void) {
}
static void scrollback() {
- OS.ch = 0xff;
scr_scrollback();
- while(OS.ch == 0xff)
+ while(!keypress())
irc_read();
- keyclick();
- OS.ch = 0xff;
+ kgetc();
scr_end_scrollback();
}
@@ -949,18 +948,14 @@ static void toggle_edbox_only(void) {
OS.sdlst = edbox_only_dlist;
}
-void start_keystroke(void) {
- char i, s;
+void start_keystroke(char c) {
+ char s;
- i = cgetc();
+ start_latch = 0;
+ if(c == CH_ESC) return;
- start_latch = OS.escflg = OS.invflg = 0;
- if(i == CH_ESC) {
- return;
- }
-
- if(i >= '1' && i <= '7') {
- s = i - '1';
+ if(c >= '1' && c <= '7') {
+ s = c - '1';
if(s != scr_current) {
if(scr_status[s] != SCR_UNUSED) {
scr_prev = scr_current;
@@ -970,8 +965,8 @@ void start_keystroke(void) {
return;
}
- switch(tolower(i)) {
- case CH_CURS_UP:
+ switch(tolower(c)) {
+ case XCH_UP:
case '-':
scrollback();
return;
@@ -982,20 +977,20 @@ void start_keystroke(void) {
scr_prev = SCR_PRIV;
scr_destroy(scr_current);
return;
- case CH_CURS_LEFT:
+ case XCH_LEFT:
case '+':
scr_prev = scr_current;
hunt_screen(-1);
return;
- case CH_CURS_RIGHT:
+ case XCH_RIGHT:
case '*':
scr_prev = scr_current;
hunt_screen(1);
return;
- case CH_TAB:
- i = scr_current;
+ case XCH_TAB:
+ c = scr_current;
scr_display(scr_prev);
- scr_prev = i;
+ scr_prev = c;
return;
case 'q':
if(scr_current == SCR_PRIV && *last_pm_nick) {
@@ -1043,16 +1038,29 @@ void start_keystroke(void) {
}
}
-static void keystroke(void) {
- if(OS.ch == 0xff) return;
+static void poll_keyboard(void) {
+ char c, s;
+
+ s = GTIA_READ.consol;
+
+ if(!keypress()) return;
+
+ c = kgetc();
+ if(!c) return;
+
+ if(s == 6) start_latch = 1;
+
+ /* maybe this shouldn't happen until user presses Enter in the edbox?
+ would let lurkers lurk and read scrollback... */
if(irc_away) {
txbuf_send_str("AWAY");
irc_away = 0;
}
- if(GTIA_READ.consol == 6 || start_latch) { /* start pressed */
- start_keystroke();
+
+ if(start_latch) { /* start pressed */
+ start_keystroke(c);
} else {
- edbox_keystroke();
+ edbox_keystroke(c);
OS.cdtmv3 = hz / 2;
}
}
@@ -1078,7 +1086,7 @@ void irc_loop(void) {
}
OS.cdtmv3 = 0;
do {
- keystroke();
+ poll_keyboard();
} while(OS.cdtmv3);
}
}