/
amesk
/
aPDP
Обзор
Документация
Войти
/
amesk
/
aPDP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
g60printer.css
387 строк
9 KB
amesk
Fix teletype printing head height
23 июл 2026, 15:39
23 июл 2026, 15:39
93780bb
Код
Авторство
О чём код?
/* * g60printer.css * Google60-style line printer for PDP-11 console output * Adapted from Google60 by Norbert Landsteiner (mass:werk) */ /* Font face declaration for the LP1 font */ @font-face { font-family: 'lp1_regular'; src: url('assets/fonts/lp1/lp1-regular-webfont.eot'); src: url('assets/fonts/lp1/lp1-regular-webfont.eot#iefix') format('embedded-opentype'), url('assets/fonts/lp1/lp1-regular-webfont.woff') format('woff'), url('assets/fonts/lp1/lp1-regular-webfont.ttf') format('truetype'), url('assets/fonts/lp1/lp1-regular-webfont.svg#lp1_regular') format('svg'); font-weight: normal; font-style: normal; } /* Printer container – replaces the old console textarea */ #g60printer { position: relative; width: 940px; height: 470px; background-color: #2a2a2a; overflow: hidden; border: 1px solid #444; margin: 8px 0; } #g60printer div#printer { position: absolute; top: 0; left: 0; width: 940px; height: 464px; background-color: #6f323d; background-image: url('assets/images/printer_bg.gif'); background-repeat: repeat; } #g60printer #printheadarea { display: block; position: absolute; top: 388px; left: 67px; width: 807px; max-width: 807px; height: 30px; max-height: 30px; padding: 0; margin: 0; z-index: 3; overflow: hidden; } #g60printer #printhead { display: block; position: absolute; top: 0; left: 16px; padding: 0; margin: 0; } #g60printer div#printer_frontpannel { position: absolute; top: 395px; left: 67px; width: 807px; height: 69px; background-image: url('assets/images/printerskin.png'); background-repeat: repeat-x; background-position: 0 -465px; z-index: 2; } #g60printer div#printer_left { position: absolute; top: 0; left: 0; width: 67px; height: 464px; background-image: url('assets/images/printerskin.png'); background-repeat: no-repeat; } #g60printer div#printer_right { position: absolute; top: 0; left: 874px; width: 66px; height: 464px; background-image: url('assets/images/printerskin.png'); background-repeat: no-repeat; background-position: -67px 0; } @media screen and (-webkit-min-device-pixel-ratio:0) { #g60printer div#printer_frontpannel, #g60printer div#printer_left, #g60printer div#printer_right { background-image: url('assets/images/printerskin_webkit.png'); } } #g60printer div#paper { position: absolute; top: 0; left: 67px; width: 839px; height: 400px; max-height: 400px; vertical-align: top; text-align: left; padding: 0; margin: 0; z-index: 1; } #g60printer div#paper.paperNoScroll { overflow: hidden; } #g60printer div#paper.paperScroll { overflow-y: auto; } #g60printer div#paper_topspacer { position: relative; height: 345px; width: 1px; margin: 0; padding: 0; } #g60printer div#paper_topspacer.paperScroll { height: 16px; } #g60printer table#paper_area { margin: 0; padding: 0; border: 0 none; border-collapse: collapse; border-spacing: 0; } #g60printer table#paper_area td { vertical-align: top; margin: 0; white-space: nowrap; } #g60printer td#papermargin_left, #g60printer td#papermargin_right { background-image: url('assets/images/paper-margin.png'); background-repeat: repeat-y; width: 33px; min-width: 33px; } #g60printer td#papermargin_left { background-position: -3px 0; } #g60printer td#papermargin_right { background-position: 0 0; } #g60printer td#paper_top { background-image: url('assets/images/paper-edge.png'); background-repeat: repeat-x; background-position: 0 0; height: 5px; } #g60printer tr#paper_bottom { background-image: url('assets/images/paper-edge.png'); background-repeat: repeat-x; background-position: 0 -5px; height: 5px; display: none; } #g60printer td#paper_printarea { width: 705px; color: #36363c; font-size: 13px; text-align: left; font-family: lp1_regular, "Trebuchet MS", sans-serif; font-style: normal; font-weight: 400; line-height: 16px; background-color: white; padding: 57px 18px 1px 18px; white-space: nowrap; background-image: url('assets/images/paper.png'); background-repeat: repeat; -webkit-text-shadow: 0 0 1px rgba(115, 115, 121, 0.6), 0 0 2px rgba(115, 115, 121, 0.3); -moz-text-shadow: 0 0 1px rgba(115, 115, 121, 0.6), 0 0 2px rgba(115, 115, 121, 0.3); -o-text-shadow: 0 0 1px rgba(115, 115, 121, 0.6), 0 0 2px rgba(115, 115, 121, 0.3); text-shadow: 0 0 1px rgba(115, 115, 121, 0.6), 0 0 2px rgba(115, 115, 121, 0.3); -webkit-font-smoothing: subpixel-antialiased; } #g60printer td#paper_printarea span { display: inline-block; vertical-align: top; white-space: pre; width: 7px; max-width: 7px; height: 16px; max-height: 16px; text-align: center; } #g60printer td#paper_printarea span.drop { margin-top: 1px; height: 15px; max-height: 15px; overflow: hidden; text-shadow: 0 -1px 1px rgba(115, 115, 121, 0.7), 0 -1px 2px rgba(115, 115, 121, 0.4); } #g60printer td#paper_printarea span.shift { margin-top: -1px; text-shadow: 0 1px 1px rgba(115, 115, 121, 0.7), 0 1px 2px rgba(115, 115, 121, 0.4); } #g60printer td#paper_printarea span.nonAscii { font-size: 12px !important; line-height: 18px !important; } #g60printer td#paper_printarea p { margin: 0; padding: 0; max-height: 16px; vertical-align: top; white-space: nowrap; overflow: visible; } #g60printer div#printer_topoverlay, #g60printer div#paper_topshadow { position: absolute; top: 0; left: 67px; width: 807px; height: 20px; padding: 0; margin: 0; background-image: url('assets/images/paper-topoverlay.png'); background-repeat: repeat-x; } #g60printer div#printer_topoverlay { z-index: 1; } #g60printer div#paper_topshadow { background-position: 0 -21px; z-index: 10; } /* ================================================================== Google60-style punch keyboard for PDP-11 terminal input Placed below the line printer in the terminal page. Sprite-based 3D keys (keys.png + keyfaces.png) matching the original Google60 keypunch keyboard. ================================================================== */ #punchkeypane { position: relative; width: 940px; height: 240px; background-color: #3a1018; background-image: url('assets/images/keyboardbg.jpg'); background-repeat: repeat-x; margin: 0; padding: 0; border: 1px solid #444; border-top: none; } #punchkeyboard { position: absolute; top: 14px; left: 180px; } /* ---- Sprite-based keys (Google60 style) ---- */ #punchkeyboard .key { position: absolute; width: 38px; height: 38px; cursor: default; } /* Key 3D background sprite (keys.png) */ #punchkeyboard .key .keybg { position: absolute; width: 45px; height: 58px; left: -4px; top: -12px; background-image: url('assets/images/keys.png'); background-repeat: no-repeat; background-position: 0 0; } /* Key face character sprite (keyfaces.png) */ #punchkeyboard .key .keyface { position: absolute; top: 0; left: 0; width: 37px; height: 35px; z-index: 2; background-image: url('assets/images/keyfaces.png'); background-repeat: no-repeat; pointer-events: none; } /* Pressed state: shift keybg sprite down, keyface shifts down */ #punchkeyboard .key:active .keybg, #punchkeyboard .key.key_down .keybg { background-position: 0 -59px !important; } #punchkeyboard .key:active .keyface, #punchkeyboard .key.key_down .keyface { top: 4px; } /* Ctrl label pressed state: shift down 4px to follow the 3D body */ #punchkeyboard .key:active .keylabel_ctrl, #punchkeyboard .key.key_down .keylabel_ctrl { top: 8px; } /* ---- Ctrl key (text label over sprite body) ---- */ #punchkeyboard .key .keylabel_ctrl { position: absolute; top: 4px; left: 4px; width: 30px; height: 30px; font-size: 9px; font-weight: bold; font-family: arial, helvetica, sans-serif; color: #e0d8c8; line-height: 30px; text-align: center; z-index: 2; pointer-events: none; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); letter-spacing: 0.5px; } /* ---- Space bar (sprite-based) ---- */ #punchkeyboard .key_blank { position: absolute; width: 187px; height: 35px; cursor: pointer; } #punchkeyboard .key_blank .key_blank_bg { position: absolute; width: 195px; height: 58px; left: -4px; top: -12px; background-image: url('assets/images/keys.png'); background-repeat: no-repeat; background-position: -46px 0; pointer-events: none; } #punchkeyboard .key_blank:active .key_blank_bg, #punchkeyboard .key_blank_down .key_blank_bg { background-position: -46px -59px !important; }