QQ登录

只需要一步,快速开始

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

使用html画一个键盘

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-4-27 10:42 |只看该作者 |正序浏览
|招呼Ta 关注Ta
  1. <!DOCTYPE html>
    0 y; [( ]5 t: k! i# [  |
  2. <html lang="en">4 a9 l- o  ~6 x5 P+ `2 `
  3. <head>
    # I, e\" p+ K% f% f. j
  4.   <meta charset="UTF-8">
    5 ?9 [+ ]4 u4 S7 t) g, _
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">
    # {\" r\" D% x* ]\" L0 h6 q
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7 f$ Y! |& R1 J
  7.   <link rel="stylesheet" >
    - l) a\" a( X; B$ c& [; L7 L
  8.   <title>vector examples Keyboard</title>( Q  ]$ a. d$ H' f7 l! T
  9. </head>
    \" Q3 d, s1 n! s& j3 n1 W
  10. <body>
    ) s$ J! D6 u  y1 m% J
  11.   <div id="keyboard"></div>; P$ q- Q# f# D$ s: Q7 y7 c
  12.   <!-- <script type="module" src="./Keyboard.js"></script> -->  R/ M% `: @; B+ l: B\" }, Z
  13.   <script type="module" src="./temp.js"></script>
    3 g2 b/ x  p; e7 _5 Z3 A5 e
  14. </body>
    , S3 {% r) ~$ P0 \3 `
  15. </html>) Y4 Y2 z' X/ e0 i+ [
复制代码
  1. import Interactive from "https://vectorjs.org/interactive.js";$ h  ?8 P) C: X; S9 M- h6 k# w\" ~
  2. console.log("Interactive", Interactive);2 T2 _& q. F) d
复制代码
  1. /**: D3 _6 w/ I\" Z7 p7 `0 `
  2. * [url=home.php?mod=space&uid=634908]@title[/url] Keyboard; b: F, J0 ?2 x3 ], ^
  3. * @description This interactive demonstrates how key board input can be used to add interactivity.
    * D% l/ Y. ^  e( I  C7 H
  4. * @tags [input]! M8 Q/ [! n' I0 m  S& u
  5. */2 V. U6 _* ]4 I; Q9 w8 c/ b\" g6 O
  6. // import { Interactive, getScriptName } from "../../index.js";/ J8 o6 H0 A- X; t; a
  7. // let interactive = new Interactive(getScriptName());
    7 }; _) D: @' U# S8 Z* C2 `
  8. import Interactive from "https://vectorjs.org/interactive.js";. N\" ^9 S) ?$ E8 l$ q' j( w
  9. let interactive = new Interactive("keyboard");
    9 e5 f' D4 M8 ?+ C8 u
  10. interactive.width = 768;
    # v\" u7 ]6 j4 d! A) K( z
  11. interactive.height = 300;/ b\" A; [& y( k9 U
  12. interactive.border = true;( [  e) s- p/ p0 e8 j9 [
  13. let buffer = "";
    & [( B$ t( k) m9 N
  14. let keys = [
    , M, y. z7 j- [1 ?! O8 _3 w
  15.   [
    + n: V) f0 U, `  g$ m% Y6 T; S
  16.     "`",
    \" }' t5 t1 u. t8 H
  17.     "1",7 S! N( C% ^; @9 [4 c! E' V2 y
  18.     "2",
    : Z9 _+ ?/ I: I% x8 _\" }; G& N
  19.     "3",
    $ L) l9 a9 x  R  E\" M+ z% b
  20.     "4",
    ; r& d+ w\" I0 b$ }
  21.     "5",* J$ m! \9 }: G2 r. V
  22.     "6",+ K8 D: \- z$ X! H5 G* D* Y6 S0 ?
  23.     "7",2 a% R1 K+ V: C6 y. \
  24.     "8",
    # V! `  ?* h4 k- |4 U9 l
  25.     "9",
    ( M/ c\" A3 y7 |* t3 N) v/ P- w
  26.     "0",
    % V9 U! D1 T$ Z
  27.     "-",
      a  B\" u8 p) P
  28.     "=",: i- a' [2 Z& h3 B/ X) \
  29.     "Backspace",% ~% {, W; B- @* z/ M) f7 v
  30.   ],
    5 H; ^( e7 C8 T; I
  31.   ["tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\"],
    / X2 e# U6 h7 y' X; }; m
  32.   ["CapsLock", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter"],: t9 v4 D/ r' p& i1 g\" {
  33.   ["Shift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "Shift"],
    1 T, t( R4 k$ k: u
  34.   [& [1 [2 l% l3 F& \2 f
  35.     "fn",
    - T! D, W7 o\" B/ l' ]
  36.     "Control",! Y  w) o! C1 }5 j
  37.     "Alt",2 ~6 I# f; s  }5 x; j
  38.     "Meta",1 y' a, V) R+ y+ @+ y+ ^, h
  39.     " ",
      O5 R% T) X2 j
  40.     "Meta",; }( b/ g. X) p* L) _
  41.     "Alt",
    - y2 W$ u* G\" d* A3 C3 U# B2 {
  42.     "ArrowLeft",
    + E/ k5 G( k. b! K
  43.     "ArrowUp",
    # n  L% {1 ~, a: t  v2 Y
  44.     "ArrowDown",
    5 c6 t% D4 j: x2 X\" S
  45.     "ArrowRight",
    : o: U: z& W6 \  |7 X5 X
  46.   ],5 }# O( Y\" ~: b' S8 i- b6 T+ T3 A4 ?
  47. ];; z% ^, H# T- f1 u5 \4 f
  48. let buttons = [];
    3 C! t\" X( U& N4 \
  49. let keycodes = {
    ; k; c1 {# u4 z% b\" A4 y
  50.   0: { Symbol: 0, Shift: ")" },0 e+ w4 h) n4 }1 y
  51.   1: { Symbol: 1, Shift: "!" },
    9 O5 W) ]2 ?5 I, L* M
  52.   2: { Symbol: 2, Shift: "@" },
    7 E; g. @+ }# ~3 z: U- @9 l: h
  53.   3: { Symbol: 3, Shift: "#" },
    6 s6 P2 }8 c4 [  C3 D! {
  54.   4: { Symbol: 4, Shift: "$" },
    - v/ I4 C- Z: v, s  c
  55.   5: { Symbol: 5, Shift: "%" },% z$ h6 f! m/ {* B7 [
  56.   6: { Symbol: 6, Shift: "^" },
    / M2 l& G% M: o/ u5 h) f! @
  57.   7: { Symbol: 7, Shift: "&" },
    5 W5 |\" Z. K: x& ?# b, |9 a1 Y3 B0 B
  58.   8: { Symbol: 8, Shift: "*" },( @\" b! C. V. J& @$ J
  59.   9: { Symbol: 9, Shift: "(" },
    9 e% |$ X! {/ e' y! @
  60.   a: { Symbol: "a", Shift: "A" },
      _, s+ k* F3 }7 i! q. N
  61.   b: { Symbol: "b", Shift: "B" },9 v1 x) w0 @, E, b! |2 X& ^) h% t) ]  K
  62.   c: { Symbol: "c", Shift: "C" },
    9 X! Q. X: p7 ^/ x9 o
  63.   d: { Symbol: "d", Shift: "D" },
    \" ^1 D\" a) D3 i' v
  64.   e: { Symbol: "e", Shift: "E" },4 p3 _1 g$ B% T6 H& X
  65.   f: { Symbol: "f", Shift: "F" },
    \" `4 w' b* v1 S
  66.   g: { Symbol: "g", Shift: "G" },& g6 X* C, p\" R) n: Z# P
  67.   h: { Symbol: "h", Shift: "H" },+ p7 ]' x$ N. @# {0 W* F
  68.   i: { Symbol: "i", Shift: "I" },
      Z7 a1 \' p. Y\" A4 W9 l
  69.   j: { Symbol: "j", Shift: "J" },! k! r* F- E* @8 [
  70.   k: { Symbol: "k", Shift: "K" },
    * Y0 S0 A# f8 y( G) x: z
  71.   l: { Symbol: "l", Shift: "L" },
    . o/ r, s) S% W# p* t- y/ B$ R, Q
  72.   m: { Symbol: "m", Shift: "M" },' v+ ?7 W; G; ~$ _. ]+ w: L
  73.   n: { Symbol: "n", Shift: "N" },; t: j/ w( G, D; H& d
  74.   o: { Symbol: "o", Shift: "O" },
    ( k! `( z/ l% R! i
  75.   p: { Symbol: "p", Shift: "P" },\" `  u- z0 i/ d7 Z
  76.   q: { Symbol: "q", Shift: "Q" },
    . _* F! a) _/ X2 i4 l5 s1 G7 C
  77.   r: { Symbol: "r", Shift: "R" },5 z- }1 ^3 r# Z8 l: r
  78.   s: { Symbol: "s", Shift: "S" },
    9 ]; ]+ I& q( g  k
  79.   t: { Symbol: "t", Shift: "T" },
    3 G3 s+ h9 s* ?$ O/ k# u% v3 G2 ^
  80.   u: { Symbol: "u", Shift: "U" },2 }0 ~. n! {* z. c1 y
  81.   v: { Symbol: "v", Shift: "V" },
    . o1 i! `3 t  n7 f: W! z! d
  82.   w: { Symbol: "w", Shift: "W" },7 q( i* S% o% T' P3 Z' s7 J* j. u
  83.   x: { Symbol: "x", Shift: "X" },
    . M, z, Y\" X% W: F
  84.   y: { Symbol: "y", Shift: "Y" },
    9 {5 S# C) c\" c; i1 x
  85.   z: { Symbol: "z", Shift: "Z" },( K/ b/ m+ k/ t; q- K
  86.   "`": { Symbol: "`", Shift: "~" },\" r: m8 n3 t1 ]# L$ T. F/ p* ?
  87.   "-": { Symbol: "-", Shift: "_" },+ o2 q; e2 b8 [! j2 u$ |! J
  88.   "=": { Symbol: "=", Shift: "+" },
    % x7 x. R3 B7 F2 v( Y9 j1 J' |
  89.   ";": { Symbol: ";", Shift: ":" },# n$ p! n\" f) \7 H
  90.   "'": { Symbol: "'", Shift: '"' },4 _4 b/ A. r* A( F) A
  91.   "[": { Symbol: "[", Shift: "{" },9 ^% x- m) X7 {9 G8 {\" X* n# O
  92.   "]": { Symbol: "]", Shift: "}" },
    6 O3 l0 S: G\" S
  93.   "\\": { Symbol: "\\", Shift: "|" },
    7 }: z2 P0 M: j
  94.   ",": { Symbol: ",", Shift: "<" },
    , H& t/ L, p4 e/ P# j0 P2 O% }: P* g\" _  D
  95.   ".": { Symbol: ".", Shift: ">" },
    \" T8 T5 Y/ J/ q# E+ d: a\" N\" c. Z
  96.   "/": { Symbol: "/", Shift: "?" },
    \" _; b$ L\" z: ~! X\" l1 z( h
  97.   Backspace: { Symbol: "⌫", Shift: "" },) H- k8 y& H. l
  98.   tab: { Symbol: "  ", Shift: "" },2 R' d3 r) ^& x' o+ q+ @% `! R
  99.   CapsLock: { Symbol: "⇪", Shift: "" },
    & |0 s6 C1 P9 i
  100.   Shift: { Symbol: "⇧", Shift: "" },
    # |% x: q0 m\" M6 q- ?; {; v7 U
  101.   Enter: { Symbol: "⏎", Shift: "" },
    & {* B- |  j- i( h  b7 U6 S+ `
  102.   Control: { Symbol: "⌃", Shift: "" },; e) V) E8 o6 G: p2 m, Q2 q
  103.   Alt: { Symbol: "Alt", Shift: "" },
    * j$ ^! \- M' P4 {5 a9 J6 i- T/ k' z
  104.   Meta: { Symbol: "⌘", Shift: "" },
      [4 d7 m- w: s
  105.   ArrowLeft: { Symbol: "←", Shift: "" },
    \" G  f2 |8 Y; G- o( C0 Q
  106.   ArrowUp: { Symbol: "↑", Shift: "" },
    7 m' O+ N$ }7 }( u# t! ]\" L
  107.   ArrowDown: { Symbol: "↓", Shift: "" },) w7 ]0 |* I  V! g: m\" \: o
  108.   ArrowRight: { Symbol: "→", Shift: "" },
    5 Z. j3 Z0 R3 e; v5 t( G! t1 v& X. B  D
  109.   " ": { Symbol: " ", Shift: "" },
    8 ]+ U/ w( J& B1 d\" }
  110. };
    , T; l, H+ s2 ~* v8 {
  111. let buttonMap = new Map();
    ' B5 A% k( A% Y4 C, c5 X
  112. let height = 32;\" z. |8 E4 s8 Q: r/ P$ h
  113. let margin = 8;) D8 g7 Y( Q( C4 J! _$ f; Y( f7 z
  114. let capslock = interactive.button(0, 0, keycodes["CapsLock"].Symbol);# [# g# b! z\" ?/ f\" G! W& x& g
  115. let shift = interactive.button(0, 0, keycodes["Shift"].Symbol);
    ( |9 f1 a0 _+ d3 Z3 \\" V, ?
  116. for (let row = 0; row < keys.length; row++) {
    ) F; U/ n4 C3 ~3 l# H7 x
  117.   let x = 32;
    + ^\" _0 y- U3 Y0 D, V
  118.   let prev;8 U! ]! ?/ \% K' ^, q: Z% c/ m
  119.   for (let i = 0; i < keys[row].length; i++) {
    $ t+ e9 `6 c; T8 a0 a
  120.     let key = keys[row][i];7 W5 W$ Y) e# i& p& w
  121.     let width = 32;$ s) F/ z2 u' t. A
  122.     let button;4 M% |; S/ f\" v\" p) i& Q
  123.     switch (key) {# j6 _6 j' A5 S; v7 U7 l  t0 v, E+ C
  124.       case "CapsLock":
    , A, t7 V6 v) c( X
  125.         button = capslock;1 k# G7 Y4 S/ b; J+ M! n. T
  126.         width = 64;
    & P1 U0 s4 H3 i5 i! U
  127.         break;
    - O$ e8 m3 l9 r1 O0 K2 B& A. n
  128.       case "Shift":
    * E5 g8 F: ^% T! g1 {/ y
  129.         if (shift.x === 0) {
    $ w( {% S: K0 Z& D4 v% C
  130.           button = shift;# d! R) h* A4 l9 D7 K9 `
  131.         } else {) w$ P, @& d$ x4 U* W- C
  132.           button = interactive.button(, |  C; E0 I. f$ ?$ q7 I* s( X; \
  133.             0,, @' D0 V$ n& f+ v
  134.             0,
    9 Z% d  g1 A  j
  135.             keycodes[key] != undefined ? keycodes[key].Symbol : key
    $ i6 l1 ^6 k7 z6 `$ b
  136.           );
    4 x6 k1 E4 G2 Z- r; V  e
  137.         }& t( i/ Q: q, p: U( D
  138.         width = 90;$ F$ i: o2 ^; |( g3 }7 s
  139.         break;
    . b2 e: Y  d; l2 p3 D8 v' N1 s
  140.       case "tab":
    & u2 C9 T3 z) k7 n7 d
  141.         width = 50;\" z% e0 y3 h+ M1 r( ~/ x
  142.         button = interactive.button(  _\" x\" N9 a0 C+ t4 O$ b
  143.           0,
    3 J, L3 H* ~3 ?8 a% I6 k
  144.           0,+ z2 L- _8 W: G9 ?( H' W
  145.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    $ P& N4 `! L. X! h6 ?+ R: M/ t& G
  146.         );
    - X- k. p\" e1 z# k& s
  147.         break;6 k& }, P0 v) v8 r
  148.       case " ":. ?2 g9 h# z  m% X4 ~\" s
  149.         width = 176;( Z5 `% q; A( S
  150.         button = interactive.button(
    * i$ C6 l; b/ ~4 b
  151.           0,5 \5 ]+ {4 \( X% Y8 c; V
  152.           0,* l3 x! }/ B8 R1 e* P# |2 j6 ?
  153.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    4 D# g5 [2 B1 X7 r, |
  154.         );
    6 V: V  u1 c* v% R6 H/ S1 [# k9 _
  155.         break;% N8 b. ~  C, p0 y5 }9 L6 S
  156.       case "Meta":# C, Y, [6 W1 z
  157.         width = 50;8 c  ^; i1 y, q6 g4 V6 z5 Y% u+ b
  158.         button = interactive.button(
    * r/ C  r$ x! p  q) t0 S
  159.           0,
    % x$ O% v: g# V8 g\" ^
  160.           0,$ C6 V& X6 g5 M/ Q
  161.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    3 ?; O6 \9 Q- Q4 A\" ?
  162.         );/ n! W# q- B0 i4 U! D
  163.         break;
    # n3 c$ B. G1 G/ [
  164.       default:( G6 B& B! C) g; t  K  U
  165.         button = interactive.button(1 |. b3 Z2 Y4 r. j, f* l/ s  y
  166.           0,
    1 r/ ~' y$ `' s- F5 ?1 s
  167.           0,
    2 \  N2 h) ^8 _7 j
  168.           keycodes[key] != undefined ? keycodes[key].Symbol : key
    * s\" k3 Q) P* l% h
  169.         );
    9 v6 q# N0 q  Z( V
  170.         if (keycodes[key] != undefined) {
    4 P4 m3 u( t% [$ r\" H
  171.           if (keycodes[key].Shift != "") {) h* p6 }: i5 K' N
  172.             button.addDependency(shift, capslock);
    1 ~2 Z# o9 w4 v
  173.             button.update = () => {1 Z- `) ~+ d. r; W# ^; z+ g  [
  174.               if (shift.active || capslock.active) {# V( S! c: \/ ]0 P; l9 ^
  175.                 button.label.contents = keycodes[key].Shift;
    7 [1 |- M4 p+ \4 Z* Q$ |
  176.               } else {
    * T. |% [4 P; V, `
  177.                 button.label.contents = keycodes[key].Symbol;9 v3 H$ N! V! p4 Q* ]7 A& f$ i$ P+ `
  178.               }
    - q- n5 o: z7 W( N0 T5 Y4 v& K\" g
  179.             };
    ) v\" \1 ?! p: E
  180.           }
    ' L% l7 P3 [2 \# T; p7 E' k4 G
  181.         }
    ( h1 G7 y/ F: b8 Y5 ]. B
  182.     }
    ! ]. x, C* p  o$ \1 `
  183.     button.x = x;
    % V% n# k; ]  T% i9 P
  184.     button.y = 64 + row * (height + margin);; ]+ o2 e/ S. Z) l2 t
  185.     if (button.box.width < width) {& n, D( e0 S0 G
  186.       button.box.width = width;
    + e9 F( [+ u6 `4 q
  187.     }
    : N* C8 j1 _3 D5 C: {3 A& u
  188.     let bbox = button.root.getBBox();& e1 g% q! Y$ Q2 c: x2 G
  189.     x += bbox.width + margin;) [) J5 Q' H& P8 b2 l8 \( B
  190.     buttons.push(button);* Y% t. j1 Q1 B. q1 M6 k9 M& A
  191.     prev = button;0 e( t' A- d\" C9 b3 z6 _* f9 Q% y
  192.     buttonMap.set(key, button);; |* A8 ^# |- Q8 H2 G3 k7 s6 R/ Y3 j# I
  193.     if (key === "ArrowUp") {; R4 w, E% ~8 G. n- s. }, ~3 n
  194.       button.box.height = 16;
    2 O0 N/ G\" H\" v\" G
  195.       button.label.root.style.display = "none";9 ?* n\" y6 L+ o8 ]7 p
  196.     } else if (key === "ArrowDown") {) C4 A\" d! \5 j$ o/ m5 t  s' H; Y
  197.       button.box.height = 16;% x3 ?8 E. W$ I- D: H1 v
  198.       button.x -= 32 + margin;! ]: A  W5 a$ @0 S& a
  199.       button.y += 16;, h  ?2 x& _' s: C6 f
  200.       button.label.root.style.display = "none";
    8 ?0 F, S3 ~! \3 q
  201.       x -= bbox.width + margin;
    \" F4 g+ r/ O. j. U4 B# y) d2 S4 ?
  202.     }# ^4 d9 K; Q0 z( K  c0 n- C\" ]' V
  203.   }
    ( i\" B4 A) S1 i* {* D$ Q
  204.   let right = prev.x;
    ' v! n2 C, q# @, z3 K  p
  205.   if (right < 630) {
    4 D' D$ @: A$ x! b$ e' X5 G2 Y
  206.     prev.box.width = 630 - right;
    . ]2 j0 n: D$ X: q2 o' ]- C
  207.   }9 w4 `5 O& h7 |- x7 `& h: M
  208. }
    ( z! {& n0 c- O3 N! M0 u
  209. // console.log(keycodes["0"], shift, capslock);
    , _2 y- \/ m- X! g  g9 k1 t
  210. let active = [];
    + o- s  n; m' S
  211. window.onkeydown = function (event) {
    $ V  F5 Q' j2 Q, f4 f+ m0 |
  212.   for (let i = 0; i < buttons.length; i++) {& }9 s% U: J: l) g
  213.     let button = buttons[i];
    & w, S/ @8 Z0 r3 i\" e' v( |* h; j
  214.     if (, R\" a; S8 I5 I4 \3 }, l& P
  215.       button.label.contents === event.key ||  @/ g9 N$ [) M; ?$ i
  216.       (keycodes[event.key] != undefined &&
    . _3 s9 d+ u. m  @) a
  217.         button.label.contents === keycodes[event.key].Symbol)
    & Z/ S& f3 P% d5 E5 I0 c5 u- b
  218.     ) {( q# v6 m( r\" j& a  t
  219.       button.box.style.fill = "#f8f8f8";
    & t3 v8 @! l  y, K  J8 f
  220.       button.label.style.fill = "#404040";
    2 _4 [, ?. y; N# ]
  221.       button.active = true;) h! N' `1 I  I6 j6 ]
  222.       active.push(button);6 _1 e4 P* `2 m4 M3 e1 C
  223.     }/ U% }/ ]\" w+ M
  224.   }
    + V: f+ U/ U' F\" H$ l0 X
  225.   buffer += `'${event.key}',`;
    9 w) D$ G- X1 S8 q9 u7 B
  226. };8 i; r7 s8 R: C* w
  227. window.onkeyup = function (event) {' R+ w  s, n$ z, S: X! y9 U0 f6 x
  228.   let newActive = [];% I8 x$ M\" n% q4 |0 k1 w
  229.   for (let button of active) {
    ' S) H8 ?9 v$ ?5 k
  230.     if (
    $ K1 z- ]+ v# P8 j
  231.       button.label.contents === event.key ||2 V3 Q7 r\" V: L( K; \
  232.       (keycodes[event.key] != undefined &&
    # ^' i3 t3 g: p. J8 S
  233.         button.label.contents === keycodes[event.key].Symbol)+ q0 J. @. P! J/ i. b' W
  234.     ) {7 b. l- ]6 O! J! d( ?  N7 b
  235.       button.box.style.fill = "";
    ) g- s& h! [* L/ G
  236.       button.label.style.fill = "";
    $ S# Y, ^* E; o+ G
  237.       button.active = false;% P\" o; [& [+ B3 q/ a6 ^3 |
  238.     } else {
    % _) S1 R% v* N+ C( O$ D
  239.       newActive.push(button);
    0 I1 H' {; s1 K% c# y
  240.     }% F- g  z+ I6 x
  241.   }7 b# e- t6 m+ c\" }; F
  242.   active = newActive;5 s1 V* p( A0 E4 c3 S5 _& m) L# D
  243. };( @7 |0 S2 m# M$ T
  244. let bbox = interactive.input.root.getBBox();9 C0 r2 J) J. c7 e
  245. interactive.setViewBox(4 ]1 A4 s( B  C1 d( u6 [
  246.   bbox.x - margin,. b; h' O, k2 r0 M\" W; _/ n
  247.   bbox.y,
    % T. n& m  J8 }' H  p9 X
  248.   bbox.width + 2 * margin,
    2 D, y4 b  C' j0 v. ^
  249.   bbox.height# J8 p3 U3 ~5 T4 j8 F
  250. );
    ( z3 H, g9 l2 `! W( e* y9 X
  251. //# sourceMappingURL=keyboard.js.map
    ' f+ K7 A7 W* M, C6 N

  252. 9 V. A, x' C2 z7 a) c
复制代码

5 r+ [* G/ [$ V5 `2 m  i
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 18:50 , Processed in 0.420697 second(s), 52 queries .

回顶部