QQ登录

只需要一步,快速开始

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

使用html画一个键盘

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>
    3 v9 s, Z0 d0 S6 I, ]( o
  2. <html lang="en">0 z5 ?. P9 W% g9 n; [
  3. <head>
    5 B4 ^8 X, R! S1 W. R3 X' Q2 C: s
  4.   <meta charset="UTF-8">* E- @# M, ~4 }  h/ }  {; a3 U, |, X
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">, a4 H  b6 |2 ~
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
    * C( ?6 F$ \; H$ Q
  7.   <link rel="stylesheet" >
    9 k/ n/ T0 m3 E3 e$ j6 J7 ]. r
  8.   <title>vector examples Keyboard</title>
    3 v: O0 d& r\" x. N
  9. </head>
    3 n  h0 f6 g8 d8 D7 n; |
  10. <body>, f! y% R3 t# C0 d0 z5 ?\" X
  11.   <div id="keyboard"></div>
    9 Z( v\" M, d; ^
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->, ?/ j1 y1 S6 ]' b1 s0 X1 a2 c
  13.   <script type="module" src="./temp.js"></script>% f) p* G8 I2 P' q( i+ H
  14. </body>  Z/ r; ~; x& T
  15. </html>( b\" B9 T$ Z: S) l
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";\" C# s- V& ~7 ~' N& S
  2. console.log("Interactive", Interactive);\" X% ~1 `: O& K+ A) m$ l! e
复制代码
  1. /*** M  E# L% a# g. Z# q  j: K
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard8 z4 o( F7 p; n
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    4 m  C# L, p' K
  4. * @tags [input]2 c0 M& T4 ]8 K
  5. */
    - S; U! q0 ?% {. l$ R0 S4 c
  6. // import { Interactive, getScriptName } from "../../index.js";. q: [1 {% D  t0 L
  7. // let interactive = new Interactive(getScriptName());
    $ T/ z2 }  ^& Z1 x& z+ S
  8. import Interactive from "https://vectorjs.org/interactive.js";
    4 ?! X, N) \) Q\" f$ a* V: k& i4 e
  9. let interactive = new Interactive("keyboard");; b  u4 s+ |9 p
  10. interactive.width = 768;
    , h. S. Z& |+ l! f
  11. interactive.height = 300;% O; Q3 v  e# i' o2 u/ L
  12. interactive.border = true;
    ; Q7 o! a\" ^. k( }\" M8 o
  13. let buffer = "";: s% N# z5 `8 W
  14. let keys = [5 z0 O( c( m  g2 X/ c# L3 [
  15.   [) W) L4 M+ V% s* n
  16.     "`",0 K* m$ k4 e+ b
  17.     "1",
    6 ^6 p( {- x, A! x
  18.     "2",
    , [$ C' z) Y+ d' h5 n. e3 B
  19.     "3",
    % e( r/ u! A5 f\" Q  P: ]+ l
  20.     "4",
    ; Q' n4 }) C# F) ]1 r) k6 T5 ]
  21.     "5",
    ! V* f; S1 x( N5 v
  22.     "6",9 _' R$ ^5 d1 O6 n8 Y
  23.     "7",
    ) K\" \* [. a0 q# P( W! h. J& I
  24.     "8",& B# y# Z$ Q4 R
  25.     "9",
    - q6 V1 f1 ?1 t+ Z
  26.     "0",
    0 a( E/ |7 \! Z9 r4 n; o) Z
  27.     "-",. M: F; B) s9 Q9 W* _, K% L
  28.     "=",
    0 G. U# @0 e# L
  29.     "Backspace",
    ; r; L, W1 |8 h: k: d' C
  30.   ],! A  k2 U: ]! Y' ]0 r3 q
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],
    5 k\" Q+ x; j6 }9 c  l
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],
    2 |) ]( ~0 Z  W: R6 ~. W+ A+ [
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],
    6 K9 e; R6 w+ Z\" G
  34.   [0 r- J* z8 n8 j5 N5 @# t7 `
  35.     "fn",
    3 _# }' L\" F/ f; K6 F9 }* b) ?: Z
  36.     "Control",% d6 g6 |7 o# i4 U+ L+ W: M- S
  37.     "Alt",
    2 F6 }% n. I3 I3 Q( I2 U; C\" I4 f# _5 f
  38.     "Meta",$ X6 Q* C  ?9 k: M, U/ v* H
  39.     " ",
    ; y0 ~4 h, z7 C) A\" Z
  40.     "Meta",6 R& m+ o8 E# Z7 H( h, V- B; a
  41.     "Alt",( Z. i, d3 V# C! g2 n8 e+ t
  42.     "ArrowLeft",( S, k& t9 l( j3 C\" a7 q
  43.     "ArrowUp",
    / w\" _% H: P( m: [
  44.     "ArrowDown",6 `4 v0 O/ V, r) J; l8 j6 Q( E8 f
  45.     "ArrowRight",' Y% w4 ]$ |- U! Q2 X2 d
  46.   ],; |, ?1 V' w' V% O: g: a: f$ e
  47. ];5 l8 ?# N8 D- w5 Y3 f2 Z
  48. let buttons = [];
    3 L# Z3 ~' g0 L( E* a7 c
  49. let keycodes = {
    ; ^+ _( L: F6 h5 Y6 r% \9 N\" N
  50.   0: { Symbol: 0, Shift: ")" },
    5 w: |6 {  n\" ?6 [+ m5 b, D
  51.   1: { Symbol: 1, Shift: "!" },
    0 [+ c. \- Y+ X5 m
  52.   2: { Symbol: 2, Shift: "@" },
    2 T2 C- q4 Y9 E, a
  53.   3: { Symbol: 3, Shift: "#" },+ Q& S9 B6 k! a! E% d) `
  54.   4: { Symbol: 4, Shift: "$" },
    3 u( I: g; v% \
  55.   5: { Symbol: 5, Shift: "%" },
    ) X- l2 j/ v5 r4 b  v  m
  56.   6: { Symbol: 6, Shift: "^" },
    9 g6 V; F\" z8 u4 W, q' F' E) {! M
  57.   7: { Symbol: 7, Shift: "&" },% o4 c6 L6 Q! Q4 B5 P2 _5 ^4 g
  58.   8: { Symbol: 8, Shift: "*" },
      q9 e  B. F9 a  V9 p% W\" f3 C% m
  59.   9: { Symbol: 9, Shift: "(" },; C/ o\" d: P3 l1 M  L, ?
  60.   a: { Symbol: "a", Shift: "A" },5 h\" l) x: B, o) S
  61.   b: { Symbol: "b", Shift: "B" },
    ' B# L: i2 w1 d0 l
  62.   c: { Symbol: "c", Shift: "C" },
    7 @3 m$ n3 ~9 o' _. _# M' |
  63.   d: { Symbol: "d", Shift: "D" },$ d( H( ^: G% F  S1 e+ ]
  64.   e: { Symbol: "e", Shift: "E" },/ |. ?! v  n6 U7 G* l# M0 G
  65.   f: { Symbol: "f", Shift: "F" },
    ( o% \8 F\" V$ ]\" A9 C
  66.   g: { Symbol: "g", Shift: "G" },
    & O' I, k5 S+ g\" q& Z+ m
  67.   h: { Symbol: "h", Shift: "H" },4 Y/ T4 j8 U* z- r+ Y: Z
  68.   i: { Symbol: "i", Shift: "I" },
    : `& \6 n# F# C& A4 h: `6 c6 |
  69.   j: { Symbol: "j", Shift: "J" },# u. `; g0 A: A# z  h8 U
  70.   k: { Symbol: "k", Shift: "K" },' K; d$ e0 O2 E  b$ Q* B
  71.   l: { Symbol: "l", Shift: "L" },
    5 n8 i\" p: d* v, {2 C& T- ~
  72.   m: { Symbol: "m", Shift: "M" },2 F1 N% a  }. s- D6 R. s
  73.   n: { Symbol: "n", Shift: "N" },# M; L# ]7 T# s1 z% ]
  74.   o: { Symbol: "o", Shift: "O" },; o# U& |# x9 }- \' U
  75.   p: { Symbol: "p", Shift: "P" },, a\" c4 s- x- [4 @# n5 V6 l0 k
  76.   q: { Symbol: "q", Shift: "Q" },
      q, M/ @8 I& o- J* t9 q, u
  77.   r: { Symbol: "r", Shift: "R" },
    / U, }; E; j, t
  78.   s: { Symbol: "s", Shift: "S" },
      k4 R+ i5 n$ W- ?\" r8 P  C/ W
  79.   t: { Symbol: "t", Shift: "T" },
    5 ^0 T1 S; I6 y4 l/ h
  80.   u: { Symbol: "u", Shift: "U" },\" J- r\" ^* ]0 B9 A4 t3 _
  81.   v: { Symbol: "v", Shift: "V" },
    - d& w% a  ~( V8 h( c4 a) _2 d
  82.   w: { Symbol: "w", Shift: "W" },
    \" J& s0 r! {2 ~4 S9 |# n: |( R
  83.   x: { Symbol: "x", Shift: "X" },, M* u# ]1 a9 O4 m7 X. k5 G8 K
  84.   y: { Symbol: "y", Shift: "Y" },' l1 u# J! H' z4 @1 S' Z- [
  85.   z: { Symbol: "z", Shift: "Z" },( W- u6 k3 E/ t
  86.   "`": { Symbol: "`", Shift: "~" },, t* X) q+ K% G5 C! C
  87.   "-": { Symbol: "-", Shift: "_" },& h2 j- L- ]% ?# x' w# O9 ?9 m3 R* Y
  88.   "=": { Symbol: "=", Shift: "+" },$ B) E$ |7 ^* M8 P: ~
  89.   ";": { Symbol: ";", Shift: ":" },* J3 K! p( G; T3 o# g3 E  S
  90.   "'": { Symbol: "'", Shift: '"' },5 b) Q2 n) k5 b* c5 Y
  91.   "[": { Symbol: "[", Shift: "{" },+ C; M/ H: n) I* Y% C\" S
  92.   "]": { Symbol: "]", Shift: "}" },
    \" H  U/ z2 H& q/ m3 B
  93.   "\\": { Symbol: "\\", Shift: "|" },
    ; [5 ~\" Q+ ~: O, s. X4 \
  94.   ",": { Symbol: ",", Shift: "<" },
    6 m. z% O! A5 B4 T\" p$ p
  95.   ".": { Symbol: ".", Shift: ">" },4 b7 s\" i: V9 z; m  f! |
  96.   "/": { Symbol: "/", Shift: "?" },\" k6 j0 e' ~* o1 h
  97.   Backspace: { Symbol: "⌫", Shift: "" },6 r) I& H% v. N8 C
  98.   tab: { Symbol: "  ", Shift: "" },
    ! ]4 L2 {  Q, w/ g\" B
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    6 h0 x4 t# b! E% P) M5 @
  100.   Shift: { Symbol: "⇧", Shift: "" },4 P7 J/ P0 o( |2 U: @\" X# r\" s
  101.   Enter: { Symbol: "⏎", Shift: "" },: K  z9 ?& G$ M1 v$ c; Z9 T3 ~
  102.   Control: { Symbol: "⌃", Shift: "" },1 t\" Q+ G  a\" r0 ~  D  |
  103.   Alt: { Symbol: "Alt", Shift: "" },. z5 ~9 s3 |( V6 ^\" V$ _; _7 N
  104.   Meta: { Symbol: "⌘", Shift: "" },
    2 H, R0 F\" C8 P+ D( b
  105.   ArrowLeft: { Symbol: "←", Shift: "" },. ]/ a9 _! o9 W8 ^' |\" D
  106.   ArrowUp: { Symbol: "↑", Shift: "" },
    ! t' \4 A! T: }- b8 @9 O6 y' F
  107.   ArrowDown: { Symbol: "↓", Shift: "" },3 n0 \1 L5 e* n: q9 }% y
  108.   ArrowRight: { Symbol: "→", Shift: "" },
    2 `, B; J8 y; v4 L
  109.   " ": { Symbol: " ", Shift: "" },2 n! y2 k. i/ i! h- P# j
  110. };
    , b8 w; `; m% x% v% B$ A  C
  111. let buttonMap = new Map();
    + u& g* m: D9 T! ]\" k
  112. let height = 32;: v7 X# o( ~6 C8 n/ w
  113. let margin = 8;+ e$ V\" Q' t- n# M( |
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);. z; R' h' T7 l) E9 d
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);4 V, u8 H+ T9 Z0 V
  116. for (let row = 0; row < keys.length; row++) {
    ; e& x! E0 K+ T4 t
  117.   let x = 32;
    6 r4 {. W  x4 s7 F\" f8 J$ Y+ c
  118.   let prev;
    ( M) O& F% U3 `& ~2 q7 P
  119.   for (let i = 0; i < keys[row].length; i++) {
      b2 w5 E4 S\" E' Z
  120.     let key = keys[row][i];
    9 Y* ?+ d/ |1 n
  121.     let width = 32;
      ?/ r  Q  g% ^! p
  122.     let button;. ]  }0 @/ L) X% E
  123.     switch (key) {
    + G* {  C8 E( W$ K; r( d& C
  124.       case "CapsLock":& J4 G$ a, @- c8 t& v: n
  125.         button = capslock;7 i9 f* n9 |& v3 h% A$ {
  126.         width = 64;
    9 ?3 d0 N2 c: Q
  127.         break;3 j9 N& u' z\" d9 s) k8 A4 [
  128.       case "Shift":
    7 H/ v: P9 X3 t/ j! I4 R
  129.         if (shift.x === 0) {+ z+ q0 u* x+ [1 w/ Q
  130.           button = shift;
    * ~  j/ N3 h! J8 p; q( x
  131.         } else {2 W5 c9 t1 g2 S# r! X. i/ e
  132.           button = interactive.button(
    3 [' s  ?* s. n2 Q0 |3 w% `
  133.             0,
    ! p% L$ v4 v% t9 T. M\" m6 R2 Q
  134.             0,8 ?2 U% m7 c3 u: \5 R
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key) f( S  |6 j7 X1 X  N. i2 ]0 F
  136.           );
    6 O1 ?0 d\" n& }! ]. W7 c
  137.         }
    2 v( \5 y3 P. K& h
  138.         width = 90;8 Z6 h+ C6 }# j3 _! u
  139.         break;
    . S% t8 t! d4 Y8 E$ l: F\" d
  140.       case "tab":1 L- h6 T* x/ X, q# W, O
  141.         width = 50;
    . P( Y( L6 Y- M\" n: `
  142.         button = interactive.button(
    0 E3 q, j2 k! i6 y. }9 Y& Z' I
  143.           0,. M3 j3 P& u; J+ D( w0 y) w
  144.           0,/ @8 T! V6 x5 N( P. q2 n$ Q6 S
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    $ b2 y$ M- ^: R2 ~( U( j
  146.         );
    0 f! z* c9 X: I\" I' H
  147.         break;: {$ Z0 q* V% J% D. d: m$ s0 [7 P3 ~
  148.       case " ":+ Q, B9 b4 r: R% ~5 r- R
  149.         width = 176;
    2 U$ i# x+ k  e, E5 J. ~2 e+ D
  150.         button = interactive.button(
    / \, L2 o& C8 ]\" h
  151.           0,! h9 R0 ~6 V7 x* g
  152.           0,9 t9 F\" O# L) l5 d8 D9 x
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key2 f% }2 q& J\" O4 k  B- h  I2 l
  154.         );
    ; L; H4 c( C: B$ u& Y6 a1 h
  155.         break;; \7 _! {7 U) |/ X
  156.       case "Meta":
      t- u& Z1 [\" j+ v) a4 A
  157.         width = 50;2 b+ H: v. l9 w9 T/ M' {& y
  158.         button = interactive.button(
    0 s7 O% Y7 D2 K8 X; w
  159.           0,; [6 R$ \. ]0 @& F2 p6 e
  160.           0,7 v( j( I- C/ i- Z
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    2 B: X2 N) `7 [4 N: W% x: C
  162.         );) `, w+ T! }6 a( S) N* s) z
  163.         break;$ }- ?3 d6 S# R# _
  164.       default:
    - F$ @# _\" _$ _0 I
  165.         button = interactive.button(
    & K' o! ?: t8 q/ ^7 p5 Z: q0 `8 }
  166.           0,) O' W/ e5 P) j, |6 K0 e* `: z& O
  167.           0,
    ' s8 j6 L; P% @; o% d
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key1 |7 Z$ `* a( t\" z: D
  169.         );
    \" O7 I$ C; z1 X' [
  170.         if (keycodes[key] != undefined) {- ?# R% x' I7 n  P$ ~' a8 ?
  171.           if (keycodes[key].Shift != "") {
    & R1 ^$ M, s' V
  172.             button.addDependency(shift, capslock);3 H0 t% r7 P5 a% h- X9 ^7 ?7 k3 [: l
  173.             button.update = () => {
    : ~0 J0 N4 S  V0 ]- T; T
  174.               if (shift.active || capslock.active) {6 r, O, B1 r4 w\" m
  175.                 button.label.contents = keycodes[key].Shift;7 b1 ^8 o+ m5 n5 u' c' J
  176.               } else {
    4 C7 q( ~& ~6 M6 g/ n4 m  k
  177.                 button.label.contents = keycodes[key].Symbol;
    : q( M  [2 r2 V4 ]\" l
  178.               }3 F+ n+ ^% _  F$ O* N. g- A\" y
  179.             };
    * J# D1 Z/ |) \5 h
  180.           }
    3 J3 \( t3 j, A- |1 j: M
  181.         }2 l+ \! y/ E& z7 K3 i
  182.     }
    0 x1 C6 }0 W! j# ^5 M1 {
  183.     button.x = x;# L, w% z9 S- T; O3 B& l: q4 b
  184.     button.y = 64 + row * (height + margin);/ X* M: m! w4 O( x. j  ~7 V- d
  185.     if (button.box.width < width) {
    $ h; m% M1 R8 @: P2 ^  s
  186.       button.box.width = width;/ U/ r2 o& ^\" @: b8 c' K2 B
  187.     }- q( A2 b% d1 N3 D
  188.     let bbox = button.root.getBBox();& g& _* x4 q  X7 ]+ P3 h1 L
  189.     x += bbox.width + margin;$ q: W/ S( S9 L! G% c
  190.     buttons.push(button);\" j2 `) t! b/ X\" H! L+ ^5 G% B9 l1 [
  191.     prev = button;( o4 l0 C, r) Y! j. a
  192.     buttonMap.set(key, button);: R! y, Z( r\" s; [& _3 h7 `/ o. p. g
  193.     if (key === "ArrowUp") {2 x) }9 K. X  l, z, G1 N
  194.       button.box.height = 16;4 _8 D& ~4 W1 W
  195.       button.label.root.style.display = "none";: c& M3 \! V$ n) j2 ~
  196.     } else if (key === "ArrowDown") {\" }, T5 a% m/ L- S
  197.       button.box.height = 16;
    ' a# S# I3 W7 W) U. P* c4 H
  198.       button.x -= 32 + margin;3 ^( B3 J( R- `8 N% \\" _
  199.       button.y += 16;
    ' V2 Z- V0 B* u4 H7 {1 W1 j* i
  200.       button.label.root.style.display = "none";( K) D1 [3 P  g
  201.       x -= bbox.width + margin;1 d5 S9 D7 C6 a( s2 z
  202.     }
    - u% T+ N  J+ m7 y/ b
  203.   }
    ! a$ v\" Y4 a$ ^
  204.   let right = prev.x;
    \" B+ i$ k  w! j* h
  205.   if (right < 630) {  r9 u- u! r5 `
  206.     prev.box.width = 630 - right;: r2 J/ Y! W: ]6 ]& `  M
  207.   }
    . v# ^7 W8 V9 M6 J/ |1 u$ a: m& h4 h
  208. }' N! {% [6 S# {, g* |( L1 A
  209. // console.log(keycodes["0"], shift, capslock);
    ! [, ]& v9 U0 w- Z# F. j$ l
  210. let active = [];! m# W' O  q. q+ S
  211. window.onkeydown = function (event) {
    % J: @6 I3 D! W( e( S0 K8 `) g
  212.   for (let i = 0; i < buttons.length; i++) {
    , t' j3 i: L8 U2 b) L) |
  213.     let button = buttons[i];
    5 M& r( a2 U4 _1 G# V+ C9 [# \
  214.     if (
    ; U! Y! K4 V' f; T2 j
  215.       button.label.contents === event.key ||
    ) b! \- B+ i9 J/ l  Z! @- ^
  216.       (keycodes[event.key] != undefined &&  R' P* n/ B- k( d
  217.         button.label.contents === keycodes[event.key].Symbol), l: p4 G\" ?% t% c
  218.     ) {$ T1 |2 e5 z# I5 n5 u# \. D
  219.       button.box.style.fill = "#f8f8f8";- A0 U: V' J% a0 Q1 V2 {
  220.       button.label.style.fill = "#404040";
    ( E' I8 b: {* G* W0 d3 F
  221.       button.active = true;
    8 f( J4 F, Z: i5 r7 O0 e
  222.       active.push(button);
    , ?* ~! X4 n$ F/ _* S+ Q
  223.     }9 t/ u- E- H& p9 Q( G
  224.   }& ~& h# \- V4 d! T) d
  225.   buffer += `'${event.key}',`;
    7 e( x9 j& `2 G- r. G. l; j3 m' ^: L! E
  226. };
    3 W$ f. Y3 p: Y# `. M8 E
  227. window.onkeyup = function (event) {
    - ?4 r4 g# j& R5 K2 @& w
  228.   let newActive = [];
    6 W9 N* Z, y* [. y/ x' h
  229.   for (let button of active) {1 l+ d2 }+ y( s. _; |1 w- [' Q
  230.     if (
    2 p4 X; {8 |# \; z8 W0 z\" T
  231.       button.label.contents === event.key ||
    ( P- B! t4 }* q/ v
  232.       (keycodes[event.key] != undefined &&1 [* Q7 n( T6 t, f/ F
  233.         button.label.contents === keycodes[event.key].Symbol): i# r/ e1 |/ |: c) K( f
  234.     ) {
    . _9 N+ S; Y! x+ l$ F3 T
  235.       button.box.style.fill = "";
    5 b' H# {! }! ?$ Q( t4 c# N$ i
  236.       button.label.style.fill = "";* z7 y, M( A8 v
  237.       button.active = false;
    8 I% J0 d' G# k7 S! i& E
  238.     } else {
    ! k+ f7 N  {4 X8 [& P, L8 f0 z\" Q8 X* h
  239.       newActive.push(button);; M# k, J, o& O- a4 M$ b
  240.     }
    5 x; M7 \2 O4 W* ~' |0 d
  241.   }
    : s\" e! {, P1 o3 {; F2 O% E/ |
  242.   active = newActive;
    2 q( i; E: H* }! \2 e- Q
  243. };% q0 R9 @7 q; N; E7 }
  244. let bbox = interactive.input.root.getBBox();. l3 @2 r) x6 ?8 P5 E
  245. interactive.setViewBox(5 w+ J) ^) F4 z
  246.   bbox.x - margin,0 L( U\" t\" N& c7 O7 B* T
  247.   bbox.y,
    \" U& D. Y6 o+ W& P\" k
  248.   bbox.width + 2 * margin,' c( V; ^& q: s8 s- ]
  249.   bbox.height
    5 l8 d2 I  A8 L5 `
  250. );: Q5 Q6 V: J  E7 r9 Y/ `
  251. //# sourceMappingURL=keyboard.js.map
    1 V7 R* V( u; `$ \# ?. r8 P

  252. 6 Z$ |0 ?+ u8 X
复制代码
* a7 e3 c: P5 M" n# l
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-11 07:47 , Processed in 0.333634 second(s), 51 queries .

回顶部