O que é

O Streamdeck serve como um auxílio, atalhos, para você trocar de cenas/telas, mutar ou desmutar microfone, iniciar e parar o stream, enfim, o que você puder imaginar que possa precisar em apenas um clique, sem necessidade de lembrar de atalhos como CTRL+SHIFT+ALT+F11, já que as combinações mais simples muitas vezes já estão em uso.

O custo do Streamdeck da Elgato nos Estados Unidos é US$ 150, algo que mesmo se chegasse o preço convertido pra gente, ainda seria um valor elevado, mas, depois de importação, taxas, lucro do vendedor, ele chega pra nós por um preço meio impraticável.

Assim sendo, a gente vai atrás de alternativas, que no nosso caso é um teclado numérico, separado, independente do teclado normal que a gente usa, e conseguimos associar cada botão a uma tarefa, facilitando a vida da mesma forma, só que sem botões com leds. 😆

Vale ressaltar que com qualquer teclado você pode fazer isso, mesmo um segundo grande, completo, mas praticamente quase ninguém vai ter uso pra teclas suficientes de outro teclado inteiro, então não faz muito sentido, e ficar com dois trambolhos na mesa também não é muito prático.

Um teclado numérico custa em torno de R$ 20, R$ 25, então é bem mais acessível, mas precisará de um programa pra ter o “efeito” do Streamdeck. O programa usado era o HID Macros, mas este foi abandonado pelo próprio desenvolvedor, que começou a trabalhar no Lua Macros. A vantagem do Lua Macros é poder programar em Lua (que é uma linguagem bem difundida) e não ficar preso à parte de código bem limitada do programa anterior.

O guia aqui é justamente pra ensinar a configurar o Lua Macros com o teclado numérico.

Descobrindo o ID do teclado

O primeiro passo é pegar o programa em http://www.hidmacros.eu/luamacros.zip

Com o teclado numérico ligado no PC, abra o programa e você verá uma tela como essa:

Na parte superior, digite lmc_print_devices() e clique em play (seta pra direita em cima).

Algumas linhas estranhas devem ter aparecido embaixo como essas:

<unassigned>  :  \\?\HID#VID_1A2C&PID_2124&MI_00#8&256F59BB&0&0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [1729757667] :  keyboard
<unassigned>  :  \\?\HID#VID_046D&PID_C232#2&33191FED&0&0000#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [262301] :  keyboard
<unassigned>  :  \\?\ACPI#PNP0303#0#{884B96C3-56EF-11D1-BC8C-00A0C91405DD} [65603] :  keyboard
Total number of devices: 3

Essa é a listagem de teclados conectados ao computador, cada teclado possui um número de identificação (ID).

Esse ID (que está marcado em azul nos exemplos) é a sequência de números e letras após o “&” e antes do próximo “&0” (marcados em vermelho). Anote este número pois você precisará dele mais tarde.

Associando o teclado e colocando pra funcionar

Agora substitua o lmc_print_devices() pelo código abaixo:

lmc_device_set_name('streamdeck', '256F59BB')
lmc_set_handler('streamdeck', function(button, direction)
    if (direction == 1) then
        return
    end
    if (button == 13) then
        lmc_send_keys('{ENTER}', 50)
    elseif (button == 97) then
        lmc_send_keys('{F13}', 50)
    elseif (button == 98) then
        lmc_send_keys('{F14}', 50)
    elseif (button == 99)    then
        lmc_send_keys('{F15}', 50)
    elseif (button == 100) then
        lmc_send_keys('{F16}', 50)
    elseif (button == 101) then
        lmc_send_keys('{F17}', 50)
    elseif (button == 102) then
        lmc_send_keys('{F18}', 50)
    elseif (button == 103) then
        lmc_send_keys('{F19}', 50)
    elseif (button == 104) then
        lmc_send_keys('{F20}', 50)
    elseif (button == 105) then
        lmc_send_keys('{F21}', 50)
    elseif (button == 111) then
        lmc_send_keys('{F22}', 50)
    elseif (button == 106) then
        lmc_send_keys('{F23}', 50)
    elseif (button == 109) then
        lmc_send_keys('{F24}', 50)
    elseif (button == 107) then
        lmc_send_keys('{NUMPLUS}', 50)
    elseif (button == 8) then
        lmc_send_keys('{BACKSPACE}', 50)
    elseif (button == 110) then
        lmc_send_keys('{NUMDECIMAL}', 50)
    elseif (button == 96) then
        lmc_send_keys('{NUM0}', 50)
    else
        print('Botão não associado à nenhuma tecla: ' .. button)
    end
end)

Na primeira linha, substitua o termo marcado em azul pelo ID que você descobriu no passo anterior.

lmc_device_set_name('streamdeck', '256F59BB')

Testando

Ligue o numlock do teclado numérico e abra o site

http://keyboardchecker.com/

Apertando a tecla 1 do teclado numérico, em Last key pressed, deverá ficar assim:

Deverá aparecer F13 como a última tecla apertada.

Como temos dois IDs pelo fato de ter dois teclados no momento, caso apareça somente o número 1 (o que faz todo sentido, pois você apertou o número 1 no teclado numérico), provavelmente o teclado que você selecionou está errado, volte ao passo 2 e coloque o ID do outro teclado.

Na época, os teclados possuíam duas linhas de teclas F, a padrão que nós temos até hoje, F1 a F12, e também F13 a F24. O que fazemos, então, é usar essas teclas que não estão mais presentes fisicamente nos teclados, mas ainda são reconhecidas, e o que o Lua Macros faz é exatamente traduzir uma tecla em outra, nesse caso, pegamos o 1 do teclado numérico e traduzimos pra F13.

Associando as teclas no OBS

Com isso funcionando, podemos ir ao OBS configurar o que as novas teclas fazem, indo em Configurações/Settings -> Teclas de atalho/Hotkeys, procurar a ação que deseja executar, clicar na ação e apertar o botão 1 do teclado numérico. A ação deve ficar assim:

Nesse caso, coloquei a tecla 1 (traduzida para F13) do teclado numérico para iniciar o stream, mas você pode escolher a ação que desejar. A lógica aplicada é a mesma para o resto das teclas: 2, 3, 4 etc.

Entendendo o código

Para configurar o teclado, não é realmente necessário que compreenda programação, já que as teclas já estão colocadas, porém, caso deseje entender ou alterá-las, segue a explicação.

Essencialmente, o que está sendo feito, é uma “tradução” de teclas. Apertando a tecla 1 do teclado numérico, o computador vai entender como se você estivesse apertando outra tecla, no caso, as teclas F13 até F24, que só existem virtualmente nos dias atuais.

Como o teclado numérico tem 18 teclas, e de F13 até F24 são 12, só 12 teclas estão “traduzidas”, que são os números de 1 até 9, /, * e -. O restante das teclas (+, backspace e enter) são “traduzidas” para a função original, quer dizer, + continua sendo +, backspace continua sendo backspace e enter continua sendo enter. Entretanto, caso queira, você pode atribuir “traduções” diferentes para elas, já que o código para elas já está presente.


Cada tecla tem um código numérico, e, pra se descobrir qual o código de cada uma delas, podemos usar esse site: https://keycode.info. Nele, quando se digita qualquer coisa, aparecerá na tela qual o código da tecla correspondente.

Nesse caso, o que fazemos é identificar qual número foi pressionado. Usando o exemplo da tecla 1 do teclado numérico, o código dela é 97.

Sabendo o número da tecla a se apertar, precisamos decidir para qual tecla ela deve ser “traduzida”. A listagem das teclas pode ser encontrada em https://github.com/me2d13/luamacros/wiki/List-of-Keys, inclusive outros detalhes mais avançados.

Para “mandar apertar” uma tecla, usamos o código lmc_send_keys(‘tecla a ser apertada’, 50). A parte marcada em azul-turquesa deve ser substituída por uma ou mais combinações de teclas seguindo o site acima.

A linha em verde significa “quando apertarmos a tecla correspondente ao número 97, que é a tecla 1 do teclado numérico, o computador deve entender que a tecla {F13} foi pressionada”.

Da mesma forma, o que está em amarelo significa que quando apertarmos a tecla 110, tecla de ponto (“.”) ou Del do teclado numérico, o computador deve entender que a tecla {NUMDECIMAL} foi pressionada.

{NUMDECIMAL} nesse caso, é a própria tecla de ponto (“.”) ou Del, portanto não há uma “tradução”, mas essa parte do código foi incluída pra facilitar a mudança das teclas caso algum usuário a queira, já incluindo todas as teclas do teclado numérico, sendo somente necessário trocar o {TECLA} para o que desejar.