Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!caip!think!husc6!seismo!mcvax!diku!olamb!kimcm From: kimcm@olamb.UUCP (Kim Chr. Madsen) Newsgroups: net.sources Subject: code.c - a program to show keyboard codes Message-ID: <116@olamb.UUCP> Date: Mon, 13-Oct-86 13:54:40 EDT Article-I.D.: olamb.116 Posted: Mon Oct 13 13:54:40 1986 Date-Received: Fri, 17-Oct-86 08:04:11 EDT Organization: AmbraSoft A/S (Denmark) Lines: 225 Keywords: keyboard, ascii codes Here is a nice little program for finding out what codes each key on the keyboard is sending to the system - it is especially handy trying to find out what some function-keys are sending. The program is developed under UNIX system V on a 3B2/400. #!/bin/sh # shar: Shell Archiver # Run the following text with /bin/sh to create: # ascii.h # code.c sed 's/^X//' << 'SHAR_EOF' > ascii.h X/* X * Defines special characters and their values. X * X * (c) 1986 by Kim Chr. Madsen at AmbraSoft A/S. X */ X X#define NUL 000 X#define SOH 001 X#define STX 002 X#define ETX 003 X#define EOT 004 X#define ENQ 005 X#define ACK 006 X#define BEL 007 X#define BS 010 X#define HT 011 X#define LF 012 X#define VT 013 X#define FF 014 X#define CR 015 X#define SO 016 X#define SI 017 X#define DLE 020 X#define DC1 021 X#define DC2 022 X#define DC3 023 X#define DC4 024 X#define NAK 025 X#define SYN 026 X#define ETB 027 X#define CAN 030 X#define EM 031 X#define SUB 032 X#define ESC 033 X#define FS 034 X#define GS 035 X#define RS 036 X#define US 037 X#define SP 040 X#define DEL 0177 SHAR_EOF sed 's/^X//' << 'SHAR_EOF' > code.c X/* X * code - a program to determine the numerical codes for keys on the X * keyboard. X * X * call: X * code X * X * instructions: X * Call code, and you will get the prompt ``code> '' X * enter the key and and you will see the numerical X * codes in decimal, octal and hexadecimal. X * Enter DEL twice to escape the program. X * X * (c) 1986 by Kim Chr. Madsen @ AmbraSoft A/S X * kimcm@olamb.UUCP or ..seismo!mcvax!diku!olamb!kimcm X * X */ X X#include X#include X#include X#include X#include "ascii.h" X Xstruct termio tty, ntty; X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X char *prompt = "code> "; X char c; X int pos; X int del=0; X X if (ioctl(0, TCGETA, &tty)) { X perror("ioctl"); X exit(1); X } X ntty = tty; X ntty.c_iflag &= ~IXON; X ntty.c_iflag &= ~IXOFF; X ntty.c_lflag &= ~ISIG; X ntty.c_lflag &= ~ICANON; X ntty.c_lflag &= ~ECHO; X ntty.c_oflag &= ~OPOST; X ntty.c_cc[VTIME] = 30; X ntty.c_cc[VMIN] = 1; X ioctl(0, TCSETA, &ntty); X printf(prompt); X pos=3; X for (;;) { X c=getchar(); X switch (c) { X case NUL : X printf(""); X break; X case SOH : X printf(""); X break; X case STX : X printf(""); X break; X case ETX : X printf(""); X break; X case EOT : X printf(""); X break; X case ENQ : X printf(""); X break; X case ACK : X printf(""); X break; X case BEL : X printf(""); X break; X case BS : X printf(" "); X break; X case HT : X printf(" "); X break; X case LF : X printf(" "); X break; X case VT : X printf(" "); X break; X case FF : X printf(" "); X break; X case CR : X printf(" "); X break; X case SO : X printf(" "); X break; X case SI : X printf(" "); X break; X case DLE : X printf(""); X break; X case DC1 : X printf(""); X break; X case DC2 : X printf(""); X break; X case DC3 : X printf(""); X break; X case DC4 : X printf(""); X break; X case NAK : X printf(""); X break; X case SYN : X printf(""); X break; X case ETB : X printf(""); X break; X case CAN : X printf(""); X break; X case EM : X printf(" "); X break; X case SUB : X printf(""); X break; X case ESC : X printf(""); X break; X case FS : X printf(" "); X break; X case GS : X printf(" "); X break; X case RS : X printf(" "); X break; X case US : X printf(" "); X break; X case SP : X printf(" "); X break; X case DEL : X if (del) goto end; X del++; X printf(""); X break; X default : X printf("%c ",c); X break; X } X printf(" %4d 0%-4o 0x%-4x\n\r%s",c,c,c,prompt); X if (c != DEL) del=0; X } Xend: printf("\n\r"); X ioctl(0, TCSETA, &tty); X} SHAR_EOF exit