1*0Sstevel@tonic-gate /* 2*0Sstevel@tonic-gate * CDDL HEADER START 3*0Sstevel@tonic-gate * 4*0Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*0Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*0Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*0Sstevel@tonic-gate * with the License. 8*0Sstevel@tonic-gate * 9*0Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*0Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*0Sstevel@tonic-gate * See the License for the specific language governing permissions 12*0Sstevel@tonic-gate * and limitations under the License. 13*0Sstevel@tonic-gate * 14*0Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*0Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*0Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*0Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*0Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*0Sstevel@tonic-gate * 20*0Sstevel@tonic-gate * CDDL HEADER END 21*0Sstevel@tonic-gate */ 22*0Sstevel@tonic-gate /* 23*0Sstevel@tonic-gate * Copyright (c) 1999 by Sun Microsystems, Inc. 24*0Sstevel@tonic-gate * All rights reserved. 25*0Sstevel@tonic-gate */ 26*0Sstevel@tonic-gate 27*0Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 28*0Sstevel@tonic-gate 29*0Sstevel@tonic-gate /* 30*0Sstevel@tonic-gate * This module contains the translation tables for PS/2 style keyboards. 31*0Sstevel@tonic-gate */ 32*0Sstevel@tonic-gate #define KEYMAP_SIZE_VARIABLE 33*0Sstevel@tonic-gate 34*0Sstevel@tonic-gate #include <sys/param.h> 35*0Sstevel@tonic-gate #include <sys/kbd.h> 36*0Sstevel@tonic-gate 37*0Sstevel@tonic-gate /* handy way to define control characters in the tables */ 38*0Sstevel@tonic-gate #define c(ch) (ch&0x1F) 39*0Sstevel@tonic-gate #define ESC 0x1B 40*0Sstevel@tonic-gate #define DEL 0x7F 41*0Sstevel@tonic-gate 42*0Sstevel@tonic-gate #define KEYMAP_SIZE_PC 160 43*0Sstevel@tonic-gate 44*0Sstevel@tonic-gate /* ***************************** */ 45*0Sstevel@tonic-gate /* PC-101 keyboard definitions */ 46*0Sstevel@tonic-gate /* ***************************** */ 47*0Sstevel@tonic-gate /* Unshifted keyboard table for PC keyboard */ 48*0Sstevel@tonic-gate 49*0Sstevel@tonic-gate /* BEGIN CSTYLED */ 50*0Sstevel@tonic-gate static keymap_entry_t keytab_pc_lc[KEYMAP_SIZE_PC] = { 51*0Sstevel@tonic-gate /* 0 */ HOLE, '`', '1', '2', '3', '4', '5', '6', 52*0Sstevel@tonic-gate /* 8 */ '7', '8', '9', '0', '-', '=', HOLE, '\b', 53*0Sstevel@tonic-gate /* 16 */ '\t', 'q', 'w', 'e', 'r', 't', 'y', 'u', 54*0Sstevel@tonic-gate /* 24 */ 'i', 'o', 'p', '[', ']', '\\', 55*0Sstevel@tonic-gate SHIFTKEYS+CAPSLOCK, 56*0Sstevel@tonic-gate 'a', 57*0Sstevel@tonic-gate /* 32 */ 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 58*0Sstevel@tonic-gate /* 40 */ ';', '\'', '\\', '\r', 59*0Sstevel@tonic-gate SHIFTKEYS+LEFTSHIFT, 60*0Sstevel@tonic-gate HOLE, 'z', 'x', 61*0Sstevel@tonic-gate /* 48 */ 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 62*0Sstevel@tonic-gate /* 56 */ NOP, SHIFTKEYS+RIGHTSHIFT, 63*0Sstevel@tonic-gate SHIFTKEYS+LEFTCTRL, 64*0Sstevel@tonic-gate HOLE, SHIFTKEYS+LEFTALT, 65*0Sstevel@tonic-gate ' ', SHIFTKEYS+ 66*0Sstevel@tonic-gate RIGHTALT, 67*0Sstevel@tonic-gate HOLE, 68*0Sstevel@tonic-gate /* 64 */ SHIFTKEYS+RIGHTCTRL, 69*0Sstevel@tonic-gate HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 70*0Sstevel@tonic-gate /* 72 */ HOLE, HOLE, HOLE, BF(8), DEL, 71*0Sstevel@tonic-gate NOP, HOLE, 72*0Sstevel@tonic-gate STRING+LEFTARROW, 73*0Sstevel@tonic-gate /* 80 */ RF(7), RF(13), HOLE, 74*0Sstevel@tonic-gate STRING+UPARROW, 75*0Sstevel@tonic-gate STRING+DOWNARROW, 76*0Sstevel@tonic-gate RF(9), RF(15), HOLE, 77*0Sstevel@tonic-gate /* 88 */ HOLE, 78*0Sstevel@tonic-gate STRING+RIGHTARROW, 79*0Sstevel@tonic-gate SHIFTKEYS+NUMLOCK, 80*0Sstevel@tonic-gate RF(7), STRING+LEFTARROW, 81*0Sstevel@tonic-gate RF(13), HOLE, 82*0Sstevel@tonic-gate PADSLASH, 83*0Sstevel@tonic-gate /* 96 */ STRING+UPARROW, 84*0Sstevel@tonic-gate RF(11), STRING+DOWNARROW, 85*0Sstevel@tonic-gate BF(8), PADSTAR, 86*0Sstevel@tonic-gate RF(9), 87*0Sstevel@tonic-gate STRING+RIGHTARROW, 88*0Sstevel@tonic-gate RF(15), 89*0Sstevel@tonic-gate /*104 */ DEL, PADMINUS, 90*0Sstevel@tonic-gate PADPLUS, 91*0Sstevel@tonic-gate HOLE, PADENTER, 92*0Sstevel@tonic-gate HOLE, ESC, HOLE, 93*0Sstevel@tonic-gate /*112 */ TF(1), TF(2), TF(3), TF(4), TF(5), TF(6), TF(7), TF(8), 94*0Sstevel@tonic-gate /*120 */ TF(9), TF(10), TF(11), TF(12), NOP, NOP, NOP, HOLE, 95*0Sstevel@tonic-gate /*128 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 96*0Sstevel@tonic-gate /*136 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 97*0Sstevel@tonic-gate /*144 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 98*0Sstevel@tonic-gate /*152 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 99*0Sstevel@tonic-gate /*160 */ 100*0Sstevel@tonic-gate }; 101*0Sstevel@tonic-gate 102*0Sstevel@tonic-gate /* Shifted keyboard table for PC keyboard */ 103*0Sstevel@tonic-gate 104*0Sstevel@tonic-gate static keymap_entry_t keytab_pc_uc[KEYMAP_SIZE_PC] = { 105*0Sstevel@tonic-gate /* 0 */ HOLE, '~', '!', '@', '#', '$', '%', '^', 106*0Sstevel@tonic-gate /* 8 */ '&', '*', '(', ')', '_', '+', HOLE, '\b', 107*0Sstevel@tonic-gate /* 16 */ '\t', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 108*0Sstevel@tonic-gate /* 24 */ 'I', 'O', 'P', '{', '}', '|', 109*0Sstevel@tonic-gate SHIFTKEYS+CAPSLOCK, 110*0Sstevel@tonic-gate 'A', 111*0Sstevel@tonic-gate /* 32 */ 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 112*0Sstevel@tonic-gate /* 40 */ ':', '"', '|', '\r', 113*0Sstevel@tonic-gate SHIFTKEYS+LEFTSHIFT, 114*0Sstevel@tonic-gate HOLE, 'Z', 'X', 115*0Sstevel@tonic-gate /* 48 */ 'C', 'V', 'B', 'N', 'M', '<', '>', '?', 116*0Sstevel@tonic-gate /* 56 */ NOP, SHIFTKEYS+RIGHTSHIFT, 117*0Sstevel@tonic-gate SHIFTKEYS+LEFTCTRL, 118*0Sstevel@tonic-gate HOLE, 119*0Sstevel@tonic-gate SHIFTKEYS+LEFTALT, 120*0Sstevel@tonic-gate ' ', SHIFTKEYS+ 121*0Sstevel@tonic-gate RIGHTALT, 122*0Sstevel@tonic-gate HOLE, 123*0Sstevel@tonic-gate /* 64 */ SHIFTKEYS+RIGHTCTRL, 124*0Sstevel@tonic-gate HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 125*0Sstevel@tonic-gate /* 72 */ HOLE, HOLE, HOLE, BF(8), DEL, NOP, HOLE, 126*0Sstevel@tonic-gate STRING+LEFTARROW, 127*0Sstevel@tonic-gate /* 80 */ RF(7), RF(13), HOLE, STRING+UPARROW, 128*0Sstevel@tonic-gate STRING+DOWNARROW, 129*0Sstevel@tonic-gate RF(9), RF(15), HOLE, 130*0Sstevel@tonic-gate /* 88 */ HOLE, 131*0Sstevel@tonic-gate STRING+RIGHTARROW, 132*0Sstevel@tonic-gate SHIFTKEYS+NUMLOCK, 133*0Sstevel@tonic-gate '7', '4', '1', HOLE, '/', 134*0Sstevel@tonic-gate /* 96 */ '8', '5', '2', '0', '*', '9', '6', '3', 135*0Sstevel@tonic-gate /*104 */ '.', '-', '+', HOLE, '\n', HOLE, ESC, HOLE, 136*0Sstevel@tonic-gate /*112 */ TF(1), TF(2), TF(3), TF(4), TF(5), TF(6), TF(7), TF(8), 137*0Sstevel@tonic-gate /*120 */ TF(9), TF(10), TF(11), TF(12), NOP, NOP, NOP, HOLE, 138*0Sstevel@tonic-gate /*128 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 139*0Sstevel@tonic-gate /*136 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 140*0Sstevel@tonic-gate /*144 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 141*0Sstevel@tonic-gate /*152 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 142*0Sstevel@tonic-gate /*160 */ 143*0Sstevel@tonic-gate }; 144*0Sstevel@tonic-gate 145*0Sstevel@tonic-gate /* Caps Locked keyboard table for PC keyboard */ 146*0Sstevel@tonic-gate 147*0Sstevel@tonic-gate static keymap_entry_t keytab_pc_cl[KEYMAP_SIZE_PC] = { 148*0Sstevel@tonic-gate /* 0 */ HOLE, '`', '1', '2', '3', '4', '5', '6', 149*0Sstevel@tonic-gate /* 8 */ '7', '8', '9', '0', '-', '=', HOLE, '\b', 150*0Sstevel@tonic-gate /* 16 */ '\t', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 151*0Sstevel@tonic-gate /* 24 */ 'I', 'O', 'P', '[', ']', '\\', 152*0Sstevel@tonic-gate SHIFTKEYS+CAPSLOCK, 153*0Sstevel@tonic-gate 'A', 154*0Sstevel@tonic-gate /* 32 */ 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 155*0Sstevel@tonic-gate /* 40 */ ';', '\'', '\\', '\r', 156*0Sstevel@tonic-gate SHIFTKEYS+LEFTSHIFT, 157*0Sstevel@tonic-gate HOLE, 'Z', 'X', 158*0Sstevel@tonic-gate /* 48 */ 'C', 'V', 'B', 'N', 'M', ',', '.', '/', 159*0Sstevel@tonic-gate /* 56 */ NOP, SHIFTKEYS+RIGHTSHIFT, 160*0Sstevel@tonic-gate SHIFTKEYS+LEFTCTRL, 161*0Sstevel@tonic-gate HOLE, 162*0Sstevel@tonic-gate SHIFTKEYS+LEFTALT, 163*0Sstevel@tonic-gate ' ', SHIFTKEYS+ 164*0Sstevel@tonic-gate RIGHTALT, 165*0Sstevel@tonic-gate HOLE, 166*0Sstevel@tonic-gate /* 64 */ SHIFTKEYS+RIGHTCTRL, 167*0Sstevel@tonic-gate HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 168*0Sstevel@tonic-gate /* 72 */ HOLE, HOLE, HOLE, BF(8), DEL, NOP, HOLE, 169*0Sstevel@tonic-gate STRING+LEFTARROW, 170*0Sstevel@tonic-gate /* 80 */ RF(7), 171*0Sstevel@tonic-gate RF(13), HOLE, 172*0Sstevel@tonic-gate STRING+UPARROW, 173*0Sstevel@tonic-gate STRING+DOWNARROW, 174*0Sstevel@tonic-gate RF(9), RF(15), HOLE, 175*0Sstevel@tonic-gate /* 88 */ HOLE, 176*0Sstevel@tonic-gate STRING+RIGHTARROW, 177*0Sstevel@tonic-gate SHIFTKEYS+NUMLOCK, 178*0Sstevel@tonic-gate RF(7), STRING+LEFTARROW, 179*0Sstevel@tonic-gate RF(13), HOLE, PADSLASH, 180*0Sstevel@tonic-gate /* 96 */ STRING+UPARROW, 181*0Sstevel@tonic-gate RF(11), STRING+DOWNARROW, 182*0Sstevel@tonic-gate BF(8), PADSTAR, 183*0Sstevel@tonic-gate RF(9), 184*0Sstevel@tonic-gate STRING+RIGHTARROW, 185*0Sstevel@tonic-gate RF(15), 186*0Sstevel@tonic-gate /*104 */ DEL, PADMINUS, 187*0Sstevel@tonic-gate PADPLUS, 188*0Sstevel@tonic-gate HOLE, PADENTER, 189*0Sstevel@tonic-gate HOLE, ESC, HOLE, 190*0Sstevel@tonic-gate /*112 */ TF(1), TF(2), TF(3), TF(4), TF(5), TF(6), TF(7), TF(8), 191*0Sstevel@tonic-gate /*120 */ TF(9), TF(10), TF(11), TF(12), NOP, NOP, NOP, HOLE, 192*0Sstevel@tonic-gate /*128 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 193*0Sstevel@tonic-gate /*136 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 194*0Sstevel@tonic-gate /*144 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 195*0Sstevel@tonic-gate /*152 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 196*0Sstevel@tonic-gate /*160 */ 197*0Sstevel@tonic-gate }; 198*0Sstevel@tonic-gate 199*0Sstevel@tonic-gate /* Alt Graph keyboard table for PC keyboard */ 200*0Sstevel@tonic-gate 201*0Sstevel@tonic-gate static keymap_entry_t keytab_pc_ag[KEYMAP_SIZE_PC] = { 202*0Sstevel@tonic-gate /* 0 */ HOLE, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 203*0Sstevel@tonic-gate /* 8 */ NOP, NOP, NOP, NOP, NOP, NOP, HOLE, NOP, 204*0Sstevel@tonic-gate /* 16 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 205*0Sstevel@tonic-gate /* 24 */ NOP, NOP, NOP, NOP, NOP, NOP, 206*0Sstevel@tonic-gate SHIFTKEYS+CAPSLOCK, 207*0Sstevel@tonic-gate NOP, 208*0Sstevel@tonic-gate /* 32 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 209*0Sstevel@tonic-gate /* 40 */ NOP, NOP, NOP, NOP, 210*0Sstevel@tonic-gate SHIFTKEYS+LEFTSHIFT, 211*0Sstevel@tonic-gate HOLE, NOP, NOP, 212*0Sstevel@tonic-gate /* 48 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 213*0Sstevel@tonic-gate /* 56 */ NOP, SHIFTKEYS+RIGHTSHIFT, 214*0Sstevel@tonic-gate SHIFTKEYS+LEFTCTRL, 215*0Sstevel@tonic-gate HOLE, 216*0Sstevel@tonic-gate SHIFTKEYS+LEFTALT, 217*0Sstevel@tonic-gate ' ', SHIFTKEYS+ 218*0Sstevel@tonic-gate RIGHTALT, 219*0Sstevel@tonic-gate HOLE, 220*0Sstevel@tonic-gate /* 64 */ SHIFTKEYS+RIGHTCTRL, 221*0Sstevel@tonic-gate HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 222*0Sstevel@tonic-gate /* 72 */ HOLE, HOLE, HOLE, BF(8), DEL, NOP, HOLE, 223*0Sstevel@tonic-gate STRING+ 224*0Sstevel@tonic-gate LEFTARROW, 225*0Sstevel@tonic-gate /* 80 */ RF(7), RF(13), HOLE, STRING+ 226*0Sstevel@tonic-gate UPARROW,STRING+ 227*0Sstevel@tonic-gate DOWNARROW,RF(9), RF(15), HOLE, 228*0Sstevel@tonic-gate /* 88 */ HOLE, STRING+ 229*0Sstevel@tonic-gate RIGHTARROW, 230*0Sstevel@tonic-gate SHIFTKEYS+NUMLOCK, 231*0Sstevel@tonic-gate NOP, NOP, NOP, HOLE, NOP, 232*0Sstevel@tonic-gate /* 96 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 233*0Sstevel@tonic-gate /*104 */ NOP, NOP, NOP, HOLE, NOP, HOLE, ESC, HOLE, 234*0Sstevel@tonic-gate /*112 */ TF(1), TF(2), TF(3), TF(4), TF(5), TF(6), TF(7), TF(8), 235*0Sstevel@tonic-gate /*120 */ TF(9), TF(10), TF(11), TF(12), NOP, NOP, NOP, HOLE, 236*0Sstevel@tonic-gate /*128 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 237*0Sstevel@tonic-gate /*136 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 238*0Sstevel@tonic-gate /*144 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 239*0Sstevel@tonic-gate /*152 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 240*0Sstevel@tonic-gate /*160 */ 241*0Sstevel@tonic-gate }; 242*0Sstevel@tonic-gate 243*0Sstevel@tonic-gate /* Num Locked keyboard table for PC keyboard */ 244*0Sstevel@tonic-gate 245*0Sstevel@tonic-gate static keymap_entry_t keytab_pc_nl[KEYMAP_SIZE_PC] = { 246*0Sstevel@tonic-gate /* 0 */ HOLE, NONL, NONL, NONL, NONL, NONL, NONL, NONL, 247*0Sstevel@tonic-gate /* 8 */ NONL, NONL, NONL, NONL, NONL, NONL, HOLE, NONL, 248*0Sstevel@tonic-gate /* 16 */ NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL, 249*0Sstevel@tonic-gate /* 24 */ NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL, 250*0Sstevel@tonic-gate /* 32 */ NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL, 251*0Sstevel@tonic-gate /* 40 */ NONL, NONL, NONL, NONL, NONL, HOLE, NONL, NONL, 252*0Sstevel@tonic-gate /* 48 */ NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL, 253*0Sstevel@tonic-gate /* 56 */ NONL, NONL, NONL, HOLE, NONL, NONL, NONL, HOLE, 254*0Sstevel@tonic-gate /* 64 */ NONL, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 255*0Sstevel@tonic-gate /* 72 */ HOLE, HOLE, HOLE, NONL, NONL, NONL, HOLE, NONL, 256*0Sstevel@tonic-gate /* 80 */ NONL, NONL, HOLE, NONL, NONL, NONL, NONL, HOLE, 257*0Sstevel@tonic-gate /* 88 */ HOLE, NONL, NONL, PAD7, PAD4, PAD1, HOLE, NONL, 258*0Sstevel@tonic-gate /* 96 */ PAD8, PAD5, PAD2, PAD0, NONL, PAD9, PAD6, PAD3, 259*0Sstevel@tonic-gate /*104 */ PADDOT, NONL, NONL, HOLE, NONL, HOLE, NONL, HOLE, 260*0Sstevel@tonic-gate /*112 */ NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL, 261*0Sstevel@tonic-gate /*120 */ NONL, NONL, NONL, NONL, NONL, NONL, NONL, HOLE, 262*0Sstevel@tonic-gate /*128 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 263*0Sstevel@tonic-gate /*136 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 264*0Sstevel@tonic-gate /*144 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 265*0Sstevel@tonic-gate /*152 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 266*0Sstevel@tonic-gate /*160 */ 267*0Sstevel@tonic-gate }; 268*0Sstevel@tonic-gate 269*0Sstevel@tonic-gate /* Controlled keyboard table for PC keyboard */ 270*0Sstevel@tonic-gate 271*0Sstevel@tonic-gate static keymap_entry_t keytab_pc_ct[KEYMAP_SIZE_PC] = { 272*0Sstevel@tonic-gate /* 0 */ HOLE, c('^'), '1', c('@'), '3', '4', '5', c('^'), 273*0Sstevel@tonic-gate /* 8 */ '7', '8', '9', '0', c('_'), '=', HOLE, '\b', 274*0Sstevel@tonic-gate /* 16 */ '\t', c('q'), c('w'), c('e'), c('r'), c('t'), c('y'), c('u'), 275*0Sstevel@tonic-gate /* 24 */ c('i'), c('o'), c('p'), c('['), c(']'), c('\\'), 276*0Sstevel@tonic-gate SHIFTKEYS+CAPSLOCK, 277*0Sstevel@tonic-gate c('a'), 278*0Sstevel@tonic-gate /* 32 */ c('s'), c('d'), c('f'), c('g'), c('h'), c('j'), c('k'), c('l'), 279*0Sstevel@tonic-gate /* 40 */ ';', '\'', '\\', '\r', 280*0Sstevel@tonic-gate SHIFTKEYS+LEFTSHIFT, 281*0Sstevel@tonic-gate HOLE, c('z'), c('x'), 282*0Sstevel@tonic-gate /* 48 */ c('c'), c('v'), c('b'), c('n'), c('m'), ',', '.', c('_'), 283*0Sstevel@tonic-gate /* 56 */ NOP, SHIFTKEYS+RIGHTSHIFT, 284*0Sstevel@tonic-gate SHIFTKEYS+LEFTCTRL, 285*0Sstevel@tonic-gate HOLE, 286*0Sstevel@tonic-gate SHIFTKEYS+LEFTALT, 287*0Sstevel@tonic-gate ' ', SHIFTKEYS+ 288*0Sstevel@tonic-gate RIGHTALT, 289*0Sstevel@tonic-gate HOLE, 290*0Sstevel@tonic-gate /* 64 */ SHIFTKEYS+RIGHTCTRL, 291*0Sstevel@tonic-gate HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 292*0Sstevel@tonic-gate /* 72 */ HOLE, HOLE, HOLE, BF(8), DEL, NOP, HOLE, 293*0Sstevel@tonic-gate STRING+LEFTARROW, 294*0Sstevel@tonic-gate /* 80 */ RF(7), RF(13), HOLE, 295*0Sstevel@tonic-gate STRING+UPARROW, 296*0Sstevel@tonic-gate STRING+DOWNARROW, 297*0Sstevel@tonic-gate RF(9), RF(15), HOLE, 298*0Sstevel@tonic-gate /* 88 */ HOLE, 299*0Sstevel@tonic-gate STRING+RIGHTARROW, 300*0Sstevel@tonic-gate SHIFTKEYS+NUMLOCK, 301*0Sstevel@tonic-gate PAD7, PAD4, PAD1, HOLE, 302*0Sstevel@tonic-gate PADSLASH, 303*0Sstevel@tonic-gate /* 96 */ PAD8, PAD5, PAD2, PAD0, PADSTAR, 304*0Sstevel@tonic-gate PAD9, PAD6, PAD3, 305*0Sstevel@tonic-gate /*104 */ PADDOT, PADMINUS, 306*0Sstevel@tonic-gate PADPLUS, 307*0Sstevel@tonic-gate HOLE, PADENTER, 308*0Sstevel@tonic-gate HOLE, ESC, HOLE, 309*0Sstevel@tonic-gate /*112 */ TF(1), TF(2), TF(3), TF(4), TF(5), TF(6), TF(7), TF(8), 310*0Sstevel@tonic-gate /*120 */ TF(9), TF(10), TF(11), TF(12), NOP, NOP, NOP, HOLE, 311*0Sstevel@tonic-gate /*128 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 312*0Sstevel@tonic-gate /*136 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 313*0Sstevel@tonic-gate /*144 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 314*0Sstevel@tonic-gate /*152 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 315*0Sstevel@tonic-gate /*160 */ 316*0Sstevel@tonic-gate }; 317*0Sstevel@tonic-gate 318*0Sstevel@tonic-gate /* "Key Up" keyboard table for PC keyboard */ 319*0Sstevel@tonic-gate 320*0Sstevel@tonic-gate 321*0Sstevel@tonic-gate static keymap_entry_t keytab_pc_up[KEYMAP_SIZE_PC] = { 322*0Sstevel@tonic-gate /* 0 */ HOLE, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 323*0Sstevel@tonic-gate /* 8 */ NOP, NOP, NOP, NOP, NOP, NOP, HOLE, NOP, 324*0Sstevel@tonic-gate /* 16 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 325*0Sstevel@tonic-gate /* 24 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 326*0Sstevel@tonic-gate /* 32 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 327*0Sstevel@tonic-gate /* 40 */ NOP, NOP, NOP, NOP, 328*0Sstevel@tonic-gate SHIFTKEYS+LEFTSHIFT, 329*0Sstevel@tonic-gate HOLE, NOP, NOP, 330*0Sstevel@tonic-gate /* 48 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 331*0Sstevel@tonic-gate /* 56 */ NOP, SHIFTKEYS+RIGHTSHIFT, 332*0Sstevel@tonic-gate SHIFTKEYS+LEFTCTRL, 333*0Sstevel@tonic-gate HOLE, SHIFTKEYS+LEFTALT, 334*0Sstevel@tonic-gate NOP, SHIFTKEYS+ 335*0Sstevel@tonic-gate RIGHTALT, 336*0Sstevel@tonic-gate HOLE, 337*0Sstevel@tonic-gate /* 64 */ SHIFTKEYS+RIGHTCTRL, 338*0Sstevel@tonic-gate HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 339*0Sstevel@tonic-gate /* 72 */ HOLE, HOLE, HOLE, NOP, NOP, NOP, HOLE, NOP, 340*0Sstevel@tonic-gate /* 80 */ NOP, NOP, HOLE, NOP, NOP, NOP, NOP, HOLE, 341*0Sstevel@tonic-gate /* 88 */ HOLE, NOP, NOP, NOP, NOP, NOP, HOLE, NOP, 342*0Sstevel@tonic-gate /* 96 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 343*0Sstevel@tonic-gate /*104 */ NOP, NOP, NOP, HOLE, NOP, HOLE, NOP, HOLE, 344*0Sstevel@tonic-gate /*112 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 345*0Sstevel@tonic-gate /*120 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, HOLE, 346*0Sstevel@tonic-gate /*128 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 347*0Sstevel@tonic-gate /*136 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 348*0Sstevel@tonic-gate /*144 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 349*0Sstevel@tonic-gate /*152 */ HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, 350*0Sstevel@tonic-gate /*160 */ 351*0Sstevel@tonic-gate }; 352*0Sstevel@tonic-gate 353*0Sstevel@tonic-gate /* END CSTYLED */ 354*0Sstevel@tonic-gate 355*0Sstevel@tonic-gate #define M(x) (1 << (x)) 356*0Sstevel@tonic-gate #define MASK_ALL (M(LEFTSHIFT) | \ 357*0Sstevel@tonic-gate M(RIGHTSHIFT) | \ 358*0Sstevel@tonic-gate CTRLMASK | \ 359*0Sstevel@tonic-gate ALTMASK | \ 360*0Sstevel@tonic-gate ALTGRAPHMASK) 361*0Sstevel@tonic-gate 362*0Sstevel@tonic-gate /* 363*0Sstevel@tonic-gate * Make Ctrl+Shift+F1 be Compose. This is SOOOO hokey. 364*0Sstevel@tonic-gate */ 365*0Sstevel@tonic-gate static struct exception_map exceptions_pc[] = { 366*0Sstevel@tonic-gate { MASK_ALL, M(LEFTSHIFT)|M(LEFTCTRL), 112, COMPOSE, }, 367*0Sstevel@tonic-gate { MASK_ALL, M(LEFTSHIFT)|M(RIGHTCTRL), 112, COMPOSE, }, 368*0Sstevel@tonic-gate { MASK_ALL, M(RIGHTSHIFT)|M(LEFTCTRL), 112, COMPOSE, }, 369*0Sstevel@tonic-gate { MASK_ALL, M(RIGHTSHIFT)|M(RIGHTCTRL), 112, COMPOSE, }, 370*0Sstevel@tonic-gate { 0, }, 371*0Sstevel@tonic-gate }; 372*0Sstevel@tonic-gate 373*0Sstevel@tonic-gate /* Index to keymaps for PC keyboard */ 374*0Sstevel@tonic-gate struct keyboard keyindex_pc = { 375*0Sstevel@tonic-gate KEYMAP_SIZE_PC, 376*0Sstevel@tonic-gate keytab_pc_lc, 377*0Sstevel@tonic-gate keytab_pc_uc, 378*0Sstevel@tonic-gate keytab_pc_cl, 379*0Sstevel@tonic-gate keytab_pc_ag, 380*0Sstevel@tonic-gate keytab_pc_nl, 381*0Sstevel@tonic-gate keytab_pc_ct, 382*0Sstevel@tonic-gate keytab_pc_up, 383*0Sstevel@tonic-gate 0x0000, /* Shift bits which stay on with idle keyboard */ 384*0Sstevel@tonic-gate 0x0000, /* Bucky bits which stay on with idle keyboard */ 385*0Sstevel@tonic-gate 112, 0, 31, /* abort keys: F1+A */ 386*0Sstevel@tonic-gate CAPSMASK|NUMLOCKMASK, /* Shift bits which toggle on down event */ 387*0Sstevel@tonic-gate exceptions_pc, /* Exceptions */ 388*0Sstevel@tonic-gate }; 389