๊ฒฝ์ฐ์ ๋ฐ๋ผ ์์ ์ ํค๋ฅผ ์ฌ์ฉํ๋ฉด pressedKeys ์ธํธ์ ํค๊ฐ ๋์ ๋ฉ๋๋ค.
"modifier-up"๋ฉ์์ง๊ฐ ์ผ๋ฐ ๋ฐ ํน์ ํค์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ์ก๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค.
ํ ์คํธํ๋ ค๋ฉด pressedKeys์ ํฌ๊ธฐ๋ฅผ ํ์ธํ์ธ์.
cout << pressedKeys.size() << " num pressed keys " << endl;
์์ ์ ํค์ ์ผ๋ฐ ํค๋ฅผ ๋๋ฆ ๋๋ค. ctrl-a๋ผ๊ณ ๋งํ์ธ์. 'a'๊ฐ ๋จผ์ ํด์ ๋๋ฉด modified-a key int๊ฐ pressedKeys ์ธํธ์์ ์ ๊ฑฐ๋ฉ๋๋ค. CTRL์ด 'a'์์ ๋์ด๋ฉด ์์ ๋์ง ์์ a key-up int๊ฐ ์ ์ก๋๊ณ pressedKeys ์ธํธ์์ ์ญ์ ๋์ง ์์ต๋๋ค. ์ด๊ฒ์ด ๋ค๋ฅธ ์์ ์ + ํค ๋ค์ด / ์ ์ผ๋ก ๋ฐ๋ณต๋๋ฉด ๋์ ์ด ๋ฐ์ํฉ๋๋ค.
๊ถ๊ทน์ ์ผ๋ก ์์ ์ ํค๋ฅผ ๋ ์ ์ฒ๋ฆฌํด์ผํฉ๋๋ค. ์๋ง๋ keyboard_cb ๋ฐ keyboard_up_cb ์ ์ ๋ฉ์๋์์ glutGetModifiers ()๋ฅผ ํธ์ถํ์ฌ ์์ ์ ๋ง์คํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ํค๋ฅผ ์ถ์ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
ofConstants.h์์ ์ด์ ๋ํ ์ง์ ์ด ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
#define OF_KEY_CTRL 0x0200
#define OF_KEY_ALT 0x0300
#define OF_KEY_SHIFT 0x0400
ํ์ง๋ง ๊ฑฐ๊ธฐ์ ๋ฉ์ถ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํด ์ผํ๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ์ ๋ต์ ๋ํ ์ ์์ด ์์ต๋๊น? ์๋ง๋ ์ด๊ฒ์ ์ด๋ฏธ 007๋ก ์ฒ๋ฆฌ๋๊ณ ์์ต๋๊น?
์๋ง๋ ์ด๊ฒ์ ๋ถ๋ช ํ์ง๋ง,์ด ๋ฌธ์ ๋ ๊ถ๊ทน์ ์ผ๋ก GLUT๊ฐ Java (๋๋ ๋ค๋ฅธ ์๋์ฐ ์์คํ )์ ๊ฐ์ ๋ ๋ฆฝํ ์์ ์ ํค์ / ํค ๋ค์ด ์ด๋ฒคํธ๋ฅผ ์ ๊ณตํ์ง ์์ ์ด๋ฌํ ๊ฒ๋ค์ ์ถ์ ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ ์ฌ์ค์์ ๋น๋กฏ๋ฉ๋๋ค.
๋ค์์ ์ฃผ์ ์ ๋ํ ํฅ๋ฏธ๋ก์ด ๊ฒ์๋ฌผ์ ๋๋ค. http://old.nabble.com/Status-of-modifier-keys-%28shift-ctrl-alt%29-td6982098.html
https://github.com/openframeworks/openFrameworks/pull/807์ ์ํด ํด๊ฒฐ๋๊ณ ์์ต๋๊น?
์๋ ํ์ธ์ bilderbuchi-์, ์์ ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ์งํ๋๊ณ ์์ง๋ง glutGetModifiers ()๊ฐ keyboard_cb ๋ฐ keyboard_up_cb ๋ฉ์๋์์ ํธ์ถ๋๊ธฐ๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ ์์๋๋ก ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค (์ ์ด๋ OSX์์ ํ ์คํธ ํ ๊ฒฐ๊ณผ). ๋ค์๊ณผ ๊ฐ์ ๋ง์ ๊ฒฝ๊ณ ๋ฅผ ๋คํํฉ๋๋ค.
1/7/12 12:18:17.273 PM BasicExampleDebug: GLUT Warning: glutCurrentModifiers: do not call outside core input callback.
gameoverhack์ 807 pull request๋ ๋งค์ฐ ์ ์ฉํ ๋ฉ์๋ ์ธํธ์ด์ง๋ง glutGetModifiers ()๋ฅผ ํธ์ถํ๋ ๋์ ๋ค์๊ณผ ๊ฐ์ ํธ์ถ๋ก ์ค์ ๋ "pressedKeys"๋ฅผ ํ์ธํ์ฌ ์๋ํด์ผํฉ๋๋ค.
ofGetKeyPressed(OF_KEY_CTRL);
๊ธฐํ
๋ฐ๋ผ์ ์ด๊ฒ์ด ์ค์ ๋ก ์๋ํ๋ ค๋ฉด ์๋ ๊ณผ์ ์ฝ๋ฐฑ์ ํต์ฌ ์ฌ์ดํธ์ ๋ ๋์ ์์ ์ ๋ถ๊ธฐ๊ฐ ์์ด์ผํฉ๋๋ค.
๋ด๊ฐ ๋งํ๋ฏ์ด, ๋๋ ์ด๊ฒ์ ์๋์ํค๋ ๋ฐ ๋งค์ฐ ๊ด์ฌ์ด ์์ผ๋ฉฐ ๊ทธ๊ฒ์ ํด๊ฒฐํ๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ค๋ฅธ ํฌํฌ๊ฐ ์๋์ง ์๊ณ ์์ต๋๊น?
-๋ฐฉ๊ธ ์ด๋ฌํ ์๊ฐ ์ค ์ผ๋ถ๋ฅผ # 807์ ๋ณต์ฌํ์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ ๋ํ ๋ค๋ฅธ ์์
์ ์์ง ๋ชปํ์ง๋ง gameoverhack์ PR์ด ์ ์ด๋ ๋ฌธ์ ์ ์ผ๋ถ๋ฅผ ๋ค๋ฃจ๋ฉด PR / ์ฝ๋๋ฅผ ๊ฐ์ ํ ์์๋ ๋ฐฉ๋ฒ์ ๋ํด ๋
ผํํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ ์ข
๋ฅ์ ๋ฌธ์ ์ ๋ํ ๋ชจ๋ ์์
์ด ํ๊ณณ์ ๋ณด๊ด๋ฉ๋๋ค. PR์ ๋ํด ๋
ผ์ํด์ผํ๋ฏ๋ก ๋ถ๋๋ฌ์ํ์ง ๋ง์ญ์์ค. ;-)
์ด์จ๋ ์ด ๋ฌธ์ ์ ๋ํ ๋งํฌ๋ฅผ ๊ฑฐ๊ธฐ์ ๋์ ๊ฒ์
๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํด ๊ฝค ์ค๋ ์๊ฐ์ ๋ณด๋๊ณ pressedKeys ์ธํธ ์ ๋ต์ ํตํด ํค๋ฅผ ์ ํํ๊ฒ ์ถ์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง ๊ถ๊ธํดํ๊ธฐ ์์ํ์ต๋๋ค. ๊ถ๊ทน์ ์ผ๋ก ๋ฌธ์ ๋ GLUT๊ฐ ํค๋ณด๋ ์ฝ๋ฐฑ์ ํตํด ASCII ์ฝ๋ ๊ฐ๋ง ์ ๊ณตํ๋ค๋ ์ฌ์ค์ ์์ต๋๋ค. ์ฃผ์ด์ง ๋ฌผ๋ฆฌ์ ํค์ ๋ํด ์ด๋ฌํ ๋จ์ผ ASCII ๊ฐ์ ์์ ์ ํค (์ : ctrl)์ ์ํด ๋ณ๊ฒฝ ๋ ์ ์์ต๋๋ค. ์ฆ, ์ผ๋ถ ์ํฉ์์ (์์์ ์ค๋ช ํ๋๋ก ctrl + a๋ฅผ ๋์ ๋ค์ ctrl์ ๋์ ๋ค์ a๋ฅผ ๋์) ๊ฐ๋จํ ASCII ์ฝ๋ ๋ชฉ๋ก์ ์ ์งํฉ๋๋ค. ๊ฐ์ ์์ธกํ ์์๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ keyDown์ด ์ผ์นํ๋ keyUp์ ๊ฐ๋๋ก ๋ณด์ฅ๋์ง๋ ์์ต๋๋ค. PressedKeys๋ฅผ ์ถ์ ํ๋ ์ด์์ ์ธ ๋ฐฉ๋ฒ์ ๋ฌผ๋ฆฌ์ keyCodes ๋๋ ์ ์ด๋ VirtualKeys (์ : VK_LEFT ๋ฑ)์ ๊ฐ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํค๋ณด๋ ํ๋์ ๊ธฐ๋กํ๋ keyEvent ์์คํ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์๋ก๋ Java์ KeyEvent ์์คํ ๋๋ ์ด์ ๊ฐ์ Javascript ์ ๋ต ์ด ์์ต๋๋ค. ์ด ์์ค์์ ์ ๋ ฅ ์ด๋ฒคํธ๊ฐ ์์๋ค๋ฉด ์ฌ๊ธฐ์ # 807 ๋ฌธ์ ๋ ์ฝ๊ฒ ์ฒ๋ฆฌ ํ ์ โโ์์ต๋๋ค. ๊ทธ ๋์ ๋ฌธ์ # 807์์ keymodifier ๋ฌธ์ ์ ๋ํด ์ ์ ๋ ์๋ฃจ์ ์ ํ์ธํ ์ ์์ต๋๋ค. ์ ์ด๋ ๊ทธ ๋ฌธ์ ์ ๋ํ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ ๊ฐ์ง ์ ์์ต๋๋ค.
GLUT๋ ๋ ์ด์ ๊ธฐ๋ณธ ์๋์ฐ ์์คํ ์ด ์๋๊ธฐ ๋๋ฌธ์์ด ๋ฌธ์ ๋ฅผ ๋ซ์ต๋๋ค.
์ด๊ฒ์ ์ฌ์ ํ โโGLFW ๋ฌธ์ ์ ๋๋ค.
์ด๊ฒ์ ๋ค์ ํ ์คํธํ์ต๋๋ค.
PressedKeys ์ธํธ๋ฅผ ์ฃผ์ํ์ญ์์ค.
cout << pressedKeys.size() << " num pressed keys " << endl;
CTRL-a๋ฅผ ๋๋ฆ ๋๋ค.
๊ทธ๋ฐ ๋ค์ CTRL์ ๋ค๊ณ ๊ณ์ ๋๋ฅด๊ณ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ a๋ฅผ ๋์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ๋๋ฅธ ํค ์ธํธ์ ์ฌ์ ํ ํค๊ฐ ์์ต๋๋ค.
๋ค์ ํด๋ฐฉํ๋ ค๋ฉด
CTRL-a๋ฅผ ๋๋ฆ ๋๋ค.
๊ทธ๋ฐ ๋ค์ a๋ฅผ ๋์ ๋ค์ Ctrl์ ๋์ต๋๋ค.
์ด @bakercp๋ฅผ ์ก์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ฌธ์ ๊ฐ๋ณด๊ณ ๋ ์ดํ๋ก ๋ง์ ๋ถ๋ถ์ด ๋ณ๊ฒฝ๋์ด ๋๋ถ๋ถ์ด ๊ด๋ จ์ด ์์ง๋ง ์ฌ๊ธฐ์์ ์ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์๋์ง ์ ์ ์์ต๋๋ค.
๋๋ ๋น์ ์ ํ์ค๋ฆฌ ๋ฐ๋ ๋ฌธ์ ์ ๋ฆฌ ์ธ์ ์ ํฐ ๊ฐ์ฌ์ ํจ๊ป๋ณด๊ณ ์์ต๋๋ค :)
ํธ๊ธฐ์ฌ์์ : ์ด๊ฒ์ด ofw master์ ์ง์์ ์ธ ๋ฌธ์ ์
๋๊น? 0.9.8 ๋ง ์ฌ์ฉํ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค
์๋ ํ์ธ์,
์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง ๋ง์ ๋ฌธ์ ๋ฅผ ์ ๋ฆฌํ๋ ค๊ณ ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค.
์ด ๋ฐํ ์ดํ ๋ง์ ๋ฒ์ ์ OF๊ฐ ์ถ์๋์์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์ต์ ๋ฒ์ ์ ์ฌ์ ํ ์กด์ฌํ๋์ง ํ์ธํ์ฌ ๋์์ ์ค ์ ์์ต๋๊น?
ํ๋์ด์๋ ๊ฒฝ์ฐ 2020 ๋ 1 ์ ๋ง๊น์ง์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๊ฐ์ฌ
์ด๊ฒ์ ์ฌ์ ํ โโ๋ฌธ์ ์ ๋๋ค. ์์ ๋์ผํ ์ง์นจ์ผ๋ก ์ฌํ ํ ์ ์์ต๋๋ค.
์ฌํํ๋ ค๋ฉด :
ofApp:update()
{
bool is1Pressed = ofGetKeyPressed(1);
bool isCtrlPressed = ofGetKeyPressed(OF_KEY_CONTROL);
bool isAPressed = ofGetKeyPressed('a');
std::cout << is1Pressed << ", " << isCtrlPressed << ", " << isAPressed << std::endl;
}
๊ทธ๋ผ ...
CTRL + a
๋๋ฆ
๋๋ค.
๊ทธ๋ฐ ๋ค์ CTRL
๋ค์ด ์ฌ๋ฆฌ๊ณ a
์ ์งํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ a
.
๊ทธ๋ฐ ๋ค์ ์ฌ์ ํ ํค๋ฅผ ๋๋ ์ ๊ฒ์ ๋๋ค.
๋ค์ ํด๋ฐฉํ๋ ค๋ฉด
CTRL + a
๋๋ฆ
๋๋ค.
๊ทธ๋ฐ ๋ค์ a
๋ฅผ ํด์ ํ ๋ค์ CTRL
ํฉ๋๋ค.
๋๋ ๋๋ฆฌ์ง ์์๋ OF_KEY_COMMAND๊ฐ ๋๋ฆฐ ์ํฉ์ ๋ง์นจ๋ด ์ดํดํ์ต๋๋ค.
macOs์์๋ ๋ช
๋ น + ํญ์ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ์ ํํฉ๋๋ค. ๋ช
๋ น + ํญ์ ์ฌ์ฉํ์ฌ ์ํํธ์จ์ด๋ก ๋์ ์ค๋ฉด ๋ฆด๋ฆฌ์ค ํ์๋ ํค๊ฐ ๋๋ฆฐ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค.
๋์์ด๋๋์ง ๋ชจ๋ฅด์ง๋ง ์ด์ ์ฌ๊ธฐ์์ ์ฌํ ํ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ถ์ : ํ ๊ฐ์ง ์ฌ๋ฏธ์๋ ์ : ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ฌ์ ์ค์ ์ ๋ฎ์ด ์ฐ๋ฏ๋ก ๋ง์ ์ฌ๊ณ ๊ฐ ๋ฐ์ํ์ต๋๋ค. :)