summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordwmalone <dwmalone@FreeBSD.org>2000-09-11 20:37:42 +0000
committerdwmalone <dwmalone@FreeBSD.org>2000-09-11 20:37:42 +0000
commiteeb5416b4738f452cac300d13f704c4b03d5d370 (patch)
treeccf2ead9bbeec7dddfd835afb860d0205f0f8dc9
parentc35d103e0f7e019bf6237cd8451bd0a69960b339 (diff)
downloadFreeBSD-src-eeb5416b4738f452cac300d13f704c4b03d5d370.zip
FreeBSD-src-eeb5416b4738f452cac300d13f704c4b03d5d370.tar.gz
Add the ability to define a "shutdown" and "shutdown and poweroff" key
to syscons. I have a man page to follow describing the format of the kbdmap file. PR: 19273 Reviewed by: sheldonh
-rw-r--r--sys/dev/kbd/kbd.c1
-rw-r--r--sys/dev/syscons/syscons.c12
-rw-r--r--sys/pc98/pc98/syscons.c12
-rw-r--r--sys/sys/kbio.h2
-rw-r--r--usr.sbin/kbdcontrol/kbdcontrol.c16
-rw-r--r--usr.sbin/kbdcontrol/lex.h2
-rw-r--r--usr.sbin/kbdcontrol/lex.l2
7 files changed, 47 insertions, 0 deletions
diff --git a/sys/dev/kbd/kbd.c b/sys/dev/kbd/kbd.c
index ba436be..a9471e8 100644
--- a/sys/dev/kbd/kbd.c
+++ b/sys/dev/kbd/kbd.c
@@ -1144,6 +1144,7 @@ genkbd_keyaction(keyboard_t *kbd, int keycode, int up, int *shiftstate,
/* NON-LOCKING KEYS */
case SPSC: case RBT: case SUSP: case STBY:
case DBG: case NEXT: case PREV: case PNC:
+ case HALT: case PDWN:
*accents = 0;
break;
case BTAB:
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c
index 49b8f6c..43b7724 100644
--- a/sys/dev/syscons/syscons.c
+++ b/sys/dev/syscons/syscons.c
@@ -3102,6 +3102,18 @@ next_code:
#endif
break;
+ case HALT:
+#ifndef SC_DISABLE_REBOOT
+ shutdown_nice(RB_HALT);
+#endif
+ break;
+
+ case PDWN:
+#ifndef SC_DISABLE_REBOOT
+ shutdown_nice(RB_HALT|RB_POWEROFF);
+#endif
+ break;
+
#if NAPM > 0
case SUSP:
apm_suspend(PMST_SUSPEND);
diff --git a/sys/pc98/pc98/syscons.c b/sys/pc98/pc98/syscons.c
index 6b243ad..65a7595 100644
--- a/sys/pc98/pc98/syscons.c
+++ b/sys/pc98/pc98/syscons.c
@@ -3121,6 +3121,18 @@ next_code:
#endif
break;
+ case HALT:
+#ifndef SC_DISABLE_REBOOT
+ shutdown_nice(RB_HALT);
+#endif
+ break;
+
+ case PDWN:
+#ifndef SC_DISABLE_REBOOT
+ shutdown_nice(RB_HALT|RB_POWEROFF);
+#endif
+ break;
+
#if NAPM > 0
case SUSP:
apm_suspend(PMST_SUSPEND);
diff --git a/sys/sys/kbio.h b/sys/sys/kbio.h
index 456173e..a2e57d4 100644
--- a/sys/sys/kbio.h
+++ b/sys/sys/kbio.h
@@ -171,6 +171,8 @@ typedef struct keymap keymap_t;
#define RCTRA 0x9e /* right ctrl key / alt lock */
#define LALTA 0x9f /* left alt key / alt lock */
#define RALTA 0xa0 /* right alt key / alt lock */
+#define HALT 0xa1 /* halt machine */
+#define PDWN 0xa2 /* halt machine and power down */
#define F(x) ((x)+F_FN-1)
#define S(x) ((x)+F_SCR-1)
diff --git a/usr.sbin/kbdcontrol/kbdcontrol.c b/usr.sbin/kbdcontrol/kbdcontrol.c
index efe4c07..1349686 100644
--- a/usr.sbin/kbdcontrol/kbdcontrol.c
+++ b/usr.sbin/kbdcontrol/kbdcontrol.c
@@ -197,6 +197,10 @@ get_entry()
return LALTA | 0x100;
case TRALTA:
return RALTA | 0x100;
+ case THALT:
+ return HALT | 0x100;
+ case TPDWN:
+ return PDWN | 0x100;
case TACC:
if (ACC(number) > L_ACC)
return -1;
@@ -428,6 +432,12 @@ print_entry(FILE *fp, int value)
case RALTA | 0x100:
fprintf(fp, " ralta ");
break;
+ case HALT | 0x100:
+ fprintf(fp, " halt ");
+ break;
+ case PDWN | 0x100:
+ fprintf(fp, " pdwn ");
+ break;
default:
if (value & 0x100) {
if (val >= F_FN && val <= L_FN)
@@ -621,6 +631,12 @@ dump_entry(int value)
case RALTA:
printf("RALTA, ");
break;
+ case HALT:
+ printf(" HALT, ");
+ break;
+ case PDWN:
+ printf(" PDWN, ");
+ break;
default:
if (value >= F_FN && value <= L_FN)
printf(" F(%2d),", value - F_FN + 1);
diff --git a/usr.sbin/kbdcontrol/lex.h b/usr.sbin/kbdcontrol/lex.h
index 251b1c9..f3dff10 100644
--- a/usr.sbin/kbdcontrol/lex.h
+++ b/usr.sbin/kbdcontrol/lex.h
@@ -61,6 +61,8 @@
#define TRCTRA 286
#define TLALTA 287
#define TRALTA 288
+#define THALT 289
+#define TPDWN 290
extern int number;
extern char letter;
diff --git a/usr.sbin/kbdcontrol/lex.l b/usr.sbin/kbdcontrol/lex.l
index db37658..81314d4 100644
--- a/usr.sbin/kbdcontrol/lex.l
+++ b/usr.sbin/kbdcontrol/lex.l
@@ -68,6 +68,8 @@ lctrla|ctrla { return TLCTRA; }
rctrla { return TRCTRA; }
lalta|alta { return TLALTA; }
ralta { return TRALTA; }
+halt { return THALT; }
+pdwn { return TPDWN; }
NUL|nul { number = 0; return TNUM; }
SOH|soh { number = 1; return TNUM; }
OpenPOWER on IntegriCloud