荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (好好学习,天天向上), 信区: Linux
标  题: Alt + 箭头切换console的patch(fwd)
发信站: BBS 荔园晨风站 (Wed Feb 16 19:42:33 2000), 转信

【 以下文字转载自 zzt 的信箱 】
【 原文由 zzt.bbs@bbs.netease.com 所发表 】
发信人: hahalee (圣诞夜归人), 信区: FreeBSD
标  题: Alt + 箭头切换console的patch(fwd)
发信站: 网易 BBS (Sat Jan 29 20:11:18 2000), 转信

FreeBSD里的syscons只有"next screen"操作,没有定义"prev screen"
无法像linux的console那样用Alt键加左右箭头键在console之间前后轮转。
下面的patch就可以做到。此patch应该可用于绝大多数的3.X版本。我是在
3.4上做的。

cd /usr/src
patch -p1 < /path/to/this_patch

如果你不打算make world,记得把patch后的/usr/src/sys/i386/include/
console.h 拷贝到 /usr/include/machine下。否则kbdcontrol编不过。

--------开始--------------------
diff -ruNa 34STUDIO/sys/dev/kbd/kbdtables.h 34STUDIO-NEW/sys/dev/kbd/kbdtables.h
--- 34STUDIO/sys/dev/kbd/kbdtables.h Thu Jan 27 09:45:24 2000
+++ 34STUDIO-NEW/sys/dev/kbd/kbdtables.h Sat Jan 29 19:21:23 2000
@@ -280,8 +280,8 @@
 /*5e*/{{ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49),}, 0xFF,0x00 },
 /*5f*/{{ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50),}, 0xFF,0x00 },
 /*60*/{{ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51),}, 0xFF,0x00 },
-/*61*/{{ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53),}, 0xFF,0x00 },
-/*62*/{{ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55),}, 0xFF,0x00 },
+/*61*/{{ F(53), F(53), F(53), F(53), PREV,  F(53), F(53), F(53),}, 0xFF,0x00 },
+/*62*/{{ F(55), F(55), F(55), F(55), NEXT,  F(55), F(55), F(55),}, 0xFF,0x00 },
 /*63*/{{ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57),}, 0xFF,0x00 },
 /*64*/{{ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58),}, 0xFF,0x00 },
 /*65*/{{ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59),}, 0xFF,0x00 },
diff -ruNa 34STUDIO/sys/dev/syscons/syscons.c
34STUDIO-NEW/sys/dev/syscons/syscons.c
--- 34STUDIO/sys/dev/syscons/syscons.c Thu Jan 27 09:45:24 2000
+++ 34STUDIO-NEW/sys/dev/syscons/syscons.c Fri Jan 28 23:15:38 2000
@@ -3967,6 +3967,19 @@
   }
   break;
+     case PREV:
+      this_scr = get_scr_num();
+  if (this_scr == 0) i = MAXCONS - 1;
+  else i = this_scr - 1;
+  for (; i != this_scr; i = (i - 1)%MAXCONS) {
+      struct tty *tp = VIRTUAL_TTY(i);
+      if (tp->t_state & TS_ISOPEN) {
+   switch_scr(cur_console, i);
+   break;
+      }
+  }
+  break;
+
      default:
   if (KEYCHAR(c) >= F_SCR && KEYCHAR(c) <= L_SCR) {
       switch_scr(cur_console, KEYCHAR(c) - F_SCR);
diff -ruNa 34STUDIO/sys/i386/include/console.h
34STUDIO-NEW/sys/i386/include/console.h
--- 34STUDIO/sys/i386/include/console.h Thu Jan 27 09:45:34 2000
+++ 34STUDIO-NEW/sys/i386/include/console.h Fri Jan 28 23:17:26 2000
@@ -411,6 +411,7 @@
 #define L_SCR  0x1a  /* switch to last screen  */
 #define F_FN  0x1b  /* first function key   */
 #define L_FN  0x7a  /* last function key   */
+#define PREV  0x7b  /* switch to previous screen  */
 /*   0x7b-0x7f    reserved do not use ! */
 #define RCTR  0x80  /* right control key  */
 #define RALT  0x81  /* right alt (altgr) key */
diff -ruNa 34STUDIO/usr.sbin/kbdcontrol/kbdcontrol.c
34STUDIO-NEW/usr.sbin/kbdcontrol/kbdcontrol.c
--- 34STUDIO/usr.sbin/kbdcontrol/kbdcontrol.c Thu Jan 27 09:48:03 2000
+++ 34STUDIO-NEW/usr.sbin/kbdcontrol/kbdcontrol.c Sat Jan 29 19:16:05 2000
@@ -163,6 +163,8 @@
   return LCTR | 0x100;
  case TNEXT:
   return NEXT | 0x100;
+ case TPREV:
+  return PREV | 0x100;
  case TRCTR:
   return RCTR | 0x100;
  case TRALT:
@@ -360,6 +362,9 @@
   break;
  case NEXT | 0x100:
   fprintf(fp, " nscr  ");
+  break;
+ case PREV | 0x100:
+  fprintf(fp, " pscr  ");
   break;
  case RCTR | 0x100:
   fprintf(fp, " rctrl ");
diff -ruNa 34STUDIO/usr.sbin/kbdcontrol/lex.h
34STUDIO-NEW/usr.sbin/kbdcontrol/lex.h
--- 34STUDIO/usr.sbin/kbdcontrol/lex.h Thu Jan 27 09:48:03 2000
+++ 34STUDIO-NEW/usr.sbin/kbdcontrol/lex.h Sat Jan 29 18:58:03 2000
@@ -53,6 +53,7 @@
 #define TSUSP  278
 #define TACC  279
 #define TSPSC  280
+#define TPREV  281
 extern int number;
 extern char letter;
diff -ruNa 34STUDIO/usr.sbin/kbdcontrol/lex.l
34STUDIO-NEW/usr.sbin/kbdcontrol/lex.l
--- 34STUDIO/usr.sbin/kbdcontrol/lex.l Thu Jan 27 09:48:03 2000
+++ 34STUDIO-NEW/usr.sbin/kbdcontrol/lex.l Sat Jan 29 18:57:42 2000
@@ -51,6 +51,7 @@
 btab  { return TBTAB; }
 lctrl|ctrl  { return TLCTR; }
 nscr   { return TNEXT; }
+pscr  { return TPREV; }
 rctrl   { return TRCTR; }
 ralt   { return TRALT; }
 alock   { return TALK; }
--------结束--------------------
--
  \|/  ____  \|/        Whenever I recall you, nothing,
  "@' / ,. \ `@"        but a core dump always happen.
  /__| \__/ |__\
      \__U_/                      -- "coredump complex"

※ 修改:.hahalee 于 Jan 29 20:27:23 修改本文.[FROM: gnet49.szptt.net.cn]
※ 来源:.网易 BBS bbs.netease.com.[FROM: gnet49.szptt.net.cn]
--
※ 转寄:.网易 BBS bbs.netease.com.[FROM: 210.39.3.50]
.
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.11]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店