QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2419|回复: 0
打印 上一主题 下一主题

使用html画一个键盘

[复制链接]
字体大小: 正常 放大

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>\" e\" A3 f7 S+ y4 u
  2. <html lang="en">
    9 |\" L2 h; L( Q9 d1 k' `, O& E
  3. <head>$ b* L- u2 T* V7 O& k
  4.   <meta charset="UTF-8">
    ' E7 m. }5 A! v* @& J% m6 \
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">* f& L\" c. O2 j+ j9 S1 m% \
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">2 t! ?\" @! {# T( ^1 D8 g\" N- F% n
  7.   <link rel="stylesheet" >
      K  e7 A! L/ c  ^& G7 J. a$ @
  8.   <title>vector examples Keyboard</title>( n# T4 c' z- S, Q7 I
  9. </head>! ^8 N6 {1 g6 T& K2 T' b8 T( A  h
  10. <body>\" c8 A, V, A  H/ p
  11.   <div id="keyboard"></div>
      G# o& v2 }- ?# P4 W) S% a( S7 ~
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->0 [/ _9 I: f$ y5 E( x0 g
  13.   <script type="module" src="./temp.js"></script>3 d, a) V6 x0 w
  14. </body>
    & w% X$ R$ |: [
  15. </html>' W$ U) V4 _3 A; G3 f
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";6 G; o5 [6 p3 T
  2. console.log("Interactive", Interactive);
    / H, d3 S: p6 A) `6 c# ]- F9 j: U
复制代码
  1. /**
      M) J  w! f: t\" _/ x. f  ]- j
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard  q0 `5 f  x* w7 P2 N
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    6 {9 T. B- P6 y# O# t( H
  4. * @tags [input]
    : ]; L' ?* ~3 E+ G: |1 X
  5. */
    % Y& W& ~\" q! X8 T6 T) B
  6. // import { Interactive, getScriptName } from "../../index.js";
    # n! C% O* t$ Y) p9 j
  7. // let interactive = new Interactive(getScriptName());
    \" N7 a+ _7 j0 T% O
  8. import Interactive from "https://vectorjs.org/interactive.js";
    1 u9 N$ C; }# a& O
  9. let interactive = new Interactive("keyboard");
    $ @- t, }) G3 |' ?
  10. interactive.width = 768;
    6 x- B5 q% ^# Z- T1 }1 v
  11. interactive.height = 300;  r\" t- [  M& O5 e- M
  12. interactive.border = true;
    ! F, z4 x% u6 v# O' u: a
  13. let buffer = "";( b' |2 V( M9 H5 {+ ?9 t
  14. let keys = [
    9 T4 B# O1 c' p/ v+ t3 j# b8 _
  15.   [$ ^8 u/ P: r. E
  16.     "`",, ^\" V! Z  `) Z% w; V2 |5 e! z. x
  17.     "1",\" r9 ]% d2 f$ @4 l+ C$ W$ x
  18.     "2",. T0 L+ v4 j& d\" ]0 `0 p( G
  19.     "3",
    2 l8 M, x0 d# n7 x0 M
  20.     "4",: K( H+ R- Q+ w6 b* a$ P& x, X3 a
  21.     "5",% @) Q2 o* [( l# d2 l4 w
  22.     "6",+ @# ^! ~$ _; `( `! v/ e, @& r; t& w
  23.     "7",
    ' M; p5 G, A9 Y9 B8 q\" t
  24.     "8",
    3 o5 Q# {& G% v: R: ^5 j
  25.     "9",
    ' U2 g+ b+ V  Z; d. Y
  26.     "0",
    ) X( ^3 Y2 t6 a7 \' N2 y
  27.     "-",! ?- o# L# E! h# _  O
  28.     "=",4 W\" U+ k8 j% W/ _1 I. y+ @8 a
  29.     "Backspace",4 r; W; H. D9 [! Z$ y7 `
  30.   ],\" {. i' S; g% f! _- `; |
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],- ^  D- s% s9 V' |. |% m0 Z
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],
    + P$ A% Z2 o1 _( N/ M\" I$ R
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],  g& n\" F2 Y# u7 R; j% n! p
  34.   [6 x8 ]4 v1 Q1 D
  35.     "fn",: q1 ?) H7 ?% n+ `
  36.     "Control",
    * e\" q8 E, ~1 ]' c4 M2 y
  37.     "Alt",
    1 Y! v7 j\" |3 \\" l
  38.     "Meta",0 W6 G* @- }! D
  39.     " ",# G7 z' l/ i3 n
  40.     "Meta",0 T5 ~* V1 I$ ^9 b2 q- O7 Y- Z- W
  41.     "Alt",
    4 I& Q1 x/ ?; Y$ q
  42.     "ArrowLeft",
    : m. b# h* H- r* Y1 q& @: \/ w
  43.     "ArrowUp",! U. ^, \# ~! ~7 i7 _5 W
  44.     "ArrowDown",\" v0 w/ ?+ Y7 H. ^9 M
  45.     "ArrowRight",
    3 M5 [; }2 l/ _' A, I
  46.   ],
    ) _5 A& |1 k* h
  47. ];
    8 w, P% ~1 k' A# O# ]
  48. let buttons = [];* {1 Y6 g2 X* p) n; R4 a
  49. let keycodes = {
    ; b\" L7 d1 R; ~' C
  50.   0: { Symbol: 0, Shift: ")" },; L+ I9 D# N- U! z& n0 A0 v% Q4 ^
  51.   1: { Symbol: 1, Shift: "!" },
    & T+ d; _' Z\" W2 J: {0 L# v3 h
  52.   2: { Symbol: 2, Shift: "@" },* u+ J! d: W9 a! F% ]0 C
  53.   3: { Symbol: 3, Shift: "#" },
    5 |( D* _' u/ p. ~0 R) K2 g
  54.   4: { Symbol: 4, Shift: "$" },
    + l  V, A\" c5 o4 _# t
  55.   5: { Symbol: 5, Shift: "%" },& x1 }7 h% a- ?\" l
  56.   6: { Symbol: 6, Shift: "^" },; a. u- G% ~* s3 i0 E. D9 O5 D# }
  57.   7: { Symbol: 7, Shift: "&" },
    8 s$ D& a6 N+ F3 }
  58.   8: { Symbol: 8, Shift: "*" },
    5 L5 z5 a2 r+ e7 }$ N5 b6 l
  59.   9: { Symbol: 9, Shift: "(" },: ~( Z* p5 p# w$ ]2 V8 A% Z
  60.   a: { Symbol: "a", Shift: "A" },
    6 l. u* q\" O\" m  l  [
  61.   b: { Symbol: "b", Shift: "B" },
    + }% ]) O( P3 p& l4 V
  62.   c: { Symbol: "c", Shift: "C" },8 b% b) l; s* ?8 m2 ]! t- ~- @7 J
  63.   d: { Symbol: "d", Shift: "D" },5 M( e& s8 ]  p0 ~0 I9 C9 A4 u
  64.   e: { Symbol: "e", Shift: "E" },
    * d) m! W2 e& H3 S: O. _, o
  65.   f: { Symbol: "f", Shift: "F" },
    \" L/ |9 b; T, ]
  66.   g: { Symbol: "g", Shift: "G" },0 G8 t/ D8 R7 K  w' a
  67.   h: { Symbol: "h", Shift: "H" },
    6 T0 P7 m1 I% \! n; N. v8 q
  68.   i: { Symbol: "i", Shift: "I" },( X( i* k( n4 [
  69.   j: { Symbol: "j", Shift: "J" },
    ; K7 W- F5 o8 Z% G' ^
  70.   k: { Symbol: "k", Shift: "K" },
    & F7 n4 U# G$ y' x3 ?
  71.   l: { Symbol: "l", Shift: "L" },7 i% ?3 h; r$ e* C2 G  V( b3 W; U) M
  72.   m: { Symbol: "m", Shift: "M" },
    6 f7 {! \2 [' g1 q+ V9 [$ n3 i, a
  73.   n: { Symbol: "n", Shift: "N" },: K3 t# s. r2 k: o; [% l\" `4 @
  74.   o: { Symbol: "o", Shift: "O" },+ t# h* u+ D7 ]* i
  75.   p: { Symbol: "p", Shift: "P" },
    ! }1 a5 e$ W; A3 b
  76.   q: { Symbol: "q", Shift: "Q" },
    7 S5 p  [/ h3 p' ~\" ^' t
  77.   r: { Symbol: "r", Shift: "R" },\" r7 F2 \0 Y9 N  C
  78.   s: { Symbol: "s", Shift: "S" },' f: C0 P. Z+ R/ z+ j
  79.   t: { Symbol: "t", Shift: "T" },9 R0 X3 u+ _. L
  80.   u: { Symbol: "u", Shift: "U" },0 Y& b4 b/ B! p! x7 P3 y+ f* t
  81.   v: { Symbol: "v", Shift: "V" },7 w6 Q% o) N1 C) P, b) v
  82.   w: { Symbol: "w", Shift: "W" },
    - |; _2 G! x( h0 N; v, l  @! R
  83.   x: { Symbol: "x", Shift: "X" },
    ; h4 Y0 m\" J5 |1 C+ i8 E
  84.   y: { Symbol: "y", Shift: "Y" },
    / ^/ y, e' X. y1 O- l) j4 A* Y2 g
  85.   z: { Symbol: "z", Shift: "Z" },3 u& W: f% ?! }: _1 V
  86.   "`": { Symbol: "`", Shift: "~" },
    4 B) t, H6 w' M8 [9 [  V9 e! u3 J
  87.   "-": { Symbol: "-", Shift: "_" },
    7 d' ^# m4 E4 h  ]+ T
  88.   "=": { Symbol: "=", Shift: "+" },
    1 Q( ^2 l% o! w' d, a7 ]
  89.   ";": { Symbol: ";", Shift: ":" },2 D# D7 M5 ~: y1 G4 m
  90.   "'": { Symbol: "'", Shift: '"' },1 I; Z( s% f0 w( H
  91.   "[": { Symbol: "[", Shift: "{" },
    ; b0 J+ X2 f. N/ j5 O- p8 v
  92.   "]": { Symbol: "]", Shift: "}" },5 C6 n. P1 v0 |1 M$ S+ ?9 X+ Y8 \! v  a
  93.   "\\": { Symbol: "\\", Shift: "|" },
    ( v) Z; v/ l5 X
  94.   ",": { Symbol: ",", Shift: "<" },
    9 B. k! e& s: P1 `$ H# b( R\" i
  95.   ".": { Symbol: ".", Shift: ">" },# L) ~/ f9 _4 {. F+ T2 m
  96.   "/": { Symbol: "/", Shift: "?" },
    $ H) G5 ?$ r+ P
  97.   Backspace: { Symbol: "⌫", Shift: "" },\" h; \' |5 j0 z& f6 n
  98.   tab: { Symbol: "  ", Shift: "" },
    . w1 m- ?4 Z\" {
  99.   CapsLock: { Symbol: "⇪", Shift: "" },5 H  _2 c  o# `2 v* L1 @% S
  100.   Shift: { Symbol: "⇧", Shift: "" },
    . Z3 }! F. u3 c% V4 L
  101.   Enter: { Symbol: "⏎", Shift: "" },  B% M/ ^% j) h& Y
  102.   Control: { Symbol: "⌃", Shift: "" },
    ) u2 i1 d7 ?: Q; E8 c
  103.   Alt: { Symbol: "Alt", Shift: "" },- z# N+ M1 Q, M  W7 T
  104.   Meta: { Symbol: "⌘", Shift: "" },7 @) H6 _( Z# K9 a
  105.   ArrowLeft: { Symbol: "←", Shift: "" },5 y\" x/ [7 _* H* H0 I; F. t
  106.   ArrowUp: { Symbol: "↑", Shift: "" },
    : c7 ^; Q. Y\" a8 o3 ^\" m
  107.   ArrowDown: { Symbol: "↓", Shift: "" },
    # H2 d  F% x( s2 q  _9 W$ v
  108.   ArrowRight: { Symbol: "→", Shift: "" },
    : ?\" S2 q9 B; @* ?) _8 n- J
  109.   " ": { Symbol: " ", Shift: "" },5 P\" v6 B3 K+ U% u) n  r* G0 W
  110. };1 n: n. `: b9 z, s4 `1 S
  111. let buttonMap = new Map();
    \" [/ i( A: }( Q5 w+ `
  112. let height = 32;* h1 S- y: J4 U8 p5 M
  113. let margin = 8;
    ! ], u' [' I0 |# e8 {
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);
    ! a+ a, B, r: z1 f) E
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);& h: s- X) p! S& A
  116. for (let row = 0; row < keys.length; row++) {5 C, @. m- L# m: M! W
  117.   let x = 32;+ |5 o7 S5 Q$ S# l9 k
  118.   let prev;
    - {6 ?7 }7 E- |5 }7 X/ m
  119.   for (let i = 0; i < keys[row].length; i++) {
    / o3 c* j5 {: |' ]
  120.     let key = keys[row][i];
    ( c* x) h7 `8 q. @% Z0 t
  121.     let width = 32;
    ' N( t7 c\" ~  c  u
  122.     let button;
    , H# Y* i' d# p8 X5 F+ q\" X
  123.     switch (key) {. B* V2 _9 E6 a8 K6 i
  124.       case "CapsLock":! m$ i1 l/ E+ S3 @4 |
  125.         button = capslock;& N% o; Z* m6 ~2 Y
  126.         width = 64;  B9 V\" Q% `) \6 o; P
  127.         break;
    ; {7 a\" N- h- o3 y6 a3 O8 i
  128.       case "Shift":
    8 t# W) Y1 b6 h) \6 I\" O4 s
  129.         if (shift.x === 0) {
    / h) W; R$ o8 W$ ]
  130.           button = shift;
    ) _' A1 U- X( ~' x4 v! w
  131.         } else {
    5 ]$ ~9 x$ Z% `9 j
  132.           button = interactive.button(
    # C+ o$ r* w' i. e0 t: x\" d9 M
  133.             0,
    5 r6 @' S, q  Q$ K; O2 j% ^
  134.             0,! v\" G. l& v  K& b9 f& ?
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key
    ; u1 E* B5 `5 y. a2 O) }# D
  136.           );. l7 |2 {$ G* H4 R: [8 N6 z- A8 X
  137.         }1 g0 g1 e, A, t% C% _
  138.         width = 90;
    4 _% }. M8 U9 {, ~
  139.         break;
      c9 T) u. a\" _6 ?\" R7 {; M
  140.       case "tab":% h1 {: G5 B! A
  141.         width = 50;: B- t3 R* ?; K: N
  142.         button = interactive.button(6 U: ?: M7 f$ b% O$ s. R( G) ~
  143.           0,
    \" C! G0 u$ j# }# \5 {
  144.           0,
    \" r- z: u8 z  d& O
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    1 L& g# x9 ~6 x  o5 Z% B* k
  146.         );
    6 h& B- _, P3 m3 p$ W
  147.         break;
    8 |& g7 j2 N. t
  148.       case " ":
    4 v. N! X: l( [0 K& n; w  v
  149.         width = 176;
    ) |% o& v/ ?& |& j6 Y2 W
  150.         button = interactive.button(9 t\" X. I2 X3 X' I: R( I
  151.           0,
    8 L. y5 L% w& V
  152.           0,
    9 I& _5 R4 ]3 y0 T8 s- `
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key- I, A4 d7 A- o+ m6 z7 R\" |
  154.         );
    3 C) J+ m+ o5 |/ A, e: D) p
  155.         break;  ]( q4 M0 s% K9 T# G3 z
  156.       case "Meta":- V! b+ \0 v& Y) d; P) t! o' E; f4 t
  157.         width = 50;
    . c: }. V8 ?9 v\" R# v' [+ C
  158.         button = interactive.button(- b+ L  v+ c4 Z' C$ L% G6 Q0 |* n3 e
  159.           0,7 g, i$ D7 t! V% z6 m' ]
  160.           0,
    0 Z, @\" Q\" h: a9 B, m2 C
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key; r+ k% b. }1 J3 e8 Q: A% m4 d
  162.         );
    % T; U% i) G1 m( ]\" U+ Y
  163.         break;( \* S) g5 [. H- p) i$ ?. f0 p
  164.       default:, v( U2 a- o% z: V/ I
  165.         button = interactive.button(
    0 X9 k8 R9 p7 `% b6 D1 v  Z
  166.           0,, l' k  z' Q+ [# Y, j$ M
  167.           0,4 w# b  j9 R3 L! w
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key/ h9 E% y% c) M: ]/ H
  169.         );4 F) t$ [; I8 c5 \; Q% O
  170.         if (keycodes[key] != undefined) {
    * v$ d9 Q# e5 I\" E# P; e6 V
  171.           if (keycodes[key].Shift != "") {( c: m- e& s( y( Q) @2 ^+ [
  172.             button.addDependency(shift, capslock);: j5 ^4 V9 B. y) H8 ^) \) `
  173.             button.update = () => {. _% ?9 q. c, d5 J
  174.               if (shift.active || capslock.active) {/ G# ?* r/ e  E0 W# F
  175.                 button.label.contents = keycodes[key].Shift;
    4 v( r3 H9 _) |6 }7 y. x
  176.               } else {\" u\" V: T7 o% Z
  177.                 button.label.contents = keycodes[key].Symbol;
    $ g( @! z; E( J- L7 K, l- g6 A' H
  178.               }
    ! e, E! X$ n& D- ^! {+ ~4 z
  179.             };
    3 s\" i0 O: O* S$ C$ O
  180.           }
    \" \; M) T  x\" ]' k$ P- p% r+ k
  181.         }- w& h6 {& f+ I\" P3 B6 c. X1 ?
  182.     }8 q% j* q% O# S& J
  183.     button.x = x;
    9 e/ \  T& x5 Q9 D$ A) {
  184.     button.y = 64 + row * (height + margin);! D: V\" H. N- g9 |3 L5 s- M# N& M8 B/ [3 c
  185.     if (button.box.width < width) {
    ) g* N\" R$ C8 ~# L$ n8 I: x
  186.       button.box.width = width;
    # W& V1 A% H& c- D; k7 Y
  187.     }) H2 {4 J4 X2 b\" J( ]
  188.     let bbox = button.root.getBBox();4 Y! v$ l3 J: p( ~) u
  189.     x += bbox.width + margin;
    7 L+ ^% q5 a. Z, S9 k
  190.     buttons.push(button);
    1 d\" g0 y( j; t; h: @
  191.     prev = button;# J- o( N# J1 V* n+ w+ k
  192.     buttonMap.set(key, button);
    8 b7 r8 c6 u+ A\" K- e) b0 v( P
  193.     if (key === "ArrowUp") {( R/ m( O  z$ r' L0 W
  194.       button.box.height = 16;
    # b: k! W7 `\" w3 F
  195.       button.label.root.style.display = "none";. X5 J3 {$ ^6 x
  196.     } else if (key === "ArrowDown") {. G$ ]; P$ l2 T/ Z1 h
  197.       button.box.height = 16;
    8 {& ~; z' `6 K\" ^8 N0 b% e
  198.       button.x -= 32 + margin;( @. O9 G2 k3 u: {7 x4 c) X
  199.       button.y += 16;
    - L5 P8 {* c3 L/ Q/ K
  200.       button.label.root.style.display = "none";
    : y. {% H( Y: Q% }5 M3 h
  201.       x -= bbox.width + margin;
    6 F7 m$ [4 e2 k! X
  202.     }4 G, D4 M0 S. ^- {
  203.   }! {+ m3 q) _  W1 D
  204.   let right = prev.x;
    6 Q: R9 `% H$ l
  205.   if (right < 630) {
    + ^! e3 v8 U$ [4 I  C  ]* ^3 \: A
  206.     prev.box.width = 630 - right;\" g4 U, _6 X1 Q7 l  @8 V
  207.   }2 T\" q; N% S, Q: L
  208. }$ X+ k1 ]9 e8 I6 C) a$ f
  209. // console.log(keycodes["0"], shift, capslock);' w. ]$ S# i2 L) d& x4 v' F
  210. let active = [];7 ^8 A0 N# E5 z& w, E/ l7 ~' m7 C
  211. window.onkeydown = function (event) {
    # G* c, @\" t' \! u3 ?  @/ f
  212.   for (let i = 0; i < buttons.length; i++) {
    7 e$ t: ~\" M1 r8 k5 Y
  213.     let button = buttons[i];
    3 f9 @1 T) ?3 r8 |\" q+ D
  214.     if (
    5 l  W( [9 }. u4 F; |
  215.       button.label.contents === event.key ||7 a9 h# t. U1 U0 I
  216.       (keycodes[event.key] != undefined &&
    ; K, p' x8 r8 F+ ]) v0 Q7 H5 Z
  217.         button.label.contents === keycodes[event.key].Symbol)( X- [4 L. i2 v) ]* V8 i/ L
  218.     ) {8 X6 {5 e7 D5 x! o& \/ {! B: Y
  219.       button.box.style.fill = "#f8f8f8";
    , I9 i5 j/ W/ \; I; x* M
  220.       button.label.style.fill = "#404040";
    / E1 |3 R) i' C# Z2 J( g/ m$ O: ]
  221.       button.active = true;
    4 K/ w! l6 ?- t: u
  222.       active.push(button);) c8 p2 D% }5 R
  223.     }' p- P2 g' D1 _' W- O. A; T1 |
  224.   }2 x* U9 ?$ t/ f8 ], i' E
  225.   buffer += `'${event.key}',`;
    - a1 b4 |: ~' h: q7 k  V
  226. };9 I& I! i$ J* ?, r
  227. window.onkeyup = function (event) {# u4 G, d7 N/ R4 y$ l' ^2 }3 o
  228.   let newActive = [];
    ( V! m8 t8 E( U$ k. n- `. d% r7 L4 w
  229.   for (let button of active) {- D$ F3 s1 ^4 R( o( Q$ r
  230.     if (  {+ u* C6 }, c\" G
  231.       button.label.contents === event.key ||( [& B- D( @7 e3 {2 Y
  232.       (keycodes[event.key] != undefined &&
    . N( N# E6 ^7 |% @& T# u
  233.         button.label.contents === keycodes[event.key].Symbol)- x2 D9 U! R  a5 I
  234.     ) {
    $ W$ D+ S7 I2 Z; ?- `. b8 u
  235.       button.box.style.fill = "";% \- s8 W\" n. I* U- X8 U) u+ g
  236.       button.label.style.fill = "";* N' y$ p4 X* N! o
  237.       button.active = false;
    . K! }- V& N* M$ Y% ^& z/ O
  238.     } else {
    5 l& o7 ~1 E1 S
  239.       newActive.push(button);, T9 z; }8 a) Z/ h; m) m6 w; i
  240.     }
    $ _& j3 N9 B, x+ C9 `2 g9 R
  241.   }: B8 F& J' ^) n# b
  242.   active = newActive;
    / D. {% h+ A* o) v$ u
  243. };
    / A% G# J( z5 W9 r, `4 x. M5 d
  244. let bbox = interactive.input.root.getBBox();4 c  U* S5 D# F& [/ X/ s
  245. interactive.setViewBox(! G# M* y1 d3 r5 [
  246.   bbox.x - margin,9 s# I2 c% u; J% L1 T. b0 y
  247.   bbox.y,
    . E& `1 j  N. `' k8 ?
  248.   bbox.width + 2 * margin,
    / P  P2 o6 c7 E/ M
  249.   bbox.height
    ( X  U9 S! J: v2 Q9 m& e\" Z. c
  250. );1 u4 L3 o1 y0 O/ F/ r
  251. //# sourceMappingURL=keyboard.js.map
    / q+ d, H* l. U1 K& G/ b
  252. * h% L3 ?8 X, v! `\" m. ]
复制代码
/ W9 K2 ]# ]1 a' |% j5 ]% [
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-12 15:28 , Processed in 0.488985 second(s), 51 queries .

回顶部